基于Java Swing实现的简易考试系统界面搭建

基于Java Swing实现的简易考试系统界面搭建 一,任务介绍 1,1 任务描述 本任务要搭建一个考试系统界面,考试题型主要有两类:判断题和单选题

本文包含相关资料包-----> 点击直达获取<-------

基于Java Swing实现的简易考试系统界面搭建

一、任务介绍

1.1 任务描述

本任务要搭建一个考试系统界面。考试题型主要有两类:判断题和单选题,题库是存放在两个二维数组中,要求考试题目能随机生成5到题目,并能通过左边的树形结构选择相应题型来改变右边面板的内容,具体运行效果如下。

1.2 运行结果

主界面

判断题

单选题

二、任务目标

  • 学会分析“简易考试系统界面搭建”任务的实现思路

  • 根据思路独立完成“简易考试系统界面搭建”的源代码编写、编译和运行

  • 掌握Java动态生成组件的方法以及添加组件的方法

  • 掌握GUI开发过程中如何处理组件上发生的界面事件

三、实现思路

  • 窗口实现思路 :

设计产生随机数作为存放二维数组的下标,设置组件JLabel存放改下标中题目,设置组件JRadioButton存放选择选择项,将组件JRadioButton存放在组件ButtonGroup将选择像设置为单选。

  • 阅卷取消思路 : 利用ButtonGroup类中的clearSelection清空每组选择的选项,通过已知产生五组题目,即生成一个ButtonGroup[]的组件组,该组的长度为五,通过 java Enumeration<AbstractButton> radioBtns = buttonGroup[i].getElements(); AbstractButton btn = radioBtns.nextElement(); 获得每一个ButtonGroup[]中的选择项与答案进行比较。【利用产生题目的随机数组定位答案进行判断】

四、实现代码及运行结果

My.java

java public interface My extends MouseListener, ActionListener { public void setJButton(JButton jButton[]); public void setJRadioButton(JRadioButton jRadioButton[]); public void setButtonGroup(ButtonGroup Group[]); public void setIntA(int a[]); public void setquestion_select(String string[][]); public void setquestion_judge(String string[][]); void setTree(JTree jTree); }

Police.java

```java public class Police extends MouseAdapter implements My { JButton jButton[]; JRadioButton jRadioButton[]; ButtonGroup buttonGroup[]; JTree jTree; int a[]; String[][] question_select; String[][] question_judge;

@Override
public void actionPerformed(ActionEvent e) {
    double Mark = 0;
    if (e.getActionCommand().equals("确定")) {
        DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
        if (node.isLeaf()) {

            String s = node.getUserObject().toString().trim();
            if (s.equals("判断")) {

                for (int i = 0; i < a.length; i++) {
                    Enumeration<AbstractButton> radioBtns = buttonGroup[i].getElements();
                    AbstractButton btn = radioBtns.nextElement();
                    System.out.println(question_select[a[i]][5]);
                    System.out.println(btn.getText());
                    if (question_select[a[i]][5].equals(btn.getText())) {
                        Mark += 20;
                    }
                    buttonGroup[i].clearSelection();
                }
                JOptionPane.showMessageDialog(null, "成绩:" + Mark, "成绩", JOptionPane.WARNING_MESSAGE);
            } else {
                Mark = 0;
                for (int i = 0; i < a.length; i++) {
                    Enumeration<AbstractButton> radioBtns = buttonGroup[i].getElements();
                    AbstractButton btn = radioBtns.nextElement();
                    System.out.println(question_judge[a[i]][3]);
                    System.out.println(btn.getText());
                    if (question_judge[a[i]][3].equals(btn.getText())) {
                        Mark += 20;
                    }
                    buttonGroup[i].clearSelection();
                }
                JOptionPane.showMessageDialog(null, "成绩:" + Mark, "成绩", JOptionPane.WARNING_MESSAGE);

            }

        }
    } else {
        for (int i = 0; i < buttonGroup.length; i++) {
            buttonGroup[i].clearSelection();
        }
    }
}

```

Masm_test.java

```java public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Masm_test window = new Masm_test();
                Police police = new Police();
                window.setMy(police);
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

}

/**
 * Create the application.
 */
public Masm_test() {
    initialize();
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 609, 471);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JPanel panel = new JPanel();
    panel.setBounds(0, 0, 594, 419);
    frame.getContentPane().add(panel);
    panel.setLayout(null);

    JSplitPane splitPane = new JSplitPane();
    splitPane.setBounds(0, 0, 594, 409);
    panel.add(splitPane);

    jButton = new JButton[2];
    jButton[0] = new JButton("确定");
    jButton[1] = new JButton("取消");
    jRadioButton = new JRadioButton[4];
    group = new ButtonGroup[6];

    tree = new JTree();

    tree.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
            if (node.isLeaf()) {
                String s = node.getUserObject().toString().trim();
                if (s.equals("判断")) {
                    show(1);
                } else {
                    show(0);
                }
            }
        }
    });
    tree.setModel(new DefaultTreeModel(new DefaultMutableTreeNode("JTree") {
        {
            add(new DefaultMutableTreeNode("\u5224\u65AD"));
            add(new DefaultMutableTreeNode("\u5355\u9009"));

        }
    }));

    splitPane.setLeftComponent(tree);
    scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
    splitPane.setRightComponent(scrollPane);

}

void show(int n) {
    JPanel panel = new JPanel(new GridLayout(7, 1, 0, 0));
    a = new int[6];
    for (int i = 0; i < 6; i++) {
        a[i] = (int) (Math.random() * (10));
        for (int j = 0; j < i; j++) {
            if (a[j] == a[i]) {
                i--;
            }
        }
    }
    listener.setIntA(a);
    if (n == 0) {
        for (int i = 0; i < 6; i++) {
            JPanel p = new JPanel(new GridLayout(3, 1, 0, 0));
            lab = new JLabel(i + 1 + "、" + question_judge[a[i]][0]);
            // lab.addActionListener(listener);

            group[i] = new ButtonGroup();
            p.add(lab);
            for (int j = 0; j < 2; j++) {
                jRadioButton[j] = new JRadioButton(question_judge[a[i]][j + 1]);
                group[i].add(jRadioButton[j]);
                p.add(jRadioButton[j]);
                // jRadioButton[j].addActionListener(listener);
            }

            panel.add(p);
        }
        // scrollPane.setViewportView(panel);
    }
    if (n == 1) {

        // JPanel panel = new JPanel(new GridLayout(6, 1, 0, 0));
        for (int i = 0; i < 6; i++) {
            JPanel p = new JPanel(new GridLayout(5, 1, 0, 0));
            lab = new JLabel(i + 1 + "、" + question_select[a[i]][0]);

            // lab.addActionListener(listener);
            group[i] = new ButtonGroup();
            p.add(lab);
            for (int j = 0; j < jRadioButton.length; j++) {
                jRadioButton[j] = new JRadioButton(question_select[a[i]][j + 1]);
                group[i].add(jRadioButton[j]);
                p.add(jRadioButton[j]);
                // jRadioButton[j].addActionListener(listener);
            }
            panel.add(p);
        }
    }

    scrollPane.setViewportView(panel);
    JPanel panel_south = new JPanel();
    panel_south.add(jButton[0]);
    panel_south.add(jButton[1]);
    panel.add(panel_south);

}

void setMy(My listener) {
    this.listener = listener;
    for (int i = 0; i < jButton.length; i++) {
        jButton[i].addActionListener(listener);
    }
    listener.setButtonGroup(group);
    listener.setJButton(jButton);
    listener.setTree(tree);
    listener.setquestion_judge(question_judge);
    listener.setquestion_select(question_select);
    // listener.setJRadioButton(jRadioButton);
}

```

登入首页

判断题

单选题

五、总结或感悟

通过实验三,实验四的对编写代码实现窗口,熟练掌握常用组件的常用方法的使用。本次实验结合Windowbuilder插件对组件布局很快的完成实现”出卷”;

根据实验提示选项单选的情况使用ButtonGroup存放选项radioBtns实现单选;根据提示一次出道五题想到获取每组ButtonGroup选择情况与答案进行对比实现“阅卷”。

结合三次实验,虽然在前两次实验中使用大量的时间学习如何布局,组件的使用,触发事件的过程,但是在第三次实验体现出了前两次实验的必要性;如何合理的封装程序,实现改变ButtonGroup[]的长度便改变题目的个数,以及将窗口可见的组件做成员变量,窗口不可见的做局部变量传入事件触发后的处理类(Police)中的方法。

参考文献

  • 基于J2EE的学生网上考试系统的设计与实现(山东大学·雷怡然)
  • 计算机基础课程web考试系统的设计与实现(内蒙古大学·王春红)
  • 基于J2EE的学生网上考试系统的设计与实现(山东大学·雷怡然)
  • JAVA网络考试系统的研究(江南大学·张明星)
  • 计算机基础课程web考试系统的设计与实现(内蒙古大学·王春红)
  • B/S结构网络在线考试系统的设计与实现(燕山大学·黄涛)
  • 基于java的在线考试系统设计(华南理工大学·张晶)
  • 基于J2EE的大学生体育理论考试管理系统的设计与实现(电子科技大学·陈志强)
  • 基于J2EE的考试系统设计与实现(南京理工大学·樊雷)
  • 分布式计算机文化基础课程在线考试系统设计与实现(北京邮电大学·李焕哲)
  • 基于J2EE网上考试系统的设计与实现(电子科技大学·金虹)
  • 计算机知识考试系统的设计与实现(电子科技大学·楼凤珍)
  • 基于J2EE的大学生体育理论考试管理系统的设计与实现(电子科技大学·陈志强)
  • 基于Web的网络考试平台的设计与实现(吉林大学·张嘉兴)
  • 基于JAVA考试培训系统的设计与实现(辽宁科技大学·李青军)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码助手 ,原文地址:https://bishedaima.com/yuanma/35194.html

相关推荐

发表回复

登录后才能评论