1、需求分析git
嘗試按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。軟件基本功能要求以下:github
•程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。編程
•程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。框架
•指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。編程語言
•高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。模塊化
•統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。函數
2、功能設計學習
•讀取文件text.txt,能容納10萬單詞以上。測試
•統計詞頻,能夠分解輸入字符串並統計輸入一個或多個單詞的詞頻。編碼
•統計高頻詞,用戶輸入高頻詞個數n,程序返回n個高頻詞以及每一個單詞的詞頻。
•將text.txt文本中的單詞及其詞頻按照字典順序輸出到文件result.txt文件中。
3、設計實現
項目主要包含兩個類,一個是主函數Main,一個是統計單詞的類SortResult。
•主函數Main中實現圖形用戶界面,實現各個功能。輸入框3個,分別是原文本文件的文件名(採用相對路徑),想要查找的一個或多個單詞,想要查找的N高頻詞及其詞頻數。兩個按鈕,分別是「肯定」和「取消」。因爲兩個查找在同一個面板,防止出現衝突,若兩個輸入框均有輸入,則實現第一個輸入框的功能。點擊肯定後,直接將字典順序輸出到result.txt文本中,而且實現相應功能。
•SortResult中將文本中的每一個單詞按照字典順序將單詞及詞頻數輸出到result.txt文本文件
五.比較滿意的代碼:
六.PSP:
PSP2.1 |
任務內容 |
計劃共完成須要的時間(min) |
實際完成須要的時間(min) |
Planning |
計劃 |
40 |
60 |
Estimate |
估計這個任務須要多少時間,並規劃大體工做步驟 |
10 |
10 |
Development |
開發 |
1000 |
1155 |
Analysis |
需求分析 (包括學習新技術) |
20 |
25 |
Design Spec |
生成設計文檔 |
30 |
35 |
Design Review |
設計複審 (和同事審覈設計文檔) |
50 |
40 |
Coding Standard |
代碼規範 (爲目前的開發制定合適的規範) |
10 |
10 |
Design |
具體設計 |
150 |
130 |
Coding |
具體編碼 |
600 |
700 |
Code Review |
代碼複審 |
25 |
30 |
Test |
測試(自我測試,修改代碼,提交修改) |
10 |
25 |
Reporting | 報告 | 10 | 25 |
Test Report | 測試報告 | 10 | 10 |
Size Measurement | 計算工做量 | 30 | 30 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 30 | 30 |
七.源碼在Github的倉庫主頁連接地址:https://github.com/xuhaojiejie/-
八.項目總結 :
經過完成實驗二的我的項目,使我認識到本身的基礎真的是很是薄弱,同時也認識到須要學習的東西還有不少,須要去圖書館和網上查閱大量的資料,代碼要同窗協助我完成,同時也知道了模塊化程序設計即模塊化設計,屬於計算機編程,簡單地說就是程序的編寫不是開始就逐條錄入計算機語句和指令,而是首先用主程序、子程序、子過程等框架把軟件的主要結構和流程描述出來,並定義和調試好各個框架之間的輸入、輸出連接關係。在從此的學習中必定要認真學習這門課程,會讓我受益不淺。