201671010430 司昕劼 詞頻統計軟件項目報告

  • 實驗要求:(http://www.javashuo.com/article/p-mvfktgks-hz.html)html

    需求分析

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

功能設計

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

設計實現

  • 此軟件有兩個類:(1)WordCount.java主要實現文件的讀入和選擇對應的功能。根據用戶輸入的選擇調用對應的方法。(2)方法在Tongji.java中,oneWord(取一個單詞的頻率),gaopin(根據用戶輸入的k值取高頻詞),out(將單詞和詞頻數按字典順序輸入到result.txt文件)

測試運行

1.顯示單詞詞頻(因我的能力問題再沒有作柱狀圖)

2.輸出前K個高頻詞

3.向result.txt寫入單詞和詞頻
git

主要代碼

  • 文件功能選擇
Scanner input = new Scanner(System.in);
        int i=input.nextInt();  
        switch(i){
        case 1:
            //提示用戶輸入單詞,並提示用什麼符號隔開
            System.out.printf("請輸入你要查找的單詞,並用';'隔開");
            String str= input.next();
            Tongji tj=new Tongji();
            a=tj.oneword(map,str); //經過方法調用來實現單個單詞的頻率
            break;                  //用break中斷循環,不然一直執行,直到最後
        case 2:     
            Scanner sc=new Scanner(System.in);
            System.out.println("請輸入要查看的高頻詞頻的個數:"); 
            int k = sc.nextInt();  
            Tongji tj1=new Tongji();
            tj1.gaopin(map, k); //經過方法調用來實現單個單詞的頻率
            break;
        case 3:
            Tongji tj2=new Tongji();
            tj2.out(map);   //經過方法調用來存入result文件
            break;
        }   
    }

//存入單詞詞頻進入文件github

public void out(Map<String,Integer> map ){//傳入集合
        File f=new File("result.txt");          //建立文件result.txt
        try{
            if(!f.exists()){
                f.createNewFile();              //若是文件不存在則建立文件
            }
            FileWriter ff=new FileWriter(f.getCanonicalFile());//寫文件
            for(Entry<String,Integer> entry:map.entrySet()){
                ff.write(entry.getKey()+"/"+entry.getValue()+"    "+"\n");//遍歷
            }
            ff.close();                         //文件流關閉
            System.out.println("統計輸出完成!");
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }

總結

以功能塊爲單位進行程序設計,實現其求解算法的方法稱爲模塊化。
在Tongji類中,用三個函數實現了模塊化。在與主函數的交互過程當中經過用戶輸入值來調用相應的功能模塊來驅動目標實現。算法

PSP展現

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

雖然老師上課講了作東西以前要進行需求分析,也認真作了需求分析,可是在實際實現的過程當中耗時且有不少缺點。好比長時間未使用Java,居然致使犯一些低級錯誤(在數據從鍵盤輸入後忘記用next來接收)。並且在實現過程當中老是須要藉助於外力才能夠去實現這些功能。可是一步步的也實現了功能。在開發階段用的時間比預計的多的多,仍是說明了本身的不熟悉。總之仍是要多練習,熟能生巧吧!模塊化

源碼地址函數

相關文章
相關標籤/搜索