201671010433王立新《英文文本統計分析》結對項目報告

任務一、博文互評

本次點評了同班同窗黨鵬博寫的有關詞頻統計的博文,點評以下:基本實現了詞頻統計的功能,可是在博文的末尾提到了將單詞和出現的頻率保存在數據庫中,從源碼中並無發現有數據庫相關驅動和操做的代碼。但願博主能夠繼續完善功能。同時在psp表中能夠發現博主在代碼編寫上耗時最多,之後這也是須要多加練習的地方。
博文地址:http://www.javashuo.com/article/p-fbywxpxv-gx.html
源碼地址:https://github.com/dangpb123/-html

任務二、 結對編程

1.需求分析

(1).程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。
(2).程序須要很壯健,可處理任意用戶導入的任意英文文本,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
(3).指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。單詞頻數可視化柱狀圖要求是如下樣式:

(4).高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
(5).統計該文本行數及字符數;
(6).各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(7).人機交互界面要求GUI界面(WEB頁面、APP頁面均可)
(8).統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。java

2.軟件設計:

本次使用告終構化設計的理念,故只有一個主類(WordCount)其設計流程以下:
git

3.核心功能代碼展現:展現核心功能代碼

public static void main(String[] args) throws FileNotFoundException,IOException{

        try{
            //使用流的方法讀取文件
            BufferedReader br = new BufferedReader(new FileReader(
                    "F:\\javademo\\softwar_pro\\MRDemo\\words.txt"));
            //使用TreeMap方法自動將結果按Integer列
            TreeMap<String,Integer> treemap = new TreeMap<String,Integer>();
            //用來存儲讀取的單詞
            String readLine = null;
            //記錄單詞的總數
            int count = 0;
            while((readLine = br.readLine())!=null){
                //將字母排序爲小寫
                readLine = readLine.toLowerCase();
                //將全部單詞以大寫輸出
                //readLine  = readLine.toUpperCase();
                //過濾出只含有字母的字段
                String[] str = readLine.split("[\\s]");
                //過濾掉多個空格,「+」表明多個空格的意思
                for(int i = 0;i<str.length;i++){
                    count++;
                    String word = str[i].trim();//trim()用來去掉字符串首尾的空格
                    if(treemap.containsKey(word)){//判斷此映射是否包含指定鍵的映射關係
                        treemap.put(word, treemap.get(word)+1);
                    }else{
                        treemap.put(word, 1);
                    }
                }
            }
Iterator<Map.Entry<String,Integer>> it  = treemap.entrySet().iterator();
            //判斷是否存在下一個單詞
            while(it.hasNext()){
                Map.Entry<String, Integer> entry = it.next();//獲取map中每個鍵值
                //輸出結果
                System.out.println(entry.getKey()+"        "+entry.getValue());
                br.close();//關閉流
            }
            System.out.println("單詞總數爲:"+count+"個");

        }catch(FileNotFoundException e){//異常處理
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }

4. 程序運行:程序運行時每一個功能界面截圖


5. 描述結對的過程,提供兩人在討論、細化和編程時的結對照片(非擺拍)

6. 提供這次結對做業的PSP

任務內容 計劃共完成須要的時間(min) 實際完成須要的時間(min)
計劃 10 5
估計這個任務須要的時間,並規劃大體工做步驟 5 3
開發 100 120
需求分析(包括學習新技術) 7 9
生成設計文檔 15 20
設計複審 5 7
代碼規範(爲目前的開發制定合適的規範) 5 5
具體設計 6 8
具體編碼 60 80
代碼複審 10 25
測試(自我測試、修改代碼、提交修改) 10 8
報告 20 25
測試報告 10 10
過後總結,並提出過程改進計劃 25 20

從PSP表中能夠發現項目在實施工程中的時間比預計時間要長,可能和本身對開發流程不熟悉、算法設計不精有關。在之後的 開發中要多加改進。
源代碼地址;https://github.com/CoderLixin/GitTestgithub

相關文章
相關標籤/搜索