小学生四则运算考试系统Java
作为大一的新生,突然出现一个实训课程,让原本平静的生活变得很充实,学校要求写一个小学生四则运算考试系统的项目,包括自动出题、自动判断对错并给出得分、自动给出正确答案,同时还有倒计时,在经过几天的努力之后,我也是马马虎虎的完成了一个较为简单的考试系统
一共包含了四个类,代码如下:
下面一段代码是登陆界面的设计:
效果图:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginJFrame extends JFrame {
JTextField jTextField1,jTextField2;//用户名 姓名
JPasswordField jPasswordField1;//密码
JComboBox<String> nianjiJC;
public static String zhang,mi,nian;//保存账号密码
public static String zhang1,mi1,nian1;//保存账号密码
public LoginJFrame(){
init();
initzujian();
this.setVisible(true);//可见
}
//基础属性设置
private void init(){
this.setLocationRelativeTo(null);//居中
this.setSize(300,350);//大小
this.setDefaultCloseOperation(2);//关闭模式
this.setTitle("登录");
this.setLayout(new FlowLayout());
}
//界面初始化
private void initzujian(){
JLabel yonghuming = new JLabel("用户名");
JLabel mima = new JLabel("密码 ");
JLabel xingming = new JLabel("姓名 ");
jTextField1 = new JTextField(25);//用户名
jPasswordField1 = new JPasswordField(25);//密码
jTextField2 = new JTextField(25);//姓名
this.add(yonghuming);
this.add(jTextField1);
this.add(mima);
this.add(jPasswordField1);
this.add(xingming);
this.add(jTextField2);
//年级设置
JLabel nianji = new JLabel("年级 ");
String[] nj = {"一年级","二年级","三年级","四年级","五年级","六年级"};
nianjiJC = new JComboBox<>(nj);
add(nianji);
add(nianjiJC);
JButton dengluJButto = new JButton("登录");
JButton tuichuJButto = new JButton("退出");
JButton zhuceJButto = new JButton("注册");
add(dengluJButto);
add(tuichuJButto);
add(new JLabel("如果你还没有注册,请先注册"));
add(zhuceJButto);
zhuceJButto.addActionListener(new zhuceAction());//注册按钮添加事件
dengluJButto.addActionListener(new dengluAction());
tuichuJButto.addActionListener(new tuichuAction());
}
//登录按钮的事件
class dengluAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
boolean b1 = jTextField1.getText().equals(zhang) && jTextField2.getText().equals(mi) && nianjiJC.getSelectedItem().toString().trim().equals(nian);
boolean b2 = jTextField1.getText().equals(zhang1) && jTextField2.getText().equals(mi1) && nianjiJC.getSelectedItem().toString().trim().equals(nian1);
if (b1 || b2){
JOptionPane.showMessageDialog(null,"登陆成功");
new MainJFrame();
MainJFrame.yonghu.setText("当前用户为 :"+jTextField1.getText());
dispose();
}else if (jTextField1.getText().equals("") || jTextField2.getText().equals("")){
JOptionPane.showMessageDialog(null,"用户名或密码不能为空");
}else {
JOptionPane.showMessageDialog(null,"用户名或密码错误");
}
}
}
//退出按钮的事件
class tuichuAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
dispose();
}
}
//注册按钮的事件
class zhuceAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
dispose();
new RegisterJFrame();
}
}
public static void main(String[] args) {
new LoginJFrame();
}
}
对注册界面的设计:
效果图:
package 四则运算.考试系统界面;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class RegisterJFrame extends JFrame {
private JButton zhuceJButto,tuichuJButto;
private JLabel yonghuming,mima,mima1,xingming,xingbie;
private JTextField jTextField1,jTextFieldxingming;
private JRadioButton manJRadioButton,womanJRadioButton;
private JPasswordField jTextFieldmima,jTextFieldmima1;
private JComboBox<String> nianjiJC;
//构造方法
public RegisterJFrame(){
init();
initzujian();
initAction();
this.setVisible(true);
}
public void init(){
this.setSize(300,400);
this.setTitle("注册");
this.setLayout(new FlowLayout());
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(2);
}
public void initzujian(){
yonghuming = new JLabel("用户名");
mima = new JLabel("设置密码 ");
mima1 = new JLabel("再次设置密码");
xingming = new JLabel(" 姓名 ");
xingbie = new JLabel(" 性别");
jTextField1 = new JTextField(20);//用户名
jTextFieldxingming = new JTextField(20);//姓名
jTextFieldmima = new JPasswordField(20);//密码
jTextFieldmima1 = new JPasswordField(20);//密码1
//性别设置
manJRadioButton = new JRadioButton("男");
womanJRadioButton = new JRadioButton("女");
ButtonGroup bg = new ButtonGroup();
bg.add(manJRadioButton);
bg.add(womanJRadioButton);
this.add(yonghuming);
this.add(jTextField1);
this.add(mima);
this.add(jTextFieldmima);
this.add(mima1);
this.add(jTextFieldmima1);
this.add(xingming);
this.add(jTextFieldxingming);
add(xingbie);
add(manJRadioButton);
add(new JLabel(" "));
add(womanJRadioButton);
add(new JLabel(" "));
//年级设置
JLabel nianji = new JLabel(" 年级 ");
String[] nj = {"一年级","二年级","三年级","四年级","五年级","六年级"};
nianjiJC = new JComboBox<>(nj);
add(nianji);
add(new JLabel(" "));
add(nianjiJC);
add(new JLabel(" "));
tuichuJButto = new JButton("退出");
zhuceJButto = new JButton("注册");
add(zhuceJButto);
add(tuichuJButto);
tuichuJButto.addActionListener(new tuichuAction());
}
//事件处理的初始化
public void initAction(){
zhuceJButto.addActionListener(new zhuceAction());
}
//注册按钮的事件处理
class zhuceAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (jTextField1.getText().equals(LoginJFrame.zhang) || jTextField1.getText().equals(LoginJFrame.zhang1)){
JOptionPane.showMessageDialog(null,"该用户名已存在");
jTextField1.setText("");
}else if (jTextField1.getText().equals("") || jTextFieldmima.getText().equals("")){
JOptionPane.showMessageDialog(null,"请输入用户名和密码");
}else if (!jTextFieldmima.getText().equals(jTextFieldmima1.getText())){
JOptionPane.showMessageDialog(null,"两次输入的密码不一致");
}else if (LoginJFrame.zhang==null){
LoginJFrame.zhang = jTextField1.getText();
LoginJFrame.mi = jTextFieldmima.getText();
LoginJFrame.nian = nianjiJC.getSelectedItem().toString().trim();
JOptionPane.showMessageDialog(null,"注册成功,跳转登陆界面");
dispose();
new LoginJFrame();
}else {
LoginJFrame.zhang1 = jTextField1.getText();
LoginJFrame.mi1 = jTextFieldmima.getText();
LoginJFrame.nian1 = nianjiJC.getSelectedItem().toString().trim();
JOptionPane.showMessageDialog(null,"注册成功1,跳转登陆界面");
dispose();
new LoginJFrame();
}
}
}
//退出按钮的事件
class tuichuAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
dispose();
new LoginJFrame();
}
}
public static void main(String[] args) {
new RegisterJFrame();
}
}
对主界面的设计:
效果图:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MainJFrame extends JFrame {
//private JButton againJButton,exitJButton;//按钮属性
public static JLabel yonghu;
//构造方法,完成初始化界面
public MainJFrame() {
init();//界面基础设置
initNorth();//北侧布局
initWest();//左侧布局
initCenter();//中间界面
initEast();//东侧布局
initSouth();
this.setVisible(true);//设置可见
}
//初始化界面的方法
private void init() {
this.setSize(800, 600);//设置大小
this.setLocationRelativeTo(null);//居中
this.setDefaultCloseOperation(2);//设置关闭模式
this.setTitle("小学生四则运算测试系统-郑州轻工业大学-***-开发,****..");//设置标题
}
//左侧布局
private void initWest(){
JPanel jPanelWest = new JPanel();
jPanelWest.setBackground(Color.cyan);//背景色
//退出按钮
JButton tuichu = new JButton("退出");
jPanelWest.add(tuichu);
this.add(jPanelWest,BorderLayout.WEST);
tuichu.addActionListener(new tuichuAction());
}
//北侧布局
private void initNorth(){
//最上面的提示
JPanel jPanelNorth = new JPanel();
JLabel beixinxi = new JLabel("欢迎使用小学生四则运算测试系统");
beixinxi.setForeground(Color.green);
jPanelNorth.setBackground(Color.blue);//背景色
jPanelNorth.add(beixinxi);
this.getContentPane().add(jPanelNorth,BorderLayout.NORTH);
}
//中间布局
private void initCenter(){
JTabbedPane pcenter = new JTabbedPane();//选项卡面板
//基础运算选项卡
JPanel jichuJPanel = new jichuJPanel();//new 的对象是一个jpanel界面
jichuJPanel.setPreferredSize(new Dimension(500,500));
//整数混合运算选项卡
JPanel zhengshuhunheJPanel = new JPanel();
zhengshuhunheJPanel.setPreferredSize(new Dimension(500,500));
//小数混合运算选项卡
JPanel xiaoshuhunheJPanel = new JPanel();//整数混合运算
xiaoshuhunheJPanel.setPreferredSize(new Dimension(500,500));
pcenter.add("基础运算",jichuJPanel);
pcenter.add("整数混合运算",zhengshuhunheJPanel);
pcenter.add("小数混合运算",xiaoshuhunheJPanel);
add(pcenter,BorderLayout.CENTER);
}
//东侧布局
public void initEast(){
JPanel jPanelEast = new JPanel();
jPanelEast.setLayout(new BorderLayout());
jPanelEast.setPreferredSize(new Dimension(100,600));
yonghu = new JLabel(" 当前用户为 : ");
jPanelEast.add(yonghu,BorderLayout.CENTER);
this.add(jPanelEast,BorderLayout.EAST);
}
//南侧布局
private void initSouth(){
JPanel jPanelSouth = new JPanel();
jPanelSouth.setPreferredSize(new Dimension(100,50));
jPanelSouth.setLayout(new FlowLayout());
jPanelSouth.add(new JLabel("郑州轻工业大学 "));
jPanelSouth.add(new JLabel("软件学院"));
jPanelSouth.add(new JLabel("Copyright 2022"));
jPanelSouth.setBackground(Color.LIGHT_GRAY);
add(jPanelSouth,BorderLayout.SOUTH);
}
//退出按钮的事件
class tuichuAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
dispose();
new LoginJFrame();
}
}
public static void main(String[] args) {
new MainJFrame();
}
}
中间布局代码:
package 四则运算.考试系统界面;import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;//基础运算界面
public class jichuJPanel extends JPanel{public JButton chutiJButton, tijiaoJButton, zailaiJButton;private JLabel[] JLBQuestion = new JLabel[5];private JLabel[] test;private JTextField[] text;int[] score = new int[5];private JLabel j2 = new JLabel("倒计时: 20 秒");private JLabel[] daan = new JLabel[5];//构造方法public jichuJPanel() {this.setLayout(new GridLayout(8, 4));initJButton();//按钮初始化initQuestion();//题目初始化}//按钮初始化public void initJButton() {chutiJButton = new JButton("出题");tijiaoJButton = new JButton("提交");zailaiJButton = new JButton("再来一次");add(chutiJButton);add(new JLabel());add(tijiaoJButton);add(zailaiJButton);chutiJButton.addActionListener(new chutiAction());zailaiJButton.addActionListener(new zaishiyiciAction());tijiaoJButton.addActionListener(new tijiaoAction());}//题目初始化public void initQuestion() {
//text是文本框 test是题目test = new JLabel[5];text = new JTextField[5];for (int i = 0; i < 5; i++) {test[i] = new JLabel("题目" + (i + 1) + " : ");text[i] = new JTextField(15);JLBQuestion[i] = new JLabel(" ");add(test[i]);add(JLBQuestion[i]);daan[i] = new JLabel("");add(text[i]);add(daan[i]);}//对倒计时label的设置add(new JLabel());add(new JLabel());j2.setForeground(Color.red);j2.setFont(new Font("微软雅黑", Font.BOLD, 20));add(j2);add(new JLabel());}//再试一次按钮事件class zaishiyiciAction implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {for (int i = 0; i < 5; i++) {daan[i].setText("");text[i].setText("");}i = 20;LimitTime t = new LimitTime();t.start();}}//出题按钮的事件class chutiAction implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {i = 20;LimitTime t = new LimitTime();t.start();for (int i = 0; i < 5; i++) {JLBQuestion[i].setText(new question().getRandom()[i]);score[i] = question.calculation(question.getX()[i], question.getY()[i], question.getJ()[i]);daan[i].setText("");text[i].setText("");}}}//提交按钮的事件class tijiaoAction implements ActionListener {@Overridepublic void actionPerformed(ActionEvent e) {if (JLBQuestion[1].getText().equals(JLBQuestion[2].getText())){JOptionPane.showMessageDialog(null,"请先出题");}else {defen();i = -5;j2.setText("答案已提交");}}}int i = 20;//倒计时class LimitTime extends Thread{public void run(){II:while (true){while( i >= 0){j2.setText("倒计时: "+i+" 秒");try {sleep(1000);} catch (InterruptedException e) {JFrame jf = new JFrame();JOptionPane.showMessageDialog(jf,"出现了未知问题,请重启程序");}i--;if (i<=-4){break II;}}defen();//执行提交j2.setText("答案已自动提交");break ;}}}//判断分数private void defen(){try {int fenshu = 0;for (int i = 0; i < 5; i++) {
// System.out.println(score[i]+" ");if (text[i].getText().equals("")){daan[i].setText("正确答案是"+score[i]+" 错误");continue;}if (score[i] == Integer.parseInt(text[i].getText())){daan[i].setText("回答正确");fenshu += 20;}else {daan[i].setText("正确答案是"+score[i]+" 错误");}}JOptionPane.showMessageDialog(null,"你这次测试总分为:"+fenshu);}catch (Exception e2){JOptionPane.showMessageDialog(null,"请按照正确的格式输入答案");}}
}
下面是对题目的设计类:
package 四则运算.考试系统界面;
public class question {
public static int[] x = new int[5];
public static int[] y = new int[5];
public static int[] j = new int[5];
//自定义方法,进行运算符的获取
public static String getOp(int k) {
String str="";
switch(k) {
case 1:str = "+";
break;
case 2:str = "-";
break;
case 3:str = "*";
break;
case 4:str = "/";
break;
}
return str;
}
//自定义方法,计算正确的答案
public static int calculation(int a, int b, int k){
int sum=0;
switch(k) {
case 1:sum=a+b;
break;
case 2:sum=a-b;
break;
case 3:sum=a*b;
break;
case 4:sum=a/b;
break;
}
return sum;
}
//获取随机数
public static String[] getRandom(){
String[] st = new String[5];
for (int i = 0; i < 5; i++) {
int a = (int)(Math.random()*10+1);
x[i] = a;
int b = (int)(Math.random()*10+1);
y[i] = b;
int k = (int)(Math.random()*4+1);//获取运算符
j[i] = k;
st[i] = a+" "+getOp(k)+" "+b+" = ";
}
return st;
}
public static int[] getX(){
return x;
}
public static int[] getY(){
return y;
}public static int[] getJ(){
return j;
}
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(x[i]+" "+j[i]+" "+y[i]);
}
for (int i = 0; i < 5; i++) {
System.out.println(x[i]+" "+getOp(j[i])+" "+y[i]);
}
}
}
如果要使用,只需自己创建四个类,将上面代码复制一下就可以了,注意类名要保持一致
希望大家喜欢,如果有疑问可以评论告诉我,一定会及时解答
小学生四则运算考试系统Java相关推荐
- java 简单考试系统 ——java程序设计
java 简单考试系统 --java程序设计 import java.util.Random; import java.util.Scanner;public class shuru {public ...
- java课程设计 考试系统,java课程设计考试系统.
java课程设计考试系统.Tag内容描述: 1.目 录 第一章第一章 引言引言 3 1 1目的 3 1 2名词解释 3 1 3参考资料 3 1 4文档结构 3 第第 2 章章远景远景 4 2 1项目概 ...
- 小学数学考试系统java_C语言项目小学生数学考试系统参考
[项目3-小学生数学考试系统] 1.做一个小学生考试系统,功能包括: (1)利用随机数出10道加法题: (2)小学生用户答题给出每道题的答案: (3)对小学生的答题进行评判: (4)计算出小学生答题正 ...
- java实现模拟考试系统,Java Web应用开发—— 在线模拟考试系统-毕业设计
Java Web应用开发-- 在线模拟考试系统-毕业设计 毕毕 业业 设设 计(论计(论 文)文) 题题 目目 Java Web 应用开发 在线模拟考试系统的设计与实现 学学 院院 计算机学院 专专 ...
- 第十周项目三——小学生数学考试系统(2)
问题及代码 /* 烟台大学计算机学院 2016 作者: 马春澎 完成日期:2016年11月4日 问题描述: 做一个小学生考试系统,功能如下: (1)利用随机函数出10道加法题: (2)小学生用户答题, ...
- java模拟考试系统,java模拟考试软件下载
java模拟考试手机版是一款能够在线学习java并且练习的手机软件,涵盖了java语言的所有知识,由浅入深带领大家从最基本的java代码到最后的java项目,让大家对java语言不再害怕,都能够熟练的 ...
- 基于J2EE架构的在线考试系统-Java(报告+源码+PPT
目前国内基于B/S.C/S结构的在线考试系统产品已经有许多,本文首先介绍了这些考试系统的形成和发展过程,大致结构.然后通过仔细分析,提出了目前的这些系统还存有系统更新和维护等种种弊端,仍不够成熟.基于 ...
- springboot+vue 课程在线考试系统 java
SpringBoot项目默认支持两种格式的配置文件 1,application.properties 2,application.yaml springboot是spring家族中的一个全新框架,用来 ...
- java四则运算考试系统_小学生四则运算出题软件-基于java控制台的实现
.题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r 参数控制题目中数值(自然数.真分数和 ...
最新文章
- 第三阶段 10_JavaWeb基础_
- python爬取多页_Python 爬虫 2 爬取多页网页
- Hacker's Browser
- dovecot vsz_limit参造成foxmail、outlook等客户端工具接收邮件有时候报错
- 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
- Linux命令:grep命令详解
- Taobao File System
- 蓝牙mesh_什么是蓝牙mesh,蓝牙mesh特征,蓝牙mesh应用
- 高并发大流量专题---1、高并发大流量解决方案总结
- 针对IE安全控件的爬虫
- SecureCRT 连接 DynamipsGUI创建的模拟路由器
- 卡巴斯基携手微软MSN 卡巴斯基2010激活码免费领
- python英文词频统计-Python实现统计英文文章词频的方法分析
- Android百度AI植物识别教程,微信开发+百度AI学习:植物识别(示例代码)
- 【实操】python opencv将图片合成视频,并插入音频
- vscode运行python没有结果输出
- 最好用的Java手机_爪哇(JAVA)手机游戏谁最好玩?
- android 调试原理
- 五大主流浏览器的内核,前端在IE浏览器中常见的兼容问题
- 深度学习原理与框架-RNN网络框架-LSTM框架 1.控制门单元 2.遗忘门单元 3.记忆门单元 4.控制门单元更新 5.输出门单元 6.LSTM网络结构...