Java 编写在线考试系统-049 窗体程序 完整源码

这是一个使用Java语言开发的在线考试系统,基于SWING框架,集成MySQL数据库。系统提供用户登录、核对信息、在线考试、查看成绩和退出等功能,旨在测试大学生的课程知识掌握情况。源码完整,适合学习Java窗体编程和数据库操作。

今天为大家分享一个java语言编写的在线考试系统-049,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步

开发环境

开发语言为Java,开发环境Eclipse或者IDEA都可以。数据库采用:MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。

系统框架

利用JDK自带的SWING框架开发,不需要安装第三方JAR包。MySQL数据库,纯窗体模式,直接运行Main文件即可以

主要功能

运行方法

1 运行Main.java文件

2 程序出现在线考试系统登陆的面板

主要模块

本次分享的为Java编写的窗体版本程序--在线考试系统,其主要目的是能对大学生在日常学习过程的知识进行有效的测试,通过系统了解大学生对课程知识的掌握程度,以便老师更好的有针对性的进行教学调整。其主要功能如下:

1 用户通过用户名和密码,登陆到在线考试系统中。同时也可以点退出按钮,退出在线考试系统

2 核对考生信息:学生在成功登陆到考试系统后,会弹出学号、姓名、专业、学院等信息,点击核对无误按钮后进入系统考试。

3 参与在线考试:学生点击在线考试按钮,开始考试。考试的过程从逐个题目开始作答,每个题目有对应的分数,答对获取相应的分数;打错该题得0分。答完所有题目后,点击交卷,完成本次考试。

4 查看考试成绩:学生点击主界面上得查看成绩,可以查看到本次考试得成绩和错题信息。

5 退出系统。学生点击退出按钮,退出整个应用程序。

这个项目涵盖了java 窗体编程的各种知识,包括UI界面设计、时间处理、数据库操作、事件处理操作等。通过这个项目能快速提升java 窗体编程,是非常好一个有价值的的项目。代码可以直接运行,没有任何bug。

项目运行效果

关键源码

package gui;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import client.Action;
import entity.Request;
import entity.Response;
import entity.Student;

public class LoginFrame extends JFrame implements ActionListener {
    /**
     * 
     */
    private static final long serialVersionUID = 554475657575L;
    private JLabel title;
    private JLabel idLabel, passwdLabel;
    private JTextField idField;
    private JPasswordField passwdField;
    private JButton ok, cancel;
    private Action action;

    public LoginFrame() {
        super("考生登录");

        action = new Action();
        title = new JLabel("考生登录");
        title.setFont(new Font("WenQuanYi Zen Hei", Font.BOLD, 18));
        idLabel = new JLabel("学号:");
        idLabel.setFont(new Font("WenQuanYi Zen Hei", Font.BOLD, 12));
        passwdLabel = new JLabel("密码:");
        passwdLabel.setFont(new Font("WenQuanYi Zen Hei", Font.BOLD, 12));
        idField = new JTextField(15);
        passwdField = new JPasswordField(15);
        ok = new JButton("登录");
        ok.setFont(new Font("WenQuanYi Zen Hei", Font.BOLD, 12));
        cancel = new JButton("取消");
        cancel.setFont(new Font("WenQuanYi Zen Hei", Font.BOLD, 12));

        init();
        addEventHandler();
    }

    /**
     * 该方法设置界面布局
     * 
     */
    private void init() {
        JPanel northPanel = new JPanel();
        northPanel.add(title);
        JPanel centerPanel = new JPanel();
        centerPanel.add(idLabel);
        centerPanel.add(idField);
        centerPanel.add(passwdLabel);
        centerPanel.add(passwdField);
        JPanel southPanel = new JPanel();
        southPanel.add(ok);
        southPanel.add(cancel);

        this.add(southPanel, BorderLayout.SOUTH);
        this.add(centerPanel, BorderLayout.CENTER);
        this.add(northPanel, BorderLayout.NORTH);
    }

    /**
     * 该方法为图形组件添加事件监听
     * 
     */
    private void addEventHandler() {
        ok.addActionListener(this);
        cancel.addActionListener(this);
        this.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent arg0) {
                System.exit(0);
            }
        });
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals("登录")) {
            login();

        } else if (e.getActionCommand().equals("取消")) {
            System.exit(0);
        }

    }

    private void login() {
        // 判断输入框中ID和密码是否为空,若为空则返回。
        if (idField.getText().trim().equals("")
                || new String(passwdField.getPassword()).trim().equals("")) {
            JOptionPane.showMessageDialog(this, "ID 和密码不能为空!");
            return;
        }
        String ids =  idField.getText().trim();
        String passwd = new String(passwdField.getPassword()).trim();

        Request req = new Request(Request.LOGIN_REQUEST);
        int id = Integer.parseInt(ids);
        req.addData("id", id);
        req.addData("passwd", passwd);
        Response res = action.doAction(req);
        // 解析代码
        analyseResponse(res);

    }

    private void analyseResponse(Response res) {
        Student s = (Student) res.getData("Student");
        if (s == null) {
            JOptionPane.showMessageDialog(this, "您的帐号或密码有误,请重新输入");
            return;
        } else {
            this.dispose();
            new WelcomeFrame(s).showMe();
            return;
        }
    }

    /**
     * 该方法设置界面大小,可见性及默认关闭操作。
     * 
     */
    public void showMe() {
        this.setSize(240, 180);
        this.setResizable(false);
        this.setLocation(400, 300);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    }

}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值