項目 | 2016級計算機科學與工程學院軟件工程(西北師範大學) |
這個做業的要求在哪裏 | 實驗二 軟件工程我的項目 |
課程學習目標 | 嘗試按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。 |
本次做業在哪一個具體方面幫助咱們實現目標 | (1)掌握軟件項目我的開發流程。(2)掌握Github上發佈軟件項目的操做方法。 |
點評博客: | 201671010449 楊天超 實驗二英文詞頻統計設計步驟 |
Github連接地址: | https://github.com/369BRabc/simple- |
點評內容: | 通讀全文後,感受報告層次清晰,語言嚴謹,對於開發當中對於用戶的需求作了很深層次的分析,對於設計實現步驟分明,總結當中可以指明在開發過程當中所遇到的問題和自身的不足。惟一瑕疵就是文章排版當中存在一點問題,但願繼續努力,加油! |
點評心得: | 在本身的博客中還有着不少問題,在經過瀏覽他的博客時,一部分問題獲得解決,對於Java的瞭解也進一步加深。 |
在上一次的做業中,咱們提到了使用Java語言去編寫詞頻統計的系統開發,在每一步的開發過程當中咱們遇到了一系列問題,有一些耽誤了咱們開發的進度,另外一些則致使咱們對邏輯產生誤解,下面咱們會結合實驗四的實驗要求將問題一一提出並加以解決。html
兩兩結對後對對方實驗二的博客進行了分析和評論,並對實驗四的任務要求作了分析,在實驗二的基礎上咱們還須要添加如下幾點功能:
(1)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(2)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
(3)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;
(4)附加分功能:統計前10個兩個單詞組成的詞組頻率。
java
核心代碼展現git
public static void main(String[] args) throws Exception { try{ File file =new File("e:\\test.txt"); if(file.exists()){ FileReader fr = new FileReader(file); LineNumberReader lnr = new LineNumberReader(fr); int linenumber = 0; int zifu = 0; while (lnr.readLine() != null){ linenumber++; java.util.Scanner sc=new java.util.Scanner(file); String str=sc.next(); zifu = zifu + str.length(); } System.out.println("行數 : " + linenumber); System.out.println("字符:"+ zifu); lnr.close(); }else{ System.out.println("File does not exists!"); } }catch(IOException e){ e.printStackTrace(); }
Map<String, Integer> wordsCount = new TreeMap<String,Integer>(); //存儲單詞計數信息,key值爲單詞,value爲單詞數 //單詞的詞頻統計 for (String li : lists) { if(wordsCount.get(li) != null){ wordsCount.put(li,wordsCount.get(li) + 1); }else{ wordsCount.put(li,1); } } SortMap(wordsCount); //按值進行排序 } //按value的大小進行排序 public static void SortMap(Map<String,Integer> oldmap){ ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(oldmap.entrySet()); Collections.sort(list,new Comparator<Map.Entry<String,Integer>>(){ @Override public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) { return o2.getValue() - o1.getValue(); //降序 } });
PSP2.1 | 任務內容 | 計劃共完成須要的時間(min) | 實際完成須要的時間(min) |
---|---|---|---|
Planning | 計劃 | 15 | 40 |
Estimate | 估計這個任務須要多少 時間,並規劃大體工做步驟 | 15 | 40 |
Development | 開發 | 40 | 60 |
Analysis | 需求分析 (包括學習新技術) | 10 | 10 |
Design Spec | 生成設計文檔 | 15 | 10 |
Design Review | 設計複審 (和同窗審覈設計文檔) | 3 | 5 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 3 | 3 |
Design | 具體設計 | 20 | 25 |
Coding | 具體編碼 | 30 | 60 |
Code Review | 代碼複審 | 15 | 20 |
Test | 測試(自我測試,修改代碼,提交修改) | 25 | 20 |
Reporting | 報告 | 25 | 30 |
Test Report | 測試報告 | 10 | 15 |
Size Measurement | 計算工做量 | 5 | 5 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 10 | 10 |
在實驗二的過程當中:
(1)計劃階段的不一樣意,在計劃階段咱們本來打算花15分鐘計劃處出一個大體的流程,但由於意見的不統一和自身技術的缺陷而致使花了40分鐘。
(2)開發階段,是讓我意識到本身的短板的時期,由於對代碼的不熟悉,以及對於總體構造的不完美,致使花了大量的時間編寫代碼。
(3)需求分析是已知的,但須要整理轉換爲咱們所須要的步驟要求。github
(1)全英文界面對於英語基礎低的同窗去正確使用有着不小的困難,建議使用Chrome瀏覽器進行網頁翻譯。
(2)文件沒法上傳的問題:
http://www.javashuo.com/article/p-puyjwjbp-n.htmlweb
任務一已經完成,已進行結對,博客互評,對於博文內容,優缺點,博文結構作了詳細的分析。從GitHub中克隆了對方源碼到本地進行閱讀分析,從而彌補自我編寫代碼的不足。
任務二柱狀圖沒有實現,還須要再進一步的學習。已能夠統計文本的字符數以及行數,能夠導入任意英文文本。使用HTML製做web交互界面。在本次任務中,咱們實現了實驗中的互相學習,對於咱們基礎薄弱的同窗有了很大的提高。編程
個人Github瀏覽器