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日

相关文章

  • 基于Java Tomcat和激活MyEclips的深入理解

    基于Java Tomcat和激活MyEclipse的深入理解攻略 1. 安装Java Tomcat Java Tomcat是一款开源的Web服务器,支持Servlet和JavaServer Pages(JSP)技术。安装Java Tomcat十分简单,我们只需要到官网下载页面,下载我们需要的版本,然后解压即可。 2. 激活MyEclipse MyEclips…

    Java 2023年6月2日
    00
  • Java 超详细讲解ThreadLocal类的使用

    Java 超详细讲解ThreadLocal类的使用 什么是ThreadLocal? ThreadLocal是Java的一个线程封闭工具类,它允许当前线程存储和获取某个值,并且这个值对其他线程是不可见的。 通常情况下,我们需要共享数据之间遵循建议: 不可变的元素在任何情况下都是线程安全的。 可变的元素在并发情况下,应该遵循不同的访问方式,例如同步访问。 不可变…

    Java 2023年5月19日
    00
  • Java–SSH,SSM和Spring Boot框架区别及优缺点说明

    Java中的SSH、SSM和Spring Boot框架都是常用的Web开发框架,它们各自有着不同的优缺点和适用场景。以下是Java中SSH、SSM和Spring Boot框架的区别及优缺点说明的完整攻略: SSH框架 SSH框架是指Struts2 + Spring + Hibernate框架的组合。它是Java Web开发中最常用的框架之一,具有以下优点: …

    Java 2023年5月15日
    00
  • 90分钟实现一门编程语言(极简解释器教程)

    让我们开始讲解“90分钟实现一门编程语言(极简解释器教程)”的完整攻略。 1. 环境准备 实现一门编程语言需要你有一定的编程经验,这里我们使用Python语言进行实现。请确保你已经安装好了Python。 2. 词法分析器 我们首先需要一个词法分析器,用于将源代码转换成令牌流。我们使用正则表达式匹配来实现对单词的识别。 import re #定义关键字、运算符…

    Java 2023年5月19日
    00
  • Sprint Boot @PostMapping使用方法详解

    @PostMapping是Spring Boot中的一个注解,它用于将HTTP POST请求映射到控制器方法上。在使用Spring Boot开发Web应用程序时,@PostMapping是非常重要的。本文将详细介绍@PostMapping的作用和使用方法,并提供两个示例说明。 @PostMapping的作用 @PostMapping的作用是将HTTP POS…

    Java 2023年5月5日
    00
  • Java agent 使用实例详解

    Java agent 使用实例详解 Java agent 是 Java 虚拟机提供的一种高级功能,是实现 JVM 监控和动态修改字节码的重要手段。在本文中,我们将详细讲解 Java agent 的使用方法,帮助读者能够更好的理解和应用该技术。 什么是 Java agent Java agent 实际上就是一个 Java 程序,在 JVM 启动时通过启动参数指…

    Java 2023年5月26日
    00
  • Java中Lambda表达式使用详细解读

    Java中Lambda表达式使用详细解读 Lambda 表达式是 Java 8 中新增的重要特性,是一种类似于匿名内部类的语法结构,可用于简化某些代码的写法。本文将详细讲解Lambda表达式的使用方法。 Lambda表达式的语法 基本语法: (parameters) -> expression 或者 (parameters) -> { state…

    Java 2023年5月27日
    00
  • springboot使用spring-data-jpa操作MySQL数据库

    下面是使用Spring Boot和Spring Data JPA操作MySQL数据库的完整攻略: 第一步:创建Spring Boot项目 我们可以使用Spring Initializr创建一个新的Spring Boot项目。在创建项目时,勾选“Spring Web”和“Spring Data JPA”两个选项,这样Spring Boot就会自动添加相关依赖。…

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