1. 程式人生 > >第一次作業:統計文件字符串字符行的個數

第一次作業:統計文件字符串字符行的個數

RoCE 開發 imp 開始 rem -s 找不到 寫代碼 process

碼雲: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

解題思路:

剛看到題目時,我打算寫三個類,每個類分別統計數量,然後傳到主函數,由主函數進行存取。

技術分享圖片

基本功能

  1. 支持 -c 統計字符數(char_count)
  2. 支持 -w 統計單詞數(string_count)
  3. 支持 -l 統計總行數(line_count)
  4. 支持 -o 存入特定文件

拓展功能(待實現)

  1. 支持 -a 返回高級選項(代碼行 空行 註釋行)
  2. 支持 -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

第一次作業:統計文件字符串字符行的個數