201671010408-達星斗-詞頻統計軟件項目報告

在Github的倉庫主頁的連接地址:
https://github.com/daxd123/mygit/blob/master/%E8%AF%8D%E9%A2%91%E7%BB%9F%E8%AE%A1%E4%BB%A3%E7%A0%81.javajava

1.需求分析:

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

2. 功能設計:

基本功能:
              (1).可導入任意英文文本文件
              (2).統計該英文文件中單詞數和各單詞出現的頻率(次數),並能將單詞按字典
                            順序輸出。
               (3).將單詞數量及頻率寫入文件。
擴展功能:無

3. 設計實現:

首先,設定文件讀取路徑,若讀取不成功,則顯示輸出系統找不到指定的文件;若讀取成功,則統計單詞總數sum和每一個單詞個數及頻率。
a. 預處理模塊:
( 1 ) readText()
讀文本數據,計算詞頻
(2)check()
過濾無心義的單詞
(3)sort( )
對單詞詞頻進行從高到底排序,取前20個單詞。
b. 可視化模塊:
單詞雲:將選出的數據經過大小,位置和顏色區分可視化出來。
初始化: text()構造函數
設置顏色: setColor()
設置大小: setTextSize()
運行(繪製):run( )github

4. 測試運行:



5.部分代碼:

while ((s = bufferedReader.readLine()) != null) {
            Map<String, Integer> map = new TreeMap<String, Integer>();
            //建立一個words數組,分割字符串,來統計單詞出現的次數
            String[] words = s.split("[【】、.。,\"!--;:?\'\\] ]");
            for (int i = 0; i < words.length; i++) {
                String key = words[i].toLowerCase();
                if (key.length() > 0) {
                    if (!map.containsKey(key)) {
                        map.put(key, 1);
                    } else {// 若是不是第一次出現,就把value值++,那麼value值是多少就是出現了幾回
                        int value = map.get(key);
                        value++;
                        map.put(key, value);
                    }
                }

6. 總結:

一個類只負責一項職責,是防止當因爲其中一個類的需求發生改變而須要修改該類時,有可能會致使本來運行正常的另外一個類的功能發生故障。編程

7.

展現PSP數組

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

8.分享心得:

經過此次軟件工程我的項目的開發,讓我感觸很深。我以爲軟件項目的開發應該是一個團隊來作,由於過程非常繁瑣。一個團隊來作的話,會有明確的分工,就不會致使手忙腳亂的狀況。還有就是,我以爲本身對java一點都不瞭解,代碼也是問了不少的同窗才寫出來的。對於軟件工程這門課來講,掌握一門編程語言非常必要的,因此我應該去好好學習一門編程語言。編程語言

相關文章
相關標籤/搜索