小学数学练习

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小学数学练习

C语言,设计一个程序帮助小学生练习数学。

用C语言写一个 小学生口算出题系统

Scratch+小学数学妙趣横生6:韩信点兵

跪求小学到初中阶段数学的公式等解题方法!!!

201571030329/201571030310《小学四则运算练习软件需求获取》结对项目报告