博文簡要信息表
做業所屬課程 |
軟件工程 |
做業要求 |
實驗四 軟件項目結對 |
課程學習目標 |
熟悉軟件開發總體流程,提高自身能力 |
幫助實現目標 |
第一次體驗一個完整的工程 |
任務一
- 1.點評的博客地址
http://www.javashuo.com/article/p-aqshjgwi-kq.html
- 2.github連接地址
https://github.com/yehong123/ye
- 3.點評內容
閱讀你的博文後,個人見解以下:
(1).你的博文結構嚴謹,從需求分析、功能設計、設計實現、運行測試、代碼片斷、總結、PSP這幾個部分來展現項目完成的所有過程。
(2).博文內容完善,在需求分析中詳細的描述了軟件所蘊含的功能;在功能設計中寫出軟件所實現的功能;在設計實現中,講述了具體的編程過程,建立三個類,分別爲Main.java Sort.java WordCont.javMain.java,還畫出程序的流程圖,可是流程圖的設計不是很美觀,圖片看的不是很清晰,但願你能夠繼續努力。在測試運行中經過截圖展現了運行結果;在代碼片斷中,張貼了這次項目中重要的代碼片斷。總結了本身的經驗與不足,列出PSP圖表,總結實際用時與理想用時的差異。
(3).PSP中「任務內容」列的內容是博文結構內容的具體展開與完善。
(4).經過詳細瀏覽PSP圖表,對比分析可知,你在具體編碼過程當中計劃完成時間與實際完成時間都耗時最長,可能仍是對JAVA編程的不熟練,但願你之後勤加練習。
(5).閱讀了你的代碼並運行後發現軟件結構比較嚴謹,建立了三個類,分別是Main.java Sort.java WordCont.java。Main.java 實現了文本中單詞的讀入並將單詞及其詞頻數按字典順序輸出到result.txt。Sort.java 實現對文本中單詞數目的降序排序,找出出現頻率最高的單詞。WordCont.java實現了詞頻統計,將單詞及其詞頻數按字典順序輸出,並輸出文本中單詞的總數目和出現頻率最高的單詞。代碼書寫比較規範,可是功能實現的不是很完善,沒能將查找詞頻的單詞用柱狀圖顯示出來也沒能顯示前k個單詞的詞頻及單詞。人機交互作的比較好,令人輕易的能夠明白操做指令.
- 4.點評心得
閱讀完這位同窗的博文後,首先對結對的同窗有了簡單的鏈接,瞭解了對方的編碼習慣和優缺點,爲之後兩人合做開發項目作鋪墊,避免在往後編碼過程當中產生大的分歧。經過分析本身和對方的PSP表發如今具體編碼階段都用時比較長,可能編程能力都不是很強,經過此次結對項目,增強對代碼的編寫,共同進步。
任務二
- 1.需求分析
採用兩人合做方式,設計開發一個英文文本統計分析軟件,使之具備如下功能:
(1)實驗2要求的功能;
(2)單詞頻數可視化柱狀圖;
(3)統計該文本行數及字符數;
(4)各類統計功能均提供計時功能,顯示程序統計所消耗時間(單位:ms);
(5)可處理任意用戶導入的任意英文文本;
(6)人機交互界面要求GUI界面(WEB頁面、APP頁面均可);
(7)附加分功能:統計文本中除冠詞、代詞、介詞以外的高頻詞;,
(8)附加分功能:統計前10個兩個單詞組成的詞組頻率。
- 2.軟件設計
(1)Main中主要是主菜單和讀入文本進行詞頻統計和對功能的調用及繪製柱狀圖
(2)OutText實現詞及詞頻數按字典順序輸出到文件result.txt的功能
(3)Test實現統計文本行數和字符數的功能
(4)TopWord實現統計高頻詞的功能
(5)WordCount實現統計詞頻個數
(6)各類統計功能均提供計時功能,顯示程序統計所消耗時間
- 3.代碼展現
(1)統計行數和字符數
public void zzz(Map<String, Integer> Map) throws IOException
{
Scanner input=new Scanner(System.in);
System.out.println("請輸入路徑");
String path=input.next();
long date1=System.currentTimeMillis();
int charNum= 0 ;
int lineNum = 0;
InputStreamReader isr = new InputStreamReader(new FileInputStream(path));
BufferedReader br = new BufferedReader(isr);
while( br.read()!= -1){
String s = br.readLine();
charNum+=s.length();
lineNum ++;
}
isr.close();//關閉
System.out.println("字符數:"+charNum+"行 數:"+lineNum);
long date2=System.currentTimeMillis();
long time=0;
time=date2-date1;
System.out.println("時間:"+time+"ms");
}
(2)將單詞及對應的詞頻排序html
public int compare(Entry<String, Integer> ele1, Entry<String, Integer> ele2) {
return ele1.getKey().compareTo(ele2.getKey());
}
});
Map<String,Integer> Map2 = new LinkedHashMap<String, Integer>();
for(Entry<String,Integer> entry: List) {
Map2.put(entry.getKey(), entry.getValue());
}
- 4.程序運行
(1)統計詞頻個數
![](http://static.javashuo.com/static/loading.gif)
(2)柱形圖顯示
![](http://static.javashuo.com/static/loading.gif)
(3)統計高頻詞
![](http://static.javashuo.com/static/loading.gif)
(4)統計行數、字符數
![](http://static.javashuo.com/static/loading.gif)
(5)用戶界面
![](http://static.javashuo.com/static/loading.gif)
本次結對項目只作出一個界面java
- 5.結對過程
![](http://static.javashuo.com/static/loading.gif)
(1)互相點評對方的博客,研究代碼。總結兩人在上次實驗中的優點與不足,互相學習,討論能夠改進優化的地方。瞭解對方代碼編寫習慣,爲合做作鋪墊。完成這次結對做業的PSP中的計劃時間。
(2)對本項目進行需求分析,功能設計等。肯定程序的大體框架。
(3)進行編程。兩人一塊兒完成各功能的設計、編碼。因爲Java編程能力不足,在編寫代碼的過程當中耗費了大量時間,須要常常上網查找資料。在編程想法上也會經常出現分歧,在編程過程當中不斷地磨合,共同完成本次項目。
(4)完成該項目的PSP填寫工做。
(5)完成博客編寫。git
計劃 |
12 |
20 |
規劃工做步驟 |
15 |
9 |
開發 |
130 |
130 |
需求分析 |
10 |
12 |
生成設計文檔 |
15 |
20 |
設計複審 |
5 |
7 |
代碼規範 |
10 |
15 |
具體設計 |
10 |
20 |
具體編碼 |
300 |
400 |
代碼複審 |
10 |
5 |
測試 |
20 |
15 |
報告 |
30 |
30 |
測試報告 |
5 |
5 |
計算報告量 |
5 |
5 |
過後總結 |
5 |
3 |
- 7.項目總結
經過這次的項目結對,培養了咱們合做與交流的能力,鍛鍊了咱們編程的能力,雖然在具體編碼過程當中所用時間較長,可是編程的能力獲得了提高,效率獲得了提升。在此次項目中,發現交流和溝通真的很是重要,良好的交流使得項目獲得良好的進展,避免兩人產生分歧和作一樣的工做。
點擊此處查看源代碼github