Java 在线考试系统-MySQL数据库,窗体程序 直接运行

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

开发环境

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

系统框架

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

主要功能

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

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

2 查看考试须知:学生在成功登陆到考试系统后,点击考试须知,可以查看到本次考试的要求和考试纪律等信息。

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

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

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

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

运行效果

1 用户登陆

2 主界面

3 考试规则查看

4 开始考试

5 查看考试结果

关键代码

package com.tarena.elts.ui;

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

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import com.tarena.elts.entity.User;
//import com.tarena.elts.util.Config;

/** 主菜单界面 */
public class MenuFrame extends JFrame {
    
    private static final long serialVersionUID = -1796834130339697339L;
    
    private ClientContext clientContext;
    public void setClientContext(ClientContext clientContext) {
        this.clientContext = clientContext;
    }
    
    public MenuFrame() {
        init();
    }

    /** 初始化界面组件和布局 */
    private void init() {//
        setLocationRelativeTo(null);
        this.setTitle("西北大学在线考试系统");
        // JPanel contentPane = createContentPane();
        // this.setContentPane(contentPane);
        
        this.setContentPane(createContentPane());
        this.setSize(600, 400);
        //this.setVisible(true);
        this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
        this.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                //e.getOldState();//e 以前的状态
                clientContext.exit(MenuFrame.this);
            }
        });
    }

    private JPanel createContentPane() {
        JPanel p = new JPanel(new BorderLayout());

        ImageIcon ico = new ImageIcon(this.getClass().getResource("title.png"));
        // MunuFrame.class.getResource("title.png");
        // p.setBorder(new EmptyBorder(8,8,8,8));
        p.add(BorderLayout.NORTH, new JLabel(ico));
        p.add(BorderLayout.CENTER, createCenterPane());
        p.add(BorderLayout.SOUTH,
                new JLabel("www.bangxiecode.com 版权所有", JLabel.RIGHT));
        return p;
    }

    private JPanel createCenterPane() {
        JPanel p = new JPanel(new BorderLayout());
        // 务必将info 引用到界面控件对象
        //p.add(BorderLayout.NORTH, new JLabel("欢迎:聂云云 同学", JLabel.CENTER));
        info = new JLabel("欢迎:XXX 同学你好!",JLabel.CENTER);
        p.add(BorderLayout.NORTH,info);
        p.add(BorderLayout.CENTER, createBtnPane());
        return p;
    }

    private JPanel createBtnPane() {
        JPanel p = new JPanel(new FlowLayout());

        JButton start = createImgBtn("exam.png", "开始");
        JButton result = createImgBtn("result.png", "考试成绩");
        JButton msg = createImgBtn("message.png", "考试规则");
        JButton exit = createImgBtn("exit.png", "离开");

        getRootPane().setDefaultButton(start);//回车的默认按钮
        
        p.add(start);
        p.add(result);
        p.add(msg);
        p.add(exit);
        
        start.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                clientContext.start();
            }
        });
        
        exit.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                //System.out.println("clsi");
                clientContext.exit(MenuFrame.this);
            }
        });
        result.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                //e 代表发生了什么
                //long clickTime = e.getWhen();//获得事情发生时间
                clientContext.result();
            }
        });
        msg.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                clientContext.msg();
            }
        });

        return p;
    }

    /** 创建图片按钮的方法 */
    private JButton createImgBtn(String img, String txt) {
        ImageIcon ico = new ImageIcon(this.getClass().getResource(img));
        JButton button = new JButton(txt, ico);
        //button.setIcon(ico);
        //垂直文本对齐位置
        button.setVerticalTextPosition(JButton.BOTTOM);
        //水平文本对齐位置
        button.setHorizontalTextPosition(JButton.CENTER);
        return button;
    }
    private JLabel info;
    
    public void updateView(User user) {
        info.setText("你好: "+user+" 小童鞋,欢迎进入考试系统 ");
    }
}

首先,您需要在Java窗体中添加一个表格,以便用户可以选择要修改的数据行。然后,您需要在Java程序中连接到MySQL数据库,并使用SQL语句来查询需要修改的数据行。接下来,您需要在Java窗体中添加一些文本框和按钮,以便用户可以输入和保存修改后的数据。 以下是一个简单的Java窗体程序示例,用于修改MySQL数据库中的表格数据: ```java import java.sql.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ModifyData extends JFrame implements ActionListener { JLabel lblId, lblFirstName, lblLastName, lblEmail; JTextField txtId, txtFirstName, txtLastName, txtEmail; JButton btnSave, btnCancel; Connection con; PreparedStatement stmt; ResultSet rs; public ModifyData() { super("Modify Data"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建文本标签和文本框 lblId = new JLabel("ID:"); txtId = new JTextField(10); lblFirstName = new JLabel("First Name:"); txtFirstName = new JTextField(20); lblLastName = new JLabel("Last Name:"); txtLastName = new JTextField(20); lblEmail = new JLabel("Email:"); txtEmail = new JTextField(30); // 创建按钮 btnSave = new JButton("Save"); btnCancel = new JButton("Cancel"); // 添加事件监听器 btnSave.addActionListener(this); btnCancel.addActionListener(this); // 将组件添加到窗体中 JPanel panel = new JPanel(new GridLayout(5, 2)); panel.add(lblId); panel.add(txtId); panel.add(lblFirstName); panel.add(txtFirstName); panel.add(lblLastName); panel.add(txtLastName); panel.add(lblEmail); panel.add(txtEmail); panel.add(btnSave); panel.add(btnCancel); add(panel); // 连接到MySQL数据库 try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = ""; con = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { new ModifyData().setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == btnSave) { // 获取用户输入的数据 String id = txtId.getText(); String firstName = txtFirstName.getText(); String lastName = txtLastName.getText(); String email = txtEmail.getText(); try { // 更新数据库中的数据 String sql = "UPDATE mytable SET first_name=?, last_name=?, email=? WHERE id=?"; stmt = con.prepareStatement(sql); stmt.setString(1, firstName); stmt.setString(2, lastName); stmt.setString(3, email); stmt.setString(4, id); stmt.executeUpdate(); JOptionPane.showMessageDialog(this, "Data saved successfully."); } catch (Exception ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(this, "Failed to save data."); } } else if (e.getSource() == btnCancel) { // 关闭窗口 dispose(); } } } ``` 在上面的示例中,我们创建了一个名为ModifyData的Java窗体类,该类连接到名为mydatabase的MySQL数据库,并使用名为mytable的表格。我们在窗体中添加了一个文本框和几个按钮,以便用户可以输入和保存数据。当用户单击保存按钮时,程序将从文本框中获取数据,并使用SQL UPDATE语句更新数据库表格。如果更新成功,则显示一个消息框,告诉用户数据已被保存。如果更新失败,则显示另一个消息框,告诉用户保存数据失败。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

计算机程序

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

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

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

打赏作者

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

抵扣说明:

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

余额充值