结对作业
这个作业属于哪个课程 | 软件工程 |
---|---|
这作业要求在哪里 | 结对项目 |
这个作业的目标 | 实现一个自动生成小学四则运算题目的命令行程序;学会与同学合作完成项目 |
一、项目成员及GitHub项目地址
1.项目成员
罗桂珊 3219005492
宋旭清 3219005494
2.GitHub项目地址
二、PSP2.1表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 15 |
· Estimate | · 估计这个任务需要多少时间 | 100 | 120 |
Development | 开发 | 300 | 240 |
· Analysis | · 需求分析(包括学习新技术) | 120 | 90 |
· Design Spec | · 生成设计文档 | 30 | 20 |
· Design Review | · 设计复审(和同事审核设计文档) | 30 | 50 |
· Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 60 | 60 |
· Design | · 具体设计 | 60 | 120 |
· Coding | · 具体编码 | 240 | 300 |
· Code Review | · 代码复审 | 60 | 40 |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 60 |
Reporting | 报告 | 30 | 50 |
· Test Report | · 测试报告 | 30 | 60 |
· Size Measurement | · 计算工作量 | 30 | 30 |
· Postmortem & Process Improvement Plan | · 事后总结,并提出过程改进计划 | 30 | 35 |
合计 | 1200 | 1290 |
三、效能分析
1. 展示性能分析图
2. 展示消耗最大的函数
3. 改进程序性能所花费时间和改进思路描述
一开始由于条件设置错误导致题目生成数目出错,后来修改了循环条件才生成了相应数目的题目。
四、设计实现过程
1. 生成随机数
1.1 生成随机数组成a/b形式
2. 在num数值范围中随机生成fuhao的值
2.1 判断fuhao的值
2.2 计算对应表达式
3. 将表达式所得的分子分母进行约分
4. 生成题目文件、答案文件
5. 计算错误题数、正确题数
五、代码说明
1. 所用类
1.1 ReductionofFraction类:计算结果约分成带分数
1.2 Biaodashi类:判断假分数,并化假分数为带分数
1.3 sizeyunsuan类:随机生成数字,进行组合并打印表达式、答案
2. 所用函数
2.1 ReductionofFraction():将表达式所运算出来的新分子、分母进行约分。
2.2 biaodashi():将随机生成的分数化为带分数
2.3 main主函数
2.3.1 生成题目:
2.3.2 生成题目文件:
2.3.3 生成答案文件:
2.3.4 统计并计算正确题数和错误题数:
3. 流程图
六、测试运行
1. 题目文件Exersies.txt
2. 答案文件Answer.txt
3. 学生答案文件answers.txt
4. 校对文件Grade.txt
七、项目小结
成员:宋旭清
1.第一次结对项目,比起一个人埋头苦干,两个人实现程序的过程会顺利很多,想法也不会过于局限,发现问题也能互相提出并且一起进行改正,一千个人眼中有一千个哈姆雷特,两个人一开始对项目的想法有所不同,最后经过讨论以及上网查阅相关资料确定了所使用的方法;
2.同伴较为细心,能注意到一些比较细节的问题,发现了很多比较容易被忽略的问题,在实现程序过程中,也互相加油打气;
3.本次结对项目总的来说收获颇丰,自己的打码能力有了一定的提升,本身这方面就比较弱,还在不断学习努力中,因为以我们的能力有限,查重功能实现还有点难度对于我们来讲,在有限的时间内,我们只能先不考虑查重功能的实现,会在之后不断尝试以及最终争取实现并且完善我们的程序。
成员:罗桂珊
1.在本次作业中,我负责写主要的main函数,但由于没有和合作成员及时仔细地沟通以及去收集查阅的资料很少,所以按照自己最直接的思路写了一个很简单但是有些耗时的程序,导致程序跑起来很慢。通过这次合作,我发现了如何与合作伙伴沟通是一个非常重要的技能,这也让我在接下来的团队作业中有所准备。
2.一开始在判断语句那里缺少了条件,导致题目数量出现问题,后来通过合作伙伴的排查,把遗漏的条件补了上去,发现两个人的合作所带来的效率会比个人完成的效率高,因为合作双方会用不同的思路来找出对方的错误。
3.由于自己当时写的代码是按照最直接的判断语句去选择运算表达式,所以导致我们在思考查重的时候,不知道从哪里下手,以至于最后的查重功能没能实现。