Java项目实例

简介

本文将介绍一个简单的Java项目实例,用于展示如何使用Java编写一个基本的学生信息管理系统。该系统可以实现学生信息的添加、查询、修改和删除功能,并使用MySQL数据库进行数据的持久化存储。通过本文的实例,读者可以了解到如何使用Java语言进行项目开发,并掌握基本的数据库操作技巧。

前提条件

在开始之前,请确保你已经具备以下条件:

  • Java开发环境已经安装并配置好。
  • Eclipse或者IntelliJ IDEA等Java开发工具已经安装并配置好。
  • MySQL数据库已经安装并配置好。

项目架构

首先,让我们来看一下该项目的架构图:

erDiagram
    STUDENT ||--o{ COURSE : has
    STUDENT {
        String studentId
        String name
        String email
    }
    COURSE {
        String courseId
        String name
        int credit
    }

如上图所示,该项目包含两个主要的实体类:StudentCourse。每个学生可以选择多门课程,因此学生实体类包含一个Course列表。

数据库表设计

根据上述架构图,我们可以设计出相应的数据库表结构。下面是studentcourse表的DDL(数据定义语言):

CREATE TABLE student (
    student_id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    email VARCHAR(100)
);

CREATE TABLE course (
    course_id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    credit INT
);

项目代码实现

1. 数据库连接工具类

首先,我们需要创建一个数据库连接工具类,用于连接MySQL数据库。下面是该类的代码示例:

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

public class DBUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/mydb";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "password";

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }
}

2. 学生实体类

接下来,我们需要创建一个Student类来表示学生实体。下面是该类的代码示例:

public class Student {
    private int studentId;
    private String name;
    private String email;
    private List<Course> courses;

    // 省略getter和setter方法
}

3. 课程实体类

类似地,我们需要创建一个Course类来表示课程实体。下面是该类的代码示例:

public class Course {
    private int courseId;
    private String name;
    private int credit;

    // 省略getter和setter方法
}

4. 学生管理类

然后,我们需要创建一个StudentManager类,用于实现学生信息的添加、查询、修改和删除功能。下面是该类的代码示例:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class StudentManager {
    public void addStudent(Student student) {
        try (Connection conn = DBUtil.getConnection();
             PreparedStatement stmt = conn.prepareStatement("INSERT INTO student (name, email) VALUES (?, ?)")) {
            stmt.setString(1, student.getName());
            stmt.setString(2, student.getEmail());
            stmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public Student getStudent(int studentId) {
        try (Connection conn = DBUtil.getConnection();
             PreparedStatement stmt = conn.prepareStatement("SELECT * FROM student WHERE student_id = ?")) {
            stmt.setInt(1, studentId);
            try (ResultSet rs = stmt.executeQuery()) {
                if (rs.next()) {
                    Student student = new Student();
                    student.setStudentId(rs.getInt("student_id"));
                    student.setName(rs.getString("name"));
                    student.setEmail(rs.getString("email"));
                    return student;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    // 省略updateStudent和deleteStudent方法
}

5. 主函数

最后,我们需要编写一个主函数来测试上述功能。下面是主函数的代码示例:

public class Main {
    public static void main(String[] args) {
        StudentManager studentManager = new StudentManager();

        // 添加学生
        Student