JAVA實現WC.EXE
Github項目地址:https://github.com/3116004667/testDemo
一、項目要求
1. 實現一個簡單而完整的軟件工具(源程序特征統計程序)。
2. 進行單元測試、回歸測試、效能測試,在實現上述程序的過程中使用相關的工具。
3. 進行個人軟件過程(PSP)的實踐,逐步記錄自己在每個軟件工程環節花費的時間。
wc.exe 是一個常見的工具,它能統計文本文件的字符數、單詞數和行數。這個項目要求寫一個命令行程序,模仿已有wc.exe 的功能,並加以擴充,給出某程序設計語言源文件的字符數、單詞數和行數。
實現一個統計程序,它能正確統計程序文件中的字符數、單詞數、行數,以及還具備其他擴展功能,並能夠快速地處理多個文件。
具體功能要求:
程序處理用戶需求的模式為:
wc.exe [parameter] [file_name]
基本功能列表:
wc.exe -c file.c //返回文件 file.c 的字符數(已完成)
wc.exe -w file.c //返回文件 file.c 的詞的數目 (已完成)
wc.exe -l file.c //返回文件 file.c 的行數(已完成)
擴展功能:
-s 遞歸處理目錄下符合條件的文件。(未完成)
-a 返回更復雜的數據(代碼行 / 空行 / 註釋行)。(已完成)
空行:本行全部是空格或格式控制字符,如果包括代碼,則只有不超過一個可顯示的字符,例如“{”。
代碼行:本行包括多於一個字符的代碼。
註釋行:本行不是代碼行,並且本行包括註釋。一個有趣的例子是有些程序員會在單字符後面加註釋:
} //註釋
在這種情況下,這一行屬於註釋行。
[file_name]: 文件或目錄名,可以處理一般通配符。
高級功能:
-x 參數。這個參數單獨使用。如果命令行有這個參數,則程序會顯示圖形界面,用戶可以通過界面選取單個文件,程序就會顯示文件的字符數、行數等全部統計信息。
需求舉例:
wc.exe -s -a *.c
返回當前目錄及子目錄中所有*.c 文件的代碼行數、空行數、註釋行數。
二、psp表格
PSP2.1 |
Personal Software Process Stages |
預估耗時(分鐘) |
實際耗時(分鐘) |
Planning |
計劃 |
30 |
60 |
· Estimate |
· 估計這個任務需要多少時間 |
120 |
150 |
Development |
開發 |
180 |
240 |
· Analysis |
· 需求分析 (包括學習新技術) |
30 |
30 |
· Design Spec |
· 生成設計文檔 |
30 |
30 |
· Design Review |
· 設計復審 (和同事審核設計文檔) |
0 | 0 |
· Coding Standard |
· 代碼規範 (為目前的開發制定合適的規範) |
10 | 10 |
· Design |
· 具體設計 |
30 |
30 |
· Coding |
· 具體編碼 |
60 |
60 |
· Code Review |
· 代碼復審 |
20 |
30 |
· Test |
· 測試(自我測試,修改代碼,提交修改) |
30 |
20 |
Reporting |
報告 |
30 |
40 |
· Test Report |
· 測試報告 |
30 |
40 |
· Size Measurement |
· 計算工作量 |
10 |
10 |
· Postmortem & Process Improvement Plan |
· 事後總結, 並提出過程改進計劃 |
30 |
20 |
合計 |
640 |
770
|
三、遇到的困難及解決方法
程序設計分析,需理清程序各部分功能及其聯系整合;功能分析,統計字符時,對於不同格式字符如何統計;文本讀取,該采用何種方法進行讀操作;測試分析,如何進行測試,測試的流程及測試修改。通過分析各種可能遇到的問題,再而進行解決,最終完成程序,收獲的話在於功能整合這塊,理清之後對程序的了解加深。
四、關鍵代碼or設計說明
關鍵代碼,進行文本更復雜行數據的統計,先讀後進行篩選判斷得出。
程序設計,程序由三部分組成,一個是主函數testMain,進行函數調用,測試所需功能;再者便是文本讀取功能fileUnit,進行文本讀操作,裏面還有行數統計及擴展復雜功能行統計功能;最後便是文本統計功能Total,進行不同格式的字符數統計工作。
五、代碼說明
主函數testMain,通過System.out.printIn輸入所需提示語言列表,通過System.in鍵入文本鏈接url及功能選擇func,最後通過switch(func),完成對不同功能的實現。
文本讀取函數fileUnit,通過讀取文本返回所有字符,再進過Total統計函數處理,即可得到相應的不同格式字符數。
字符統計函數Total,即對每個字符進行判斷篩選,進而統計得到不同字符個數。
六、測試運行
測試文件:study.txt
1.特殊字符統計
2.詞數統計
3.行數統計
4.復雜行(代碼行 / 空行 / 註釋行)統計
七、項目小結
其實程序本身並不太難,只要理清程序結構,即先讀取文本所有字符,然後再進行篩選統計,然後再用代碼去實現它們即可,細分各個環節功能,各自實現目的,再進行整合。相信這一次的項目學習,讓自己的經驗有所提高,之後再遇到類似的項目設計時,能夠冷靜思考,進而分析設計,整體能輕松很多。所以我想,項目經驗是非常重要的,所學知識能夠進行實踐操作,對自己的水平會提升很大。
JAVA實現WC.EXE