1. 程式人生 > >201671010421 麻存滔 詞頻統計軟件項目報告

201671010421 麻存滔 詞頻統計軟件項目報告

分解 read 內容 color 大致 row 流程圖 pro github

一.需求分析

1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個,程序需要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
2.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。
3.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
4.統計該文本所有單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。

二、功能設計

基本功能

1.用戶輸入任意英文文本,顯示對應單詞在文本中出現的次數和對應的單詞。

2.用戶從鍵盤輸入高頻詞輸出的個數n,按文本中詞頻數降序顯示前n個單詞的詞頻及單詞,用戶也可輸入文本查詢其出現次數。
3.統計該文本所有單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。
擴展功能
讀入讀出文件功能(將文件進行讀取,存放),輸入一個文件的文件路徑及文件名可以找到該文件並對該文件中的文本進行單詞分解和單詞詞頻統計。

三、設計過程

流程圖

技術分享圖片

主要代碼

            //使用流的方法讀取文件
            BufferedReader br = new BufferedReader(new FileReader(
                    "F:\\javademo\\softwar_pro\\MRDemo\\words.txt"));
            //使用TreeMap方法自動將結果按Integer列
            TreeMap<String,Integer> treemap = new TreeMap<String,Integer>();
            //用來存儲讀取的單詞
            String readLine = null;
            //記錄單詞的總數
            int count = 0;
            while((readLine = br.readLine())!=null){
                //將字母排序為小寫
                readLine = readLine.toLowerCase();
                //將所有單詞以大寫輸出
                //readLine  = readLine.toUpperCase();
                //過濾出只含有字母的字段
                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);
                    }
                }
            }

四、測試結果

技術分享圖片
技術分享圖片
技術分享圖片

五、總結

在這次的詞頻統計軟件開發過程中,主要將該軟件分成三大模塊:
1.文本的單詞提取和詞頻統計、單詞匹配後輸出
2.根據單詞詞頻排序後輸出用戶需要查看
3.根據單詞字母表順序排序後保存在文件中。
第一個模塊在主函數中實現,而後面三個模塊分別通過三個子函數來實現,之後在主函數中被調用,以此來達到軟件設計的“模塊化”設計。

六、PSP展示

PSP2.1 任務內容 計劃共完成需要的時間(min) 實際完成需要的時間(min)
Planning 計劃 10 15
Estimate 估計這個任務需要多少時間,並規劃大致工作步驟 10 8
Development 開發 150 140
Analysis 需求分析 (包括學習新技術) 30 50
Design Spec 生成設計文檔 10 15
Design Review 設計復審 (和同事審核設計文檔) 6 5
Coding Standard 代碼規範 (為目前的開發制定合適的規範) 5 5
Design 具體設計 15 13
Coding 具體編碼 120 100
Code Review 代碼復審 15 12
Test 測試(自我測試,修改代碼,提交修改) 20 15
Reporting 報告 9 7
Test Report 測試報告 5 5
Size Measurement 計算工作量 1 2
Postmortem & Process Improvement Plan 事後總結 ,並提出過程改進計劃 5 4

通過本次試驗讓我深刻認識到軟件開發的不易,單人操作非常不易,需要團隊一起去合作,軟件開發過程中計劃往往趕不上變化,過程中浪費了很多的時間。我也認識到專業知識的不足,需要更加努力。
該詞頻統計軟件源碼可點此處查看

201671010421 麻存滔 詞頻統計軟件項目報告