201671010454詞頻統計軟件項目報告

1、課程名稱:2016級計算機科學與工程學院軟件工程(西北師範大學)

2、課程要求:實驗二 軟件工程我的項目

3、實驗目標:

(1)掌握軟件項目我的開發流程。
(2)掌握Github上發佈軟件項目的操做方法。html

4、實驗內容:

(一)需求分析java

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

(二)功能設計git

  1. 文件的讀入輸出功能:針對需求一和需求四。
  2. 鍵盤輸入功能:針對需求二和需求三(用戶可從鍵盤輸入查看詞頻統計個數的的展現)。
  3. 頻詞統計功能:針對需求2、3、四(運用程序的統計功能進行詞頻統計)。
  4. 排序功能:針對需求三和需求四(按照詞頻數降序,按照字典順序排序)。

(三)設計實現github

  1. 該程序共有四個類,包括一個主函數Main.java和三個功能類。主函數Main.java用來控制整個流程(讀入文本、單詞詞頻統計、柱狀圖展現)
  2. WordCount.java:指定單詞詞頻統計,可顯示對應單詞在文本中出現的次數和柱狀圖。
  3. HighCount.java:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
  4. WordSave.java:統計文本全部單詞數量及詞頻數,並將單詞及詞頻數按字典順序輸出到文件result.txt。

(四)測試運行正則表達式

  1. 功能1測試
  2. 功能2測試
  3. 功能3測試
  4. 功能4測試

(五)代碼展現函數

  1. 讀入文本,並將文本內容按照正則表達式截取純單詞文本(即不包含其餘字符)
String line = "src/word.txt";
        File file = new File(line);
        InputStreamReader is = new InputStreamReader(new FileInputStream(file), "utf-8");
        BufferedReader buff = new BufferedReader(is);
        List<String> list = new ArrayList<String>();//list中只存放純單詞文本
        String readLine = null;//單詞列表初始爲空
        while((readLine = buff.readLine())!=null){
            String[] WordsArr = readLine.split("[^a-zA-z]");
            for(String word:WordsArr){
                if(word.length()!=0){
                    list.add(word);//將截取後的純單詞放入list
                }
            }
        }
        buff.close();
  1. 本段代碼實現了最後一個功能:將單詞及詞頻數按字典順序輸出到文件result.txt
File file = new File("src/result.txt");
            if(file.exists()) {
                file.createNewFile();
            }
            FileWriter fop = new FileWriter(file.getAbsoluteFile());
            for(Entry<String,Integer> entry : Map2.entrySet()) {
                fop.write(entry.getKey()+":\t"+entry.getValue()+"\n");
            }
            fop.close();
            System.out.println("存放成功!");

(六)總結學習

在程序設計過程當中,需求分析必不可少。若是一開始就寫代碼,能寫一兩個功能,可是要完整地實現整個程序並運行,必須對每一個功能模塊進行分析。該程序中,涉及到了文本的讀入和輸出、單詞個數的統計以及排序功能,各個功能模塊之間雖然都有聯繫,但最好保證各模塊之間的獨立性,便於程序的測試和維護。

(七)PSP測試

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

(八)經驗分享編碼

編寫程序不是單純的寫代碼,在正式寫代碼以前,設計顯得尤其重要。並且在設計功能模塊時不能將全部功能放在一塊兒,要作到功能模塊獨立性,模塊獨立是優秀設計的關鍵,而設計又是決定軟件質量的關鍵環節。其次,要學會正確的查閱資料。
spa

點此查看項目源代碼

相關文章
相關標籤/搜索