201671030123+詞頻統計軟件項目報告

需求分析.

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

功能設計.

基本功能:本次設計實現的功能有讀取英文文本,將文本中詞頻數降序排列,輸出所有單詞的詞頻,顯示最高頻率的單詞的詞頻及單詞,所有單詞的詞頻寫入文件result.txt中。git

設計實現

本次設計建立了三個類,Main.java Sort.java WordCont.java
1.Main.java 實現了文本中單詞的讀入並將單詞及其詞頻數按字典順序輸出到result.txt。
2.Sort.java 實現對文本中單詞數目的降序排序,找出出現頻率最高的單詞
3.WordCont.java實現了詞頻統計,將單詞及其詞頻數按字典順序輸出,並輸出文本中單詞的總數目和出現頻率最高的單詞。
4.流程圖
github

測試運行

  1. 輸出英文文本中的單詞及其詞頻數。
    編程

  2. 輸出文本中單詞的總數目和出現頻率最高的單詞。
    編程語言

  3. 將單詞及詞頻數按字典順序寫入result.txt

    ide

代碼片斷

1.字符統計學習

//統計單詞詞頻數
 TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
            int count = 0;
            while((line=reader.readLine())!=null){
                line = line.toLowerCase();
                String str[] = line.split("[【】、.。,\"!--;:?\'\\] ]");
                for(int i = 0; i<str.length; i++){
                     count++;
                    String word = str[i].trim();
                    if(tm.containsKey(word)){
                        tm.put(word, tm.get(word)+1);
                    }else{
                        tm.put(word, 1);
                    }
                }
            }
            //輸出咱們想要的字符串格式
            System.out.println("按字典序輸出爲:");
            Iterator iterator=tm.entrySet().iterator();
            while(iterator.hasNext())
            {
                System.out.println(iterator.next());
            }
            System.out.println("該英文文本中共有單詞:"+count+"個");

2.降序排序測試

public class Sort implements Comparable<Sort>{
    @Override
    public int compareTo(Sort o) {
        int cmp = count.intValue() - o.count.intValue();
        return (cmp == 0 ? key.compareTo(o.key) : -cmp);
    }

總結

在本次程序設計中使用JAVA語言編寫程序。對JAVA語言的使用有了更深入的理解,能夠跟熟練的編寫代碼,瞭解軟件開發過程。本次實驗過程當中在網上查找了不少資料,經過參考了別人的代碼,更好的瞭解各類方法並將其運用到本身的代碼上。本次設計的我將程序分爲三個類;Main.java,Sort.java ,WordCont.java .這也便於修改程序,查找錯誤。在程序中使用TreeMap方法實現存儲元素的自動排序,調用compareTo方法來實現單詞數目的降序排序,用<key,value>映射,採用Map按鍵排序。此次實驗讓我感覺到本身在編程方面的不足,之後還需增強學習,重視實踐與理論相結合。

展現PSP

任務內容 計劃完成時間(min) 實際完成時間(min)
計劃 15 20
規劃工做步驟 15 10
開發 100 150
需求分析 15 15
生成文檔 20 20
設計複審 10 5
代碼規範 20 18
具體編碼 180 220
代碼複審 10 5
測試 20 40
報告 30 30
測試報告 10 10
計算報告量 5 5
過後總結 10 10

GitHub源代碼地址編碼

相關文章
相關標籤/搜索