項目 | 內容 |
---|---|
做業所屬課程 | http://www.cnblogs.com/nwnu-daizh/ |
做業要求 | https://www.cnblogs.com/nwnu-daizh/p/10569690.html/ |
課程學習目標 | 熟悉軟件開發總體流程,提高自身能力 |
幫助實現目標 | 第一次體驗一個完整的工程 |
- 點評內容:經過閱讀你的博文,我認爲你的博文的結構不是很清晰,沒有充分利用Markdown編輯的特色,我建議能夠將每一個模塊用加粗字體或副標題加以區分。博客內容很簡練。經過瀏覽你的PSP,發現你的計劃時間與實際運行時間幾乎相同,我認爲你的計劃作得很到位,可是看了實際的代碼運行結果,我發現你的不少功能都沒有實現,但願下次能夠繼續努力,完善項目。
- 點評心得:閱讀完這位同窗的博文,我認爲她對時間的把控能力很好,PSP表能夠看出是一個很會計劃時間的人,這一點值得我去學習。可是她的部分任務沒有完善,但願此次的結對項目對她有所幫助,也但願經過此次的結對項目,相互學習,共同進步。
【 源碼地址 】git
- (1)實驗2要求的功能;
- (2)單詞頻數可視化柱狀圖:
- (3)統計該文本行數及字符數;
- (4)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
- (5)可處理任意用戶導入的任意英文文本;
- (6)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
- (7)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;
- (8)附加分功能:統計前10個兩個單詞組成的詞組頻率。
項目主要包含三個類,一個是主函數Main,一個是統計單詞的類SortResult,還有一個是繪製柱狀圖paint。
- 主函數Main中實現圖形用戶界面,實現各個功能。輸入框3個,分別是原文本文件的文件名(採用相對路徑),想要查找的一個或多個單詞及繪製柱狀圖,想要查找的N個高頻詞及其詞頻數。兩個按鈕,分別是「肯定」和「取消」。因爲兩個查找在同一個面板,防止出現衝突,若兩個輸入框均有輸入,則實現第一個輸入框的功能。點擊肯定後,直接將字典順序輸出到result.txt文本中,而且實現相應功能。
- SortResult中將文本中的每一個單詞按照字典順序將單詞及詞頻數輸出到result.txt文本文件中。
- paint中對柱狀圖美化。
int i,j; for(j=0;j<List.size();j++) { for(i=0;i<Eword.size();i++) { if(Eword.get(i).equals(List.get(j).getKey())) { List.remove(j); break; } } }
Map<String, Integer> map1=new LinkedHashMap<String, Integer>(); for(Entry<String,Integer> m: map) { for(i=0;i<Eword.size();i++) { if(Eword.get(i).equals(m.getKey())) { break; } } if(i>=Eword.size()) { map1.put(m.getKey(), m.getValue()); } } Set<Entry<String,Integer>> Map1=map1.entrySet(); LinkedList<Entry<String, Integer>> List = new LinkedList<Entry<String,Integer>>(Map1); //排序 Collections.sort(List, new Comparator<Entry<String,Integer>>() { @Override public int compare(Entry<String, Integer> wk1, Entry<String, Integer> wk2) { return wk1.getKey().compareTo(wk2.getKey()); } });
public paint(){ JFreeChart chart = ChartFactory.createBarChart3D( "詞頻統計", "單詞", "數量", new Main().dataset, PlotOrientation.VERTICAL, true, false, false ); 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));//設置標題字體 frame1=new ChartPanel(chart,true); }
for(i=0; i<input.length; i++) { for(Entry<String, Integer> entry : wordsStatistics.entrySet()) { if(input[i].equals(entry.getKey())) { map.put(entry.getKey(), entry.getValue()); print2+=entry.getKey()+":\n"; for(int j=0;j<entry.getValue()/100;j++) print2+="*"; print2+="\n"; print += entry.getKey() + ":" + entry.getValue()+" "; dataset.addValue(entry.getValue(),entry.getKey(),entry.getValue()); break; } } } long end = System.currentTimeMillis(); JOptionPane.showConfirmDialog(null, print+print2+"\n運行時長"+(end-start)+"ms","結果",JOptionPane.DEFAULT_OPTION); JFreeChart chart = ChartFactory.createBarChart3D( "詞頻統計", // 圖表標題 "單詞", // 文件夾軸的顯示標籤 "數量", // 數值軸的顯示標籤 dataset,//.dataset, // 數據集 PlotOrientation.VERTICAL, // 圖表方向:水平、垂直 true, // 是否顯示圖例(對於簡單的柱狀圖必須是false) false, // 是否生成工具 false // 是否生成URL連接 ); paint p = new paint(chart); JFrame frame=new JFrame("Java數據統計圖"); frame.setLayout(new GridLayout(2,2,10,10)); frame.add(p.getChartPanel()); //加入柱形圖 frame.setBounds(50, 50, 800, 600); frame.setVisible(true); }
while((read = br.readLine()) != null) { linenumber++;//行數 charnumber+=read.length();//字符數 for (String w:read.split("[^a-zA-Z]")) { if(w.length()!= 0) { list.add(w); } } }
PSP2.1 | 任務內容 | 計劃完成時間(min) | 實際完成時間(min) |
---|---|---|---|
Planning | 計劃 | 20 | 20 |
.Estimate | .估計這個任務須要多少時間,並規劃大體工做步驟 | 20 | 20 |
Development | 開發 | 700 | 9600 |
.Analysis | .需求分析(包括學習新技術) | 30 | 30 |
.Design Spec | .生成設計文檔 | 35 | 30 |
.Design Review | .設計複審 | 10 | 10 |
.Coding Standard | .代碼規範 | 5 | 5 |
.Design | .具體設計 | 60 | 60 |
.Coding | .具體編碼 | 480 | 720 |
.Code Review | .代碼複審 | 60 | 80 |
.test | .測試 | 20 | 25 |
Reporting | 報告 | 120 | 120 |
.Test Report | .測試報告 | 100 | 100 |
.Size Measurement | .計算工做量 | 20 | 20 |
.Postmortem & Process Improvement Plan | .過後總結,病提出過程改進計劃 | 28 | 20 |
此次的合做讓我切身感覺到結對項目的過程,讓我體會到了交流溝通對結對合做的重要性,有時候兩我的的想法會發生分歧,很好的溝通會使咱們的效率變得更高。
分工明確會使項目進展較快,不會在同一個問題上浪費時間。遇到問題時,會相互溝通交流,解決問題。github