手把手教你用Java打造一款简单考试系统之一

开发 后端
随着移动互联网的发展,网络给我们带来的是无穷的信息,也带来了便利。与传统考试模式相对比,在线考试具有很多优越性、它可以将传统考试过程中的试卷组织、传送、收集、评判等各环节缩小到一至两个环节,不仅可以节约大量的时间、人力、物力与财力,还可以大幅度提高考试的客观性和公正性。

[[379675]]

一、项目背景

随着移动互联网的发展,网络给我们带来的是无穷的信息,也带来了便利。与传统考试模式相对比,在线考试具有很多优越性、它可以将传统考试过程中的试卷组织、传送、收集、评判等各环节缩小到一至两个环节,不仅可以节约大量的时间、人力、物力与财力,还可以大幅度提高考试的客观性和公正性。利用现有的计算机硬、软件和网络资源实现无纸质考试以避免传统考试的不足。

二、项目目标

设计一款应用程序,显示驾照考试科目一的题目,进行计时,当用户提交试卷后,判断用户的做题情况,统计得分,并显示考试结果。

三、项目实施

使用eclipse软件开发,先上效果图,如下图所示。可以看到在界面上有可以有驾照考试科目一的题目,考试的时间,提交试卷,页面切换的功能。

 

接下来,小编带大家进行具体的实现,具体的实现步骤如下。

(一)首先实现窗体界面

  1. public static void main(String[] args) { 
  2.         // TODO Auto-generated method stub 
  3.            testsystem t = new testsystem(); 
  4.            t.setTitle("驾照考试"); 
  5.            t.setSize(660,430); 
  6.            t.setVisible(true); 
  7.            t.setResizable(false);//设置窗口是否可以调整 
  8.            t.setLocationRelativeTo(null);//null表示没有参照物,居中电脑 

使用new关键字创建testsystem类:

  1. setTitle表示设置界面的标题; 
  2. setSize(宽,高)表示窗体大小; 
  3. setVisible(truefalse)表示窗体是否可见; 
  4. setResizable(truefalse)表示窗体是否可以由用户调整大小; 
  5. setLocationRelativeTo()表示设置窗口相对于指定组件的位置。 

效果图如下图:

 

(二)界面的设计

1.显示的界面:创建JFrame实例、JPanel面板,然后把面板添加到JFrame中;

2.构造一个按钮组对象ButtonGroup,把JRadioButton类型的对象添加到该按钮组中;

  1. public class testsystem extends JFrame{//变量 
  2.    
  3. private JPanel panel01 =new JPanel(); 
  4. private JLabel problem =new JLabel(); 
  5. private ButtonGroup group=new ButtonGroup(); 
  6. private JRadioButton buttona=new JRadioButton(); 
  7. private JRadioButton buttonb=new JRadioButton(); 
  8. private JRadioButton buttonc=new JRadioButton(); 
  9. private JRadioButton buttond=new JRadioButton(); 
  10. private String str_problem[]=new String[]{ 
  11.             "1、在实习期内驾驶机动车的,应当在车身后部粘贴或者悬挂哪种标志?"
  12.             "2、初次申领的机动车驾驶证的有效期为多少年?"
  13.             "3、夜间道路环境对安全行车的主要影响是什么?"
  14.             "4、路中心双黄实线是何含义?"
  15.             "5、驾驶车辆行至道路急转弯处,应怎样做?" 
  16. }; 
  17. //ABCD选项 
  18. private String answer_a[]=new String[]{ 
  19.             "A、注意新手标志"
  20.             "A、3年"
  21.             "A、能见度低、不利于观察道路交通情况"
  22.             "A、可跨越对向车道分界线"
  23.             "A、借对向车道行驶" 
  24. }; 
  25. private String answer_b[]=new String[]{ 
  26.             "B、注意避让标志"
  27.             "B、5年"
  28.             "B、路面复杂多变"
  29.             "B、禁止跨越对向车行道分界线"
  30.             "B、急剧制动低速通过" 
  31. }; 
  32. private String answer_c[]=new String[]{ 
  33.             "C、统一式样的实习标志"
  34.             "C、6年"
  35.             "C、驾驶人体力下降"
  36.             "C、双侧可跨越同向车道分界线"
  37.             "C、靠弯道外侧行驶" 
  38.  
  39. }; 
  40. private String answer_d[]=new String[]{ 
  41.             "D、注意车距标注"
  42.             "D、12年"
  43.             "D、驾驶人易产生冲动、幻觉"
  44.             "D、单向行驶车道分界线"
  45.             "D、充分减速并靠右侧行驶" 
  46. }; 
  47. private int num=0;//当前题号 

3.切换题目,交卷按钮,显示时间;

  1. private JPanel panel02=new JPanel(); 
  2. private JButton btn_index[]=new JButton[5]; 
  3.  
  4. private JPanel panel03=new JPanel(); 
  5. private JButton btn_last=new JButton("上一题"); 
  6. private JButton btn_next=new JButton("下一题"); 
  7. private JButton btn_finish=new JButton("交卷"); 
  8. private JLabel label01=new JLabel("剩下时间"); 
  9. private JLabel label_time=new JLabel("5:00"); 

4.换壁纸,显示分数;

  1. private JPanel panel04 = new JPanel(); 
  2. private JLabel label_score = new JLabel(); 
  3. private JLabel image = new JLabel(new ImageIcon()); 
  4.  
  5. private JPanel imagePanel; 
  6. private ImageIcon bg = new ImageIcon("image//bg.jpg"); 
  7. private JLabel label = new JLabel(bg); 
  8.  
  9. private MyListener ml = new MyListener(); 

5.判断选的答案是否正确;

  1. private int right[] = new int[]{3,3,1,2,4};//正确答案 
  2. private int my_answer[]=new int[]{0,0,0,0,0};//用户答案 
  3. private int score = 0;//当前分数为0 

6.创建计时器。

  1. private Timer timer; 
  2. private int minute=4,second=60; 

(三)在testsystem类的构造函数设置组件的属性

1.设置题目,ABCD字体;

  1. problem.setFont(new Font("宋体",Font.BOLD,18));      
  2.   buttona.setFont(new Font("宋体",Font.BOLD,18));      
  3.   buttonb.setFont(new Font("宋体",Font.BOLD,18));      
  4.   buttonc.setFont(new Font("宋体",Font.BOLD,18));      
  5.   buttond.setFont(new Font("宋体",Font.BOLD,18)); 
  6.   problem.setText(str_problem[num]); 
  7.   buttona.setText(answer_a[num]); 
  8.   buttonb.setText(answer_b[num]); 
  9.   buttonc.setText(answer_c[num]); 
  10.   buttond.setText(answer_d[num]); 

2.把JRadioButton类型的对象添加到该按钮组中实现单选功能;

  1. group.add(buttona);       
  2.  group.add(buttonb);       
  3.  group.add(buttonc);       
  4.  group.add(buttond); 

3.GridLayout网格布局:行,列,水平间距,垂直间距;

  1. panel01.setLayout(new GridLayout(5, 1, 0, 30)); 

4.添加题目和选项;

  1. panel01.add(problem); 
  2. panel01.add(buttona); 
  3. panel01.add(buttonb); 
  4. panel01.add(buttonc); 
  5. panel01.add(buttond); 
  6. this.setLayout(new BorderLayout()); 
  7. this.add(panel01,BorderLayout.NORTH); 

效果图如下图:

 

5.五个选题的按钮;

  1. for(int i=0;i<5;i++){ 
  2.       btn_index[i]=new JButton(""+(i+1)); 
  3.       btn_index[i].setBackground(Color.red); 
  4.       panel02.add(btn_index[i]); 
  5.        
  6.       btn_index[i].addActionListener(ml); 
  7.        
  8.       } 
  9.       this.add(panel02,BorderLayout.CENTER); 

效果图如下图:

 

6.添加上一题、下一题、交卷、时间;

  1. btn_last.setEnabled(false);//设置最后一题的不能再点击下一题 
  2. label_time.setFont(new Font("黑体",Font.BOLD,30)); 
  3. label_time.setForeground(Color.RED); 
  4. panel03.add(btn_last); 
  5. panel03.add(btn_next); 
  6. panel03.add(btn_finish); 
  7. panel03.add(label01); 
  8. panel03.add(label_time); 
  9. this.add(panel03,BorderLayout.SOUTH); 

效果图如下图:

 

7.添加显示分数

注意:调试完先不显示总分和表情,等用户交卷后再显示相应总分和表情。

  1. label_score.setFont(new Font("黑体",Font.PLAIN,30)); 
  2. label_score.setForeground(Color.BLUE); 
  3. panel04.add(label_score); 
  4. panel04.add(image); 
  5. this.add(panel04,BorderLayout.EAST); 

效果图如下图:

 

小编写的界面设计先到这里,接下实现功能的请看java简单考试系统(下篇)!

四、总结

1.本文主要介绍了JLabel、JButton、JPanel、ButtonGroup、JRadioButton单选框组件的基本使用,完成界面的窗口、题目和选项、显示进度、显示按钮和时间、显示总分和表情。

2.这些代码比较简单,也是一个简单的小案例,希望对你有所帮助。针对功能的实现请看java简单考试系统(下篇)。

本文转载自微信公众号「Java进阶学习交流」,可以通过以下二维码关注。转载本文请联系Java进阶学习交流公众号。

 

责任编辑:武晓燕 来源: Java进阶学习交流
相关推荐

2021-02-04 15:52:46

Java考试系统

2021-01-04 09:55:26

Java移动互联网

2023-05-22 10:04:24

2021-01-05 09:04:20

Javatxt文件

2017-09-14 09:09:04

php应用LibreOfficeWord转HTML

2021-01-12 05:05:15

Java对碰游戏

2022-02-17 10:26:17

JavaScript扫雷游戏前端

2021-01-10 08:14:01

Go语言TCP扫描器

2021-11-01 10:26:07

CanvasAPI画布技术HTML5

2021-12-30 08:56:57

Python摸鱼倒计界面Python基础

2021-01-21 06:04:55

Go语言TCP目录生成器

2024-01-07 20:00:27

2021-08-13 09:01:31

Python小游戏Python基础

2021-01-13 09:03:48

Java游戏函数

2021-08-09 13:31:25

PythonExcel代码

2022-10-19 14:30:59

2022-01-24 11:02:27

PySimpleGUPython计算器

2021-08-24 10:02:21

JavaScript网页搜索 前端

2022-02-25 09:41:05

python搜索引擎

2021-06-24 10:52:35

JDBC数据库图书管理系统
点赞
收藏

51CTO技术栈公众号