zoukankan      html  css  js  c++  java
  • 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!
    ");
    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!
    ");
    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!
    ");
    11         exit(1);
    12     }
    13     l = fgetc(f3);
    14     while(l != EOF)
    15     {
    16         if(l == '
    ')
    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语言用得融会贯通,还是需要继续学习,并且本次项目其实题目理解方面大部分都是查阅资料才弄清楚,感觉还是要加强自己的理解能力,平时自己还得做一些其他更复杂能锻炼人的项目,如果老师能推荐那更好,来日方称,未来可期,切勿放弃!

  • 相关阅读:
    [ERR] Node 10.211.55.8:7001 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
    PAT A1137 Final Grading (25 分)——排序
    PAT A1136 A Delayed Palindrome (20 分)——回文,大整数
    PAT A1134 Vertex Cover (25 分)——图遍历
    PAT A1133 Splitting A Linked List (25 分)——链表
    PAT A1132 Cut Integer (20 分)——数学题
    PAT A1130 Infix Expression (25 分)——中序遍历
    PAT A1142 Maximal Clique (25 分)——图
    PAT A1141 PAT Ranking of Institutions (25 分)——排序,结构体初始化
    PAT A1140 Look-and-say Sequence (20 分)——数学题
  • 原文地址:https://www.cnblogs.com/bayardm/p/12558457.html
Copyright © 2011-2022 走看看