小学数学练习
Posted 扬志九洲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小学数学练习相关的知识,希望对你有一定的参考价值。
1.1【问题描述】
编写一个帮助小学生练习数学的程序,帮助小学生练习 100 以内的四种数学运算:加、减、乘、除。
1.2【基本要求】
a) 程序应先询问用户的 ID 号(ID 号包括两个大写字母和 4 位数字),例如:
请输入用户 ID 号:AB1234
程序应对输入的 ID 号验证,符合 ID 号要求的格式,然后程序提示三种选择:
(1)开始测试
(2)检查分数
(3)退出
b) 测试:该程序将给出 10 道数学题,例如:
12 * 3 =36
48 + 32 =80
…
56 / 28 =2
注意:
i)学生将依次回答每一个问题(在等于号后面给出答案),然后给出下一道题。
ii)试题应包含四种数学运算:加、减、乘、除,它们是随机产生的。相邻的问题应该是不同的操作,
每个操作必须至少出现一次。报告中应给出实现方法或算法。
iii)为每道题随机生成数字,但必须确保参与运算的数字和结果都小于 100 且大于零的整数,除法时
还要注意两个整数要能整除。报告中应给出实现方法或算法。
iv)十道题做完后,记录学生完成这十道题所用的时间。
v)给每个学生一个分数。将该学生的 ID、成绩和使用时间保存到一个名为 record.txt 的文件中。
vi)在屏幕上输出以下信息:(3 列信息,第 1 列是 b)中的测试题,蓝色部分)
问题 | 正确答案 | 你的答案
c) 成绩检查:从文件“record.txt”中列出该学生的所有历史成绩(其他学生的不显示)。例如:
你以前的记录是:
AB1234 80 150 秒
AB1234 50 182 秒
AB1234 90 98 秒
1.3代码
import java.util.Scanner;
import java.util.Date;
import java.io.*;
public class Exam
public static void main(String[] args)throws IOException
int i=0;
Scanner sc=new Scanner(System.in);
System.out.print("输入用户 ID 号:");
String id=sc.next();
ID Id=new ID(id);
while(!Id.judge())
System.out.println("请重新输入:");
id=sc.next();
Id=new ID(id);
System.out.println("请选择您要的服务:\\n(1)开始测试\\n(2)检查分数\\n(3)退出");
int a=sc.nextInt();
if(a==1)
new test(id);
else if(a==2)
FileRead fr=new FileRead(id);
fr.Fileread();
else
System.exit(0);
//检查ID是否符合要求
class ID
String id;
public ID(String id)
this.id=id;
public boolean judge()
int[] a=0,0;
if(this.id.length()!=6)
return false;
for(int i=0;i<6;i++)
boolean isNum =this.id.substring(i,i+1).matches("[0-9]+");
boolean isWord=this.id.substring(i,i+1).matches("[A-Z]+");
if(isNum)
a[0]++;
if(isWord)
a[1]++;
if(a[0]==4&&a[1]==2)
return true;
return false;
//对做题过程综合处理
class Operation
//该方法实现题型的随机生成
public int[] draw()
int c=0;
int b=0;
boolean f1=false,f2=false,f3=false,f4=false;
int[] s=new int[10];
for(int i=0;i<10;i++)
c=(int)(Math.random()*4+1);
if(i>0)
if(c==s[i-1])
return draw();
s[i]=c;
for(int i=0;i<10;i++)
if(f1==false&&s[i]==1)
f1=true;
b++;
if(f2==false&&s[i]==2)
f2=true;
b++;
if(f2==false&&s[i]==3)
f3=true;
b++;
if(f2==false&&s[i]==4)
f4=true;
b++;
if(b!=4)
return draw();
return s;
//该方法实现对生成题型的操作,并返回成绩
public int operation()
int b=0,c=0;
int[] a=draw();
Plus p=new Plus();
Minus m=new Minus();
Multiply mp=new Multiply();
Divide d=new Divide();
for(int i = 0;i < 10; i++)
if(a[i]==1)
b=p.run();
else if(a[i]==2)
b=m.run();
else if(a[i]==3)
b=mp.run();
else if(a[i]==4)
b=d.run();
else
System.exit(0);
c+=b;
return c;
//计算加类
class Plus
//生成两个运算数
public static float[] draw()
float c,d;
c=(int)(Math.random()*100);
d=(int)(Math.random()*100);
if(c + d > 100)
return draw();
float[] array=c,d;
return array;
//运算及检验是否运算正确
public static int run()
float[] a=draw();
int c=1;
System.out.print("\\n\\t"+a[0]+"+"+a[1]+"=");
Scanner sc=new Scanner(System.in);
float b=sc.nextFloat();
if(b==a[0]+a[1])
System.out.println("\\n\\t"+a[0]+"+"+a[1]+"="+b+"\\t"+(a[0]+a[1]));
return 1;
System.out.println("\\n\\t"+a[0]+"+"+a[1]+"="+b+"\\t"+(a[0]+a[1]));
return 0;
//计算减类
class Minus extends Plus
//生成两个运算数
public static float[] draw()
float c,d;
c=(int)(Math.random()*100);
d=(int)(Math.random()*100);
if(c - d < 0)
return draw();
float[] array=c,d;
return array;
public static int run()
float[] a=draw();
int c=1;
System.out.print("\\n\\t"+a[0]+"-"+a[1]+"=");
Scanner sc=new Scanner(System.in);
float b=sc.nextFloat();
if(b==a[0]-a[1])
System.out.println("\\n\\t"+a[0]+"-"+a[1]+"="+b+"\\t"+(a[0]-a[1]));
return 1;
System.out.println("\\n\\t"+a[0]+"-"+a[1]+"="+b+"\\t"+(a[0]-a[1]));
return 0;
//计算乘类
class Multiply extends Plus
//生成两个运算数
public static float[] draw()
float c,d;
c=(int)(Math.random()*100);
d=(int)(Math.random()*100);
if(c * d > 100)
return draw();
float[] array=c,d;
return array;
public static int run()
float[] a=draw();
int c=1;
System.out.print("\\n\\t"+a[0]+"×"+a[1]+"=");
Scanner sc=new Scanner(System.in);
float b=sc.nextFloat();
if(b==a[0]*a[1])
System.out.println("\\n\\t"+a[0]+"×"+a[1]+"="+b+"\\t"+(a[0]*a[1]));
return 1;
System.out.println("\\n\\t"+a[0]+"×"+a[1]+"="+b+"\\t"+(a[0]*a[1]));
return 0;
//计算除类
class Divide
public static float[] draw()
float c,d;
c=(int)(Math.random()*100);
d=(int)(Math.random()*100);
if(c + d > 100||c%d!=0||c==0||d==0)
return draw();
float[] array=c,d;
return array;
public static int run()
float[] a=draw();
int c=1;
System.out.print("\\n\\t"+a[0]+"/"+a[1]+"=");
Scanner sc=new Scanner(System.in);
float b=sc.nextFloat();
if(b==a[0]/a[1])
System.out.println("\\n\\t"+a[0]+"/"+a[1]+"="+b+"\\t"+(a[0]/a[1]));
return 1;
System.out.println("\\n\\t"+a[0]+"/"+a[1]+"="+b+"\\t"+(a[0]/a[1]));
return 0;
//对做题过程综合处理并计算成绩
class test
public test(String id)
long a1=0,a2=0;
Date date1=new Date();
a1=date1.getTime();
Operation op=new Operation();
Date date2小学数学练习