一、预计用时:
(1)明确要求:30min;
(2)文件的遍历:2h;
(3)Simple mode 词频统计:1h;
(4)extend mode 词频统计:1h;
(5)对单词词频排序输出:0.5h;
(6)测试与调试:2h;
(7)程序优化:2h;
二、实际用时:
(1)遍历文件夹:文件操作本来就没有掌握,自己动手的时候一筹莫展,这部分工作是放在最后完成的,最终还是参考的同学的代码,用时比较久,4h
(2)Simple词频统计:在这部分中,首先用c编写的代码,花了1.5h,然后再改写进c++中,由于我c++不很会,花费了1.5h
(3)Extend词频统计:这一部分主要借鉴上一部分代码,其中仅仅改变了对单词的识别,花费了1h
(4)排序与输出:首先做的是标准输出,花费了20分钟,然后改成文件输出花费0.5h
(5)测试与调试:3h;
在调试阶段,是最头痛的阶段,基本模式还比较简单,在扩展模式中,在提取出数字的时候,由于忽略数字之后还可以再有字母的情况,导致某些单词无法输出,经过改进后,这个问题终于解决;
另外比较大的问题就是文件操作方面,使得程序能够递归遍历文件夹下所有文件让我吃了很大苦头。
经过调试后,至少程序已经可以跑了,这让我熬了一宿也感到很是欣慰。
(6)程序优化:3h
四、测试用例
1、空文本
运行结果如下:
说明可排除空文件
2、多种后缀格式
运行结果
说明可以在多种文件类型下运行
相应代码如下
const regex pattern("\w+\.(txt|cs|h|cpp)");
3、简单模式大小写测试(含排序)
用例:
结果:
4、扩展模式下的大小写测试;
测试用例:
结果:
5、长度小于4单词测试
用例:
结果:
6、数字位于单词中间:
用例:
结果:
7、多个子目录下有文件
结果:
8、字典序排序
用例:
结果:
9、测试数字开头单词:
用例:
结果:
10、压力测试
运行结果:
五、收获
从这一次的软件工程作业中,我学到了很多。
首先就是认识到了程序员的艰辛,为了完成作业已经整整刷了两个通宵,但在这么高强度的工作中,也切切实实地提高了自己的编程能力。
另外,就是做事要先易后难,层层推进,这次编程,我文件处理方面的东西不会,于是我就先把词频分析的部分先写出来,然后再加上文件处理方面的代码,先做出一个较为简单的版本,再逐渐优化,这样就大大降低了难度。
其次,在这次的作业中,我懂得了向别人学习的重要性。
当然,我知道自己还有很多不足的地方,我会在今后的课程中能够向老师、助教和同学不断学习,不断进步!