WordCount of Software Engineering

1.Github项目地址:https://github.com/BayardM/WordCount

2.PSP表格(before):

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

        30

 

· Estimate

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

        30

 

Development

开发

         50

 

· Analysis

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

          100

 

· Design Spec

· 生成设计文档

           15

 

· Design Review

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

             0

 

· Coding Standard

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

             10

 

· Design

· 具体设计

            40

 

· Coding

· 具体编码

            40

 

· Code Review

· 代码复审

            30

 

· Test

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

            60

 

Reporting

报告

            25

 

· Test Report

· 测试报告

             10

 

· Size Measurement

· 计算工作量

             10

 

· Postmortem & Process Improvement Plan

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

              20

 

合计

 

            470

 

 

3.解题思路:

  刚开始拿到题目时因为感觉题目很长,要求很多,所以感到很懵,一点没懂到底要做什么,便在网上查阅了一些资料与博客,研究了牛人们的讲解终于明白题目意思,并且知道此次题目会涉及文档流的操作,因为自己暂时对c语言使用更加灵活,所以本次开发全为C语言。

4.设计实现过程:

  代码简单明了大致分为四部分,三个基本功能各一个函数实现,主函数中对功能进行相应调用执行及功能使用的指引。

5.代码说明:

  字符数类:

 1 //字符数
 2 int CharacterCount(char filepath[])
 3 {
 4     FILE *f1 = NULL;
 5     char c;
 6     int charcount = 0;
 7     f1 = fopen(filepath , "r");
 8     if(f1 == NULL)
 9     {
10         printf("Can't Find!\n");
11         exit(1);
12     }
13     c = fgetc(f1);
14     while(c != EOF)
15     {
16         c = getc(f1);
17         charcount++;
18     }
19     fclose(f1);
20     return charcount;
21 }

单词数类:

 1 //词数
 2 int WordCount(char filepath[])
 3 {
 4     FILE *f2 = NULL;
 5     char w;
 6     int wordcount = 0;
 7     f2 = fopen(filepath , "r");
 8     if(f2 == NULL)
 9     {
10         printf("Can't Find!\n");
11         exit(1);
12     }
13     w = fgetc(f2);
14     while(w != EOF)
15     {
16         if((w>='A' && w<='Z') || (w>='a' && w<='z') || (w>='0' && w<='9'))
17         {
18             while((w>='A' && w<='Z') || (w>='a' && w<='z') || (w>='0' && w<='9') || w == '_')
19             {
20                 w = fgetc(f2);
21             }
22             wordcount++;
23         }
24         w = fgetc(f2);
25     }
26     fclose(f2);
27     return wordcount;
28 }

行数:

 1 //行数
 2 int LineCount(char filepath[])
 3 {
 4     FILE *f3 = NULL;
 5     char l;
 6     int linecount = 1;
 7     f3 = fopen(filepath , "r");
 8     if(f3 == NULL)
 9     {
10         printf("Can't Find!\n");
11         exit(1);
12     }
13     l = fgetc(f3);
14     while(l != EOF)
15     {
16         if(l == '\n')
17         {
18             linecount++;
19             l = fgetc(f3);
20         }
21         else{
22             l = fgetc(f3);
23         }
24     }
25     if(CharacterCount(filepath) == 0)
26         linecount = 0;
27     fclose(f3);
28     return linecount;
29 }

以上类代码结构基本一致,不同点仅在于判断条件。

6.测试运行:


(1)普通文本测试结果及文件

 (2)空文件测试结果及文件

 (3)单字符测试结果及文件

(4)单行测试结果及文件

(5)普通代码测试结果及文件

 

 (6)路径错误测试

 7.PSP(after):

  

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

        30

             30

· Estimate

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

        30

     25

Development

开发

         50

     55

· Analysis

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

          100

            120

· Design Spec

· 生成设计文档

           15

              5

· Design Review

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

             0

               0

· Coding Standard

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

             10

              10

· Design

· 具体设计

            40

               30

· Coding

· 具体编码

            40

                40

· Code Review

· 代码复审

            30

               25

· Test

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

            60

              65

Reporting

报告

            25

              20

· Test Report

· 测试报告

             10

              10

· Size Measurement

· 计算工作量

             10

              10

· Postmortem & Process Improvement Plan

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

              20

               25

合计

 

            470

 

           470

 

 8.项目小结:

  这次项目在编码上学到的主要是c语言相关文档的操作,这是之前从没涉及到过的领域,因此感觉收获蛮丰富的;然后在整个策划详细设计时主要是感悟到遇到困难决不能轻言放弃。要学会有效的借鉴前人的经验,从中汲取知识转化为自己的能力;除此之外,还是有遗憾的地方,便是觉得自己只能用c语言去做项目是非常单一的,并且也并没有将c语言用得融会贯通,还是需要继续学习,并且本次项目其实题目理解方面大部分都是查阅资料才弄清楚,感觉还是要加强自己的理解能力,平时自己还得做一些其他更复杂能锻炼人的项目,如果老师能推荐那更好,来日方称,未来可期,切勿放弃!

猜你喜欢

转载自www.cnblogs.com/bayardm/p/12558457.html
今日推荐