博客信息 |
沈阳航空航天大学计算机学院2020软件工程作业 |
作业要求 | https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10685 |
课程目标 | 熟悉一个“高质量”软件的开发过程 |
作业目标 | 单元测试练习 |
一:题目要求
我们在刚开始上课的时候介绍过一个小学四则运算自动生成程序的例子,请实现它,要求:
(1)能够自动生成四则运算练习题
(2)可以定制题目数量
(3)用户可以选择运算符
(4)用户设置最大数(如十以内、百以内等)
(5)用户选择是否有括号、是否有小数
(6)用户选择输出方式(如输出到文件、打印机等)
(7)最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主)
二:任务分工
此次结对作业的任务分配为:
驾驶员:郭舒志,负责编写代码,对同伴做出评价;
领航员:孔鸣,辅助驾驶员完成代码,设计单元测试用例,对同伴做出评价。
三:代码内容
github地址:点这里
1、结果显示
2、审查表
四、单元测试
测试代码:点这里
五、工作记录表
项目 | 预计 | 实际 |
设计时间 | 2h | 2h |
编码时间 | 12h | 20h |
测试时间 | 1h | 2h |
代码行数 | 300 | 488 |
测试代码行数 | 60 | 50 |
错误数量 | 5 | 4 |
错误修复时间 | 1h | 1h |
开发总时间 | 16h | 25h |
六、评价与总结
本次结对编程是我第一次接触合作编程,这当中产生了许多以前想不到的问题。在过程中,我和伙伴的角色进行过互换,开始时,他先做驾驶员,给我了一个实现了大体功能的模板,然后我借此模板进行功能上的完善,比如加入数字的最大值,所求的算式的个数等,但当我写到不给算式生成括号时,我遇到了重大问题,因为一开始我们看到了括号,就想到了优先级问题,解决此问题的好方法是使用树结构,所以一开始没有考虑太多。但后来需要去掉括号时,问题就来了,树结构本身包含算符优先级,如果只是按照以往的方法,在树结构上去掉括号,给算符本身定义自然优先级,在计算结果上就会产生重大问题,会使得我们的树结构变得毫无意义,甚至显得累赘,为此我绞尽脑汁,甚至想过换掉数据结构,但最后感觉前功尽弃太令人沮丧,和我的伙伴商量后打算再把编写代码的任务交给他(因为郭舒志同学的编程能力比我强),我们想了很久,最终无奈进行了两个分支,不使用括号时也不用树结构。虽然不是完全之策,但也总算能完成要求。在查错的时候,发现了两个不大不小的问题,很快我们就进行了修复。在单元测试中,代码也很高效的通过了。
本次代码虽然效率不高,但老师所做的要求也基本都能很好的实现,所以从结果上来说还是非常好的。但给我们的教训是在编程之前最好要想到所有的情况,不然非常容易在中途发现问题而左右为难。这次的结队编程我的伙伴郭舒志同学编程能力强,我可以跟他学习到很多的编程知识与技巧,在这次的代码编写方面给了我很大的帮助,没有他就没有办法完成这次的作业,所以我非常感谢他。