编程作业
这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/computer-science-class4-2018/homework/11880 |
这个作业的目标 | 1、完成项目的需求 |
其他参考文献 | 《构建之法》《现代软件工程》 |
PSP表格 | |
PSP2.1 | Personal Software Process Stages |
--------------------------------------- | -------------------------------- |
Planning | 计划 |
• Estimate | • 估计这个任务需要多少时间 |
Development | 开发 |
• Analysis | • 需求分析 (包括学习新技术) |
• Design Spec | • 生成设计文档 |
• Design Review | • 设计复审 |
• Coding Standar | • 代码规范 (为目前的开发制定合适的规范) |
• Design | • 具体设计 |
• Coding | • 具体编码 |
• Code Review | • 代码复审 |
• Test | • 测试(自我测试,修改代码,提交修改) |
Reporting | 报告 |
解题思路描述 | |
采用c++编程。这个项目用到文件输入输出流(I/O),这些知识在大二就已经学习,现在复习并提高相关内容的理解。编写函数统计文件中的字符并实现要求的功能。 |
读取文件
统计字符数、单词数、有效行数、统计出现最多的十个单词及词频。
关于单词的统计,我一看见这个题目就想起了以前的一题c++实践题:设计一个随机文章生成器,输入一篇文章后可以输出另一篇文章(所用字符相同)。当时使用了vector容器和map存取字符串。这个项目有相似之处,查阅相关资料后,也沿用了这两个容器。
设计与实现过程
容器的使用:
先画一个简单的结构图
ReadFile函数:利用get函数逐个析取文件中的字符并存放在临时字符串变量temp中;
CountWord函数:由于单词的统计和非空行的统计均涉及了非空白字符的判断所以放到一个函数。
CountMainWord函数:用map遍历计算单词出现次数并输出排行前十的单词及其次数:
性能改进
一开始文件只能处于相同目录下,改进为任意位置
使用c语言的fopen打开文件可以让读取文件提
单元测试与测试覆盖率
对复杂情况进行测试,能正确输出
心路历程与收获
用了很多的时间在查阅资料上,真正写代码的时间反而不长。有点本末倒置。
真正完成一个项目的感觉与想象中的完全不同,只有亲身经历过才知道就是再简单的项目也要完成每道过程,缺一不可,“麻雀虽小,五脏俱全”。
编写自己的代码规范让自己的代码成为“文明人”。
很久没有完整的编写一个C++代码,这次实践让我更加熟悉c++流的内容。第一次做单元测试完成的不够好,接下来应该有所长进。