用MySQL和Java做一个学生选课系统
时间: 2024-01-30 21:02:28 浏览: 145
好的,让我们一步一步来实现这个学生选课系统。以下是实现的步骤:
1. 创建MySQL数据库
首先,您需要创建一个MySQL数据库,用于存储学生,课程和选课记录等信息。您可以使用MySQL的命令行界面或者图形化工具创建数据库。例如,使用命令行界面可以使用以下命令:
```
CREATE DATABASE mydatabase;
```
2. 设计数据库表
在您创建好数据库之后,您需要设计一些表来存储学生,课程和选课记录等信息。以下是一个简单的表设计:
- 学生表(students):id,name,age,gender
- 课程表(courses):id,name,teacher,credit,time
- 选课记录表(selections):id,student_id,course_id
其中,student_id和course_id是外键,分别引用学生表和课程表的id字段。
您可以使用以下SQL语句创建这些表:
```sql
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
gender VARCHAR(10)
);
CREATE TABLE courses (
id INT PRIMARY KEY,
name VARCHAR(50),
teacher VARCHAR(50),
credit INT,
time VARCHAR(50)
);
CREATE TABLE selections (
id INT PRIMARY KEY,
student_id INT,
course_id INT,
FOREIGN KEY (student_id) REFERENCES students(id),
FOREIGN KEY (course_id) REFERENCES courses(id)
);
```
3. 连接MySQL数据库
接下来,您需要在Java程序中连接MySQL数据库。您可以使用JDBC API来连接MySQL数据库。
```java
import java.sql.*;
public class ConnectionTest {
public static void main(String[] args) {
Connection conn;
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
try {
// 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 获取数据库连接
conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功!");
// 关闭数据库连接
conn.close();
} catch (ClassNotFoundException e) {
System.out.println("数据库驱动加载失败!");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("数据库连接失败!");
e.printStackTrace();
}
}
}
```
在这个示例中,我们首先加载MySQL数据库驱动,然后使用 `DriverManager.getConnection()` 方法获取数据库连接。如果连接成功,我们会输出“数据库连接成功!”的信息。最后,我们关闭数据库连接。
4. 实现学生选课系统功能
接下来,我们可以开始实现学生选课系统的各种功能。以下是一些示例代码,用于实现学生选课系统的基本功能。
```java
import java.sql.*;
public class StudentSelection {
private Connection conn;
private Statement stmt;
public StudentSelection() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mydatabase";
String user = "root";
String password = "password";
conn = DriverManager.getConnection(url, user, password);
stmt = conn.createStatement();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addStudent(int id, String name, int age, String gender) {
try {
String sql = "INSERT INTO students (id, name, age, gender) VALUES (" + id + ", '" + name + "', " + age + ", '" + gender + "')";
stmt.executeUpdate(sql);
System.out.println("添加学生成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addCourse(int id, String name, String teacher, int credit, String time) {
try {
String sql = "INSERT INTO courses (id, name, teacher, credit, time) VALUES (" + id + ", '" + name + "', '" + teacher + "', " + credit + ", '" + time + "')";
stmt.executeUpdate(sql);
System.out.println("添加课程成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void selectCourse(int studentId, int courseId) {
try {
String sql = "INSERT INTO selections (student_id, course_id) VALUES (" + studentId + ", " + courseId + ")";
stmt.executeUpdate(sql);
System.out.println("选课成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void dropCourse(int studentId, int courseId) {
try {
String sql = "DELETE FROM selections WHERE student_id = " + studentId + " AND course_id = " + courseId;
stmt.executeUpdate(sql);
System.out.println("退课成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void showCourses(int studentId) {
try {
String sql = "SELECT courses.* FROM selections JOIN courses ON selections.course_id = courses.id WHERE selections.student_id = " + studentId;
ResultSet rs = stmt.executeQuery(sql);
System.out.println("该学生选修的课程有:");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String teacher = rs.getString("teacher");
int credit = rs.getInt("credit");
String time = rs.getString("time");
System.out.println(id + "\t" + name + "\t" + teacher + "\t" + credit + "\t" + time);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void close() {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
StudentSelection selection = new StudentSelection();
selection.addStudent(1, "张三", 20, "男");
selection.addStudent(2, "李四", 21, "女");
selection.addCourse(1, "Java程序设计", "王五", 3, "周一1-3节");
selection.addCourse(2, "数据库系统", "赵六", 4, "周三3-5节");
selection.selectCourse(1, 1);
selection.selectCourse(1, 2);
selection.selectCourse(2, 2);
selection.dropCourse(1, 2);
selection.showCourses(1);
selection.close();
}
}
```
在这个示例中,我们首先创建了一个 `StudentSelection` 类,用于实现学生选课系统的各种功能。在构造函数中,我们首先加载MySQL数据库驱动,然后创建一个连接和Statement对象。
接下来,我们实现了一些功能,包括添加学生、添加课程、选课、退课和查询选修课程等。例如,`addStudent()` 方法用于向学生表中添加一个学生,`addCourse()` 方法用于向课程表中添加一门课程,`selectCourse()` 方法用于学生选课,`dropCourse()` 方法用于学生退课,`showCourses()` 方法用于查询一个学生选修的所有课程。
最后,在 `main()` 方法中,我们创建一个 `StudentSelection` 对象,并调用它的一些方法,来演示学生选课系统的使用。
当然,这只是一个简单的示例,您可以根据实际需求,进行更加详细和复杂的实现。
阅读全文