小学三年级四则混合运算
脑壳疼的二次作业
211606319-林志强 211606321-刘杰
一、预估与实际
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
• Estimate | • 估计这个任务需要多少时间 | 20 | 30 |
Development | 开发 | ||
• Analysis | • 需求分析 (包括学习新技术) | 600 | 679 |
• Design Spec | • 生成设计文档 | 90 | 130 |
• Design Review | • 设计复审 | 30 | 50 |
• Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 55 | 75 |
• Design | • 具体设计 | 25 | 35 |
• Coding | • 具体编码 | 44 | 60 |
• Code Review | • 代码复审 | 20 | 30 |
• Test | • 测试(自我测试,修改代码,提交修改) | 15 | 30 |
Reporting | 报告 | ||
• Test Repor | • 测试报告 | 30 | 44 |
• Size Measurement | • 计算工作量 | 15 | 20 |
• Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 30 | 45 |
合计 | 974 | 1228 |
二、需求分析
我通过网上查找的方式了解到,小学三年级数学有如下的几个特点:
- 特点1:会笔算一位数除多位数的除法、两位数乘两位数的乘法,会进行相应的乘、除法估算和验算。
- 特点2:会口算一位数除商是整十、整百、整千的数,整十、整百数乘整十数,两位数乘整十、整百数(每位乘积不满十)。
- 特点3:初步认识简单的小数(小数部分不超过两位),初步知道小数的含义,会读、写小数,初步认识小数的大小,会计算一位小数的加减法。
- 特点4:学会混合运算,学会使用小括号。
经过分析,我认为,这个程序应当:
- 使用的数字小于100。
- 不能出现俩位小数。
- 可以出现小括号
三、设计
1. 设计思路
- 这次作业要求为三年级学生设计一个出题器,首先数字要求小于100,有加减乘除和小括号多种运算符
- 由于添加了小括号,所以需要考虑运算优先级的问题,需要用到逆波兰算法
- 逆波兰算法的核心步骤就2个:1,将中缀表达式转换为后缀表达式,例如输入的原始表达式是 3 X(5+7) ,转换得到 3 5 7 + X 2、根据后缀表达式,按照特定的计算规则得到最终结算结果
- 流程图
2. 实现方案
- 准备工作:先在Github上创建仓库,克隆到本地
- 先实现判断用户的年级,在获取需要生成的题目的数量
- 实现四则运算,尤其注意运算符的优先级
- 将题目和答案输出
1. 调试日志
- 无法出现括号。未解决。
- 出现负数。未解决。
- 小数。未解决。
2. 关键代码
public class Operation {
private static int ADDITION=1;
private static int SUBTRACTION=1;
private static int MULTIPLICATION=2;
private static int DIVISION=2;
public static int getValue(String operation){
int result;
switch (operation){
case "+":
result=ADDITION;
break;
case "-":
result=SUBTRACTION;
break;
case "*":
result=MULTIPLICATION;
break;
case "/":
result=DIVISION;
break;
default:
result=0;
}
return result;
}
}
实现符号的优先级运算。
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条:方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵循驼峰形式。
- 第二条:类名使用UpperCamelCase风格。
- 第三条:避免变量的定义与上一层作用域的变量同名。
五、测试
测试序号 | 输入参数grade n | 测试结果 |
---|---|---|
1 | 1 10 | 符合预期结果 |
2 | 2 20 | 符合预期结果 |
3 | 3 20 | 符合预期结果 |
4 | 3 30 | 符合预期结果 |
六、总结
- 结对作业需要俩人分配好工作,在实验中才能事半功倍。
- 随着作业难度的增加,在前期的准备工作就要做足。在需求分析,具体审计,思路上就要清晰明确。
- 俩个人在编程过程中尽量要保证一致节奏,否则会使双方在测试上出现分歧。