github地址 | https://github.com/bjfubjn |
---|---|
伙伴博客地址 | 不见风雨不见你 |
本人博客地址 | https://www.cnblogs.com/yeyeah/ |
所属课程 | 软件工程基础 |
作业要求 | 结对编程 |
一、PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 40 | 50 |
· Estimate | · 估计这个任务需要多少时间 | 40 | 50 |
Development | 开发 | 990 | 1070 |
· Analysis | · 需求分析 (包括学习新技术) | 60 | 70 |
· Design Spec | · 生成设计文档 | 50 | 60 |
· Design Review | · 设计复审 (和同事审核设计文档) | 40 | 50 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 50 | 60 |
· Design | · 具体设计 | 120 | 130 |
· Coding | · 具体编码 | 610 | 620 |
· Code Review | · 代码复审 | 60 | 50 |
· Test | · 测试(自我测试,修改代码,提交修改) | 130 | 140 |
Reporting | 报告 | 130 | 140 |
· Test Report | · 测试报告 | 60 | 60 |
· Size Measurement | · 计算工作量 | 40 | 50 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 30 |
合计 | 1160 | 1260 |
二、计算模块接口的设计与实现过程
这次作业超出我和同伴的个人能力之外,面向对象编程才学到一半,也没办法做到在一个星期内速成自学完,深感自己的无力,也只能怪之前积累不足。所以这个作业不是很完美,只是用了一些简单函数和文件的相关操作,学过c,也就对这些比较熟悉,困难的完成了此作业。希望之后深入学习,以后再来看看这个作业。所谓的接口封装也只能停留在主函数对副函数的调用。我就负责对函数的编码,同伴负责文件的操作。
部分解题思路,对字符的统计获取字符进行计数
ch = fgetc(x);
while (ch != EOF) {
n++;
ch = ch = fgetc(x);
}
行数统计:
ch = fgetc(x);
while (ch != EOF)
{
if (ch == '\n')
{
n++;
ch = fgetc(x);
}
else
{
ch = fgetc(x);
}
}
英文字母统计:
ch = fgetc(x);
while (ch != EOF)
{
if ((ch >= 'a'&&ch <= 'z') || (ch >= 'A'&&ch <= 'Z'))//同样采用的Ascii码进行相应的判断和上一个相比只是把数字去掉了,所以这里也只是去掉了相应的ASCII码
{
while ((ch >= 'a'&&ch <= 'z') || (ch >= 'A'&&ch <= 'Z'))
{
ch = fgetc(x);
}
n++;
ch = fgetc(x);
}
else
{
ch = fgetc(x);
}
}
打包:
if ((strcmp(argv[1], "测试数据.txt") == 0))
{
charcount();
linecount();
wordcount();
Wwordcount();
}
代码规范在同伴的博客中。
三、性能测试
用vs2017自带的性能测试工具
四、代码复审
代码完成的时候出现了文件无法打开的问题,可是代码上是没有问题的,结果经过网络的帮助发现是预处理的定义出现了问题,就将预处理器做了如下调整
将预处理器定义改为了 _CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)
五、历程与收获
编程讨论中
这次作业确实超过了我的能力范围,我和我的同伴都很头疼,但是结对编程是1+1>2的,说真的一个人做这项作业我是无法想象的,多亏和伙伴互帮互助才能把这个作业完成,虽然这个作业很粗糙,完成度也不高,这块硬骨头并没有啃完,希望之后自己学习更多的东西之后,再来重新做一次。这此作业也警示我,平时必须加强课外知识的学习。