第一次作業:統計文件字符串字符行的個數
碼雲: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 |
第一次作業:統計文件字符串字符行的個數