WordCount擴充套件

2022-08-21 14:51:12 字數 2942 閱讀 1113

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

wc.exe -s            //遞迴處理目錄下符合條件的檔案

wc.exe -a file.c     //返回更複雜的資料(**行 / 空行 / 注釋行)

wc.exe -e stoplist.txt  // 停用詞表,統計檔案單詞總數時,不統計該表中的單詞

本專案是基礎專案的擴充套件,增加了遞迴處理目錄下符合條件的檔案、統計檔案單詞總數時,不統計停用詞表中的單詞、返回檔案的**行 、 空行 、注釋行等功能。

可執行程式命名為:wc.exe,該程式處理使用者需求的模式為:

wc.exe [parameter] [input_file_name]
儲存統計結果的檔案預設為result.txt,放在與wc.exe相同的目錄下。

獲取鍵盤數輸入的指令,當讀取到 '-'這個命令符號字首時 ,我們能知道它將會和下乙個字元一起構成乙個操作指令,於是我們通過對下乙個字元的讀取就能夠決定這個命令符號具體代表了什麼含義。這裡分幾種情況:若下乙個字元是 'c'、 'w'、'l'之類的基本功能引數,若下乙個字元是 'o'、'e'之類的拓展功能引數,那麼它會緊跟著乙個txt檔案,實現的是對檔案內容停用詞檢索與執行結果輸出到檔案的操作功能;也存在下乙個字元是程式未定義的引數字元如『m』、'n'等,這時程式應當是無法識別這類命令引數的,不會執行任何操作,但一般也不會報錯。獲取待處理檔名和結果輸出檔名,通過指令中是否含有-o指令判斷是否採用預設的result.txt檔案輸出。以及獲得輸出檔名。本專案僅實現了檔案的字元數、行數、單詞數的統計。即分為乙個主類和獲取字元數、行數、單詞數方、輸出方法和main方法。待處理檔案放在專案的統一資料夾內。

-e 必須與停用詞檔名同時使用,且停用詞檔案必須緊跟在-e引數後面,不允許單獨使用-e引數。

stoplist.txt中停用詞可以多於1個,單詞之間以空格分割,不區分大小寫。特別的注意**行後的注釋,並非另起一行的情況。

此次主要增加的則是匹配原則:

和對資料夾的遍歷:

public static listgetfile(file dir)  else if (file.isdirectory())

files.addall(getfile(file)); //若讀取到目錄,就對當前目錄遞迴讀取

}return files;

}

測試設計對於程式測試這一塊,我一共設計了10個測試用例,其中包括8個相互獨立的常規測試用例和2種型別的錯誤測試用例。具體測試如下:

1.基本字元測試

輸入:–c test.txt

期望輸出:字元數:148

實際輸出:字元數:148

分析:符合預期輸出

2.行數字符測試

輸入:-l test.txt

期望輸出:,檔案總行數:7

實際輸出:檔案總行數:7

分析:符合預期輸入

3. 單詞測試

輸入:-w test.txt

期望輸出:,檔案總行數:20

實際輸出:檔案總行數:20

分析:符合預期輸入

4.基本功能測試

輸入:-c -w -l test.txt

期望輸出:字元個數:148

單詞個數:20

檔案總行數:7

實際輸出:字元個數:148

單詞個數:20

檔案總行數:7

分析:符合預期輸出

5. 部分擴充套件功能測試

輸入:-c test.txt stoplist.txt -o output.txt

期望輸出:字元數:143

實際輸出:字元數:143

分析:符合預期輸出

6.錯誤指令測試一(純未定義命令引數)

輸入:-m test.txt

期望輸出:無期望

實際輸出:無任何內容,但也未報錯

分析:由於並未涉及命令引數-m,故而程式無法識別對應指令無法執行。

7.錯誤指令測試二(含未定義命令引數)

輸入:-c -m test.txt

期望輸出:無期望

實際輸出:字元個數:148

分析:由於命令語句中含有已定義的命令引數-c,故而雖然含有-m,但是程式依然識別了-c並且執行了字元統計功能。

專案總結

總的說來,這次專案確實讓我收穫了不少東西,一開始因為要求的細節過於繁瑣而且時常所以有些情緒化,在專案設計和開發的過程中沒有完全靜下心來去好好地想一下如何解決這個問題。隨著提交時間的逼近才逐漸硬著頭皮開始認真去搞這個作業,從最終的結果來看,確實學到了很多有用的東西,關於注釋行、**行與空行的正規表示式匹配判定法以及如何從提高乙個程式的條件覆蓋率去編寫測試用例測試程式的效能,這些都是以後走向工作崗位很寶貴、很重要的東西。特別地解決了基礎專案中-|的相關問題。作業要求中的是-l與邏輯符號或混淆而出錯。

WordCount擴充套件功能

1.任務簡述 兩人組隊完成wordcount的基本功能及擴充套件功能 可以自行增加功能 並對其進行一系列測試和優化,形成可穩定執行的版本。3.互審 在專案的第一階段,我們用的都是c 語言。我們把不同的功能分開 來思考,然後通過函式逐步實現。因為上一次我們 是一起討論實現的,所以我們的思路上都是大同小...

WordCount擴充套件與優化

s 遞迴處理目錄下符合條件的檔案。實現 a 返回更複雜的資料 行 空行 注釋行 實現 空行 本行全部是空格或格式控制字元,如果包括 則只有不超過乙個可顯示的字元,例如 else while feof f else if ch ch t ch ch num else if ch b num fclos...

WordCount執行詳解

mapreduce採用 分而治之 的思想,把對大規模資料集的操作,分發給乙個主節點管理下的各個分節點共同完成,然後通過整合各個節點的中間結果,得到最終結果。簡單地說,mapreduce就是 任務的分解與結果的彙總 在hadoop中,用於執行mapreduce任務的機器角色有兩個 乙個是jobtrac...