小学数学练习
Posted 被褐怀玉888988
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 Operati以上是关于小学数学练习的主要内容,如果未能解决你的问题,请参考以下文章
201571030329/201571030310《小学四则运算练习软件需求获取》结对项目报告