程式源代碼Gitee項目地址:https://gitee.com/xiao_ge_ge/WordCount.git 一:介紹: 這次作業的主要任務: WordCount的需求可以概括為:對程式設計語言源文件統計字元數、單詞數、行數,統計結果以指定格式輸出到預設文件中,以及其他擴展功能,並能夠快速地處 ...
程式源代碼Gitee項目地址:https://gitee.com/xiao_ge_ge/WordCount.git
一:介紹:
這次作業的主要任務:
WordCount的需求可以概括為:對程式設計語言源文件統計字元數、單詞數、行數,統計結果以指定格式輸出到預設文件中,以及其他擴展功能,並能夠快速地處理多個文件。
wc.exe -c file.c //返迴文件 file.c 的字元數
wc.exe -w file.c //返迴文件 file.c 的單詞總數
wc.exe -l file.c //返迴文件 file.c 的總行數
wc.exe -o outputFile.txt //將結果輸出到指定文件outputFile.txt
拿到題目的時候,思考使用近期使用比較多,也相對比較熟練的c#來寫。計劃使用兩個類:MainScreen:用來進行控制台界面的輸入輸出,ProcessingDate:用來進行具體的操作。
二: 具體程式
1.主界面是最簡單的方式,strcomm用來接收用戶輸入的指令
2.對用戶輸入的指令進行分析。
對用戶輸入的指令,截取各個部分存入字元串數組,方便後續的使用,在這裡,數組第一個元素始終是字元串wc.exe,最後一個始終是文件名。去空格截取(StringSplitOptions.RemoveEmptyEntries)可以避免許多不必要的麻煩。考慮到指令可以多個一起使用,在這裡使用了for迴圈逐個對指令進行檢查。同時輸出了結果。
3.ProcessingDate類
3.1考慮到每一次的處理都會涉及到打開文件,將打開文件寫為一個單獨的方法,在具體的方法中直接調用即可。每一次對文件的操作都需要關閉文件。方法返回讀取到的信息str.
3.2:判斷字元數(空格、換行、製表符)
只要迴圈到以上三種字元,則計數器加1.結束後將結果按要求寫入result.txt文件,併在控制台輸出結果。
判斷行數的代碼類似
3.3判斷單詞數。
這個部分寫的時候比較麻煩。考慮到作業要求,發現如果直接使用空格分隔開,那麼如果兩個單詞之間存在多個空格,或者以空格開頭的文件或者行,都會受到影響。想了許久,發現一個特別笨但還算行之有效的方法。
設置一個布爾變數 bool isblank = true;遍歷字元串,噹噹前字元不為空格(換行)時,置為false,count+1,此時記錄一個單詞,直到當前字元為空格(或者換行)時,置為true,表示這個單詞結束,可以進入下一個單詞。這樣,不論之間又多少空格或者換行,判斷一個單詞都是以一個字元開始,遇到空格(或者換行)時結束。
3.4將結果輸入指定文件。
三:測試設計過程。
這裡測試主要針對輸入。
1.當輸入一個指令時,程式能否正確執行,如果輸入的指令不正確,程式能否處理並報告給用戶。
2.當輸入多個指令時,程式能否正確執行,如果輸入的指令都不正確、有部分不正確,程式能否處理並正確的報告給用戶哪些指令是錯誤的。
這兩個方面已經實現。
3.當輸入的文件名錯誤,程式找不到文件時,程式如果正確處理(不拋異常並且正確報告給用戶)。
該方面還沒有實現。
四:改博文作為學習的記錄和作業,其中部分內容參考了網路上部分文章及方法。
關於寫入文件的操作 http://www.cnblogs.com/duanjt/p/5265655.html
關於字元串的分割 https://blog.csdn.net/tiandijun/article/details/40401655
主要參考以上兩篇文章。感謝作者。