項 目 | 內 容 |
---|---|
所屬課程 | 軟件工程 |
做業要求 | 實驗二軟件工程我的項目 |
課程目標 | 掌握軟件項目我的開發流程, 掌握Github上發佈軟件項目的操做方法。 |
項目源碼 | 源碼連接 |
1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。
2.程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
3.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。
4.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
5.統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。html
1.讀取英文文本的功能;
2.可輸出指定單詞的詞頻(可輸入一個或多個單詞);
3.可顯示對應單詞的柱狀圖;
4.統計並輸出前k個高頻詞及其詞頻;
5.統計文本中的單詞數量及詞頻數;
6.將單詞及詞頻數按字典順序輸出到文件result.txt。git
1.統計並輸出前k個高頻詞及其詞頻github
public void topword(TreeMap<String, Integer> wordFrequent) { Set<Map.Entry<String, Integer>> set=wordFrequent.entrySet(); List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(set); System.out.println("請輸入單詞個數:"); int k = in.nextInt(); int i; Collections.sort(list,new Comparator<Map.Entry<String,Integer>>() { public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { return o2.getValue()-(o1.getValue()); } });//end of sort for (i = 0; i < k; i++) { System.out.println(list.get(i)); } System.out.println("Over!"); System.exit(0); }//end of topword
2.將單詞及詞頻數按字典順序輸出到文件result.txt編程
public void printresult(TreeMap<String, Integer> wordFrequent) throws IOException { Set<Map.Entry<String, Integer>> set=wordFrequent.entrySet();//返回treemap裏的條目規則集 FileWriter file = new FileWriter("result.txt"); BufferedWriter reader = new BufferedWriter(file); for(Map.Entry<String, Integer> e:set) { reader.write(e.getKey() + ":" + e.getValue() + "\t"); } reader.close(); System.out.println("Over!"); System.exit(0); }//end of printresult
主類裏實現功能選擇,簡單的退出功能和調用Function類中的函數的功能,Function類裏實現指定單詞詞頻統計功能,高頻詞統計功能(前k個)和統計該文本全部單詞數量及詞頻數,並將單詞及詞頻數按字典順序輸出到文件result.txt的功能,每一個功能用一個函數實現,以實現軟件設計的「模塊化」原則。模塊化
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
---|---|---|---|
Planning | 計劃 | 8 | 10 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 8 | 10 |
Development | 開發 | 130 | 256 |
Analysis | 需求分析 (包括學習新技術) | 20 | 44 |
Design Spec | 生成設計文檔 | 10 | 14 |
Design Review | 設計複審 | 10 | 12 |
Coding Standard | 代碼規範 | 5 | 5 |
Design | 具體設計 | 10 | 10 |
Coding | 具體編碼 | 60 | 145 |
Code Review | 代碼複審 | 5 | 10 |
Test | 測試(自我測試,修改代碼,提交修改 | 10 | 16 |
Reporting | 報告 | 5 | 5 |
Test Report | 測試報告 | 3 | 2 |
Size Measurement | 計算工做量 | 2 | 3 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 3 | 5 |
經過本項目,我對軟件的開發流程有了大體的瞭解,這種規範化的流程對比我以往的代碼編寫方法確實有許多的優勢;經過本項目,我也學到了一些新知識,好比怎樣將TreeMap按value值排序,怎樣在Github上發佈軟件項目;經過本項目,我也發現了本身還有許多不足之處,好比Java基礎很差,編程實現困難。在本次項目開發中,我也有一點遺憾,一是沒有實現選擇功能的循環錄入,二是因我的能力不足沒有將指定單詞的柱狀圖徹底實現,而是用一種投機取巧的方式實現。函數