一.需求分析:
除了整数以外,还要支持真分数的四则运算,真分数的运算,例如: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 + " " + "="); else System.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的情况。计算错误的题数时,如何设计循环语句使其能够正确计算个数,生成式子时可能会出现错误的式子,式子的格式要规范等问题。有问题自己积极思考,思考不出来呢就问百度,找同学。 编程需要一步一步训练,才能有所进步。