作为大一的新生,突然出现一个实训课程,让原本平静的生活变得很充实,学校要求写一个小学生四则运算考试系统的项目,包括自动出题、自动判断对错并给出得分、自动给出正确答案,同时还有倒计时,在经过几天的努力之后,我也是马马虎虎的完成了一个较为简单的考试系统

一共包含了四个类,代码如下:

下面一段代码是登陆界面的设计:

效果图:

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相关推荐

  1. java 简单考试系统 ——java程序设计

    java 简单考试系统 --java程序设计 import java.util.Random; import java.util.Scanner;public class shuru {public ...

  2. java课程设计 考试系统,java课程设计考试系统.

    java课程设计考试系统.Tag内容描述: 1.目 录 第一章第一章 引言引言 3 1 1目的 3 1 2名词解释 3 1 3参考资料 3 1 4文档结构 3 第第 2 章章远景远景 4 2 1项目概 ...

  3. 小学数学考试系统java_C语言项目小学生数学考试系统参考

    [项目3-小学生数学考试系统] 1.做一个小学生考试系统,功能包括: (1)利用随机数出10道加法题: (2)小学生用户答题给出每道题的答案: (3)对小学生的答题进行评判: (4)计算出小学生答题正 ...

  4. java实现模拟考试系统,Java Web应用开发—— 在线模拟考试系统-毕业设计

    Java Web应用开发-- 在线模拟考试系统-毕业设计 毕毕 业业 设设 计(论计(论 文)文) 题题 目目 Java Web 应用开发 在线模拟考试系统的设计与实现 学学 院院 计算机学院 专专 ...

  5. 第十周项目三——小学生数学考试系统(2)

    问题及代码 /* 烟台大学计算机学院 2016 作者: 马春澎 完成日期:2016年11月4日 问题描述: 做一个小学生考试系统,功能如下: (1)利用随机函数出10道加法题: (2)小学生用户答题, ...

  6. java模拟考试系统,java模拟考试软件下载

    java模拟考试手机版是一款能够在线学习java并且练习的手机软件,涵盖了java语言的所有知识,由浅入深带领大家从最基本的java代码到最后的java项目,让大家对java语言不再害怕,都能够熟练的 ...

  7. 基于J2EE架构的在线考试系统-Java(报告+源码+PPT

    目前国内基于B/S.C/S结构的在线考试系统产品已经有许多,本文首先介绍了这些考试系统的形成和发展过程,大致结构.然后通过仔细分析,提出了目前的这些系统还存有系统更新和维护等种种弊端,仍不够成熟.基于 ...

  8. springboot+vue 课程在线考试系统 java

    SpringBoot项目默认支持两种格式的配置文件 1,application.properties 2,application.yaml springboot是spring家族中的一个全新框架,用来 ...

  9. java四则运算考试系统_小学生四则运算出题软件-基于java控制台的实现

    .题目描述: 1. 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 -o Exercise.txt 将生成10个题目. 2. 使用 -r 参数控制题目中数值(自然数.真分数和 ...

最新文章

  1. 第三阶段 10_JavaWeb基础_
  2. python爬取多页_Python 爬虫 2 爬取多页网页
  3. Hacker's Browser
  4. dovecot vsz_limit参造成foxmail、outlook等客户端工具接收邮件有时候报错
  5. 送福利 | 送书5本《ASP.NET Core项目开发实战入门》带你走进ASP.NET Core开发
  6. Linux命令:grep命令详解
  7. Taobao File System
  8. 蓝牙mesh_什么是蓝牙mesh,蓝牙mesh特征,蓝牙mesh应用
  9. 高并发大流量专题---1、高并发大流量解决方案总结
  10. 针对IE安全控件的爬虫
  11. SecureCRT 连接 DynamipsGUI创建的模拟路由器
  12. 卡巴斯基携手微软MSN 卡巴斯基2010激活码免费领
  13. python英文词频统计-Python实现统计英文文章词频的方法分析
  14. Android百度AI植物识别教程,微信开发+百度AI学习:植物识别(示例代码)
  15. 【实操】python opencv将图片合成视频,并插入音频
  16. vscode运行python没有结果输出
  17. 最好用的Java手机_爪哇(JAVA)手机游戏谁最好玩?
  18. android 调试原理
  19. 五大主流浏览器的内核,前端在IE浏览器中常见的兼容问题
  20. 深度学习原理与框架-RNN网络框架-LSTM框架 1.控制门单元 2.遗忘门单元 3.记忆门单元 4.控制门单元更新 5.输出门单元 6.LSTM网络结构...

热门文章

  1. Rational Rose神器 (画图)
  2. OpenAI 强化学习 SpiningUP 中文文档 中文教程
  3. 睡前做什么有助于睡眠,不妨试试这几个帮助睡眠小妙招
  4. 怎么下载优酷视频呢,你可以这样下
  5. VScode常用插件(C/C++开发)
  6. 丧尸,只要摧毁头部便会永久停止行动
  7. 【云原生 | Kubernetes 系列】K8s 实战 管理 Secret 详解
  8. 红星美羚育儿经:宝宝上火,是奶粉的祸?
  9. python常用library
  10. win7matlab2016启动闪退,大白菜修复win7系统启动matlab出现闪退的图文方案