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

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日

相关文章

  • Java通过JNI 调用动态链接库DLL操作

    关于Java通过JNI调用动态链接库DLL的攻略,我来给你详细讲解一下。 1. 环境准备 在开始使用JNI进行Java调用DLL之前,需要确保以下几点: 安装并配置好Java JDK (开发包)和运行时环境(JRE); 安装Visual Studio(Windows平台)或gcc等C/C++编译器(Linux/Unix/macOS平台); 按照平台(Wind…

    Java 2023年5月26日
    00
  • Spring整合JPA与Hibernate流程详解

    关于Spring整合JPA与Hibernate的流程,我可以给你一个完整的攻略。首先,需要了解一些基础知识: JPA JPA(Java Persistence API)是一种规范,用于在Java应用程序中管理关系数据库的数据。 Hibernate Hibernate是一个开源的ORM(对象关系映射)框架,他实现了JPA规范。 Spring Spring是一个…

    Java 2023年5月19日
    00
  • Java中数组在内存中存放原理的讲解

    下面是详细讲解“Java中数组在内存中存放原理的讲解”的完整攻略。 什么是数组 数组是一组同类型数据的集合,每个数据都可以通过一个索引来访问; 数组中同一类型的数据,所占用的内存大小相同; 数组存储在堆(heap)或栈(stack)中。 数组的内存分配 因为Java语言可以使用new运算符动态地创建数组,所以数组一般存储在堆(heap)中; 数组在内存中的存…

    Java 2023年5月26日
    00
  • java.exe和javaw.exe的区别及使用方法

    Java.exe和Javaw.exe是Java程序的可执行文件,它们的区别在于展示用户界面时的方式。 Java.exe是Java虚拟机的客户端模式,它会在调用Java程序时打开一个控制台窗口,这个窗口可以输出程序的输出和错误信息。使用Java.exe运行程序需要在命令行中输入以下命令: java <your_program>.jar Javaw.…

    Java 2023年5月19日
    00
  • java实现简单学生成绩管理系统

    下面是“Java实现简单学生成绩管理系统”的完整攻略: 1. 系统简介 本学生成绩管理系统是用Java语言编写的一个简单的命令行应用程序,用于管理学生的考试成绩。系统可以实现以下功能: 添加学生信息 添加学生成绩 查询学生成绩 修改学生成绩 删除学生成绩 统计学生成绩 2. 思路分析 在实现该系统之前,需要对系统的流程进行分析和设计。系统主要分为两类数据,学…

    Java 2023年5月19日
    00
  • Java反射之类的实例对象的三种表示方式总结

    接下来我将为你详细讲解“Java反射之类的实例对象的三种表示方式总结”的完整攻略。 什么是Java反射? Java反射是指在运行时动态地获取类的信息,并可以通过获取的信息来操作类或对象的属性、方法和构造函数等。Java反射常常被用于泛型操作、动态代理、框架开发、ORM框架等场景中。 类与对象的概念 在讲解Java反射的三种实例对象的表示方式之前,我们需要明确…

    Java 2023年5月26日
    00
  • Nginx中location匹配以及rewrite重写跳转详解

    以下是“Nginx中location匹配以及rewrite重写跳转详解”的攻略: 1. location匹配规则 location是nginx中用于匹配请求uri的指令,可以控制nginx如何处理请求。在nginx配置文件中,我们可以使用location来设置不同的匹配规则以及相应的处理方式。 下面是几种location匹配规则: 精确匹配:location…

    Java 2023年6月15日
    00
  • Spring系列中的beanFactory与ApplicationContext

    当提到Spring框架的IoC容器时,很容易想到beanFactory和ApplicationContext,这两者都属于Spring框架中IoC容器的范畴。本篇文章将详细讲解beanFactory和ApplicationContext的特点,优缺点以及使用场景。 BeanFactory BeanFactory是Spring框架最基本的IoC容器,提供了一种…

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