小学生结题程序—计应193第五组王正浩
计划:
在之前的学习中,系统的了解了关于四则运算的java程序编程,所以计划花费的时间不长。
开发:
需求分析:通过具体的加减方法,获得具体数据的运算结果,重点在于具体运算方法的定义。
开发:主要运用Java编译器,Junit等工具实现程序代码的编写和测试,
具体的程序代码:
package KouSuan;
import java.util.Scanner;
import java.lang.String;
import java.lang.Math;
public class CalculateGenerator2 {
public static final int one = 1;
public static final int two = 2;
public static int score = 0;
// public static final int score = 0;
public static void main(String args[]) {
int choose,clas,n,result, x, y,score=0;
Scanner sr=new Scanner(System.in);
System.out.println("欢迎使用计算机");
System.out.println("请你输入您家孩子的年级:");
clas=sr.nextInt();
while(true) {
if (clas==1)
{
ONE();
break;
}
if (clas==2)
{
TWO();
break;
}
}
}
public static void menu1() {
System.out.println("1---------加法");
System.out.println("2---------减法");
System.out.println("3---------退出");
System.out.println("请输入你的选项:");
}
public static void menu2() {
System.out.println("1---------加法");
System.out.println("2---------减法");
System.out.println("3---------乘法");
System.out.println("4---------除法");
System.out.println("5---------混合运算");
System.out.println("6---------退出");
System.out.println("请输入你的选项:");
}
public static int ADD() {
int choose,clas,n,result, x, y,score=0;
Scanner sr=new Scanner(System.in);
System.out.println("这里是加法运算,请你输入要做几题");
n=sr.nextInt();
while(n>0) {
x=(int)(Math.random()*10);
y=(int)(Math.random()*10);
System.out.print(x+"+"+y+"=");
result=sr.nextInt();
if(result==(x+y)) {
System.out.println("答案正确,你真棒!");
score++;
}else {
System.out.println("答案错误,正确答案为"+(x+y));
}
n--;
}
return score;
}
public static int SUB() {
int choose,clas,n,result, x, y,score=0;
Scanner sr=new Scanner(System.in);
System.out.println("这里是减法运算,请你输入要做几题");
n=sr.nextInt();
while(n>0) {
x=(int)(Math.random()*100);
y=(int)(Math.random()*100);
if(x<y) {
System.out.print(y+"-"+x+"=");
result=sr.nextInt();
if(result==(y-x)) {
System.out.println("答案正确,你真棒!");
score++;
}else {
System.out.println("答案错误,正确答案为"+(y-x));
}
}else {
System.out.print(x+"-"+y+"=");
result=sr.nextInt();
if(result==(x-y)) {
System.out.println("答案正确,你真棒!");
}else {
System.out.println("答案错误,正确答案为"+(x-y));
}
}
n--;
}
return score;
}
public static int MULTI() {
int choose,clas,n,result, x, y,score=0;
Scanner sr=new Scanner(System.in);
System.out.println("这里是乘法运算,请你输入要做几题");
n=sr.nextInt();
while(n>0) {
x=(int)(Math.random()*10);
y=(int)(Math.random()*10);
System.out.print(x+"*"+y+"=");
result=sr.nextInt();
if(result==(x*y)) {
System.out.println("答案正确,你真棒!");
score++;
}else {
System.out.println("答案错误,正确答案为"+(x*y));
}
n--;
}
return score;
}
public static int DIVI() {
int choose,clas,n,result, x, y,score=0;
Scanner sr=new Scanner(System.in);
int all, max;
System.out.println("这里是除法运算,请你输入要做几题");
n=sr.nextInt();
while(n>0) {
x=(int)(Math.random()*10);
y=(int)(Math.random()*10);
all=x*y;
if(y!=0) {
System.out.print(all+"/"+y+"=");
result=sr.nextInt();
if(result==(all/y)) {
System.out.println("答案正确,你真棒!");
score++;
}else {
System.out.println("答案错误,正确答案为"+(all/y));
}
}
n--;
}
return score;
}
public static int MIX() {
int choose,clas,n,result, x, y,score = 0;
Scanner sr=new Scanner(System.in);
System.out.println("这里是混合运算,请你输入要做几题");
n=sr.nextInt();
while(n>0) {
int sum=0;
x=(int)(Math.random()*10);
y=(int)(Math.random()*10);
choose=(int)(Math.random()*3);
switch(choose) {
case 0:
System.out.print(x+"+"+y+"=");
sum=x+y;
break;
case 1:
if(x<y) {
System.out.print(y+"-"+x+"=");
sum=y-x;
}else {
System.out.print(x+"-"+y+"=");
sum=x-y;
}
break;
case 2:
System.out.print(x+"*"+y+"=");
sum=x*y;
break;
case 3:
int all1;
all1=x*y;
if(y!=0) {
System.out.print(all1+"/"+y+"=");
sum=all1/y;
}
break;
}
System.out.print("请输入答案:");
result=sr.nextInt();
if(result==sum) {
System.out.println("答案正确,你真棒!");
score++;
}else {
System.out.println("答案错误,正确答案为"+(sum));
}
n--;
}
return score;
}
public static void ONE() {
int choose,clas,n,result, x, y;
Scanner sr=new Scanner(System.in);
while(true) {
menu1();
choose=sr.nextInt();
switch(choose) {
case 1:
System.out.println("本次加法运算得分是"+ADD());
break;
case 2:
System.out.println("本次减法运算得分是"+SUB());
break;
case 3:
System.exit(0);
}
}
}
public static void TWO() {
int choose,clas,n,result, x, y;
Scanner sr=new Scanner(System.in);
while(true) {
menu2();
choose=sr.nextInt();
switch(choose) {
case 1:
System.out.println("本次加法运算得分是"+ADD());
break;
case 2:
System.out.println("本次减法运算得分是"+SUB());
break;
case 3:
System.out.println("本次乘法运算得分是"+MULTI());
break;
case 4:
System.out.println("本次除法运算得分是"+DIVI());
break;
case 5:
System.out.println("本次运算混合得分是"+MIX());
break;
case 6:
System.exit(0);
}
}
}
}
代码复审:
在测试中问题不是特别多。自己结合各路大神的标准对自己的程序进行修改。以及写了很多输出语句来查找BUG。总归还是实现了运算的算法。
总结:
在编码阶段因为需要对四种运算方法进行统一测试,故花费的时间比预估计的时间要长,在复审核阶段由于各路大神的指点,程序问题得到很快的解决。
PSP阶段 |
预估时间 |
实际所用时间 |
计划 |
10 |
5 |
|
10 |
5 |
开发 |
70 |
80 |
|
5 |
5 |
|
5 |
5 |
|
10 |
10 |
|
10 |
10 |
|
10 |
10 |
|
20 |
30 |
|
5 |
5 |
|
5 |
5 |
报告 |
20 |
15 |
|
5 |
5 |
|
5 |
5 |
|
10 |
5 |
总共花费时间 |
100 |
100 |