軟體工程實踐第二次作業

2022-07-28 15:03:31 字數 2515 閱讀 3217

一、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 設計複...