导航菜单
首页 >  java编写一个简单的考试程序  > 手把手教你用Java打造一款简单考试系统(上篇)

手把手教你用Java打造一款简单考试系统(上篇)

点击上方“Java进阶学习交流”,进行关注

后台回复“Java”即可获赠Java学习资料

地崩山摧壮士死,然后天梯石栈相钩连

一、项目背景

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

二、项目目标

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

三、项目实施

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

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

(一)首先实现窗体界面

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

使用new关键字创建testsystem类:

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

效果图如下图:

(二)界面的设计

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

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

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

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

private JPanel panel02=new JPanel();private JButton btn_index[]=new JButton[5];private JPanel panel03=new JPanel();private JButton btn_last=new JButton("上一题");private JButton btn_next=new JButton("下一题");private JButton btn_finish=new JButton("交卷");private JLabel label01=new JLabel("剩下时间");private JLabel label_time=new JLabel("5:00");

4.换壁纸,显示分数;

private JPanel panel04 = new JPanel();private JLabel label_score = new JLabel();private JLabel image = new JLabel(new ImageIcon());private JPanel imagePanel;private ImageIcon bg = new ImageIcon("image//bg.jpg");private JLabel label = new JLabel(bg);private MyListener ml = new MyListener();

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

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

6.创建计时器。

private Timer timer;private int minute=4,second=60;

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

1.设置题目,ABCD字体;

problem.setFont(new Font("宋体",Font.BOLD,18));buttona.setFont(new Font("宋体",Font.BOLD,18));buttonb.setFont(new Font("宋体",Font.BOLD,18));buttonc.setFont(new Font("宋体",Font.BOLD,18));buttond.setFont(new Font("宋体",Font.BOLD,18)); problem.setText(str_problem[num]); buttona.setText(answer_a[num]); buttonb.setText(answer_b[num]); buttonc.setText(answer_c[num]); buttond.setText(answer_d[num]);

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

group.add(buttona);group.add(buttonb);group.add(buttonc);group.add(buttond);

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

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

4.添加题目和选项;

panel01.add(problem);panel01.add(buttona);panel01.add(buttonb);panel01.add(buttonc);panel01.add(buttond);this.setLayout(new BorderLayout());this.add(panel01,BorderLayout.NORTH);

效果图如下图:

5.五个选题的按钮;

for(int i=0;i

相关推荐: