word count
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018 |
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-science-class3-2018/homework/11879 |
这个作业的目标 | 初步学习Git完成WordCount编程并用PSP记录 |
作业正文 | https://www.cnblogs.com/zhouhuahua/p/14603000.html |
参考文献 | 《构建之法》,csdn |
- 目录:
- 1、 Github项目地址
https://gitee.com/chefeiziman/project-c - 2、PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 4天 | 1900 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 30 | 120 |
• Design Spec | • 生成设计文档 | 20 | 20 |
• Design Review | • 设计复审 | 20 | 25 |
• Coding Standar | • 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
• Design | • 具体设计 | 90 | 100 |
• Coding | • 具体编码 | 960 | 1430 |
• Code Review | • 代码复审 | 30 | 45 |
• Test | • 测试(自我测试,修改代码,提交修改) | 60 | 90 |
Reporting | 报告 | ||
• Test Repor | • 测试报告 | 20 | 20 |
• Size Measurement | • 计算工作量 | 10 | 10 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 20 | 20 |
• 合计 | 1290 | 1900 |
- 3、解题思路描述
WordCount的需求可以概括为:对程序设计语言源文件统计字符数、单词数、行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。
可执行程序命名为:wc.exe,该程序处理用户需求的模式为:
wc.exe [parameter] [input_file_name]
存储统计结果的文件默认为result.txt,放在与wc.exe相同的目录下。
- 4、代码规范制定链接
[https://gitee.com/chefeiziman/project-c/blob/master/20188478/codestyle.md] - 5、设计与实现过程
- 5.1主函数:
int main(int argc,char *argv[])
{
FILE *fp;
while(1)
{
if((fp=fopen(argv[2],"r"))==NULL)
{
printf("FileNull\n\n\n");
scanf("%s%s%s",argv[0],argv[1],argv[2]);
continue;
}
else if(!strcmp(argv[1],"-w"))
countw(argv[2]);
else if(!strcmp(argv[1],"-c"))
countc(argv[2]);
else if(!strcmp(argv[1],"-l"))
countl(argv[2]);
else if(!strcmp(argv[1],"-a"))
{
count_blankline(argv[2]);
count_noteline(argv[2]);
count_codeline(argv[2]);
}
else if(!strcmp(argv[1],"-s"))
{
searchfile();
}
else
printf("NullPoint\n");
printf("\n\n");
scanf("%s%s%s",argv[0],argv[1],argv[2]);
}
return 0;
}
输入指令分成三组,根据第二组的指令对第三组的指令文件名执行相应的操作。
- 5.2基本功能
(-c(返回文件的字符数),-s(寻找文件中的txt文件),-l( 返回文件的行数),-w(返回文件词的数目),-a(统计空行,代码行,注释行)) - 6、性能改进
- 7、单元测试
通过cmd运行截图
用来测试的a.txt和b.txt
测试结果:
- 8、异常处理说明
- 9、心路历程与收获
在运行代码和测试时花费了很多时间,有不少的bug出现,要么filenull要么返回的文件词数目不对。这次作业的基本功能全部实现,扩展功能实现一小部分,由于代码环节薄弱,花了很多时间去改错。测试阶段里,利用不同的测试文件才会发现其中的一些容易疏忽的小错误,可见测试的重要和必要性。