第三次作业

合作者:201631062204   201631062104

代码地址:

  基本功能;https://gitee.com/Lin-Ling/WordCount/tree/wc

  扩展功能:https://gitee.com/Lin-Ling/wordcount_extension/tree/master

 

1.任务简述

       两人组队完成WordCount的基本功能及扩展功能(可以自行增加功能),并对其进行一系列测试和优化,形成可稳定运行的版本。

2.PSP表格

 

PSP2.1

PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

Planning

计划

 40

 30

· Estimate

· 估计这个任务需要多少时间

 180

 240

Development

开发

 360

 600

· Analysis

· 需求分析 (包括学习新技术)

 120

 100

· Design Spec

· 生成设计文档

 0

 0

· Design Review

· 设计复审 (和同事审核设计文档)

 60

 30

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 60

 20

· Design

· 具体设计

60

 80

· Coding

· 具体编码

 300

 420

· Code Review

· 代码复审

 120

 150

· Test

· 测试(自我测试,修改代码,提交修改)

 120

 120

Reporting

报告

120

 60

· Test Report

· 测试报告

 30

 40

· Size Measurement

· 计算工作量

 30

 40

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 60

 50

 

合计

 1660

 1953

3.代码互审

       在项目的第一阶段,我们一个用的C语言,一个用的C#语言,后面我们商量的是都用C语言,因为C语言是我们最早接触的编程语言。我们的编码过程是将整体分成小问题,然后通过函数逐步实现,最后在在主函数里面调用,所以在代码互审的时候,我们只需要检查对方的函数是否能够正确实现功能(在主函数里调用即可)。我们两个基本上都实现了基本和扩展功能。

4.代码说明

 

  1 #include<stdio.h>
  2 #include<io.h>
  3 #include<string.h>
  4 
  5 void writeToFile(char *fileName,char* feature,int num)//打开文件,写数据进去 
  6 {
  7     /*fileName 表示读取的文件名
  8      * feature表示记录的内容 单词或者字母或者行数
  9      */
 10      FILE *f=NULL;
 11      f=fopen("F:\\gcc\\bin\\result.txt","a");
 12      if(f==NULL)
 13       {
 14          printf("failed when wrinting the count to file\n");
 15       }
 16    //写入文件
 17      fprintf(f,"%s,%s,%d\n",fileName,feature,num);
 18      fclose(f);
 19 }
 20 
 21 void c_num(char *file)//统计字符数目 
 22 {
 23   FILE *f;
 24   char* a="c_num:";
 25   f=fopen(file,"r");
 26   char c;   //char
 27   int num=0;  //char num
 28   if(f==NULL)
 29   {
 30     printf("file is null");
 31   }
 32   else
 33       while(!feof(f))
 34       {
 35         c=fgetc(f);
 36         if(c!=' ' && c!= '\n' && c!='\t')
 37          num++;
 38       }
 39       fclose(f);
 40       printf("cnum %d ",num);
 41 
 42           writeToFile(file,a,num);
 43 } 
 44 
 45 void word_num(char *file)//统计单词个数 
 46 {
 47   FILE *f;
 48   char*  a="word_num:";
 49   f=fopen(file,"r");
 50   char ch;
 51   int aword,cword=0;
 52   if(f==NULL)
 53   {
 54     printf("file is null");
 55   }
 56   else
 57   while(!feof(f))
 58   {
 59      ch=fgetc(f);
 60      if((ch>='a' &&ch <= 'z')||(ch>= 'A'&&ch<='Z') ||         ch=='_')
 61        aword=1;
 62      else if(aword)
 63       {
 64          cword++;
 65          aword=0;
 66        }
 67    }
 68    fclose(f);
 69    printf("wordnum:%d ",cword);
 70    writeToFile(file,a,cword);
 71 }
 72 
 73 void crl_num(char *file)//统计行数 
 74 {
 75    FILE *f;
 76    f=fopen(file,"r");
 77    char* s="crl_num:";
 78    int crl=1;
 79    char a;
 80    if(f==NULL)
 81   {
 82     printf("file is null");
 83    }
 84    else
 85      while(!feof(f))
 86    {
 87       a=fgetc(f);
 88       if(a=='\n' || a=='\t')
 89         crl++;
 90    }
 91   fclose(f);
 92   printf("crlnum:%d ",crl);
 93   writeToFile(file,s,crl);
 94 }
 95 
 96 void crl_num(char *file)//统计空行数 
 97 {
 98    FILE *f;
 99    f=fopen(file,"r");
100    char* s="crl_num:";
101    int crl=1;
102    char a;
103    if(f==NULL)
104   {
105     printf("file is null");
106    }
107    else
108      while(!feof(f))
109    {
110       a=fgetc(f);
111       if(a=='\n' || a=='\t')
112         crl++;
113    }
114   fclose(f);
115   printf("crlnum:%d ",crl);
116   writeToFile(file,s,crl);
117 }
118 
119 void blankline_num(char *file)//返回文件空行数
120 {
121    FILE *f;
122    int b_num=0;//空行数
123    int ch_num=0;//字符个数
124    char* a="word_num:";
125    char ch;
126    f=fopen(file,"r");
127   if(f==NULL)
128   {printf("file is null");}
129   else
130   while(!feof(f))
131    {
132      ch=fgetc(f);
133      if(ch=='\n')
134     {
135        if(ch_num<=1) b_num++;
136        ch_num=0;
137      } 
138     else if(ch!= ' '&& ch!= '\t' && ch!= '}' )
139          ch_num++;
140 
141     else if(ch=='}')
142           b_num++;//只有一个‘}’的空行数
143   
144    }
145    fclose(f);
146    printf("blanklinenum:%d ",b_num);
147    writeToFile(file,a,b_num);
148 }
149 
150 void noteline_num(char *file)//返回注释行
151 {
152   FILE *f;
153   int ch_num =0;
154   int note_num=0;
155   char ch;
156   const char* a="noteline_num:";
157   f=fopen(file,"r");
158   if(f==NULL)
159   {
160      printf("file is null");
161    }
162    else
163    while(!feof(f))
164    {
165      ch =fgetc(f);
166      if(ch=='\n')
167      {
168         if(ch_num==2) note_num++;
169         ch_num=0;
170       }
171      else if (ch=='/') ch_num++;
172      else if(ch_num==1)
173     {
174       if(ch=='/')
175        ch_num++;
176     }
177 
178    }
179    fclose(f);
180    printf("notelinenum:%d ",note_num);
181    writeToFile(file,a,note_num);
182 }
183 
184 void codeline_num(char *file)//统计代码行数 
185 {
186    FILE *f;
187    int ch_num=0;
188    int code_num=0;
189    int tag=0;
190    int flag=0;
191    char a;
192    const char* s="codeline_num:";
193    f=fopen(file,"r");
194    if(f==NULL)
195     {
196        printf("file is null");
197     }
198    else
199    while(!feof(f))
200   {
201      a=fgetc(f);
202     if(flag==2)
203      {
204          flag=0;tag++;
205        }
206      else 
207       {
208         if(a=='\n' && ch_num>1)
209             {
210                 code_num++;
211                 ch_num=0;
212             }
213          else if(a!=' ' && a!='\n' && a!='\t' &&a!='/')
214             ch_num++;
215         else if(a=='/')
216              flag++;
217        }
218  
219    }
220    fclose(f);printf("codelinenum:%d ",code_num);
221    writeToFile(file,s,code_num);
222 }
223 
224 void searchfile()//寻找制定行数 
225 {
226    struct _finddata_t  filefind;
227    long handle;
228    int t=0;
229    if((handle=_findfirst("E:\\wordcount\\*.txt",&filefind))== -1L)
230    {
231       printf("file not found\n");
232    }
233   else
234    do
235    {
236       t++;
237       printf("find file :%s\n",filefind.name);
238    }while(_findnext(handle,&filefind)==0);
239     
240     _findclose(handle);
241    printf("文件数量:%d\n ",t);
242 }
243 
244 int main(int argc, char* argv[])             
245 {
246     FILE *fp;
247     while(1)
248     {
249         if((fp=fopen(argv[2],"r"))==NULL)
250         {  
251         printf("FileNull\n\n\n");
252         scanf("%s%s%s",argv[0],argv[1],argv[2]);
253         continue;
254         }
255         else if(!strcmp(argv[1],"-w")) 
256         word_num(argv[2]);                
257         else if(!strcmp(argv[1],"-c"))  
258         c_num(argv[2]);                
259         else if(!strcmp(argv[1],"-l"))    
260         crl_num(argv[2]);            
261         else if(!strcmp(argv[1],"-a"))                
262        {     
263           blankline_num(argv[2]); 
264           noteline_num(argv[2]);
265           codeline_num(argv[2]);
266        }
267         else if(!strcmp(argv[1],"-s"))
268        {
269            searchfile();
270        }
271         else
272             printf("NullPoint\n");
273         printf("\n\n");
274         scanf("%s%s%s",argv[0],argv[1],argv[2]);
275     }
276     return 0;
277 }

5.代码测试以及运行结果

基本功能

 

扩展功能

测试

6.总结

  (1)代码阶段:后面商量一起用C语言写,所以代码都是一起商量着完成的。完成需要的功能模块就好了。

       (2)体会:组队合作完成一个代码或者项目这个事情对于我们来说并不陌生,因为上学期也团队合作过完成一个完整的项目,上学期结束的时候还有一个实践活动,也是团队完成一个项目。所以过程还是没有什么矛盾的。有矛盾,我们会解决的比较迅速,所以时间在处理分歧上面并没有浪费太多。这次合作还是学习到了很多,最后谢谢我的队友。

posted @ 2018-10-20 23:19  林橙多  阅读(166)  评论(0编辑  收藏  举报