第三次作业:个人项目-小学四则运算
博客园:https://www.cnblogs.com/zpfs/
github仓库:https://github.com/rg-zpf/rg-software
第一部分:要求
具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11。
第二部分:设计
1.需求设计
①随机产生题目
②题目中至少有二个以上的运算符
③提示用户输入题目数量
④判断答案对错,统计分数
⑤能出和真分数 (二分之一, 十二分之五,等)相关的练习题
2.功能设计
①根据用户输入题目数,循环n次,代表n道题目
②判断对错,答案与误差之间相差0.1,如果大于0.1,则为错误
③答案不能出现负数,小于0,则跳转重新出题
④count记录答案正确数,便于统计分数
第三部分:代码实现
①首先产生数字为100以内的四则运算,按照用户输入题目数n去循环输出
②因为有一道题目中有两个运算符,所以要判断计算优先级问题。我的做法是把两个运算符存入到一个字符数组中,如果第一个运算符ku[0]是“*”或“/”,那就直接运算,第二个云算法只要判断是什么就也可以直接运算了;如果第一个运算符ku[0]不是“*”或“/”,就要判断第二个运算符ku[1]是否为“*”或“/”,如果是,就先计算后面两个数,然后在将后面计算结果与前面相加或者相减(因为前面肯定不是“*”或“/”,所以只有是“+”或“-”);如果不是,则式子中只有“+”和“-”的运算,只要判断符号就可以顺序计算了。
③答案与用户结果之间的误差为0.1,并要记录正确结果数目count,再用(float)count/n*100输出分数。
部分代码:
Scanner input = new Scanner(System.in); float result = input.nextFloat(); if(Math.abs(result-sum)<0.1){ System.out.println("恭喜你,计算正确,答案是:"+sum); count=count+1; }else{ System.out.println("很遗憾,计算错误,答案是:"+sum); }
注:具体代码,请到github上查看。
结果测试:
第四部分:存在问题
①不能够产生分数
②代码可优化
个人软件过程耗时估计与统计表:
PSP2.1 | Personal Software Process Stages | Time Senior Student(h) | Time(h) |
Planning | 计划 | 1 | 1 |
· Estimate | 估计这个任务需要多少时间 | 25 | 30 |
Development | 开发 | 1 | 1 |
· Analysis | 需求分析 (包括学习新技术) | 1 | 1 |
· Design Spec | 生成设计文档 | 1 | 1 |
· Design Review | 设计复审 | 2 | 2 |
· Coding Standard | 代码规范 | 5 | 5 |
· Design | 具体设计 | 1 | 1 |
· Coding | 具体编码 | 5 | 8 |
· Code Review | 代码复审 | 3 | 3 |
· Test | 测试(自我测试,修改代码,提交修改) | 4 | 6 |
Reporting | 报告 | 2 | 2 |
· | 测试报告 | 0.5 | 0.5 |
· | 计算工作量 | 1 | 1 |
· | 并提出过程改进计划 | 0.5 | 0.5 |