課程名稱 | 2016級計算機科學與工程學院軟件工程(西北師範大學) |
---|---|
做業要求 | 實驗二 軟件工程我的項目 |
課程目標 | 經過學習這門課程,深刻了解軟件開發的標準過程,從軟件生命週期的8個階段分析各個階段的開發任務,摒棄以往開發軟件的方法。 |
做業意義 | 這次做業能幫助我掌握軟件項目我的開發流程和Github上發佈軟件項目的操做方法 |
1.程序可讀入任意英文文本文件,該文件中英文詞數大於等於1個。 2.程序須要很壯健,能讀取容納英文原版《哈利波特》10萬詞以上的文章。 3.指定單詞詞頻統計功能:用戶可輸入從該文本中想要查找詞頻的一個或任意多個英文單詞,運行程序的統計功能可顯示對應單詞在文本中出現的次數和柱狀圖。 4.高頻詞統計功能:用戶從鍵盤輸入高頻詞輸出的個數k,運行程序統計功能,可按文本中詞頻數降序顯示前k個單詞的詞頻及單詞。 5.統計該文本全部單詞數量及詞頻數,並能將單詞及詞頻數按字典順序輸出到文件result.txt。
1.能夠讀取指定的英文文本文件。 2.能夠對指定文本進行單詞詞頻統計。 3.對統計的單詞及頻數按字典字母順序打印。 4.採用圖形化界面方便操做。
這個程序包含5個函數,包括1個主函數main函數和5個功能函數,分別是main函數、srwj函數、px函數、pv函數、dy函數、menu函數。其中main函數主要負責控制整個程序的運行,而剩下5個函數功能分別以下: 1.srwj函數用來讀取指定文件,並將相關信息輸入結構體變量wd中; 2.pv函數用來統計單詞的頻數; 3.px函數用來對已統計的單詞進行英文字母順序的排序; 4.dy函數用來輸出單詞的相關統計信息; 5.menu函數用來進行圖形化界面操做;
用戶界面html
程序運行界面
git
int main() { srwj(); px(); pv(); menu(); }
void pv(){ int m,n,flag=1; for(m=0;m<cc;m++){ for(n=0;n<m;n++){ if(strcmp(wd[n].dc,wd[m].dc)==0){ flag=0; break; } else flag=1; } while(flag){ for(n=m;n<cc;n++){ if(strcmp(wd[n].dc,wd[m].dc)==0){ wd[m].nn++; } flag=0; } } } }
void px(){ int m,n,k; char temp[20]; for(m=0;m<cc-1;m++){ k=m; for(n=m+1;n<cc;n++){ if(strcmp(wd[k].dc,wd[n].dc)>0){ k=n; } if(k!=m){ // temp=wd[m].dc; // wd[m].dc=wd[k].dc; // wd[k].dc=temp; strcpy(temp,wd[m].dc); strcpy(wd[m].dc,wd[k].dc); strcpy(wd[k].dc,temp); } } } }
int menu() { int ii; printf("\n"); printf(" *********************************************************\n"); printf(" # #\n"); printf(" # 詞頻統計 #\n"); printf(" # #\n"); printf(" *********************************************************\n"); printf(" # 1.顯示單詞總數、所有單詞及頻數 #\n"); // printf(" # 2. 顯示高頻詞及頻數 #\n"); printf(" # #\n"); printf(" # 3.退出系統 #\n"); printf(" *********************************************************\n"); printf(" 請選擇您須要的操做序號(1-3)按回車確認:"); scanf("%d",&ii); printf("\n"); switch(ii) { case 1:dy();break; // case 2:gpc();break; case 3: break; default:printf("請在1-3之間選擇\n");break; } }
- 在此次項目中,我查閱了一些之前看過的c語言書籍,因爲很長時間沒用過c語言,因此編程頗爲費力。 - 在編程過程當中,用到了一些冒泡排序之類的算法,並且採用了文件相關的函數來作。 - 第一次編寫這麼大代碼量的程序,有些手忙腳亂,不過總算把每一個模塊編寫完畢。 - 程序編寫過程當中還有不少沒有實現,好比說高頻詞的顯示,因爲對指針的運用還不熟練,因此相關的代碼實現沒有完成。
PSP2.1 | 任務內容 | 計劃共完成須要 的時間(min) |
實際完成須要 的時間(min) |
---|---|---|---|
Planning | 計劃 | 20 | 18 |
Estimate | 估計這個任務須要多少 時間,並規劃大體工做步驟 |
半天 | 半天 |
Development | 開發 | 180 | 200 |
Analysis | 需求分析 (包括學習新技術) | 60 | 80 |
Design Spec | 生成設計文檔 | 10 | 20 |
Design Review | 設計複審 (和同窗審覈設計文檔) | 7 | 8 |
Coding Standard | 代碼規範 (爲目前的開發制定合適的規範) | 5 | 7 |
Design | 具體設計 | 30 | 60 |
Coding | 具體編碼 | 120 | 240 |
Code Review | 代碼複審 | 30 | 60 |
Test | 測試(自我測試,修改代碼,提交修改) | 20 | 30 |
Reporting | 報告 | 10 | 10 |
Test Report | 測試報告 | 5 | 4 |
Size Measurement | 計算工做量 | 5 | 3 |
Postmortem & Process Improvement Plan | 過後總結 ,並提出過程改進計劃 | 5 | 5 |
github源碼github