第一次作業:統計檔案字串字元行的個數
碼雲:https://gitee.com/SC_looker/wordcount.git
先明確任務內容,分為以下幾點:
(1)分析、整理需求,提交PSP表格;
(2)編碼實現,並在Github提交;
(3)設計測試用例,編寫單元測試;
(4)撰寫部落格。
需求分析:
要求:統計文字檔案的字元數、單詞數、和行數。
輸入格式說明:
wc.exe -c file.txt //返回檔案 file.txt 的字元數
wc.exe -w file.txt //返回檔案 file.txt 的詞的數目
wc.exe -l file.txt //返回檔案 file.txt 的行數輸出格式說明:
儲存在outfile.txt中
file1.txt, 字元數: 50
file1.txt, 單詞數: 30
解題思路:
剛看到題目時,我打算寫三個類,每個類分別統計數量,然後傳到主函式,由主函式進行存取。
基本功能
- 支援 -c 統計字元數(char_count)
- 支援 -w 統計單詞數(string_count)
- 支援 -l 統計總行數(line_count)
- 支援 -o 存入特定檔案
拓展功能(待實現)
- 支援 -a 返回高階選項(程式碼行 空行 註釋行)
- 支援 -s 遞迴處理符合條件的檔案
基本功能模組:
一、實現字元數統計類
通過傳參的方式將檔名以 (string filename)的方式傳入類成員函式,利用fstream把檔案以流的形式輸出,把流輸出到字元型別然後進行統計。
二、實現單詞數統計類
通過傳參的方式將檔名以 (string filename)的方式傳入類成員函式,利用fstream把檔案以流的形式輸出,把流輸出到字串型別然後進行統計,也可用getline(流,字串變數,‘ ’)來統計,不過這種統計檔案必須以空格結束,否則所統計的數少一。
三、實現行數統計函式
通過傳參的方式將檔名以 (string filename)的方式傳入類成員函式,利用fstream把檔案以流的形式輸出,用getline(流,字串變數,‘\n’)函式來統計,getline()以轉行符結束。
四、主函式模組:
測試檔案結果
測試用例:
檔案:
可執行檔案
總結:
這個任務,我使用的是c++,由於c++是早些時候學習過的然後之後是沒在使用過,這次機會我重新複習一次,這個專案讓我學到了很多東西,我從不懂如何寫程式碼到一步步實現功能,這次的程式碼我是使用的絕對路徑,我實現了要求的基本功能,也清楚了qt生成的可執行檔案是與原先程式碼所分離開的,剛開始一直找不到可執行檔案,後來通過上網查詢,要在path新增路徑才能使用exe檔案,也瞭解到從命令列寫入的引數在程式碼中如何讀取。本次的專案還有很多不足的地方還需要加以改善,比如把絕對路徑改為相對路徑。可以存到指定目錄的,更多功能還待提高。
首先完成PSP表格,對自己所做的專案進行大致的規劃
PSP2.1 |
PSP階段 |
預估耗時 (小時) |
實際耗時 (小時) |
Planning |
計劃 |
2*24 |
38 |
· Estimate |
· 估計這個任務需要多少時間 |
2*24 |
38 |
Development |
開發 |
21 |
20 |
· Analysis |
· 需求分析 (包括學習新技術) |
3 |
4 |
· Design Spec |
· 生成設計文件 |
2 |
3 |
· Design Review |
· 設計複審 (和同事稽核設計文件) |
2 |
2 |
· Coding Standard |
· 程式碼規範 (為目前的開發制定合適的規範) |
1 |
1 |
· Design |
· 具體設計 |
4 |
3 |
· Coding |
· 具體編碼 |
4 |
4 |
· Code Review |
· 程式碼複審 |
3 |
2 |
· Test |
· 測試(自我測試,修改程式碼,提交修改) |
2 |
2 |
Reporting |
報告 |
7 |
5 |
· Test Report |
· 測試報告 |
3 |
3 |
· Size Measurement |
· 計算工作量 |
2 |
1 |
· Postmortem & Process Improvement Plan |
· 事後總結, 並提出過程改進計劃 |
2 |
1 |
合計 |
28 |
25 |