随机生成--小学计算题
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 750 | 1000 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 200 | 230 |
• Design Spec | • 生成设计文档 | 50 | 50 |
• Design Review | • 设计复审 | 60 | 60 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 30 | 35 |
• Design | • 具体设计 | 300 | 330 |
• Coding | • 具体编码 | 66 | 70 |
• Code Review | • 代码复审 | 20 | 80 |
• Test | • 测试(自我测试,修改代码,提交修改) | 20 | 35 |
Reporting | 报告 | 30 | 50 |
• Test Repor | • 测试报告 | 5 | 20 |
• Size Measurement | • 计算工作量 | 10 | 20 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 20 |
731 | 800 |
二、需求分析
我通过百度小学1-3年级数学题大全的方式了解到,小学三年级数学有如下的几个特点:
- 运算符在2~4个
- 可以加括号
- 减法运算的结果不能有负数
- 除法运算除数不能为0,不能有余数
经过分析,我认为,这个程序应当:
- 使用的数字小于100的数
- 减数须比被减数小
- 运算结果均保证为正
- 除数与被除数必须是倍数关系
- 混合运算结果必须是整数
- 括号必须是一对的
三、设计
1. 设计思路
- 创建文件,用文件io流
- 把一二年级的功能保留
- 随机生成运算符(最少有两个不同的运算符)
- 生成随机算式,括号的配对
记录写入文本
流程图:
2. 实现方案
具体实现的步骤:
- 准备工作:先在Github上创建仓库,克隆到本地...,Git的使用,仓库的创建,文件的上传.....
- 技术关键点:
- 想直接将四则运算直接写作一个类,然后当grade=3的时候在一二年级的基础上直接调用这个类。
- 调度场算法和逆波兰表达式。
四、编码
1. 调试日志
- 余数设置不合理,当运算三年级的时候,也会有余数输出;通过加一个if语句判断,当为三年级时,除数与被除数必须模除为0
2. 关键代码
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条,类型与中括号紧挨相连来定义数组
- 第二条,杜绝完全不规范的缩写,避免忘文不知义
- 第三条,不允许任何魔法值(即未经预先定义的常量)直接出现在代码中
- 第四条,final可以声明类、成员变量、方法、以及本地变量
- 第五条, 注释的双斜线与注释内容之间有且仅有一个空格。
- 第六条,if/for/while/switch/do等保留字与括号之间都必须加空格。
- 第七条,采用4个空格缩进,禁止使用tab字符。
- 第八条,单行字符数限制不超过120个,超出需要换行。
五、测试
- 输入:0 输出:请输入参数(1为起始)!
- 输入:5 输出:题目已经生成,详情请见out.txt
- 输入:1 1 输出:至多输入1个参数!
- 输入:99......999 输出: 输入的第一个参数数值太大!
- 输入:a 输出:请输入正整数!
- 输入:10 2 输出:题目已经生成,详情请见out.txt
六、总结
- 上次看到题目期初懵懵懂懂,到最后挣扎可以写出来。跟队友合作也不是头一次,也算是老伙伴了,但是我们两在这次的合作中从头到尾都是头脑空白的状态,调度场算法和逆波兰表达式还不太懂,又有点急躁,一个想法不行,就换另一种想法,没有坚守到底,在这次结对中,我们发现了各自的不足,后期也会一起继续研究,弥补欠缺的。