項目 | 內容 |
---|---|
課程名稱 | 2016級計算機科學與工程學院軟件工程(西北師範大學) |
做業要求 | 實驗四 軟件工程結對項目 |
課程學習目標 | 熟悉軟件開發總體流程,提高自身能力 |
具體方面的幫助 | 第一次體驗一個完整的工程 |
項目 | 內容 |
---|---|
點評博客 | 201671030126 趙佳平詞頻統計軟件項目報告 |
Github | github地址 |
點評內容 | 博文結構總體很清楚,很簡潔。對需求分析作了認真分析,基本完成了各項功能。但在博文排版上有所不足,表格和代碼部分儘可能不要使用截圖;另外能夠把所實現功能的截圖儘量詳細的寫到博文中。在具體代碼方面,但願能夠把不一樣的類分開,不要都寫在一個java文件裏面,這樣可使代碼結構更加清晰。但願博主能夠不斷完善,繼續努力。 |
點評心得 | 經過閱讀結對方的代碼,首先感受到的是咱們兩個代碼風格有很大的不一樣。其次在思考和解決問題的方法上也有很大的差異。瞭解了對方的編碼習慣,爲任務二的開展奠基了一些基礎。固然經過閱讀也注意的到本身在編碼時須要進一步改進的問題。在接下來的結對編程中,會充分聽取對方的意見,共同討論完成本次項目 |
a.需求分析html
(1)實驗2要求的功能; (2)單詞頻數可視化柱狀圖; (3)統計該文本行數及字符數; (4)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms); (5)可處理任意用戶導入的任意英文文本; (6)人機交互界面要求GUI界面(WEB頁面、APP頁面均可); (7)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;
(1) 本次項目主要有三部分構成,登陸界面(login)、主界面、主類(Main)。 (2) 高頻詞的統計在Highword.java中實現,指定單詞詞頻和柱狀圖在chart.java中實現,其他功能在function.java實現。 (3) 計時功能主要是利用函數System.currentTimeMillis()實現。
c.核心功能代碼展現java
JFreeChart chart = ChartFactory.createBarChart( "指定單詞的詞頻柱狀圖", //標題 "", //x軸名稱 "", //y軸名稱 dataset,//數據集 PlotOrientation.VERTICAL,//使用垂直柱狀圖 true,//是否使用legend false,//是否使用tooltip false); //是否使用url Font kfont = new Font("宋體", Font.PLAIN, 20); // 底部 Font titleFont = new Font("宋體", Font.BOLD, 25); // 圖片標題 // 圖片標題 chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont)); // 底部 chart.getLegend().setItemFont(kfont); ChartFrame cf = new ChartFrame("詞頻顯示", chart); cf.pack(); cf.setVisible(true);
while((temp = br.readLine())!=null) { stmplength1+=temp.length();//字符數 String[] str = temp.split("([^a-zA-Z])"); //過濾出只含有字母的 stmplength++;//行數 for(int i=0;i<str.length;i++) { String word = str[i].trim(); if(word.length()!=0) //去除長度爲0的行 staff.put(word, staff.getOrDefault(word, 0)+1); } }
/*該部分主要是經過flag來控制要顯示的界面*/ ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub textArea.setText(""); long startTime=System.currentTimeMillis(); int k=Integer.parseInt(textField.getText().toString()); for(int i=0;i<k;i++)//10 { boolean ok=false; if(flag) //flag爲true顯示正常高頻詞界面,不然顯示除去代詞,冠詞,介詞的界面 textArea.append(function.aList.get(i).getKey()+"\t"+function.aList.get(i).getValue()+"\n"); else { for(int j=0;j<function.stop.size();j++) { if(function.aList.get(i).getKey().toLowerCase().equals(function.stop.get(j))) { k++; ok=true; break; } } if(!ok) textArea.append(function.aList.get(i).getKey()+"\t"+function.aList.get(i).getValue()+"\n"); } } long endTime=System.currentTimeMillis(); JOptionPane.showMessageDialog(null, "耗時:"+(endTime-startTime)+"ms"); } });
登陸界面:用戶名(nwnu),密碼(2019)
git
主界面
github
點擊瀏覽,選擇須要讀入的文件,而後點擊開始讀入
編程
指定單詞詞頻統計及柱狀圖
app
前k個高頻詞統計
ide
前k個高頻詞統計
函數
統計行數和字符數
學習
附加1:除去代詞,介詞,冠詞的高頻詞
測試
任務內容 | 計劃完成時間(min) | 實際完成時間(min) |
---|---|---|
計劃 | 10 | 8 |
估計這個任務須要多長時間,並規劃大體工做步驟 | 5 | 6 |
開發 | 110 | 130 |
需求分析(包括學習新技術) | 8 | 6 |
生成設計文檔 | 5 | 8 |
設計複審(和同事審覈設計文檔) | 5 | 4 |
代碼規範(爲當前的開發制定合適的規範) | 4 | 3 |
具體設計 | 15 | 10 |
具體編碼 | 150 | 200 |
代碼複審 | 5 | 6 |
測試(自我測試、修改代碼、提交修改) | 15 | 12 |
報告 | 9 | 5 |
測試報告 | 5 | 3 |
計算工做量 | 3 | 2 |
過後總結,並提出工程改進計劃 | 5 | 3 |
經過這次項目,體會告終對編程的過程,很大的一個感覺是在編碼、測試以及複審時可以很容易的發現代碼中的一些邏輯錯誤,相比一個來講編碼效率比較高。另外經過此次項目也感覺到了編碼規範也是很重要的,當對變量隨意定義,沒有相應註釋的時候,讀代碼很是的耗時。在項目中咱們主要是先討論某個功能怎麼實現,充分聽取對方的想法,最後用誰的想法,誰編程實現。總之,在這次項目中,彼此配合的仍是很友好的,也有很大的收穫。在之後的過程當中也會注意在這次項目中遇到的問題,不斷完善,繼續努力。