团队项目_wordcount

软件工程 wordcount

GitHub地址

PSP表格

PSP2.1Personal Software Process Stages预计耗时(分钟)实际耗时(分钟)
Planning计划80120
·Estimate估计这个任务需要多少时间2100
Development开发
·Analysis需求分析(包括学习新技术)360300
·Design Spec生成设计文档
·Design Review设计复审(和通识审核设计文档)120240
·Codeing Standard代码规范(为目前的开发设定合适的规范)80120
·Design具体设计120120
·Coding具体编码10001000
·CodeReview代码复审240300
·Test测试(自我测试,修改代码,提交修改)180120
Reporting报告240180
·Test Report测试报告3060
·Size Measurement计算工作量4060
·Postmortem & Process Improvement Plan事后总结,提出过程的改进计划100100
合计22402100

解题思路

此次的题目可以将其分为三个部分

  1. 对于一个文件的求解,
  2. 通过一定的方式不断的搜索满足要求的文件进行求解,
  3. 生成一个桌面应用方便用户的使用

对于三个问题进行依次的求解

设计类 WC FileFound Interface 分别实现三个主要的功能

WC 在接受布尔型变量确定需要求解的问题,接受文件的指针对于文件进行处理。整个求解过程中,遍历一次文件同时对几个进行问题同时求解。对于字符的统计和对于空行的统计实现较为简单,不做太多描述;对于单词的统计默认一个不包含空格的字符串为一个单词,每次检测到非空格单词的时候认为进入了单词之中,再次检测到空格/换行时默认脱离一个单词。注释行的判断单行注释与多行注释的作用和判断范围不同,因此将其分开讨论。每次考察前一个字符和当前的状态就可判断注释的开始和结束。

FileFound处理传入的文件名,因为文件名可能有通配符的情况,所有需要对文件进行判断。通配符和文件名的匹配采用了动态规划的方式进行处理。

初次之外,要处理的是处理当前目录下的文件或者还需要不断递归处理。在C++2017的标准中,将filesystem引入了标准之中,对于文件可以方便地处理。接受外界传入输入表达式和是否进行递归处理的布尔变量后利用directory_iterator或者recursive_directory_iterator即可完成相应的求解操作。

用户图形界面运用Qt实现,运用Qt带来的标准对话框FileDialog实现文件的选择。

程序优化

最开始的处理时,利用文件的读取函数fgetchar()对于文件的字符进行读取,但是因为IO的时间过长导致程序的运行时间缓慢。

在这里插入图片描述

在文件的读取过程中,运用了一个buffer对于文件进行读取,为了提高程序的处理速度,适当的提高了buffer的大小。使得一次的文件读取能够处理更多的字符。

在这里插入图片描述

学习感想

两个人合作效率上其实挺高的,类的封装性处理的较好的情况下,在写程序时不需要了解对方的具体实现过程,只需直接调用即可,整个开发的速度进行了提高。且在初次的开发完成后,两个人相互审查代码,可以较快的发现代码中的bug。

多人的代码开发过程中,变量名的统一命名格式和意义明确对于开发也有着重要的影响,如果在这方面处理不好,可能会使得代码的开发过程出现许多的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值