點我查看源碼java
任務:使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。
1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。
2.程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
3.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。
4.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
5.統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。git
- 基本功能:1.可讀入10萬詞以上的英文文本
2.可查找一個或多個英文單詞並能夠統計出現次數和生成柱狀圖
3.能夠統計出前k個高頻單詞及詞頻,並能夠輸出到文件result.txt- 擴展功能:無
使用Map集合存放文件,給文件建立一個文件緩衝流,方便後期取值。爲了提升文件的健壯性便使用了集合。github
將以前存在TreeMap中的文本單詞拿出,和用戶輸入的單詞作對比和截取,區分單詞和鍵值對的比較,當查找到相同單詞時,返回一個數據。編程
用一個迭代器遍歷了整個單詞數組,在以前將文本文件用write方法寫入。數組
當用戶查找出須要的單詞時,彈出的不只有單詞的詞頻數,還有柱狀圖的直觀統計。在繼承了JFrame類建立的可視化圖形界面後,經過Graphics2D方法建立一個柱狀統計圖。編程語言
else if (i==2){ //高頻單詞的顯示 String st=null; Integer in=0; Integer temp; Iterator<String> it1 = wordsave.keySet().iterator(); while(it1.hasNext()) { String key = (String) it1.next(); Integer value = wordsave.get(key); if(value>in){ temp=value; in=temp; value=in; st=key; } } System.out.println(st+" \t"+in); } public void save(TreeMap<String, Integer> word){ //傳入一個map類型的集合參數 //統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt BufferedWriter bw = null; try { File file1 = new File("result.txt"); if (!file1.exists()) { file1.createNewFile(); } FileWriter fw = new FileWriter(file1.getAbsoluteFile()); bw = new BufferedWriter(fw); } catch (IOException e) { e.printStackTrace(); } Iterator<String> it1 = word.keySet().iterator();//用迭代器把集合中的單詞遍歷 while(it1.hasNext()) { String key = (String) it1.next();//拿到key和value的值 Integer value = word.get(key); try { bw.write(key+"="+value+"\n");//將key和value的值寫入 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
}
}學習
經過此次詞頻統計的我的項目開發,真實地模擬了軟件開發的部分流程,瞭解到開發一個軟件並不單單只是作代碼的設計和編碼部分。真正下功夫的地方仍是需求分析和基本的功能設計。可是當明白了項目的具體要求與分析以後,技術這關仍是欠缺。不少功能沒法實現。
學習到了不少java封裝的知識點,查詢了不少資料也和同窗作了不少討論,對Java的編碼更加熟練了。測試
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
Planning | 計劃 | 20 | 35 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 30 | 50 |
Development | 開發 | 500 | 700 |
Analysis | 需求分析 (包括學習新技術) | 120 | 180 |
Design Spec | 生成設計文檔 | 30 | 45 |
Design Review | 設計複審 (和同窗一塊兒審覈設計文檔) | 30 | 60 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 20 | 30 |
Design | 具體設計 | 60 | 130 |
Coding | 具體編碼 | 120 | 180 |
Code Review | 代碼複審 | 30 | 45 |
Test | 測試(自我測試,修改代碼,提交修改) | 20 | 50 |
Reporting | 報告 | 35 | 25 |
Test Report | 測試報告 | 20 | 35 |
Size Measurement | 計算工做量 | 10 | 10 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 20 | 20 |