-體驗軟件項目開發中的兩人合做,練習結對編程(Pair programming)。
-掌握Github上增量發佈軟件的操做方法。html
項目名稱:英文文本統計分析 | 項目要求:http://www.javashuo.com/article/p-bjcswxqf-ma.html |
任課教師:代老師 | 博客地址:http://www.cnblogs.com/nwnu-daizh/ |
結隊人:201671010413葛進花 | 博客地址:https://www.cnblogs.com/gejinhua/p/10550323.html/ |
點評內容: | 排版比較整齊,功能設計的描述不夠完整,沒有實現柱狀圖,從博客中看出來前期仍是深刻學習的,就psp而言,規劃較爲完美,可是後期拖延較多,說明準備不夠充分。計劃和完成程度有偏差,可能對於計劃的初期分配不正確。 |
點評心得: | 點評的過程當中發現,兩人的進度基本一致,對於實驗的要求一致,部分沒有實現的功能也類似。須要後期一塊兒加深學習,互相學習對方的優勢,彌補自身缺點,爭取此次結隊項目完成順利。 |
-對項目博文做業進行閱讀並進行評論,評論要點包括:博文結構、博文內容、博文結構與PSP中「任務內容」列的關係、PSP中「計劃共完成須要的時間」與「實際完成須要的時間」兩列數據的差別化分析與緣由探究。
-克隆結對方項目源碼到本地機器,閱讀並測試運行代碼,結合運行結果評論程序代碼,評論要點包括:軟件結構、代碼規範、功能實現、人機交互等。
-嘗試利用github中的Fork、Clone、Push、Pull request、Merge pull request對結對方倉庫中的源碼進行合做修改。git
-實驗2要求的功能;
-單詞頻數可視化柱狀圖要求是如下樣式:
-統計該文本行數及字符數;
-各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
-可處理任意用戶導入的任意英文文本;
-人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
-附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;
-附加分功能:統計前10個兩個單詞組成的詞組頻率。github
-需求分析:
-1.可處理用戶任意輸入的英文文本
-2.統計該文本的行數及字符數功能
-3.指定單詞詞頻統計功能
-4.前k個高頻詞的輸出
-5.統計該文本的單詞數,而後輸出到result.txt文件。
-6.統計功能耗時
-7.GUI人機交互界面
-8.統計文本除冠詞、代詞、介詞以外的高頻詞編程
public class CountOccurrenceOfWords { public static void main(String[] args) { long t1 = System.currentTimeMillis(); String s; String fileName1 = "D:\\Workspaces\\jiedui\\src\\text.txt"; String fileName2 = "D:\\Workspaces\\jiedui\\src\\result.txt"; try { BufferedReader br = new BufferedReader(new FileReader(fileName1)); BufferedWriter bw = new BufferedWriter(new FileWriter(fileName2)); StringBuffer sb = new StringBuffer(); //將文件內容存入StringBuffer中 while((s = br.readLine()) != null) { sb.append(s); } String str = sb.toString().toLowerCase(); //分隔字符串並存入數組 String[] elements = str.split("[^a-zA-Z0-9]+"); int count = 0; Map<String, Integer> myTreeMap = new TreeMap<String, Integer>(); //遍歷數組將其存入Map<String, Integer>中 for(int i = 0; i < elements.length; i++) { if(myTreeMap.containsKey(elements[i])) { count = myTreeMap.get(elements[i]); myTreeMap.put(elements[i], count + 1); } else { myTreeMap.put(elements[i], 1); } } System.out.println("單詞統計的結果請見當前目錄result.txt文件"); //將map.entrySet()轉換成list List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(myTreeMap.entrySet()); //經過比較器實現排序 Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() { //降序排序 public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o2.getValue().compareTo(o1.getValue()); } }); int num = 1; //將結果寫入文件 for(Map.Entry<String, Integer> map : list) { if(num <= sb.length()) { bw.write("出現次數第" + num + "的單詞爲:" + map.getKey() + ",出現頻率爲" + map.getValue() + "次"); bw.newLine(); System.out.println(map.getKey() + ":" + map.getValue()); num++; } else break; } bw.write("耗時:" + (System.currentTimeMillis() - t1) + "ms"); br.close(); bw.close(); System.out.println("耗時:" + (System.currentTimeMillis() - t1) + "ms"); } catch (FileNotFoundException e) { System.out.println("找不到指定文件!"); } catch (IOException e) { System.out.println("文件讀取錯誤!"); } } }
public class Word { // 統計數字或者字符出現的次數 public static TreeMap<Character, Integer> Pross(String str) { char[] charArray = str.toCharArray(); TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>(); for (int x = 0; x < charArray.length; x++) { if (!tm.containsKey(charArray[x])) { tm.put(charArray[x], 1); } else { int count = tm.get(charArray[x]) + 1; tm.put(charArray[x], count); } } return tm; } public static void main(String[] args) { BufferedReader br = null; int line = 0; String str = ""; StringBuffer sb = new StringBuffer(); try { br = new BufferedReader(new FileReader("D:\\Workspaces\\jiedui\\src\\text.txt")); while ((str = br.readLine()) != null) { sb.append(str); ++line; } System.out.println("\n文件行數: " + line); TreeMap<Character, Integer> tm = Pross(sb.toString()); System.out.println("\n字符統計結果爲:" + tm); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }
-初期尋找隊友,兩人互評博客,找出對方的優點和不足,而後相互補充,作出psp表,初期有了大體的計劃,後期投入實踐,在編程過程遇到的問題較多。數組
-從實驗二到實驗四,老師給出的實驗,在開發和代碼編寫上花費大量時間,錯誤頻繁出現修改失敗,一直有bug,很崩潰,可是bug修復後心情也是很激動。在結隊中咱們相互促進,共同尋找實現的方法,可是很惋惜因爲技術方面的不足,附加功能沒有實現。PSP展現了咱們的開發過程,計劃趕不上變化,實際操做的時間遠遠大於計劃時間,程序語言方面存在很大問題,在中途也請教過其餘同窗,有所收穫,可是仍然有解決不了的問題,後續要強加練習和學習,相互討論和監督,獲得了不一樣的提高,在合做過程當中磨合不斷,要學會發現別人身上的閃光點。app
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成所須要的時間(min) |
---|---|---|---|
Planning | 計劃 | 15 | 13 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 15 | 10 |
Development | 開發 | 600 | 850 |
Analysis | 需求分析(包括學習新技術) | 18 | 12 |
Design Spec | 生成設計文檔 | 20 | 35 |
Design Review | 設計複審(審覈設計文檔) | 15 | 22 |
Coding Standard | 代碼規範(爲目前的開發制定合適的規範) | 18 | 25 |
Design | 具體設計 | 15 | 20 |
Coding | 具體編碼 | 600 | 930 |
Code Review | 代碼複審 | 20 | 30 |
Test | 測試(自我測試,修改代碼,提交修改) | 50 | 68 |
Reporting | 報告 | 50 | 60 |
Test Report | 測試報告 | 30 | 40 |
Size Measurement | 計算工做量 | 15 | 20 |
Postmortem & Process Improvement Plan | 過後總結,並提出過程改進計劃 | 20 | 32 |
Github地址:https://github.com/aaabaoo/wordcount學習