201671010433 | 詞頻統計軟件項目報告

1.需求分析

使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。軟件基本功能要求以下:
1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。
2.程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
3.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。
4.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
5.統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件words.txt。java

2. 功能設計

基本功能:利用java的io流實現對文本文件的讀取、Map和HashMap集合對文件進行存儲,進行詞頻統計後輸出單詞的使用次數。git

3. 流程圖

程序設計流程圖以下:
github

4. 測試運行


5. 主要代碼

過濾代碼塊;
String[] str = readLine.split("[\\s]"); //過濾掉多個空格,「+」表明多個空格的意思 for(int i = 0;i<str.length;i++){ count++; String word = str[i].trim();//trim()用來去掉字符串首尾的空格 if(treemap.containsKey(word)){//判斷此映射是否包含指定鍵的映射關係 treemap.put(word, treemap.get(word)+1); }else{ treemap.put(word, 1); } }
輸出代碼塊:算法

System.out.println("單詞:"+"\t"+"單詞出現的頻率:" );
            Iterator<Map.Entry<String,Integer>> it  = treemap.entrySet().iterator();
            //判斷是否存在下一個單詞
            while(it.hasNext()){
                Map.Entry<String, Integer> entry = it.next();//獲取map中每個鍵值
                //輸出結果
                System.out.println(entry.getKey()+"        "+entry.getValue());
                br.close();//關閉流
            }
            System.out.println("單詞總數爲:"+count+"個");

        }catch(FileNotFoundException e){//異常處理
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }

6. 總結

本次設計主要分爲字符流讀取模塊、字符存儲模塊、字頻統計模塊、字符輸出模塊,各個模塊經過主函數來調用,實現了模塊化設計。編程

7. PSP展現

任務內容 計劃共完成須要的時間(min) 實際完成須要的時間(min)
計劃 10 5
估計這個任務須要的時間,並規劃大體工做步驟 5 3
開發 100 120
需求分析(包括學習新技術) 7 9
生成設計文檔 15 20
設計複審 5 7
代碼規範(爲目前的開發制定合適的規範) 5 5
具體設計 6 8
具體編碼 60 80
代碼複審 10 25
測試(自我測試、修改代碼、提交修改) 10 8
報告 20 25
測試報告 10 10
過後總結,並提出過程改進計劃 25 20

從PSP表中能夠發現項目在實施工程中的時間比預計時間要長,可能和本身對開發流程不熟悉、算法設計不精有關。在之後的 開發中要多加改進。
源代碼地址;https://github.com/CoderLixin/GitTest編程語言

相關文章
相關標籤/搜索