结对项目
1.团队成员
2.需求分析
- 实现一个自动生成小学四则运算题目的命令行程序
- 使用 -n 参数控制生成题目的个数
- 使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围
- 将生成10以内(不包括10)的四则运算题目。该参数可以设置为1或其他自然数。该参数必须给定,否则程序报错并给出帮助信息。
- 生成的题目中计算过程不能产生负数,也就是说算术表达式中如果存在形如e1− e2的子表达式,那么e1≥ e2。
- 生成的题目中如果存在形如e1÷ e2的子表达式,那么其结果应是真分数。
- 每道题目中出现的运算符个数不超过3个。
- 程序一次运行生成的题目不能重复,即任何两道题目不能通过有限次交换+和×左右的算术表达式变换为同一道题目。
- 生成的题目存入执行程序的当前目录下的Exercises.txt文件,格式如下:
四则运算题目1
四则运算题目2
……
其中真分数在输入输出时采用如下格式,真分数五分之三表示为3/5,真分数二又八分之三表示为2’3/8。 - 在生成题目的同时,计算出所有题目的答案,并存入执行程序的当前目录下的Answers.txt文件,格式如下:
答案1
答案2
特别的,真分数的运算如下例所示:1/6 + 1/8 = 7/24 - 程序应能支持一万道题目的生成。
2.PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 20 |
Estimate | 估计这个任务需要多少时间 | 24*60 | 48*60 |
Development | 开发 | 180 | 300 |
Analysis | 需求分析(包括学习新技术) | 60 | 60 |
Design Spec | 生成设计文档 | 30 | 30 |
Coding Standard | 代码规范(为目前的开发指定合适的规范) | 30 | 30 |
Design | 具体设计 | 120 | 200 |
Coding | 具体代码 | 180 | 300 |
Code Review | 代码复审 | 120 | 120 |
Test | 测试(自我测试,修改代码,提交修改) | 120 | 120 |
Reporting | 报告 | 30 | 30 |
Test Report | 测试报告 | 30 | 30 |
Size Measurement | 计算工作量 | 60 | 60 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 30 | 30 |
合计 | 1010 | 1330 |
3.效能分析
本项目有两个模块,一个是负责进行题目的生成,另一个是负责将生成的题目解出答案,两个相辅相成,缺一不可。
题目生成模块
cpu使用率和内存的分配
(1) 火焰图_CPU使用率
(2)火焰图_内存分配
解答模块
cpu使用率和内存的分配
(1) 火焰图_CPU使用率
(2)火焰图_内存分配
4.设计实现
本项目分为两个模块:生成题目模块和解析题目模块
生成题目模块:
题目的生成,生成分数和整数,拼接成字符串
内部有Expression类、Fraction类、NumGene类,其中Expression类是最关键的类,由他生成题目字符串
解析题目模块:
根据生成模块生成的题目,将字符串进行解析,进行计算得出答案
内部有Calculate类、Fraction类,Calculate类用于计算
5.代码测试
6.项目小结
(1)结对感受:1)优点:两个人一起完成代码,减少了工作量,还能提高开发的效率。2)缺点:两个人开发,之间的交流异常更重要,在开发前没能做到有效的交流,这
非但不提高效率,还会出现各种各样的问题,开发速度还没有一个人开发的速度快。
(2)闪光点:两个人一起开发项目,一起开动脑筋想新方法
(3)建议:一定一定要沟通和做好项目的需求分析,两个人分工合作要对应好方法接口。