201671010429蘇生玲實驗二詞頻統計軟件項目報告

項目 內容
這個做業屬於哪一個課程? 2016級計算機科學與工程學院(西北師範大學)
這個做業的要求在哪裏? 實驗二 軟件工程我的項目
我在這個課程的目標是? 按時完成老師給的任務,複習JAVA相關知識,掌握軟件項目我的開發流程,掌握Githup上發佈軟件項目的操做方法
Github相關代碼 連接

一.需求分析.

  • 程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。

  • 程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。

  • 指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。

  • 高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。

  • 統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。

二.功能設計.

  • 基本功能:

    1.從指定文件中讀入單詞,統計單詞個數。

    2.詞頻的排序:將單詞按值從大到小輸出。

  • 擴展功能:無

三.設計實現.

所使用的類:

  • main 類

    對讀入的詞頻進行存儲,自動過濾掉非英文包括數字,字符並去除長度爲0的行。

    單詞的詞頻統計

  • WordCount類

    SortMap函數對文件中的詞頻按值的大小進行排序。

    四.測試運行.

    五.比較滿意的代碼

  • 代碼片斷一:

/*從指定文件中讀入單詞,處理文件中的單詞,對於數字,符號等非字母過濾 */  
  
    public class WordCount {  

    public static void main(String[] args) throws Exception {  
          
        BufferedReader br = new BufferedReader(new FileReader("F:/count/wordcount.txt"));  
        List<String> lists = new ArrayList<String>();  //存儲過濾後單詞的列表  
        String readLine = null;
        while((readLine = br.readLine()) != null){  
            String[] wordsArr1 = readLine.split("[^a-zA-Z]");  //過濾出只含有字母的  
            for (String word : wordsArr1) {  
                if(word.length() != 0){  //去除長度爲0的行  
                    lists.add(word);  
                }  
            }  
        }  



- ###代碼片斷二:
/*單詞的詞頻統計*/  
    for (String li : lists) {  
        if(wordsCount.get(li) != null){  
            wordsCount.put(li,wordsCount.get(li) + 1);  
        }else{  
            wordsCount.put(li,1);  
        }  

    }
  • 代碼片斷三:

    /按value的大小進行排序/
    ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(oldmap.entrySet());html

    Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){  
          @Override  
          public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {  
              return o2.getValue() - o1.getValue();  //降序  
          }  
      });

    六.總結.

    本次項目預計要實現的功能比較全面,可是因爲編程能力不足,有些功能還沒有實現。在本次項目中,雖然實現了部分功能,但在同時也複習了JAVA的相關知識,基本掌握了軟件項目我的開發 流程,也學習了Githup上發佈軟件項目的操做方法。慢慢理解,理論加實踐的學習方法,在從此的學習中,去克服編程方面的弱點,提升編程能力。git

    七.PSP表格.

    PSP是卡耐基梅隆大學(CMU)的專家們針對軟件工程師所提出的一套模型:Personal Software Process (PSP, 我的開發流程,或稱個體軟件過程)。github

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