201671030128周琳+《英文文本統計分析》結對項目報告

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

任務一:結對方的實驗二的項目成果評價

(一)點評做業的博客地址

博客地址html

(二)點評做業的github連接地址

github連接地址git

(三)按代碼規範修改結對方代碼連接地址

修改後源碼github

(四)點評內容

在博文結構方面,總體結構較爲完整,功能設計的內容詳細,對需求進行了認真的分析,方便以後的工做開展,測試運行部分能給出相應功能的實現結果,且運行界面對功能的說明清晰。在設計實現部分,沒有體現出清晰的功能調用和函數之間的邏輯關係,內容稍簡單。經過PSP表的數據,你在需求分析階段用了較多的時間,有意識到分析的重要性,在編碼和測試階段用時較計劃時間長,可能邏輯尚未清晰,處在一個試的過程。
在具體代碼方面,功能和菜單功能的實現能獨立編寫,有較好的模塊性,但能夠分的在細一些,代碼的規範性還有待提升,好比你的類名一個是Functions,另外一個是Function,這都表示功能,但我想要看相應功能的代碼,到底應該看哪一個呢,類中有些變量名的定義有些隨便。在功能實現方面,能和用戶進行必定的交互,詞頻統計和柱狀圖顯示作的很好,可是向文件寫入的順序是按字母表順序,不是按詞頻順序,但願經過第四次實驗咱們可以一塊兒完善這部分的代碼。編程

(五)點評心得

經過本次點評,瞭解告終對方的代碼書寫風格和功能邏輯,爲任務二的開展定下基礎,發現告終對方在博客書寫,代碼編寫上的優勢,經過學習注意到本身之後編寫時要改進的問題,經過發現不足起到自省和相互學習的目的,有些不足是咱們同時都存在的,那麼在接下來結對編程時更加註意,相互提醒,使得本次項目更加的完善和規範,功能不完善的地方也須要共同討論完成。框架

任務二:英文文本統計分析軟件

(一)需求分析

經過對項目要求的分析,本次結對項目的需求爲:
1.實驗2要求的功能,單詞頻數可視化柱狀圖用GUI顯示;
2.統計該文本行數及字符數;
3.各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
4.可處理任意用戶導入的任意英文文本;
5.人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
6.附加分功能1:統計文本中除冠詞、代詞、介詞以外的高頻詞;
附加分功能2:統計前10個兩個單詞組成的詞組頻率。ide

(二)軟件設計

1.Main中主要是實現主界面和從文本中讀入單詞並統計詞頻,統計總行數和總單詞數的功能
2.WordCountStatistics實現查詢指定單詞詞頻的界面和功能
3.PrintToFile實現向文件按字典順序寫入詞頻單詞的功能
4.由於本次實驗中的附加功能1是實驗二的查看前N個高頻詞的擴展,進行合併後HighFrequencyWords實現輸出除介詞、代詞、冠詞的用戶指定查看的前N個高頻詞
5.WordCountHistogram實現單詞詞頻柱狀圖顯示
6.在全部功能中都有計時功能函數

(三)核心代碼展現

1.輸出除介詞、代詞、冠詞的用戶指定查看的前N個高頻詞單元測試

String str = "above, over,in,of,at,on,behind,during,from,into, onto,inside,outside,to,without,throughout,out,she,he,its,we,them,your,i,you,my,myeself,a,an,the";
String s[] = str.split(",");  
                        
 ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(maps.entrySet());
//按詞頻排序
 Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() 
 {
     public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2)
      {
           return o2.getValue() - o1.getValue(); 
      }
 });
  int j=0;
  int i=0;
 while (j<wordNum)
 {
      boolean flag = true ;
      String tmpString = list.get(i).getKey();
      for (String string : s) 
        {   
            if(tmpString.equals(string))
             {
                     flag = false;
               } 
        }                       
       if(flag)
       {    
                print += list.get(i).getKey()+ ": " +list.get(i).getValue()+"    ";
                 j++;                        
         }
         i++;
}

2.時間統計學習

long start = System.currentTimeMillis();
JOptionPane.showConfirmDialog(null,print+"\n"+"所用時間:"+(System.currentTimeMillis() - start)+"ms","結果",JOptionPane.DEFAULT_OPTION);

3.柱狀圖顯示測試

int Width = getWidth();
int Height = getHeight();
int leftMargin = 50;//柱形圖左邊界
int topMargin = 50;//柱形圖上邊界
Graphics2D g2 = (Graphics2D) g;
int ruler = Height-topMargin;
int rulerStep = ruler/20;//將當前的高度平分爲20個單位
g2.setColor(Color.WHITE);//繪製白色背景
g2.fillRect(0, 0, Width, Height);//繪製矩形圖
g2.setColor(Color.LIGHT_GRAY);
for(int i=0;i<rulerStep;i++){
    g2.drawString((30000-1500*i)+"個", 8, topMargin+rulerStep*i);//繪製Y軸上的數據
}
g2.setColor(Color.PINK);
int m=0;
for (Entry<String, Integer> entry : map.entrySet()) 
{ 
    int value =entry.getValue();
    int step = (m+1)*40;//設置每隔柱形圖的水平間隔爲40
    g2.fillRoundRect(leftMargin+step*2,Height-value/50, 40, value, 40, 10);//繪製每一個柱狀條
    g2.drawString(entry.getKey(), leftMargin+step*2, Height-value/50-5);    //標識每一個柱狀條       
        m++;
}

(四)程序運行

1.主界面

2.向文件按字典順序寫入單詞詞頻,並顯示所用時間

3.統計總行數和單詞數,並顯示所用時間

4.除介詞、代詞、冠詞的用戶指定查看的前N個高頻詞

5.查詢指定單詞詞頻並顯示柱狀圖

(五)結對過程

1.根據參考代碼規範共同列出本次結對實驗的代碼規範。
2.互相閱讀對方的代碼,瞭解對方代碼編寫習慣,並按照制定的代碼規範改進對方代碼。
3.一塊兒討論並填寫PSP計劃時間。
4.共同進行本次項目的需求分析和整體設計,尤爲在實驗二基礎上新增的功能的實現。
5.由我主導GUI框架的搭建、統計行數單詞數和運行時間顯示部分,趙燕霞主導柱狀圖和附加功能的實現,在主導位置的互換過程當中,另外一人則進行對代碼規範的監督和提醒,提供功能實現上的不一樣想法,以後選擇出更好的思路,在出現Bug時,一塊兒對代碼進行閱讀,找出邏輯錯誤。
6.整個項目完成後,兩人共同根據代碼規範進行復審,對多餘的語句進行簡化。
7.填寫PSP實際所用時間。
8.撰寫報告文檔。

(六)PSP展現

任務內容 計劃完成時間(min) 實際完成時間(min)
計劃 10 7
規劃工做步驟 10 7
開發 255 264
需求分析 10 9
生成文檔 5 10
設計複審 15 10
代碼規範 20 15
具體編碼 180 200
代碼複審 15 10
測試 10 10
報告 15 12
測試報告 5 7
計算報告量 5 2
過後總結 5 3

(七)結對項目總結

在本次結對編程的過程當中,體會了合做編程的過程,經過相互的討論和監督使得代碼更規範,功能更完善,邏輯較爲嚴謹,特別是在單元測試和代碼複審時,能更快的發現代碼的錯誤,結對編程的效率比較高,在代碼規範方面,意識到隨意編寫的危害,讀代碼改代碼都很費勁,在按編寫規範寫程序後,逐漸改善了這種狀況,但在結對編程中也遇到了問題,好比剛開始分工上打算一人主導一人輔助,但發現主導的人思惟有時會混亂,因此就交換充當主導者的角色;在編程的過程當中常常會出現都感受本身的想法是對的,這樣使得討論陷入僵局,這時咱們採用獨自編程的方法,最後誰的能較好實現功能就用哪一個。

(八)結對項目源代碼

英文文本統計分析軟件

相關文章
相關標籤/搜索