三年级计算

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 7000 8600
• Estimate • 估计这个任务需要多少时间 7000 8600
Development 开发
• Analysis • 需求分析 (包括学习新技术) 500 630
• Design Spec • 生成设计文档 200 230
• Design Review • 设计复审 50 70
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 200 350
• Design • 具体设计 700 630
• Coding • 具体编码 900 960
• Code Review • 代码复审 200 390
• Test • 测试(自我测试,修改代码,提交修改) 200 150
Reporting 报告 200 320
• Test Repor • 测试报告 100 170
• Size Measurement • 计算工作量 200 121
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划
合计

二、需求分析

我通过上网百度和实践问答的方式了解到,小学三年级四则混合运算有如下的几个特点:
1.运算符在2~4个
2.可以加括号进行优先级运算
3.减法运算的结果不能为负数
4.除法运算除数不为零,不能有余数,必须要能整除
5.先乘除后加减,有括号的括号内的先运算
经过分析,我认为,这个程序应当:
1.减法运算的结果不能有负数
2.除法运算除数不能为0,不能有余数
3.使用的数字0~100

三、设计

1. 设计思路

这个程序有一个类,八个方法(一个重构方法)
产生随机数字和两数运算时:
1.保证两个数字不超过50;
2.如果是加法运算的话,两个数字的和不超过100;
3.如果是减法运算的话,不应该产生结果为负数的式子;
4.设计三年级的函数gradeThree
5.在判断年级的函数judgeGrade内添加运行gradeThree的情况

2. 实现方案

  • 写出具体实现的步骤
    ReversePolishNotation()将原始式子转化为后缀形式(逆波兰)
    stack(String zf)将传入的字符传入存放字符的栈中
    judge(String str1, String str2)判断两个传入的字符的优先级哪个高
    生成三个0~100随机数
    利用random函数+sigh数组随机获取两个运算符
    生成题号和题目
    按顺序判断第一个运算符号和第二个运算符号 遵循先乘除后加减原则,将预算结果存入answer变量中

四、编码

请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程

1. 调试日志

运用逆波兰公式的时候忘记加入优先级,导致只能按顺序加减乘除,不会出现先乘除后加减的正确结果。
输出到文本的时候遇到了问题,使用System.setOut(ps); 可以输出到out.txt文本中,但是不能输出的到命令窗口中;使用System.out.println(ps); 则相反

2. 关键代码

3. 代码规范

  • 请给出本次实验使用的代码规范:

做好缩进和利用空行分隔
单行字符数限制不超过120个
并人工检查代码是否符合规范

五、测试

测试两种输入方式
测试三个年段都能运行

六、总结

写代码前要先构思一遍,可以现在文档中先写伪代码,先写出整体框架,再去细化,一定一定要先构思,不要边写边想
要考虑到各种情况,针对各种情况改写代码!
四则运算的优先级问题非常复杂

posted @ 2018-09-19 11:03  唧唧复唧唧,木兰当户织  阅读(207)  评论(1编辑  收藏  举报