https://github.com/13882163221/wc.git
三、PSP表格
PSP階段 | 預估耗時(分鍾) | 實際耗時(分鍾) |
---|---|---|
計划 | 100 | 160 |
估計這個任務需要多少時間 | 100 | 140 |
開發 | 100 | 120 |
需求分析 | 30 | 30 |
生成設計文檔 | 20 | 20 |
設計復審 | 30 | 30 |
代碼規范 | 20 | 20 |
具體設計 | 30 | 30 |
具體編碼 | 40 | 40 |
代碼復審 | 30 | 30 |
測試 | 10 | 20 |
報告 | 20 | 20 |
測試報告 | 20 | 20 |
計算工作量 | 10 | 20 |
事后總結 | 20 | 20 |
合計 | 580 | 720 |
在安排時間的時候估計和實際還是有一定的差距。在編寫代碼的時候,以為自己會很快編完,但是由於很久沒有編寫c語言的代碼了,所以編代碼的時候有些語法有點忘了,導致編代碼的時間與預期差距很大。
四、解題思路
1.首先分析用什么語言寫
本題是統計文件里的行數,單詞數,字符數的數量。對我而言,與其它語言相比,我比較熟悉C語言,面對這種小程序,我覺得用C語言寫更簡單一點。
2.分析需要用到幾個函數
我們要統計行數,單詞數,字符數,所以要用三個函數來分別統計這三者。另外,還可以用一個函數來統計這三者,程序運行時,可以直接顯示這三者。當然還有一個函數就是main函數。
3.分別編寫函數內容
每個函數里的內容其實還是很容易的,我會在后面進行代碼展示及解釋
五、程序設計實現過程
CharCount()函數:用於統計字符數
WordCount()函數:用於統計單詞數
LineCount()函數:用於統計行數
Passage()函數:用於統計字符數、單詞數、行數
六、代碼說明
1.CharCount()函數
1 //統計字符數 2 void CharCount() 3 { 4 FILE *fp; 5 int charCount = 0; 6 char ch;//讀取文件返回的字節 7 if((fp = fopen("test.txt","r")) == NULL) 8 { 9 printf("文件打開失敗."); 10 } 11 ch = fgetc(fp); 12 while(ch != EOF) 13 { 14 charCount++; 15 ch = fgetc(fp); 16 } 17 printf("字符數為:%d個.\n",charCount); 18 fclose(fp); 19 }
這個函數用於統計文件中的字符數,一個個字符依次讀取,直到讀完為止。
2.WordCount()函數
1 //統計單詞數 2 void WordCount() 3 { 4 FILE *fp; 5 int wordCount = 0,flag=0; 6 char ch;//讀取文件返回的字節 7 if((fp = fopen("test.txt","r")) == NULL) 8 { 9 printf("文件打開失敗."); 10 } 11 ch = fgetc(fp); 12 while(ch != EOF) 13 { 14 if (ch==' ') 15 { 16 flag=0; 17 ch = fgetc(fp); 18 } 19 else 20 { 21 if(flag==0) 22 { 23 wordCount ++; 24 flag=1; 25 } 26 ch = fgetc(fp); 27 } 28 } 29 printf("單詞數為:%d個.\n",wordCount); 30 fclose(fp); 31 }
這個函數用於統計文件中的單詞數,一個個字符依次讀取,遇到空格就加一,直到讀完為止。
3.LineCount()函數
1 //統計行數 2 void LineCount() 3 { 4 FILE *fp; 5 int lineCount = 0; 6 char ch;//讀取文件返回的字節 7 if((fp = fopen("test.txt","r")) == NULL) 8 { 9 printf("文件打開失敗."); 10 } 11 ch = fgetc(fp); 12 while(ch != EOF) 13 { 14 if (ch == '\n') 15 { 16 lineCount++; 17 ch = fgetc(fp); 18 } 19 else 20 { 21 ch = fgetc(fp); 22 } 23 } 24 printf("行數為:%d行.\n",lineCount); 25 fclose(fp); 26 }
這個函數用於統計文件中的行數,一個個字符依次讀取,遇到"\n"就加一,直到讀完為止。
4.Passage()函數
1 void Passage() 2 { 3 FILE *fp1; 4 FILE *fp2; 5 int lineCount=0,wordCount=0,charCount=0; 6 int flag=0; 7 char ch;//讀取文件返回的字節 8 if((fp1 = fopen("test.txt","r")) == NULL) 9 { 10 printf("文件打開失敗."); 11 } 12 ch = fgetc(fp1); 13 while(ch != EOF) 14 { 15 charCount++; 16 if (ch == '\n') 17 { 18 lineCount++; 19 ch = fgetc(fp1); 20 } 21 else if(ch==' ') 22 { 23 flag=0; 24 ch = fgetc(fp1); 25 } 26 else 27 { 28 if(flag==0) 29 { 30 wordCount ++; 31 flag=1; 32 } 33 ch = fgetc(fp1); 34 } 35 } 36 printf("字符數為:%d個.\n",charCount); 37 printf("單詞數為:%d個.\n",wordCount); 38 printf("行數為:%d行.\n",lineCount); 39 fclose(fp1); 40 fp2=fopen("result.txt","w"); 41 fprintf(fp2,"字符數為:%d個.\n",charCount); 42 fprintf(fp2,"單詞數為:%d個.\n",wordCount); 43 fprintf(fp2,"行數為:%d行.\n",lineCount); 44 fclose(fp2); 45 }
這個函數用於統計文件中的行數,單詞數,字符數,將讀取的結果放在新的文件夾result.txt中。
5.main() 函數
1 int main(int argc,char *argv[]) 2 { 3 //統計單詞數 4 if ((strcmp(argv[1], "-w") == 0) && (strcmp(argv[2], "test.txt") == 0)) 5 { 6 WordCount(); 7 } 8 //統計字符數 9 if ((strcmp(argv[1], "-c") == 0) && (strcmp(argv[2], "test.txt") == 0)) 10 { 11 CharCount(); 12 } 13 //統計行數 14 if ((strcmp(argv[1], "-l") == 0) && (strcmp(argv[2], "test.txt") == 0)) 15 { 16 LineCount(); 17 } 18 //統計字符數,單詞數,行數 19 if ((strcmp(argv[1], "-p") == 0) && (strcmp(argv[2], "test.txt") == 0)) 20 { 21 Passage(); 22 } 23 return 0; 24 }
測試的時候通過輸入"-w,-c,-l,-p"來實現自己想要的功能
七、測試設計過程
1.將代碼工程放在電腦的D盤
2.用cmd命令進入Debug
3.Debug文件夾內部內容
test.txt是用於統計的文件,result.txt是用於接收程序返回結果的文件
4.字符數統計測試
5.單詞數統計測試
6.行數統計測試
7.三者統計測試
8.result.txt文件夾返回的內容
八、總結及個人體會
在這次個人項目中,我覺得收獲最大的地方就是學會了博客園的編寫及閱讀。在博客園這個平台上,我可以看到很多優秀的博客,從里面學到很多東西。
我還能夠和博客園中有很多編程經驗的老師溝通,學習他們的代碼格式以及很多編程學習經驗。
九、參考文獻鏈接
PSP表格的應用,參考了鄒欣老師的博客:http://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html
博客的排版,參考了范飛龍老師的這篇博客:
http://www.cnblogs.com/math/p/se-tools-001.html
有關Git的使用,參考了廖雪峰的官方網站
有關linux上傳文件到github,參考了:
https://www.2cto.com/kf/201806/755193.html