標籤:
軟體工程第三個程式:“WC項目” —— 檔案資訊統計(Word Count ) 命令列程式
格式:wc.exe [parameter][filename]
在[parameter]中,使用者通過輸入參數與程式互動,需實現的功能如下:
1、準系統
支援 -c 統計檔案字元數
支援 -w 統計檔案單詞數
支援 -l 統計檔案總行數
2、拓展功能
支援 -a 返回進階選項(程式碼 空行 注釋行)
支援 -s 遞迴處理合格檔案
3、進階功能
支援 -x 程式以圖形介面與使用者互動
[filename] 是待處理檔案名稱。
準系統
主函數裡用String字串接收使用者輸入,並分解成參數數組 和 檔案地址。
編寫BaseCount()函數實現對檔案的讀操作,逐行統計統計字元數,並記錄行數,同時使用StringBuffer類記錄檔案中所有的資訊。最後一起統計 詞數,避免在逐行計詞時,把標點計為一詞。
編寫Response()函數根據使用者輸入的參數輸出資訊,這裡程式不管使用者輸入的參數是什麼,都在讀取檔案的時候把所有資訊都記錄下來並儲存,使用者輸入的參數裡有什麼輸出什麼。
Java編寫的程式 可以在cmd.exe裡調用運行,提升一下bigger,輸出的結果
案頭上123.txt的內容如下:
using System;namespace OneProgram{ class Program { Console.Write("wc.exe"); }}
拓展功能
參數 -s 的使用效果為:參數中帶有“-s”,檔案的名稱為“*.XXX”,輸出所有的.XXX檔案的資訊。
相當於先找到所有該目錄下的檔案,然後判斷檔案的類型,再把符合的檔案進行檔案資訊統計,最後輸出。
那就直接再寫一個ResponseforS()函數來專門處理參數帶“-s”的命令,首先記錄其他參數,分離檔案路徑 與 檔案類型;定義字串數組記錄檔案路徑下的所有檔案名稱;與使用者輸入的檔案類型比較,對符合的檔案進行檔案資訊統計,輸出;迴圈 比較 輸出;
輸出的結果
參數 -a 的使用效果為:參數中帶有“-a”,輸出檔案的空行、碼行、注釋行的統計資訊。
該功能與準系統類似,直接在BaseCount()函數裡改寫,函數名改為BaseAndAdvanceCount()。
在程式對檔案讀行的時候判斷該行的長度,判斷是否為空白行,判斷是否有連續的“/”,來判斷是否為注釋行,如果既不是空行 也不是注釋行,則為程式碼。
輸出的結果
案頭上123.txt裡的內容改為:
using System;namespace OneProgram{//// class Program { Console.Write("wc.exe"); }}//without copyright
進階功能
參數 -x 的使用效果為:只輸入“-x”,彈出檔案選擇對話方塊,選擇檔案後輸出該檔案的所有資訊。
這裡仍然為參數 “-x” 建立一個獨立的函數ResponseforX(),建立顯示一個檔案選擇對話方塊,選中某個檔案後返回該檔案的絕對路徑,交給BaseAndAdvanceCount()函數 與 Response()函數。輸出所有資訊。
操作過程與輸出的結果
案頭上123.txt裡的內容沒變。
至此所有的功能已基本實現 :)
所有的代碼已上傳至Coding,Coding:先等著。。。
J.X.Dinosaur
軟體工程第三個程式:“WC項目” —— 檔案資訊統計(Word Count ) 命令列程式