福大軟工1816 第二次作業 個人專案

2022-08-15 11:30:20 字數 2985 閱讀 9127

一、github專案地址:

二、psp**

psp2.1

personal software process stages

預估耗時(分鐘)

實際耗時(分鐘)

planning

計畫· estimate

· 估計這個任務需要多少時間

1515

development

開發· analysis

· 需求分析 (包括學習新技術)

120900

· design spec

· 生成設計文件00

· design review

· 設計複審

2020

· coding standard

· **規範 (為目前的開發制定合適的規範)

1010

· design

· 具體設計

6060

· coding

· 具體編碼

240420

· code review

· **複審

3030

· test

· 測試(自我測試,修改**,提交修改)

60120

reporting

報告· test repor

· 測試報告

1010

· size measurement

· 計算工作量

1020

· postmortem & process improvement plan

· 事後總結, 並提出過程改進計畫

3060

合計605

1665

三、解題思路

1.統計檔案字元數

只需乙個字元乙個字元地讀取檔案,每讀乙個就加一,直到結束。

2.統計檔案的單詞總數

用某個變數表示當前連續讀取的長度,變數<4時讀到字母就加一,變數》=4時讀到字母或數字就加一,其餘情況變數都清零。每次清零前變數若》=4則單詞總數加一。

3.統計檔案的有效行數

每次讀取到換行符時,若該行出現過非空白字元則有效行數加一,其中用某個變數來判別該行是否出現過非空白字元。

4.輸出出現頻率最高的10個單詞

使用結構體陣列,結構體存放單詞名和出現次數。讀完乙個單詞就遍歷判斷其是否在已有的結構體中,有則次數加一,否則存放在乙個新的結構體中,次數取1。檔案讀取完之後用氣泡排序的方法,使出現次數最多(若一樣多則字典序優先)的10個浮到最頂端,輸出這10個。

四、設計實現過程

首先是把欲讀取的檔名存入filename,接下來用如下四個函式分別實現對應的功能:

characters(filename);

words(filename);

lines(filename);

topwords(filename);

相應的測試:由於還不太會使用單元測試,便手動輸入了諸多測試,如下是其中乙個測試用例:

五、效能分析

針對如上的測試用例,由vs2017的效能分析工具自動生成的效能分析圖。

六、關鍵**

如下僅展示部分關鍵**。

首先是主函式,先判斷檔案是否錯誤,正確才繼續執行。

int main()

fclose(fp);

characters(filename);

words(filename);

lines(filename);

topwords(filename);

return 0;

}

統計字元數,乙個乙個讀取直到結束:

while(!feof(fp))

統計單詞總數,只需要考慮當前讀到的是字母還是數字還是其他:

while(!feof(fp))

if(ch>=65&&ch<=90)ch=ch+32;

if(ch>=97&&ch<=122)length++;

else if(ch>=48&&ch<=57&&length>=4)length++;

else

}

統計有效行數,遇到換行符需根據該行是否出現過非空白符來判斷有效行數是否需要加一:

while(!feof(fp))

if(ch=='\n'&&changeline==0)

if(changeline==1&&ch!='\n'&&ch!=' '&&ch!=' ')changeline=0;

}

統計出現頻率最高的10個單詞,首先把單詞與次數用結構體存好,再用氣泡排序把頻率最高的10個(若不足10個則全部排序)浮到頂端:

while(!feof(fp))

else if(ch>=48&&ch<=57&&length>=4)

else

}

七、心得體會感覺這次的實戰任務我只是完成了能夠實現功能的**,至於封裝什麼的我並沒有做到。這次的任務困難重重,首先是vs2017不知道為什麼一直安裝不成功,搞了一晚上,嘗試了各種各樣的解決方案,最終以失敗告終,無奈過後先借舍友的電腦來使用vs2017。接著是github,搞了半天還是沒懂如何上傳,所以在寫**的過程中就沒有寫一點就提交一次。最後是限於水平與時間的不足,使用的方法有點low,一些任務諸如封裝還有單元測試也並沒有實現,與別人的差距很明顯地體現了出來。總的來說,我對這次的任務完成的並不滿意。要學的東西還有很多,在軟體工程實踐上還需要投入更多的時間。

福大軟工1816 第二次作業 個人專案

psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫 estimate 估計這個任務需要多少時間 480605 development 開發 analysis 需求分析 包括學習新技術 140200 design sp...

福大軟工1816 第二次作業 個人專案

psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫 estimate 估計這個任務需要多少時間 3090 development 開發90 100 analysis 需求分析 包括學習新技術 9090 design ...

軟工1816 第二次作業 個人專案

github提交鏈結 psp psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫15 45 estimate 估計這個任務需要多少時間100 development 開發120 120 analysis 需求分析 包...