一.需求分析:
除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:1/6 + 1/8 = 7/24
运算符为 +, −, ×, ÷
并且要求能处理用户的输入,并判断对错,打分统计正确率。
要求能处理用户输入的真分数, 如 1/2, 5/12 等
使用 -n 参数控制生成题目的个数,例如执行下面命令将生成10个题目。
二.功能设计:
根据所写的代码,随机生成数字以及运算符号,并且组合成式子。
能生成分数,并且是最简分数。
输入计算结果后,如正确,输出正确,错误,则输出正确答案,并且能统计出错的题目个数。
三.设计实现:
此次实验,设置了4个class,主类--Main用来调用其他类,负责输入输出,判定结果以及统计错误个数
类--result 计算
类--fenshu 求最大公约数
类--qqq用来生成的式子
四.代码说明:
主要的是main和qqq两个类
main类:用循环语句来计算错误的个数,当number=0时,则跳出循环错误个数加1.
import java.util.Scanner; public class Main {static randomqqq rand = new randomqqq();static result end = new result();public static void main(String[] args) {int number = 0;int falseNum = 0;String userresult, trueresult, fenzi, fenmu;Scanner in = new Scanner(System.in);System.out.print("输入随机生成的式子个数:");number = in.nextInt();for (; number != 0; number--) {rand.randTest();System.out.println("你输入的答案是:");Scanner result = new Scanner(System.in);userresult = result.nextLine();trueresult = Integer.toString(rand.result);if (rand.m == 0 && rand.randNum != 3) {trueresult = Integer.toString(rand.result);} else {trueresult = Integer.toString(rand.fenzi) + "/" + Integer.toString(rand.fenmu);}if (userresult.equals(trueresult)) {System.out.println("答案正确!");} else {falseNum++;System.out.println("答案错误! 正确的答案:" + trueresult);}}System.out.println("错误的个数:" + falseNum);} }
类qqq:选择参数,计算出式子
int temp1 = yuefen.getnumber(a, c);int temp2 = yuefen.getnumber(b, d);int temp4 = yuefen.getnumber(a, b); int fz = end.up(a, b, c, d, randNum);int fm = end.fenmu(a, b, c, d, randNum);int temp3 =yuefen.getnumber(fz,fm) ;switch (m) {case 0:if (b == 0 && randNum == 3)System.out.println(b + " " + ch[randNum] + " " + a + " " + "=");elseSystem.out.println(a + " " + ch[randNum] + " " + b + " " + "=");break;case 1:System.out.println(a / temp1 + "/" + c / temp1 + " " + ch[randNum] + " " + b / temp2 + "/" + d / temp2 + " " + "=");break;}if (m == 0 && randNum != 3)result = end.result1(a, b, randNum);else if (m == 0 && randNum == 3) {fenzi = a / temp4;fenmu = b / temp4;} else {fenzi = fz/ temp3;fenmu = fm / temp3;}
五.测试运行:
PSP:
PSP2.1 | Personal Software Process Stages | Time (%) Senior Student | Time (%) |
Planning | 计划 | 8 | 5 |
· Estimate | 估计这个任务需要多少时间 | 20 | 5 |
Development | 开发 | 25 | 20 |
· Analysis | 需求分析 (包括学习新技术) | 5 | 5 |
· Design Spec | 生成设计文档 | 5 | 5 |
· Design Review | 设计复审 | 0 | 0 |
· Coding Standard | 代码规范 | 3 | 3 |
· Design | 具体设计 | 10 | 15 |
· Coding | 具体编码 | 50 | 40 |
· Code Review | 代码复审 | 5 | 5 |
· Test | 测试(自我测试,修改代码,提交修改) | 10 | 15 |
Reporting | 报告 | 5 | 5 |
· | 测试报告 | 1 | 1 |
· | 计算工作量 | 2 | 5 |
· | 并提出过程改进计划 | 3 | 2 |
实验总结:
在编程之前,需要思考好可能忽略的问题以及可能出现的问题,比如此次实验,分数需要最简化,分数中,分母不为0的情况。计算错误的题数时,如何设计循环语句使其能够正确计算个数,生成式子时可能会出现错误的式子,式子的格式要规范等问题。有问题自己积极思考,思考不出来呢就问百度,找同学。 编程需要一步一步训练,才能有所进步。