JDBC+GUI实现简单学生管理系统

好的。首先,我们需要明确几个概念:

  1. JDBC:Java Database Connectivity,Java数据库连接技术,用于在Java程序中访问和操作数据库的API。
  2. GUI:Graphical User Interface,图形用户界面,用于设计和实现用户交互的界面。
  3. 学生管理系统:用于管理学生信息的软件,包括学生的基本信息、成绩等。

接下来,我们详细讲解如何使用JDBC和GUI实现简单的学生管理系统。

  1. 设计数据表和实体类

首先,我们需要设计数据库中的表结构,在这个例子中,我们设计了一个名为“student”的表,其中包含id、name、gender、age、department、grade等字段。接下来,我们需要在Java中设计一个实体类,表示学生的信息。这个类需要包括与数据库表中字段对应的属性、构造方法、getter和setter等方法。下面是一个简化版的实体类示例:

public class Student {
    private int id;
    private String name;
    private String gender;
    private int age;
    private String department;
    private int grade;

    // 构造方法
    public Student(int id, String name, String gender, int age, String department, int grade) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.department = department;
        this.grade = grade;
    }

    // getter和setter方法
    // ...
}
  1. 连接数据库

在Java程序中连接数据库,需要使用JDBC技术。我们需要加载JDBC驱动,然后通过DriverManager类获取连接对象。下面是一个连接MySQL数据库的示例:

Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password");

其中,“com.mysql.cj.jdbc.Driver”表示MySQL数据库的驱动程序,localhost表示数据库所在的服务器,3306表示端口号,student表示数据库名,root表示用户名,password表示密码。在连接数据库之前,请先在MySQL数据库中创建名为“student”的数据库。

  1. 实现增删改查操作

我们使用Java中的PreparedStatement类来实现增删改查操作。下面是一个插入学生信息的示例:

String sql = "insert into student (name, gender, age, department, grade) values (?, ?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getGender());
pstmt.setInt(3, student.getAge());
pstmt.setString(4, student.getDepartment());
pstmt.setInt(5, student.getGrade());
pstmt.executeUpdate();

其中,sql表示SQL语句,问号代表占位符,pstmt是PreparedStatement对象,使用setXXX方法设置占位符的值,使用executeUpdate方法执行SQL语句。

  1. 设计GUI界面

我们使用Java中的Swing库来设计GUI界面。下面是一个简单的添加学生信息的示例:

JFrame frame = new JFrame("学生管理系统");
frame.setSize(500, 300);

JLabel nameLabel = new JLabel("姓名:");
JTextField nameField = new JTextField();
nameField.setColumns(20);

JLabel genderLabel = new JLabel("性别:");
JComboBox genderComboBox = new JComboBox(new String[]{"男", "女"});

JLabel ageLabel = new JLabel("年龄:");
JSpinner ageSpinner = new JSpinner(new SpinnerNumberModel(18, 1, 100, 1));

JLabel departmentLabel = new JLabel("专业:");
JTextField departmentField = new JTextField();
departmentField.setColumns(20);

JLabel gradeLabel = new JLabel("成绩:");
JSpinner gradeSpinner = new JSpinner(new SpinnerNumberModel(60, 0, 100, 1));

JButton addButton = new JButton("添加");
addButton.addActionListener(e -> {
    Student student = new Student(0, nameField.getText(), genderComboBox.getSelectedItem().toString(),
                                    (Integer)ageSpinner.getValue(), departmentField.getText(), (Integer)gradeSpinner.getValue());
    // 调用插入学生信息的方法
});

其中,JFrame是窗口,JLabel是标签,JTextField和JSpinner是文本框和数值选择器,JComboBox是下拉框,JButton是按钮。请根据自己的需求修改界面设计。

  1. 编写完整代码

最后,我们需要将前面的代码结合起来,编写完整的Java程序。下面是一个简单的完整代码示例:

import javax.swing.*;
import java.awt.*;
import java.sql.*;

public class StudentManager {

    private Connection conn;

    public static void main(String[] args) {
        StudentManager manager = new StudentManager();
        manager.initGUI();
        manager.initDB();
    }

    public void initGUI() {
        JFrame frame = new JFrame("学生管理系统");
        frame.setSize(500, 300);

        JLabel nameLabel = new JLabel("姓名:");
        JTextField nameField = new JTextField();
        nameField.setColumns(20);

        JLabel genderLabel = new JLabel("性别:");
        JComboBox genderComboBox = new JComboBox(new String[]{"男", "女"});

        JLabel ageLabel = new JLabel("年龄:");
        JSpinner ageSpinner = new JSpinner(new SpinnerNumberModel(18, 1, 100, 1));

        JLabel departmentLabel = new JLabel("专业:");
        JTextField departmentField = new JTextField();
        departmentField.setColumns(20);

        JLabel gradeLabel = new JLabel("成绩:");
        JSpinner gradeSpinner = new JSpinner(new SpinnerNumberModel(60, 0, 100, 1));

        JButton addButton = new JButton("添加");
        addButton.addActionListener(e -> {
            Student student = new Student(0, nameField.getText(), genderComboBox.getSelectedItem().toString(),
                                            (Integer)ageSpinner.getValue(), departmentField.getText(), (Integer)gradeSpinner.getValue());
            try {
                addStudent(student);
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        });

        JPanel panel = new JPanel(new GridLayout(5, 2));
        panel.add(nameLabel);
        panel.add(nameField);
        panel.add(genderLabel);
        panel.add(genderComboBox);
        panel.add(ageLabel);
        panel.add(ageSpinner);
        panel.add(departmentLabel);
        panel.add(departmentField);
        panel.add(gradeLabel);
        panel.add(gradeSpinner);

        frame.add(panel, BorderLayout.CENTER);
        frame.add(addButton, BorderLayout.SOUTH);
        frame.setVisible(true);
    }

    public void initDB() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "password");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void addStudent(Student student) throws SQLException {
        String sql = "insert into student (name, gender, age, department, grade) values (?, ?, ?, ?, ?)";
        PreparedStatement pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, student.getName());
        pstmt.setString(2, student.getGender());
        pstmt.setInt(3, student.getAge());
        pstmt.setString(4, student.getDepartment());
        pstmt.setInt(5, student.getGrade());
        pstmt.executeUpdate();
    }
}

class Student {
    private int id;
    private String name;
    private String gender;
    private int age;
    private String department;
    private int grade;

    public Student(int id, String name, String gender, int age, String department, int grade) {
        this.id = id;
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.department = department;
        this.grade = grade;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }

    public int getGrade() {
        return grade;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }
}

请注意,本代码示例仅仅是一个非常简单的学生管理系统,只是演示如何使用JDBC和GUI技术结合,实现数据的增删改查操作。具体的设计和实现,需要根据实际需求进行自定义。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JDBC+GUI实现简单学生管理系统 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • ES6 Symbol数据类型的应用实例分析

    ES6 Symbol 数据类型的应用实例分析 Symbol 是 ES6 新增的数据类型,用于表示独一无二的值。它经常被用于表示对象的私有属性,也可以用于定义对象的方法。本文将详细讲解 Symbol 数据类型的应用实例。 1. 定义对象的私有属性 JavaScript 中没有原生的私有属性的概念,但是使用 Symbol 数据类型可以模拟出私有属性的效果。下面是…

    Java 2023年5月26日
    00
  • Spring连接Mysql数据库的实现步骤

    下面是关于Spring连接MySQL数据库的实现步骤的攻略: 简介 Spring 是一个轻量级的开源框架,提供了依赖注入(DI)和面向切面编程(AOP)等特征,可用于创建企业级应用程序。而 MySQL 是一个开源的关系型数据库,被广泛应用于各种类型的应用程序。在Spring应用程序中,可以使用Spring JDBC来连接MySQL数据库。 连接MySQL数据…

    Java 2023年5月20日
    00
  • 什么是脚本的简单解释

    脚本,是指由计算机程序员编写的一种轻量级的程序,通常以文本的形式存在,能被计算机识别并执行。脚本可以用于各种应用场景,比如自动化处理数据、网站交互动画和游戏等等。 脚本按照不同的编程语言分类,比较有代表性的包括JavaScript、Python、PHP、Ruby等等。 对于开发者来说,脚本的优势主要在于快速开发和代码的易维护性。由于脚本缺乏编译过程,代码开发…

    Java 2023年6月15日
    00
  • 基于springboot2集成jpa,创建dao的案例

    基于Spring Boot 2集成JPA(Java Persistence API),创建DAO (Data Access Object) 的攻略还是比较简单的。下面我将为你提供一个详细的过程。 1. 创建Spring Boot项目和配置文件 首先,我们需要创建一个Spring Boot的项目,如果你已经创建了一个项目,那就不需要再做这一步了。我们使用Mav…

    Java 2023年5月19日
    00
  • Springboot-Management的项目实践

    关于“Springboot-Management的项目实践”的完整攻略,我为您提供以下内容: 简介 Springboot-Management是一个基于SpringBoot框架的开源项目,它可以帮助开发者快速构建管理系统,提供了众多易于使用的管理工具,支持多租户、权限控制等功能。 准备工作 在开始使用Springboot-Management之前,需要系统具…

    Java 2023年5月15日
    00
  • Spring boot基于JPA访问MySQL数据库的实现

    让我来给你讲解一下如何使用Spring Boot基于JPA访问MySQL数据库的实现以及示例。整个攻略将分为以下几个步骤: 创建一个Spring Boot项目 添加依赖 配置application.properties 建立实体类 建立Repository 建立Service 建立Controller 运行项目 下面是各个步骤的详细讲解: 1. 创建一个Sp…

    Java 2023年5月20日
    00
  • Java中SimpleDateFormat的使用方法

    下面是关于Java中SimpleDateFormat的使用方法的完整攻略,包含以下几个部分: SimpleDataFormat类的介绍 SimpleDataFormat类的常用构造方法 SimpleDataFormat类的常用方法 示例介绍 注意事项 1. SimpleDataFormat类的介绍 SimpleDataFormat是Java中处理日期和时间格…

    Java 2023年5月20日
    00
  • Java Web开发之图形验证码的生成与使用方法

    Java Web开发之图形验证码的生成与使用方法 在Java Web开发中,图形验证码是常用的用户验证工具。通过在表单中添加验证码,可以有效防止自动化机器人等非人类恶意行为的攻击。本文将详细介绍Java Web开发中,如何生成和使用图形验证码。 生成图形验证码 生成图形验证码需要使用Java提供的Graphics2D类。其中,需要注意以下几个关键点: 随机生…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部