第三次作业:个人项目-小学四则运算

 

博客园: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
posted @ 2018-10-09 12:19  曾鹏菲  阅读(215)  评论(2编辑  收藏  举报