Java+MySQL实现学生信息管理系统源码

yizhihongxing

Java+MySQL实现学生信息管理系统

本文将介绍如何使用Java和MySQL数据库实现一个简单的学生信息管理系统,并提供完整的源码和演示。

准备工作

为了使用Java和MySQL实现学生信息管理系统,需要先进行以下准备工作:

  1. 安装Java开发环境(JDK)
  2. 安装MySQL数据库
  3. 安装Java连接MySQL的驱动程序(JDBC驱动)

在这里以Windows系统为例,介绍如何安装和配置Java和MySQL开发环境。

安装Java开发环境(JDK)

可以从Oracle官网下载JDK安装程序,按照提示安装即可。

安装MySQL数据库

可以从MySQL官网下载MySQL Community Server安装程序,按照提示安装即可。

安装Java连接MySQL的驱动程序(JDBC驱动)

可以从MySQL官网下载JDBC驱动程序,下载后将其添加到Java的classpath中即可。

设计数据库

学生信息管理系统需要保存学生的基本信息,比如姓名、学号、性别、班级、成绩等。为了方便管理,我们可以设计一个Students表,如下所示:

CREATE TABLE Students (
   id INT NOT NULL AUTO_INCREMENT,
   name VARCHAR(50) NOT NULL,
   id_number VARCHAR(50) NOT NULL,
   gender VARCHAR(50) NOT NULL,
   class VARCHAR(50) NOT NULL,
   score INT NOT NULL,
   PRIMARY KEY (id)
);

编写Java代码

连接数据库

首先需要创建一个连接数据库的工具类,代码如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnection {

    public static final String url = "jdbc:mysql://localhost:3306/students";
    public static final String user = "root";
    public static final String password = "123456";

    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

连接数据库时需要提供数据库的URL、用户名和密码,这些信息可以在上一步中完成MySQL的安装后得到。

插入学生信息

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertStudent {

    public void insertStudent(String name, String id_number, String gender, String className, int score) {
        Connection conn = DatabaseConnection.getConnection();
        PreparedStatement pstmt = null;

        if (conn == null) {
            return;
        }

        String sql = "INSERT INTO `students` (`name`, `id_number`, `gender`, `class`, `score`) VALUES (?, ?, ?, ?, ?)";

        try {
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);
            pstmt.setString(2, id_number);
            pstmt.setString(3, gender);
            pstmt.setString(4, className);
            pstmt.setInt(5, score);
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (pstmt != null) {
                    pstmt.close();
                }
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

以上代码演示了如何向数据库中插入学生信息,需要提供学生的姓名、学号、性别、班级和成绩等信息。

查询学生信息

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class QueryStudent {

    public void queryAllStudent() {
        Connection conn = DatabaseConnection.getConnection();
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        if (conn == null) {
            return;
        }

        String sql = "SELECT `name`, `id_number`, `gender`, `class`, `score` FROM `students`";

        try {
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();

            System.out.printf("%-15s %-20s %-10s %-20s %-10s\n", "Name", "ID Number", "Gender", "Class", "Score");
            System.out.println("-------------------------------------------------------");

            while (rs.next()) {
                String name = rs.getString("name");
                String id_number = rs.getString("id_number");
                String gender = rs.getString("gender");
                String className = rs.getString("class");
                int score = rs.getInt("score");

                System.out.printf("%-15s %-20s %-10s %-20s %-10s\n", name, id_number, gender, className, score);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (pstmt != null) {
                    pstmt.close();
                }
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

以上代码演示了如何从数据库中查询所有学生的信息,并将结果输出到控制台上。

运行程序

在完成以上步骤后,可以编译和运行Java代码,添加数据和查询数据。

示例1:添加一个学生信息

public class App {
    public static void main(String[] args) {
        InsertStudent insert = new InsertStudent();
        insert.insertStudent("张三", "20180101", "男", "计科1801", 80);
    }
}

以上代码表示将一个名为“张三”、学号为“20180101”、性别为“男”、班级为“计科1801”、成绩为80分的学生信息添加到数据库中。

示例2:查询所有学生信息

public class App {
    public static void main(String[] args) {
        QueryStudent query = new QueryStudent();
        query.queryAllStudent();
    }
}

以上代码表示从数据库中查询所有学生的信息,并输出到控制台。

完整源码

完整的Java代码如下所示:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class DatabaseConnection {

    public static final String url = "jdbc:mysql://localhost:3306/students";
    public static final String user = "root";
    public static final String password = "123456";

    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertStudent {

    public void insertStudent(String name, String id_number, String gender, String className, int score) {
        Connection conn = DatabaseConnection.getConnection();
        PreparedStatement pstmt = null;

        if (conn == null) {
            return;
        }

        String sql = "INSERT INTO `students` (`name`, `id_number`, `gender`, `class`, `score`) VALUES (?, ?, ?, ?, ?)";

        try {
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, name);
            pstmt.setString(2, id_number);
            pstmt.setString(3, gender);
            pstmt.setString(4, className);
            pstmt.setInt(5, score);
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (pstmt != null) {
                    pstmt.close();
                }
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class QueryStudent {

    public void queryAllStudent() {
        Connection conn = DatabaseConnection.getConnection();
        PreparedStatement pstmt = null;
        ResultSet rs = null;

        if (conn == null) {
            return;
        }

        String sql = "SELECT `name`, `id_number`, `gender`, `class`, `score` FROM `students`";

        try {
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();

            System.out.printf("%-15s %-20s %-10s %-20s %-10s\n", "Name", "ID Number", "Gender", "Class", "Score");
            System.out.println("-------------------------------------------------------");

            while (rs.next()) {
                String name = rs.getString("name");
                String id_number = rs.getString("id_number");
                String gender = rs.getString("gender");
                String className = rs.getString("class");
                int score = rs.getInt("score");

                System.out.printf("%-15s %-20s %-10s %-20s %-10s\n", name, id_number, gender, className, score);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (rs != null) {
                    rs.close();
                }
                if (pstmt != null) {
                    pstmt.close();
                }
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

public class App {
    public static void main(String[] args) {
        InsertStudent insert = new InsertStudent();
        insert.insertStudent("张三", "20180101", "男", "计科1801", 80);

        QueryStudent query = new QueryStudent();
        query.queryAllStudent();
    }
}

结论

通过以上实例演示,读者应该已经掌握如何使用Java和MySQL实现一个学生信息管理系统的基础操作,包括连接数据库、添加数据、查询数据等。

同时,本文提供了完整的Java源码,读者可以基于此进行二次开发和扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java+MySQL实现学生信息管理系统源码 - Python技术站

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

相关文章

  • 如何在SpringBoot+Freemarker中获取项目根目录

    在Spring Boot应用程序中,我们经常需要获取项目根目录的路径。在使用Freemarker模板引擎时,我们可以使用Freemarker的内置变量来获取项目根目录的路径。本文将详细介绍如何在Spring Boot+Freemarker中获取项目根目录的完整攻略,并提供两个示例说明。 1. 获取项目根目录的路径 在Spring Boot应用程序中,我们可以…

    Java 2023年5月18日
    00
  • Spring boot外部配置(配置中心化)详解

    Spring Boot 外部配置(配置中心化)详解 什么是 Spring Boot 外部配置? Spring Boot 提供了一种在不同环境下轻松配置应用程序的方法。我们可以将配置信息从代码中分离出来,采用外部化配置。该方法所需的参数可以存储在不同的位置中,如属性文件、YAML 文件、环境变量、数据库或远程配置服务器等,从而达到配置中心化的目的。这样做,可以…

    Java 2023年5月15日
    00
  • 通过button将form表单的数据提交到action层的实例

    以下是通过button将form表单的数据提交到action层的攻略: 1. 编写HTML代码 首先,我们需要编写一个HTML表单,包含要提交的数据和一个提交按钮。例如: <form action="/submit" method="POST"> <label for="name"…

    Java 2023年6月15日
    00
  • java文件操作输入输出结构详解

    Java文件操作输入输出结构详解 Java文件操作输入输出,是指Java程序在操作文件时进行数据的输入和输出处理。Java提供了多种方式来实现文件的输入输出,其中最常用的方式是使用Java I/O类库实现文件的读写操作。 文件的输入输出的基本概念 文件路径 在Java中,文件路径指的是文件的存储路径或者文件的访问路径。Java I/O库支持绝对路径和相对路径…

    Java 2023年5月20日
    00
  • SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理方式

    下面是SpringBoot切面拦截@PathVariable参数及抛出异常的全局处理方式的攻略,本文将分为以下几个部分: 切面介绍 @PathVariable参数拦截处理 异常处理 在开始之前,建议读者具备基本的SpringBoot和AOP的知识。 1. 切面介绍 在Spring中,切面是一个独立的模块,通常被用来处理横切关注点的逻辑。它可以在程序运行期间动…

    Java 2023年5月23日
    00
  • Spring Boot中@Import三种使用方式实例详解

    关于“Spring Boot中@Import三种使用方式实例详解”,我将分为以下三个部分进行阐述。 1. @Import的三种使用方式 @Import在Spring Boot中有三种不同的使用方式,分别是: 直接导入类:使用@Import导入所需的Java类。 导入Java配置文件:通过@Import导入Java配置文件,使其的Bean能够在应用程序中可用。…

    Java 2023年5月19日
    00
  • Java8新特性之深入解析日期和时间_动力节点Java学院整理

    Java8新特性之深入解析日期和时间_动力节点Java学院整理 为什么需要新的日期和时间API Java早期的日期和时间API出现了很多问题,如: API不一致:Java提供了大量日期和时间API,但它们之间的API不一致,这使得编写日期和时间代码非常困难。 可变性:Java早期的日期和时间API中的大多数类都是可变的,这意味着我们可以随时更改日期和时间,这…

    Java 2023年6月1日
    00
  • Java面试岗常见问题之ArrayList和LinkedList的区别

    下面是如何回答“Java面试岗常见问题之ArrayList和LinkedList的区别”的完整攻略。 问题背景 Java面试中经常会出现有关集合类的问题,尤其是ArrayList和LinkedList。这两个集合类是Java中常见的列表实现,虽然他们都实现了List接口,但是在使用中有很多区别。下面就是有关ArrayList和LinkedList的区别问题的…

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