个人项目-wc

个人项目-WC   (C语言)

一、Github地址:https://github.com/Lin-J-F/WC

二、PSP表格

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning 计划 30 30
· Estimate · 估计这个任务需要多少时间 240        400
Development 开发 120 160
· Analysis · 需求分析  30 45
· Design Spec · 生成设计文档 40 50
· Design Review · 设计复审  40 60
· Coding Standard · 代码规范 20 30
· Design · 具体设计 60 60
· Coding · 具体编码 160  300
· Code Review · 代码复审 30 30
· Test · 测试(自我测试,修改代码,提交修改) 60 60
Reporting 报告 120 130
· Test Report · 测试报告 60 50
· Size Measurement · 计算工作量 20 30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 40 40
合计   1070 1475

 

三、解题思路

     1、拿到项目,我首先确定我想要用的语言,因为我对C语言的熟悉程度比JAVA高,所以我先思考了一下如何用C语言来写。对比发现C语言上手比较简单,并且已经有了部分思路,就确定用C来写。

     2、首先确定整体框架,确定用C语言写后,决定直接把-w、-l、-c 的统计方法写出来,然后直接在主程序中调用方法,来实现这三个功能。(后面在写 -a 的时候,发现自己将统计空白行、代码行和注释行的代码写在同一个方法里面的时候,互相之间条件的影响导致里面存在BUG,修复后还是不能正确统计三个数据,所以后来重新写 -a 的代码,将三种方法分开,使他们的条件不会互相影响,然后在主程序中,触发了 --a 的条件后,直接调用三种方法各自计算自己的数据)。

     3、由于对文件操作函数不是很熟悉,所以我又花了大概40分钟上网查了C语言文件操作函数的相关资料。

     4、在做图形界面的时候找不到很好的方法来解决,加上时间上稍微有点赶,就鸽了这个内容。(做了一大半发现后面要弄图形界面,没有看好要求,用JAVA做图形界面简单多了)

 

四、设计实验过程

    1、一开始先将基本需求写出来,写了统计字符、单词和行数的三个函数出来,然后用主函数main 调用这三个函数,将所要求的结果值返回到主程序中。

    2、根据要求写拓展功能,返回更复杂的数据。跟第三大点提到的一样,一开始写了一个Complex的函数。来直接求那三组数据,后面因为各自条件的影响,无法解决导致不能求出正确的数据,后面将Complex函数分成三个函数,然后在主函数中,收到“-a”的条件时,直接调用这三个函数,将结果值返回到主函数。

 

五、测试运行

测试不存在文件:

         

 

 

 

 

测试空文件:

            

 

 

 

 

测试只有一个词的文件:

 

        

 

 

           

 

 

 

测试只有一行的文件:

                

 

             

 

 

 

 

 测试一个典型的源文件:

             

             

 

 

    

 

主函数:

int main(){
char in[2], file[10];
while(1){
printf("请用户输入命令: WC exe -");
scanf("%s",&in);
if(in[0]=='c'){
printf("请输入文件名:");
scanf("%s",&file) ;
int count=0;
count=Count(file);
printf("文件的字符数为: %d\n",count);
continue;
}
if(in[0]=='w'){
printf("请输入文件名:");
scanf("%s",&file) ;
int world=0;
world=World(file);
printf("文件单词数为: %d\n",world);
continue;
}
if(in[0]=='l'){
printf("请输入文件名:");
scanf("%s",&file) ;
int line=0;
line=Line(file);
printf("文件行数为: %d\n",line);
continue;
}
if(in[0]=='a'){
printf("请输入文件名:");
scanf("%s",&file) ;
int blank,code,explain,line;
blank=Blank(file),line=Line(file) ,explain=Explain(file);
printf("空白行数为: %d\n",blank);
printf("代码行数为: %d\n",line-blank);
printf("注释行数为: %d\n",explain);
continue;
}
}
getchar();
system("pause");
}

 

六、项目总结:

  1、对C语言相关知识点遗忘得有点厉害,查找资料的时间花得有点多,但是经过这次的作业,又捡回了C语言的相关知识。

  2、做项目之前要仔细看所给出的要求,根据需求选择更好的语言,然后整理好自己的思路,再慢慢通过代码实现,不要想着一蹴而就。

  3、写代码的时候逻辑不够严谨,而且容易顾此失彼,因为某些改动导致程序出错,后来发现改动的地方在前面相应位置没有改动。

  4、好好利用PSP,调整自己在整个工程中相应板块所用的时间,不要再不重要的地方放过多的时间。

 

posted @ 2019-09-23 20:32  L`J  阅读(214)  评论(0编辑  收藏  举报