MathExamV2.0四则混合运算计算题生成器----211606360 丁培晖 211606343 杨宇潇
一、预估与实际
PSP2.1
Personal Software Process Stages
预估耗时(分钟)
实际耗时(分钟)
Planning
计划
• Estimate
• 估计这个任务需要多少时间
60
100
Development
开发
• Analysis
• 需求分析 (包括学习新技术)
360
440
• Design Spec
• 生成设计文档
20
20
• Design Review
• 设计复审
30
40
• Coding Standard
• 代码规范 (为目前的开发制定合适的规范)
30
50
• Design
• 具体设计
120
180
• Coding
• 具体编码
350
550
• Code Review
• 代码复审
90
120
• Test
• 测试(自我测试,修改代码,提交修改)
30
45
Reporting
报告
• Test Repor
• 测试报告
30
30
• Size Measurement
• 计算工作量
30
35
• Postmortem & Process Improvement Plan
• 事后总结, 并提出过程改进计划
60
60
合计
1210
1670
二、需求分析
我通过在网络搜索的方式了解到,小学三年级数学有如下的几个特点:
特点1:式子的运算无法得出负数。
特点2:数字范围增加,可以得出上千的结果。
特点3:除数不能为0。
特点4:在一个式子内会使用多个运算符号。
特点5:清楚加减乘除算式的优先级,并且明白括号的意思。
特点6:式子的结果大小限定在10000以内。
经过分析,我认为,这个程序应当:
使用的数字大小应为[0,1000)
并且判断除数的数字大小应为[1,1001)
生成的符号至少两个,并且至少两种。
三、设计
1. 设计思路
这一次的作业,由于需要使用逆波兰表达式,因此我们使用了和上次作业不同的输入文本的方式,这一次使用的是将字符串转为byte[],然后输入文本的方式。
我们还分出了多中方法体以及构造函数,在主函数main()里调用构造函数,在构造函数内调用各个方法体。(第一次作业只建立了一个方法体,并且在主函数调用,显得代码臃肿,因为将所有的算法都集中在一个方法体内,因此作出改变。)
根据题目要求,传入的参数有-n和-grade,因此使用if()判断了参数的-n和-grade的顺序,并建立了一个judge()的方法体,使用正则表达式判断参数的格式。
数字需要随机得出,因此需要建立随机数,随机数有多种。
随机出来的式子需要写入文本,因此创建了一个TxT()的方法,用于创建文本并将式子输入文本当中,使用String数组进行存储式子,并用Byte[]转换,最后输入文本。
答案需要的格式为“等式+答案”,而且不需要小数以及负数,因此将随机数类型定义为整型,并在最后判断答案是否符合要求。
判断加减乘除需要使用到优先级,因此创建了一个Level方法,返回值为0,1,2,用于判断符号的优先级。
因为三年级的式子为四则混合运算,因此使用中序表达式以及逆波兰,将String数组里的式子转化为线性表,最终调用reckon()方法计算线性表内的式子。并返回最终结果。
2. 实现方案
准备工作:先在Github上创建仓库,克隆到本地,并邀请结伴对象,将代码提交到一个仓库内。
技术关键点:
- 四则混合运算式子以及括号的判断,需要使用到优先级