201671010450姚玉婷 實驗二詞頻統計

1、可行性分析

1)操做可行性
     操做可行性是指系統的操做方式在這個用戶組織內行得通嗎?本次開發只是簡單的一個詞頻統計,不須要太大的人力或是資源。
2) 經濟可行性
      經濟可行性是從經濟的角度分析系統的規劃方案有無實現的可能性和開發的價值。本系統是自主開發的,用於本身的做業設計,因此不考慮資金上的流動,故而不存在經濟不可行得問題。
3) 技術可行性
      技術上的可行性要考慮未來採用的硬件和軟件技術可否知足用戶提出的要求。目前,使用eclipse軟件徹底能夠,因此,也不存在技術可行性的問題。java

2、需求分析

根據實驗二可知,使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。其基本需求以下:git

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

3、功能實現

   1)現統計詞彙數目
   2)查找指定詞彙
   3)查找高頻單詞
   4)實現字典排序github

4、開發環境

操做系統 Widnows 7
開發工具 Eclipse
JDK 1.8
流程圖設計 迅捷流程圖製做軟件

5、流程圖

6、部分代碼

    該程序共有三個類
1)包含主函數main的主類:Main.java
2)單詞詞頻統計和高頻詞統計的功能類: Wordcount.java,對用戶輸入的單詞進行處理,查詢單詞出現的次數。
3)排序功能類:WordEntity.java,對整個文本文件進行降序或者排序。
                       詞頻統計編程

try {
            BufferedReader reader = new BufferedReader(new FileReader(fileName));
            String line = null;
            TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
            while((line=reader.readLine())!=null){
                line = line.toLowerCase();
                String str[] = line.split("\\s+");
                for(int i = 0; i<str.length; i++){
                    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<Entry<String, Integer>> iterator=tm.entrySet().iterator();
            while(iterator.hasNext())
            {
                System.out.println(iterator.next());
            }
            
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }

                       高頻統計app

try {
            BufferedReader br = new BufferedReader(new FileReader(fileName));
            String s;
            StringBuffer sb = new StringBuffer();
            while ((s = br.readLine()) != null) {
                sb.append(s);
            }
            
            Map<String,Integer> map = new HashMap<String, Integer>();
            StringTokenizer st = new StringTokenizer(sb.toString(),",.! \n");
            while (st.hasMoreTokens()) {
                String letter = st.nextToken().trim();
                int count;
                if (!map.containsKey(letter)) {
                    count = 1;
                } else {
                    count = map.get(letter).intValue() + 1;
                }
                map.put(letter,count);
            }
            
            Set<WordEntity> set = new TreeSet<WordEntity>();
            for (String key : map.keySet()) {
                set.add(new WordEntity(key,map.get(key)));
            }
 
            System.out.println("本文中出現頻率最高的單詞爲:");
for(int i=0;i<rulerStep;i++){
            g2.drawString((400-20*i)+"個", 8, topMargin+rulerStep*i);//繪製Y軸上的數據
        }
        g2.setColor(Color.PINK);
        int m=0;
        for(int i = 0;i<st.length;i++){
            int value = tm.get(st[i]);
            int step = (m+1)*40;//設置每隔柱形圖的水平間隔爲40
            g2.fillRoundRect(leftMargin+step*2,Height-value, 40, value, 40, 10);//繪製每一個柱狀條
            g2.drawString(st[i], leftMargin+step*2, Height-value-5);    //標識每一個柱狀條       
            m++;
        }*/
可是因爲本人能力有限,以前對圖形化的設計方面不太瞭解,最後結果沒能呈現出來。

7、測試運行

                  開始運行
eclipse

                  統計頻率,並按字典排序輸出
編程語言

                  統計出現頻率次數最高
函數

                  查找單詞功能

工具

8、PSP

PSP2.1 任務內容 計劃共完成須要的時間(min) 實際完成須要的時間(min)
Planning 計劃 15 10
Estimate 估計這個任務須要的時間,並規劃大體工做步驟 15 10
Development 開發 180 220
Analysis 需求分析(包括學習新技術) 6 8
Design Spec 生成設計文檔 30 20
Design Review 設計複審 15 10
Coding Standard 代碼規範(爲目前的開發製做合適的規範) 3 3
Design 具體設計 10 10
Coding 具體編碼 50 60
Code Review 代碼複審 5 8
Test 測試(自我測試、修改代碼,提交修改) 8 6
Reporting 報告 9 8
Test Report 測試報告 1 2
Size Measurement 過後總結,並提出過程改進計劃 5 5

9、總結

   本身雖然以前編寫過程序,也編寫過一些小項目,可是,由於時間久了不動手致使在這次編程中
出現了不少問題,不少方面都出現了許許多多的問題。致使本身又回過頭從新去學習,花費了大量
的時間。可是,因爲本身的編程能力有限,柱形圖的功能未能實現。

10、GitHub倉庫地址

該項目倉庫地址學習

相關文章
相關標籤/搜索