Java实现学生选课系统攻略
系统功能要求
- 学生登录、退出登录
- 查看所有课程列表
- 查询某门课程的详细信息
- 选课或退课
- 查看已选课程列表
数据库设计
选课系统的数据模型可以包含以下几个实体:
- 学生
- 课程
- 选课记录
可以使用MySQL作为数据库实现。下面是数据库表的设计:
表名 | 字段名 | 类型 | 约束 |
---|---|---|---|
students | id | int | 主键,自增长 |
username | varchar(255) | 唯一,非空 | |
password | varchar(255) | 非空 | |
courses | id | int | 主键,自增长 |
name | varchar(255) | 唯一,非空 | |
teacher | varchar(255) | 非空 | |
credit | int | 非空 | |
selections | id | int | 主键,自增长 |
student_id | int | 外键,引用students表的id | |
course_id | int | 外键,引用courses表的id | |
selectionTime | datetime | 非空 |
系统实现
登录、退出登录
使用Session或JWT实现用户登录和鉴权,下面是一个简单的示例:
@Post("/login")
public Response login(@QueryValue String username, @QueryValue String password,
@SessionAttribute("user") User user) {
if ("admin".equals(username) && "123456".equals(password)) {
user.setUsername(username);
return Response.redirect("/courses");
} else {
return Response.redirect("/login?error=true");
}
}
@Post("/logout")
public Response logout(@SessionAttribute("user") User user) {
user.setUsername(null);
return Response.redirect("/login");
}
查看所有课程列表
可以使用Java的JDBC连接数据库,进行查询操作,下面是一个简单的示例:
public List<Course> findAll() throws SQLException {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
Statement stmt = conn.createStatement()) {
try (ResultSet rs = stmt.executeQuery("SELECT * FROM courses")) {
List<Course> courses = new ArrayList<>();
while (rs.next()) {
Course course = new Course();
course.setId(rs.getLong("id"));
course.setName(rs.getString("name"));
course.setTeacher(rs.getString("teacher"));
course.setCredit(rs.getInt("credit"));
courses.add(course);
}
return courses;
}
}
}
查询某门课程的详细信息
使用Java的JDBC连接数据库,进行查询操作,下面是一个简单的示例:
public Course findById(long id) throws SQLException {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM courses WHERE id = ?")) {
stmt.setLong(1, id);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
Course course = new Course();
course.setId(rs.getLong("id"));
course.setName(rs.getString("name"));
course.setTeacher(rs.getString("teacher"));
course.setCredit(rs.getInt("credit"));
return course;
}
return null;
}
}
}
选课或退课
使用Java的JDBC连接数据库,进行插入和删除操作,下面是一个简单的示例:
public boolean insert(Selection selection) throws SQLException {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
PreparedStatement stmt = conn.prepareStatement("INSERT INTO selections (student_id, course_id, selectionTime) VALUES (?, ?, ?)")) {
stmt.setLong(1, selection.getStudentId());
stmt.setLong(2, selection.getCourseId());
stmt.setTimestamp(3, Timestamp.valueOf(selection.getSelectionTime()));
return stmt.executeUpdate() == 1;
}
}
public boolean delete(Selection selection) throws SQLException {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
PreparedStatement stmt = conn.prepareStatement("DELETE FROM selections WHERE student_id = ? AND course_id = ?")) {
stmt.setLong(1, selection.getStudentId());
stmt.setLong(2, selection.getCourseId());
return stmt.executeUpdate() == 1;
}
}
查看已选课程列表
查询某个学生已选的所有课程,可以使用Java的JDBC连接数据库,下面是一个简单的示例:
public List<Course> findByStudentId(long studentId) throws SQLException {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "user", "password");
PreparedStatement stmt = conn.prepareStatement("SELECT c.* FROM selections s JOIN courses c ON s.course_id = c.id WHERE s.student_id = ?")) {
stmt.setLong(1, studentId);
try (ResultSet rs = stmt.executeQuery()) {
List<Course> courses = new ArrayList<>();
while (rs.next()) {
Course course = new Course();
course.setId(rs.getLong("id"));
course.setName(rs.getString("name"));
course.setTeacher(rs.getString("teacher"));
course.setCredit(rs.getInt("credit"));
courses.add(course);
}
return courses;
}
}
}
总结
Java实现学生选课系统可以使用Java的JDBC连接数据库进行增删改查操作,使用Session或JWT进行登录和鉴权。除了示例代码中的方法,还可以结合Spring Boot等框架实现更加高效、实用的选课系统,也可以使用ORM框架如Hibernate等简化数据库操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现学生选课系统 - Python技术站