标签:repo 是什么 提交 RoCE 相关 ext 有一个 代码规范 main
1.Github项目地址:https://github.com/inimble/wordcount.git
2.估算耗费的时间(如右表)
| 
 PSP2.1  | 
 Personal Software Process Stages  | 
 预估耗时(分钟)  | 
 实际耗时(分钟)  | 
| 
 Planning  | 
 计划  | 
 30  | 
 10  | 
| 
 · Estimate  | 
 · 估计这个任务需要多少时间  | 
 10  | 
 5  | 
| 
 Development  | 
 开发  | 
 60  | 
 30  | 
| 
 · Analysis  | 
 · 需求分析 (包括学习新技术)  | 
 20  | 
 40  | 
| 
 · Design Spec  | 
 · 生成设计文档  | 
 10  | 
 20  | 
| 
 · Design Review  | 
 · 设计复审 (和同事审核设计文档)  | 
 10  | 
 10  | 
| 
 · Coding Standard  | 
 · 代码规范 (为目前的开发制定合适的规范)  | 
 10  | 
 10  | 
| 
 · Design  | 
 · 具体设计  | 
 30  | 
 20  | 
| 
 · Coding  | 
 · 具体编码  | 
 240  | 
 180  | 
| 
 · Code Review  | 
 · 代码复审  | 
 10  | 
 20  | 
| 
 · Test  | 
 · 测试(自我测试,修改代码,提交修改)  | 
 60  | 
 300  | 
| 
 Reporting  | 
 报告  | 
 30  | 
 30  | 
| 
 · Test Report  | 
 · 测试报告  | 
 10  | 
 10  | 
| 
 · Size Measurement  | 
 · 计算工作量  | 
 10  | 
 10  | 
| 
 · Postmortem & Process Improvement Plan  | 
 · 事后总结, 并提出过程改进计划  | 
 30  | 
 30  | 
| 
 合计  | 
 
  | 
 600  | 
 725  | 
3.解题思路
刚开始看到这道题目的时候,对我个人而言不会的知识点还是挺多的,其中有两点比较主要。第一个是不知道如何用c++打开并读取一个文件,主要是通过百度查找,找到了fopen函数,然后在用visual stdio编译的时候,出现了用fopen不安全的情况,于是又学习了fopen_s函数。然后又查到了与读取文件相关的逐个读取fgetc。第二个看到题目中要求程序处理用户需求的模式为:wc.exe [parameter] [file_name]时不知道是什么,百度之后发现是主函数参数的相关知识,于是便进行了学习。其他基本都能根据以前的知识完成。所以在拿到题目后对这两个方面进行了学习,然后就正式开始了项目的开发。
4.设计实现过程
实现这道题目我运用了两种方法,这里只介绍我上传的这种。拿到题目后,由于我个人的习惯,先讲项目分为了WC.h、WC.cpp和main.cpp三个部分,然后对于基础部分,我分为了三个函数进行实现,分别用于计算字符数、单词数以及行数,每个函数都比较简单。这三个函数属于并列关系,分别实现一种功能。最终我的程序由这三个函数及主函数构成。
5.代码说明
在三个功能函数中,我认为头两个是比较关键的,因为两个都有特殊的点。
  
这是第一个函数,用于实现字符数的计算。首先用fgetc函数对输入进来的文件进行逐个读取,然后把除了空格的字符全部加上。这个函数特殊在,由于转义字符不应该算在内,而txt文件换行的转义字符为\r\n,结束的转义字符为\0,所以有了return后面的公式,是为了减去这些不必要的字符。
  
这是第二个函数,也是运用逐个读取,而这个函数特殊的点是由于fgetc返回的值是整型,所以在进行比较的时候需要用到ascii表转换。
6.测试运行
用于测试的文件(如下图):text.txt
  
测试字符个数的结果:
  
测试单词个数的结果:
  
测试行数的结果:
  
输入错误示例:
1.命令错误
    
2.无该文件
    
7.实际耗费的时间(如上表)
8.项目小结
虽然这次只完成了基础部分,但是却花费了我相当长的时间,这说明了我学习的内容还太少,更关键的是,学过的内容不够细致,很多由于细节而导致的bug花费了我非常的时间。其中有一个我花了三个小时才找出来的细节,我认为以后非常需要注意,在三个功能函数中,都有这样一个判断语句是(c = fgetc(str)) != EOF,而我一开始编程的时候是这么写的c = fgetc(str) != EOF,由于!=号的优先程度大于=号,所以会先进行后半部分的计算,这导致了我的结果一直出错,我总是认为优先级这个知识点很简单,所以经常被我忽视,但在实际编程中确是非常关键,这点引起了我的反思,其实每个知识点都是非常重要的,需要我们去留心和记忆,只有把这些简单,基础的知识点掌握到倒背如流,才有可能进行下一步的提升。这次个人项目对我来说收获颇多,感慨良多。让我戒骄戒躁,扎实学习。所以我还是很感谢这次个人项目的。
标签:repo 是什么 提交 RoCE 相关 ext 有一个 代码规范 main
原文地址:https://www.cnblogs.com/inimble/p/12549838.html