201671030122楊凡億《英文文本統計分析》結對項目報告

項目 內容
課程名稱 2016級計算機科學與工程學院軟件工程(西北師範大學)
做業要求 實驗四 軟件工程結對項目
課程學習目標 熟悉軟件開發總體流程,提高自身能力
具體方面的幫助 第一次體驗一個完整的工程


任務一 兩兩自由結對,對結對方的《實驗二 軟件工程我的項目》的項目成果進行評價

項目 內容
點評博客 201671030126 趙佳平詞頻統計軟件項目報告
Github github地址
點評內容 博文結構總體很清楚,很簡潔。對需求分析作了認真分析,基本完成了各項功能。但在博文排版上有所不足,表格和代碼部分儘可能不要使用截圖;另外能夠把所實現功能的截圖儘量詳細的寫到博文中。在具體代碼方面,但願能夠把不一樣的類分開,不要都寫在一個java文件裏面,這樣可使代碼結構更加清晰。但願博主能夠不斷完善,繼續努力。
點評心得 經過閱讀結對方的代碼,首先感受到的是咱們兩個代碼風格有很大的不一樣。其次在思考和解決問題的方法上也有很大的差異。瞭解了對方的編碼習慣,爲任務二的開展奠基了一些基礎。固然經過閱讀也注意的到本身在編碼時須要進一步改進的問題。在接下來的結對編程中,會充分聽取對方的意見,共同討論完成本次項目


任務二 採用兩人合做方式,設計開發一個英文文本統計分析軟件

  • 結對項目源碼Github連接地址
  • a.需求分析html

    (1)實驗2要求的功能;
    
    (2)單詞頻數可視化柱狀圖;
    
    (3)統計該文本行數及字符數;
    
    (4)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
    
    (5)可處理任意用戶導入的任意英文文本;
    
    (6)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
    
    (7)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;
  • b.軟件設計
    • 類圖
    (1) 本次項目主要有三部分構成,登陸界面(login)、主界面、主類(Main)。
    
    (2) 高頻詞的統計在Highword.java中實現,指定單詞詞頻和柱狀圖在chart.java中實現,其他功能在function.java實現。
    
    (3) 計時功能主要是利用函數System.currentTimeMillis()實現。
  • c.核心功能代碼展現java

    • 單詞頻數可視化柱狀圖部分,主要採用外部包jcommon-1.0.23.jar,jfreechart-1.0.19.jar實現。另參考這篇博文完成
    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");
             }  
           });
  • d.程序運行截圖
    • 登陸界面:用戶名(nwnu),密碼(2019)
      git

    • 主界面
      github

    • 點擊瀏覽,選擇須要讀入的文件,而後點擊開始讀入

      編程

    • 指定單詞詞頻統計及柱狀圖

      app

    • 前k個高頻詞統計
      ide

    • 前k個高頻詞統計

      函數

    • 統計行數和字符數
      學習

    • 附加1:除去代詞,介詞,冠詞的高頻詞
      測試

  • e.結對的過程
    • 在結對過程,咱們首先提出本身對某一功能的想法,而後通過討論決定採用其中的一種實現。採用誰的想法,誰編程。在討論過程也可能會有新的想法出現,也會很明顯的感到本身的有些想法不太好。


  • PSP

任務內容 計劃完成時間(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


  • 小結

    經過這次項目,體會告終對編程的過程,很大的一個感覺是在編碼、測試以及複審時可以很容易的發現代碼中的一些邏輯錯誤,相比一個來講編碼效率比較高。另外經過此次項目也感覺到了編碼規範也是很重要的,當對變量隨意定義,沒有相應註釋的時候,讀代碼很是的耗時。在項目中咱們主要是先討論某個功能怎麼實現,充分聽取對方的想法,最後用誰的想法,誰編程實現。總之,在這次項目中,彼此配合的仍是很友好的,也有很大的收穫。在之後的過程當中也會注意在這次項目中遇到的問題,不斷完善,繼續努力。
相關文章
相關標籤/搜索