201671010433王立新《英文文本統計分析》結對項目報告
阿新 • • 發佈:2019-04-03
ui界面 blog entryset 練習 生成 理念 獲取 res 異常處理
(3).指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。單詞頻數可視化柱狀圖要求是以下樣式:
(4).高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
(5).統計該文本行數及字符數;
(6).各種統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(7).人機交互界面要求GUI界面(WEB頁面、APP頁面都可)
(8).統計該文本所有單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。
任務1、博文互評
本次點評了同班同學黨鵬博寫的有關詞頻統計的博文,點評如下:基本實現了詞頻統計的功能,但是在博文的末尾提到了將單詞和出現的頻率保存在數據庫中,從源碼中並沒有發現有數據庫相關驅動和操作的代碼。希望博主可以繼續完善功能。同時在psp表中可以發現博主在代碼編寫上耗時最多,以後這也是需要多加練習的地方。
博文地址:https://www.cnblogs.com/wgyu/p/10557890.html
源碼地址:https://github.com/dangpb123/-
任務2、 結對編程
1.需求分析
(1).程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。
(2).程序需要很壯健,可處理任意用戶導入的任意英文文本,能讀取容納英文原版《哈利波特》10萬詞以上的文章。
(4).高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
(5).統計該文本行數及字符數;
(6).各種統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(7).人機交互界面要求GUI界面(WEB頁面、APP頁面都可)
(8).統計該文本所有單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。
2.軟件設計:
本次使用了結構化設計的理念,故只有一個主類(WordCount)其設計流程如下:
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/GitTest
201671010433王立新《英文文本統計分析》結對項目報告