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.代码说明:

  字符数类:

 //字符数
int CharacterCount(char filepath[])
{
FILE *f1 = NULL;
char c;
int charcount = ;
f1 = fopen(filepath , "r");
if(f1 == NULL)
{
printf("Can't Find!\n");
exit();
}
c = fgetc(f1);
while(c != EOF)
{
c = getc(f1);
charcount++;
}
fclose(f1);
return charcount;
}

单词数类:

 //词数
int WordCount(char filepath[])
{
FILE *f2 = NULL;
char w;
int wordcount = ;
f2 = fopen(filepath , "r");
if(f2 == NULL)
{
printf("Can't Find!\n");
exit();
}
w = fgetc(f2);
while(w != EOF)
{
if((w>='A' && w<='Z') || (w>='a' && w<='z') || (w>='' && w<=''))
{
while((w>='A' && w<='Z') || (w>='a' && w<='z') || (w>='' && w<='') || w == '_')
{
w = fgetc(f2);
}
wordcount++;
}
w = fgetc(f2);
}
fclose(f2);
return wordcount;
}

行数:

 //行数
int LineCount(char filepath[])
{
FILE *f3 = NULL;
char l;
int linecount = ;
f3 = fopen(filepath , "r");
if(f3 == NULL)
{
printf("Can't Find!\n");
exit();
}
l = fgetc(f3);
while(l != EOF)
{
if(l == '\n')
{
linecount++;
l = fgetc(f3);
}
else{
l = fgetc(f3);
}
}
if(CharacterCount(filepath) == )
linecount = ;
fclose(f3);
return linecount;
}

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

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语言用得融会贯通,还是需要继续学习,并且本次项目其实题目理解方面大部分都是查阅资料才弄清楚,感觉还是要加强自己的理解能力,平时自己还得做一些其他更复杂能锻炼人的项目,如果老师能推荐那更好,来日方称,未来可期,切勿放弃!

最新文章

  1. python几个重要的模块备忘
  2. phpcms使用细节
  3. cookie的作用
  4. iOS运行时与method swizzling
  5. 转载.net泛型理解说明
  6. Python用format格式化字符串
  7. 用linux的shell脚本把目录下面的所有文件的文件内容中的小写字母改成大写字母
  8. libevent入门
  9. 网页信息抓取进阶 支持Js生成数据 Jsoup的不足之处
  10. JavaScript IDE
  11. JAVA三大特性之三——多态
  12. 交换机设置IP
  13. 不使用setCustomView,设置ActionBar标题居中
  14. oracle procedure存储过程
  15. (转)细说JDK动态代理的实现原理
  16. python进程池爬取下载美女图片(xpath)--lowbiprogrammer
  17. SpringBatch Sample (五)(复合格式文件的读、多文件的写)
  18. HDU2955 01背包
  19. Spring与多线程
  20. day 34 js 基础后部分 BOM 和 事件和正则

热门文章

  1. FGPA_Microblaze UART 中断
  2. PHP strval() 函数
  3. luogu P3645 [APIO2015]雅加达的摩天楼 分块 根号分治
  4. Springboot开发web项目
  5. 简单的 vector
  6. 基于Qt实现的TCP端口数据转发服务器
  7. Maven骨架生成项目速度慢问题解决办法
  8. Spark Streaming——Spark第一代实时计算引擎
  9. vue-cookies 使用
  10. XCTF-WEB-新手练习区(9-12)笔记