1. 程式人生 > >JAVA實現WC.EXE

JAVA實現WC.EXE

nbsp 多個 提高 軟件工程 分鐘 便是 單元 估計 遇到的問題

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