这个程序,能够实现生成彼此不重复的题目,并且计算出相应答案答案,以及根据题目计算结果的功能。
预估时间及实际花费时间表格
设计以及调试花费了大量的时间。
PSP2.1 | Personal Software Process Stages | Time |
---|---|---|
Planning | 计划 | |
· Estimate | · 估计这个任务需要多少时间 | 20h |
Development | 开发 | |
· Analysis | · 需求分析 (包括学习新技术) | 5h |
· Design Spec | · 生成设计文档 | 1h |
· Design Review | · 设计复审 (和同事审核设计文档) | 1h |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 1h |
· Design | · 具体设计 | 2h |
· Coding | · 具体编码 | 3h |
· Code Review | · 代码复审 | 1h |
· Test | · 测试(自我测试,修改代码,提交修改) | 3h |
Reporting | 报告 | |
· Test Report | · 测试报告 | 3h |
· Size Measurement | · 计算工作量 | 1h |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 1h |
合计 | 22h |
需求分析
这次作业大体上可以分为三个部分的实现。
首先,根据参数生成满足要求的四则运算题目
其次,计算出生成题目的答案
最后,根据输入的两个文件进行评测
同时,还要求生成的题目不能有重复,因为重复的判定十分困难,所以构思对应的算法和存储数据的数据结构,花费了大量的时间和精力。
性能分析
测试用例
-n 1 -r 1 -e exercise.txt -a answer.txt
-n 5 -r 1 -e exercise.txt -a answer.txt
-n 10 -r 1 -e exercise.txt -a answer.txt
-n 10 -r 2 -e exercise.txt -a answer.txt
-n 1 -r 10 -e exercise.txt -a answer.txt
-n 10 -r 10 -e exercise.txt -a answer.txt
-n 100 -r 10 -e exercise.txt -a answer.txt
-n 1 -r 100 -e exercise.txt -a answer.txt
-n 10 -r 100 -e exercise.txt -a answer.txt
-n 100 -r 100 -e exercise.txt -a answer.txt
总结与收获
这个个人项目,是软件工程课程的第一次作业。
题目的要求很多而且实现起来并不容易。在最开始做题的时候,心中并没有一个很好的轮廓,就开始着手了代码的编写。之后的过程证明了这种做法是完全错误的。因为每增加一个功能,几乎都会发现之前的数据结构的设置,或者相应的函数都并不能完美的适合新的功能,需要回过头去重新修改,这无形之中大大的增加了工作量,也让程序的进展十分的缓慢。
完成这次个人项目的过程中,我进一步体会到做工程与写小程序的区别。
做工程首先要有一个整体的分析与规划,确定程序的需求以及大体的解决步骤。之后对于每一个小的步骤,确定适合的算法以及相应的数据结构。当完成了整个程序的构思,还需要进行检查,以避免出现差错。最后才是代码的编写工作。
希望之后的作业不要再出现这次的情况,盲目地开始编写真是痛苦万分,而且事倍功半,这次的教训已十分深刻。