Project: Individual Project

一、预计用时:

(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、压力测试
 
运行结果:
 
五、收获
   从这一次的软件工程作业中,我学到了很多。
   首先就是认识到了程序员的艰辛,为了完成作业已经整整刷了两个通宵,但在这么高强度的工作中,也切切实实地提高了自己的编程能力。
   另外,就是做事要先易后难,层层推进,这次编程,我文件处理方面的东西不会,于是我就先把词频分析的部分先写出来,然后再加上文件处理方面的代码,先做出一个较为简单的版本,再逐渐优化,这样就大大降低了难度。
   其次,在这次的作业中,我懂得了向别人学习的重要性。
    当然,我知道自己还有很多不足的地方,我会在今后的课程中能够向老师、助教和同学不断学习,不断进步!

 

 

原文地址:https://www.cnblogs.com/zhoucg/p/3337991.html