課程名稱
|
|
做業要求
|
實驗二 軟件工程我的項目
|
課程目標
|
嘗試按照《構建之法》第2章中2.3所述PSP流程,使用JAVA編程語言,獨立完成一個英文文本詞頻統計的軟件開發。
|
做業意義
|
1)掌握軟件項目我的開發流程。
(2)掌握Github上發佈軟件項目的操做方法
|
在Github的倉庫主頁的連接地址:https://github.com/16rgzxh/zxh-/tree/master/test/src模塊化
1.需求分析:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。
2.功能設計:
1.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。
2.統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。
3. 設計實現,設計包括你會有哪些類,這些類分別負責什麼功能。
a)
public BufferedReader(Reader in,int sz)
建立一個使用指定大小輸入緩衝區的緩衝字符輸入流。
in - 一個 Reader
sz - 輸入緩衝區的大小
b)
public BufferedReader(Reader in)
建立一個使用默認大小輸入緩衝區的緩衝字符輸入流.
c)
toLowerCase 方法
字符串中的字母被轉換爲小寫字母.
d)
ArrayList 排序方法
實現對數組的排序,給輸出的單詞頻率高低進行排序.
e)
PrintStream 打印輸出流.
實現統計文本的輸出,輸出文本結果保存在文檔中.
4. 測試運行,請展現程序的運行截圖,包括題目要求實現功能運行截圖。
5.代碼片斷,用博客園正確的代碼控件來顯示。(提示:要有必要的註釋說明,提示:不要貼全部代碼!不符合規定的要倒扣分)
BufferedReader br = new BufferedReader(new FileReader("src/a.txt"));
StringBuffer sb = new StringBuffer();
String text="";
System.out.println(br.readLine()!=null);
while ((text=br.readLine())!=null){
//遍歷追加
sb.append(text);
}
//關閉流
br.close();
// 將stringBuffer轉爲字符並轉換爲小寫
String str = sb.toString().toLowerCase();
// 正則表達式 非單詞的字符來分割,獲得全部單詞
String[] words = str.split("[^(a-zA-Z)]+");
Map<String ,Integer> map = new HashMap<String, Integer>() ;
for(String word :words){
// 若不存在說明是第一次,則加入到map,出現次數爲1
if(map.get(word)==null){
map.put(word,1);
}else{
// 若存在,次數累加1
map.put(word,map.get(word)+1);
}
}
6. 總結:
所謂模塊化就是將總體軟件系統劃分紅許多個邏輯上相對獨立且可獨立訪問的模塊,不一樣的模塊一般具備不一樣的功能。模塊是程序中邏輯上相對獨立的單元,每一個模塊可獨立地進行設計、開發和測試,最後全部模塊組裝在—起從而造成一個完整的軟件系統。在結構化方法中,一個模塊多是一個過程、函數或子程序等,它是構成軟件的基本構件。
設計原則:
l
創建數據流,可輸入的英文文本,遍歷文本,統計各個單詞出現次數。
l
排序:對統計的單詞書出現頻率進行排序,一出現頻率由高到低的順序排序,
l
輸出單詞總數並輸出單詞出現頻率的結果,而且能夠查詢所需單詞的次數。
l
寫入輸出文本,存儲統計結果。
7. 展現PSP
PSP2.1
|
任務內容
|
計劃共完成須要的時間(min)
|
實際完成須要的時間(min)
|
Planning |
計劃 |
30 |
40 |
Estimate |
估計這個任務須要多少時間,並規劃大體工做步驟 |
20 |
25 |
Development |
開發 |
300 |
720 |
Analysis |
需求分析 (包括學習新技術) |
120 |
150 |
Design Spec |
生成設計文檔 |
45 |
60 |
Design Review |
設計複審 (和同事審覈設計文檔) |
20 |
10 |
Coding Standard |
代碼規範 (爲目前的開發制定合適的規範) |
20 |
30 |
Design |
具體設計 |
30 |
60 |
Coding |
具體編碼 |
300 |
600 |
Code Review |
代碼複審 |
40 |
80 |
Test |
測試(自我測試,修改代碼,提交修改) |
120 |
150 |
Reporting |
報告 |
60 |
100 |
Test Report |
測試報告 |
20 |
30 |
Size Measurement |
計算工做量 |
5 |
10 |
Postmortem & Process Improvement Plan |
過後總結 ,並提出過程改進計劃 |
30 |
60 |