一、github鏈結
psp2.1
personal software process stages
預估耗時(分鐘)
實際耗時(分鐘)
planning
計畫90
120· estimate
· 估計這個任務需要多少時間
700797
development
開發200
250· analysis
· 需求分析 (包括學習新技術)
150150
· design spec
· 生成設計文件
2010
· design review
· 設計複審
1018
· coding standard
· **規範 (為目前的開發制定合適的規範)
3030
· design
· 具體設計
1020
· coding
· 具體編碼
150150
· code review
· **複審55
· test
· 測試(自我測試,修改**,提交修改)515
reporting
報告10
10· test repor
· 測試報告53
· size measurement
· 計算工作量54
· postmortem & process improvement plan
11 · 事後總結, 並提出過程改進計畫
1012
| | 合計 | 700|797
二、解題思路描述
答:首先看到這個題目,先查閱了資料檔案輸入輸出流的具體編碼要求和規定,採用乙個個字元讀取的方式,統計字元數。
第二步就是篩菜單詞,將4個字母及以上的單詞保留下來,這裡還要注意開頭是數字的單詞也要篩選掉,最後要考慮全是空格的情況,將他的ascii碼值作為篩選條件即可篩除。
最後一步就是統計頻數最高的10個單詞以及依次輸出他們並輸出他們的頻率。這裡查閱資料以及同學之間相互學習了解到了map的用法,map的用法比較貼切本題要求,故採用map來做這道題。
三、設計實現過程
首先寫乙個getfile函式,實現對檔案的讀取,用get()函式對每乙個字元進行讀取到程式中。
其次是統計函式與單詞數,寫乙個函式,遇到特定字元(例如『\n』),行數++,但是這樣做會有些特殊情況會多加到,因此後面加了乙個布林變數來控制特殊情況的處理。單詞數的話用vector來實現,vector是成倍開闢空間,可能會浪費一些空間,但是對於訪問字串比較好用。
最後是找出頻數最高的10個單詞並依次輸出。採用map去解決這個問題會比較快。而且map的性質符合此題要求,所以採用map來解決,最後遍歷10遍依次輸出即可。
四、改進思路
通過向同學請教得知,c++用於檔案讀寫的ifstream和ofstream函式改為c語言的fopen效能會提公升很多,消耗時間會降低一點。查閱相關資料後,**改進方面可以改成c語言的fopen函式時間會快一點。
五、**說明
開啟檔案並且統計字元函式
void agefile(string filename)//開啟檔案統計字元函式
while (s.get(c))//採用get函式讀取字元
if (flag1 == true)
else
}
統計頻率最高的10個單詞並且輸出單詞及頻數
void addword(bool flag = true, int max = -999)//統計單詞數詞頻最多的10個單詞以及輸出單詞
flag = true;
max = -999;
while (q != strmap.end())//採用map函式進行訪問遍歷
q++;
} if (flag2 == true)
q = strmap.begin();
strmap[a] = -10;
for (int j1 = 0; j1 < str_shorted.size(); j1++)//判斷
}if (w == str_shorted.size())
w = 0;
}}
六、單元測試
選取了比較極端的情況測試。共採用5組類似極端資料測試,經過與同學比對,沒有出現太大問題。
測試圖如下:
七、異常處理
1.沒有輸入檔案時造成的停滯。解決:新增布林變數和error機制
2.檔案中統計單詞數異常的問題。解決:更改了判定機制,原先的判定機制不足以應付所有特殊情況。
八、專案收穫
從這次實踐中學到了比較多的東西,了解了程式讀寫檔案的方法,程式的內測等。加強了**能力,缺點在於編碼的規範真的很差勁,編碼的習慣也有所不足,以後需要慢慢改正以及多加練習。
軟體工程實踐2017第二次作業
github鏈結 1 拿到題目後,覺得這題目和八皇后的題挺像的,都是行列衝突問題,因此覺得可以通過將乙個99的數獨圖變成9個33的圖,對每張33的圖進行數字的填充,例如先將1填入9張小圖中。按以上思路寫完程式後,在行數下移的同時還需要在對應的圖中找到下乙個數填入的位址,產生了可能會跳過某一行填入數值...
軟體工程實踐2017第二次作業
github連線 利用程式隨機構造出n個已解答的數獨棋盤 輸入 數獨棋盤題目個數n 0 n 1000000 輸出 隨機生成n個不重複的已解答完畢的數獨棋盤,並輸出到sudoku.txt中。參考 其實看了這個 以後,我深受影響,把自己的設想都推翻了,總覺得自己的方法不太好,想學習這個方法。我認真理解了...
軟體工程實踐2017第二次作業
預估耗時 分鐘 實際耗時 分鐘 planning 計畫20 10 estimate 估計這個任務需要多少時間 2010 development 開發375 465 analysis 需求分析 包括學習新技術 3030 design spec 生成設計文件 1010 design review 設計複...