項目 | 內容 |
---|---|
這個做業屬於哪一個課程 | 任課教師首頁連接 |
這個做業的要求在哪裏 | 做業連接地址 |
課程學習目標 | 熟悉軟件開發總體流程,提高自身能力 |
本次做業在哪一個具體方面幫助咱們實現目標 | 第一次體驗一個完整的工程 |
點評心得:
經過運行博主的代碼,對方代碼在書寫方面符合代碼書寫規範,命名格式徹底符合代碼規範要求,代碼格式整潔,註釋部分也很詳細。對比本身的博文和代碼,我仍是有不少不足之處,所以,在接下來的實驗中我會慢慢改善本身的不足,儘可能寫出結構清晰、內容完整的博文。html
按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,結對完成英文文本詞頻統計的軟件開發。軟件基本功能要求以下:
(1)實驗2要求的功能;
(2)單詞頻數利用可視化柱狀圖;
git
(3)統計該文本行數及字符數;
(4)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(5)可處理任意用戶導入的任意英文文本;
(6)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
(7)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;github
類圖
編程
(1)單詞頻數利用可視化柱狀圖實現dom
public JFreeChart ShowCountHistogram(BufferedReader bufferedReader) throws IOException { CategoryDataset dataset = getDataSet(bufferedReader); JFreeChart chart = ChartFactory.createBarChart3D( "英文文本詞頻統計圖", // 圖表標題 "單詞名稱", // 目錄軸的顯示標籤 "次數", // 數值軸的顯示標籤 dataset, // 數據集 PlotOrientation.VERTICAL, // 圖表方向:水平、垂直 true, // 是否顯示圖例(對於簡單的柱狀圖必須是false) false, // 是否生成工具 false // 是否生成URL連接 ); CategoryPlot plot=chart.getCategoryPlot(); //獲取圖表區域對象 CategoryAxis domainAxis=plot.getDomainAxis(); //水平底部列表 domainAxis.setLabelFont(new Font("黑體",Font.BOLD,14)); //水平底部標題 domainAxis.setTickLabelFont(new Font("宋體",Font.BOLD,12)); //垂直標題 ValueAxis rangeAxis=plot.getRangeAxis();//獲取柱狀 rangeAxis.setLabelFont(new Font("黑體",Font.BOLD,15)); chart.getLegend().setItemFont(new Font("黑體", Font.BOLD, 15)); chart.getTitle().setFont(new Font("宋體",Font.BOLD,20)); //設置標題字體 return chart; }
(2)統計文本中除冠詞、代詞、介詞以外的高頻詞的實現編程語言
public Map<String, Integer> selectExceptFunctionWord(BufferedReader bufferedReader) throws IOException { Map<String, Integer> map = this.selectWordCountByDOrder(bufferedReader); Map<String, Integer> exceptFunction = new LinkedHashMap<String, Integer>(); for (Map.Entry<String, Integer> w :map.entrySet()) { if(!w.getKey().equals("the")&&!w.getKey().equals("is")&&!w.getKey().equals("you")&&!w.getKey().equals("yourself")&&!w.getKey().equals("your")&&!w.getKey().equals("them")&&!w.getKey().equals("their")&&!w.getKey().equals("to")&&!w.getKey().equals("by")&&!w.getKey().equals("is")&&!w.getKey().equals("a")&&!w.getKey().equals("and")&&!w.getKey().equals("was")&&!w.getKey().equals("has")&&!w.getKey().equals("had")&&!w.getKey().equals("I")&&!w.getKey().equals("for")&&!w.getKey().equals("my")&&!w.getKey().equals("me")&&!w.getKey().equals("with")&&!w.getKey().equals("of")&&!w.getKey().equals("in")&&!w.getKey().equals("on")&&!w.getKey().equals("that")&&!w.getKey().equals("it")&&!w.getKey().equals("The")&&!w.getKey().equals("at")&&!w.getKey().equals("which")&&!w.getKey().equals("he")&&!w.getKey().equals("as") &&!w.getKey().equals("but")&&!w.getKey().equals("his")&&!w.getKey().equals("from")&&!w.getKey().equals("some")&&!w.getKey().equals("be")&&!w.getKey().equals("were")&&!w.getKey().equals("not") &&!w.getKey().equals("they")&&!w.getKey().equals("this")&&!w.getKey().equals("an")&&!w.getKey().equals("no")&&!w.getKey().equals("into")&&!w.getKey().equals("It")&&!w.getKey().equals("there")&&!w.getKey().equals("But")&&!w.getKey().equals("him")&&!w.getKey().equals("could")&&!w.getKey().equals("been")&&!w.getKey().equals("would")&&!w.getKey().equals("she")&&!w.getKey().equals("then")&&!w.getKey().equals("Then")&&!w.getKey().equals("have")) { exceptFunction.put(w.getKey(), w.getValue()); }} return exceptFunction; }
(3)讀取文本獲取降序詞頻ide
public Map<String, Integer> selectWordCountByDOrder(BufferedReader bufferedReader) throws IOException { Map<String, Integer> map = this.AllWordCount(bufferedReader); List<Map.Entry<String, Integer>> nlist = new LinkedList<Map.Entry<String, Integer>>(map.entrySet()); Collections.sort(nlist, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) { int compare = (o1.getValue()).compareTo(o2.getValue()); return -compare; } }); Map<String, Integer> result = new LinkedHashMap<String, Integer>(); for (Map.Entry<String, Integer> entry : nlist) { result.put(entry.getKey(), entry.getValue()); } return result; }
(1)實驗2要求的功能
主界面
工具
統計該文本行數及字符數
學習
讀取文本獲取詞頻,按照字典排序
測試
(2)單詞頻數利用可視化柱狀圖
(3)讀取文本獲取指定單詞出現的次數
(4)讀取文本獲取指定前K個高頻詞
(5)讀取文本獲取降序詞頻
(6)統計文本中除冠詞、代詞、介詞以外的高頻詞
PSP2.1 | 任務內容 | 計劃共完成須要的時間(h) | 實際完成須要的時間(h) |
---|---|---|---|
Planning | 計劃 | 0.4 | 0.4 |
Estimate | 估計這個任務須要多少時間,並規劃大體工做步驟 | 15 | 20 |
Development | 開發 | 2 | 3 |
Analysis | 需求分析 (包括學習新技術) | 5 | 6 |
Design Spec | 生成設計文檔 | 2 | 1.5 |
Design Review | 設計複審 (和同事審覈設計文檔) | 1 | 1 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 0.5 | 0.5 |
Design | 具體設計 | 5 | 5 |
Coding | 具體編碼 | 15 | 18 |
Code Review | 代碼複審 | 0.5 | 0.5 |
Test | 測試(自我測試,修改代碼,提交修改) | 0.5 | 0.5 |
Reporting | 報告 | 1 | 2 |
Test Report | 測試報告 | 0.5 | 0.5 |
Size Measurement | 計算工做量 | 0 | 0 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 0.5 | 0.5 |
經過此次結對項目,我深入的理解了1+1>2的含義。在編寫此次項目的過程當中因爲咱們兩個的編程水平都不太好,須要學習的東西太多,因此在學習心得技術和具體實現的時候花費了不少的時間,可是兩我的在學習和討論的效率明顯大於一我的的,咱們能夠互相講解本身看懂的或者學懂得技術,這樣節約了大量的時間。可是在結對項目的過程當中也存在不少的缺點,好比溝通很差兩我的就會重複作事情,這樣反而下降了項目的進度,因此在兩我的的合做中良好的溝通顯得格外重要。最後,在此次的結對項目中我學會了不少的知識,咱們也從彼此的身上學到了各自的優勢,很開心和她合做。