首页 > 其他 > 详细

个人项目wordcount

时间:2020-03-15 21:55:20      阅读:62      评论:0      收藏:0      [点我收藏+]

·github地址:https://github.com/Tsaiyue

·PSP

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning 计划  30        30
· Estimate · 估计这个任务需要多少时间  30          30
Development 开发  430  450
· Analysis · 需求分析 (包括学习新技术)  120  150
· Design Spec · 生成设计文档  20  20
· Design Review · 设计复审 (和同事审核设计文档)  20  20
· Coding Standard · 代码规范 (为目前的开发制定合适的规范)  10  10
· Design · 具体设计  20  30
· Coding · 具体编码  150  150
· Code Review · 代码复审  30  20
· Test · 测试(自我测试,修改代码,提交修改)  60  50
Reporting 报告  110  100
· Test Report · 测试报告  30  40
· Size Measurement · 计算工作量  30  20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划  50  40
  合计  570  580

·解题思路:

    ·阅读《构建之法》,了解科学开发基本步骤

    ·分析需求,预估完成时间

    ·发现难点

    ·查阅资料解决问题

    ·开发测试

    ·总结开发流程

·遇到的困难及解决办法:

   ·对C语言文件操作函数不熟悉,开发前查阅资料了解了C语言文件操作的库函数;

   ·第一次接触运用命令行参数运行程序,通过搜索引擎发现可用main()函数的参数argc和args实现;

   ·技术水平一般且ddl逼近,故舍弃扩展需求和高级需求,努力实现好基本需求;

   ·对《构建之法》中讲到的利用工具进行单元测试,回归测试不熟悉,不知如何利用插件测试代码覆盖率,学习后效果不佳仍无法解决,故选择最简单的手工测试测试        程序中各函数;

   ·对github不熟悉,不清楚如何利用github进行代码管理,因此花了不分时间学习使用github,但学习效果一般;

·代码组织

    ·组成函数

技术分享图片

 

    ·函数调用关系:main()中调用了其他三个子函数,根据用户输入参数分别实现字符,单词和行数的查询功能

·代码展示

     ·主函数main():

 1 int main(int argc, char *argv[])//主函数 
 2 {
 3     if(argc<2)
 4     {
 5         printf("you must input args!");
 6         return 0;
 7     }//用户无参数输入 
 8     if(strcmp(argv[1],"help")==0)//help 
 9    {
10         printf("此程序参数如下:\n");
11         printf("-c 查询文件字符数。\n");
12         printf("-w 查询文件词数。\n");
13         printf("-l 查询文件行数。\n");
14         printf("exit为退出。");
15         return 0;
16    }
17     else if(strcmp(argv[1],"-c")==0)
18    {
19     Countcharacter(argv[2]); 
20   }
21      else if(strcmp(argv[1],"-w")==0)
22    {
23     Countword(argv[2]); 
24   }
25      else if(strcmp(argv[1],"-l")==0)
26    {
27     Countline(argv[2]); 
28   }
29   else{printf("参数输入有误");
30   }
31     return 0;    }

    ·查询字符数函数Countcharacter():

 1 void Countcharacter(char File[])  //字符数计算函数
 2  {
 3          int count=0;            
 4          char ch= ;
 5          FILE *f_read=fopen(File,"r");
 6          if(f_read==NULL){
 7                  printf("查询文件不存在\n");
 8                  return ;
 9          }
10          while((ch=fgetc(f_read))!=EOF)
11          {
12                  if(isspace(ch)==0)
13                  ++count;
14          }
15          fclose(f_read);
16          printf("该文件的字符数为%d\n",count);
17  }

    ·查询字符数函数Countword():

 1  void Countword(char File[]){
 2         int count=0;            //英文单词数计数
 3         char ch= ;
 4         FILE *fp=fopen(File,"r");
 5         if(fp==NULL){
 6                 printf("查询文件不存在\n");
 7                 return ;
 8         }
 9         while((ch=fgetc(fp))!=EOF)
10         {
11                 if((ch>=a&&ch<=z)||(ch>=A&&ch<=Z)){
12                         while((ch>=a&&ch<=z)||(ch>=A&&ch<=Z))       
13                         ch=fgetc(fp);
14                         ++count;
15                 }
16         }
17         fclose(fp);
18         printf("文件的单词数为%d\n",count);
19 }

   ·查询文件行数函数Countline():

 1 void Countline(char File[]) //查询文件行数 
 2 {
 3   FILE *fp;
 4   int file_row = 0, count = 0;
 5   char buffer[150];
 6   if((fp = fopen(File, "r")) == NULL)
 7    {printf("查询文件不存在\n");
 8     return ;
 9   }
10   while(fgets(buffer,150,fp)!=NULL)
11   {
12       count++;
13   }
14   file_row = count; 
15   printf("文件的行数为%d\n", file_row);
16   fclose(fp);
17   return ;
18 }

·测试运行

    ·测试用例如下:

    技术分享图片(空文件)

 

技术分享图片(只有1个字符)

技术分享图片(只有1个单词)

技术分享图片(只有一行的文件)

 

 

技术分享图片(行数为95的典型源文件)

 

    ·运行结果如下:

技术分享图片

 

 

 ·项目小结:

   ·第一次遵循软件开发的科学流程进行程序开发,尽管技术受限,过程艰辛,但在实践中感受到了软件工程这门学科的特质,软件开发人员不能只会编写代码,而应该掌握从需求分析,到软件构件,软件测试,维护,总结的整套流程;

   ·在开发过程中应不畏困难,遇到问题后积极寻求解决问题的方法,如上网查询或向他人请教;

   ·开发软件是一个系统工程,不能走一步看一部,而应该提前制定软件开发流程,预估各阶段所需时间,提前预测开发过程中会遇到什么技术困难,制定好规划后一步步不断推进,才能较好地保证软件开发过程能有条不紊。

 

个人项目wordcount

原文:https://www.cnblogs.com/Tsaiyue/p/12499557.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!