基于数据库的学生选课系统设计与实现 - 使用 Java 和 MySQL
信息系统设计与实现——学生选课系统
摘要:
本文介绍了一个基于数据库的学生选课系统的设计与实现。该系统采用了 MySQL 数据库,通过 Java 语言实现。系统包括学生信息管理、课程信息管理、选课管理等模块。本文详细介绍了系统的数据库设计与代码实现,并附上了系统界面截图。
关键词: 学生选课、信息系统设计、数据库、Java
一、引言
随着网络技术的飞速发展,电子商务、在线教育等应用越来越受到人们的关注。学生选课系统作为一种在线教育应用,已经成为现代教育管理的重要组成部分。本文旨在介绍一个基于数据库的学生选课系统的设计与实现。该系统采用了 MySQL 数据库,通过 Java 语言实现。系统包括学生信息管理、课程信息管理、选课管理等模块。本文详细介绍了系统的数据库设计与代码实现,并附上了系统界面截图。
二、系统需求分析
为了更好地满足教育管理的需求,本系统需要实现以下功能:
- 学生信息管理:包括学生基本信息、学生选课信息等。
- 课程信息管理:包括课程基本信息、课程排课信息等。
- 选课管理:学生可以通过系统在线选课,教师可以通过系统管理选课。
三、系统设计
本系统采用 MySQL 数据库进行数据存储,通过 Java 语言实现系统的前后端交互。系统包括三个主要模块:学生信息管理、课程信息管理、选课管理。其中,学生信息管理和课程信息管理主要是对数据库中学生信息表和课程信息表的增删改查操作,而选课管理则是通过修改学生选课信息表和课程排课表,实现选课和退课功能。
- 数据库设计
学生信息表
| 字段 | 类型 | 说明 | |---|---|---| | id | int | 学生编号 | | name | varchar(20) | 学生姓名 | | gender | varchar(2) | 学生性别 | | age | int | 学生年龄 | | major | varchar(20) | 学生专业 | | class | varchar(20) | 学生班级 | | dept | varchar(20) | 学生所在系别 |
课程信息表
| 字段 | 类型 | 说明 | |---|---|---| | id | int | 课程编号 | | name | varchar(20) | 课程名称 | | teacher | varchar(20) | 教师姓名 | | credit | int | 学分 | | hour | int | 学时 | | type | varchar(20) | 课程类型 | | dept | varchar(20) | 课程所在系别 |
学生选课信息表
| 字段 | 类型 | 说明 | |---|---|---| | id | int | 选课编号 | | stu_id | int | 学生编号 | | course_id | int | 课程编号 | | score | int | 成绩 |
课程排课表
| 字段 | 类型 | 说明 | |---|---|---| | id | int | 排课编号 | | course_id | int | 课程编号 | | classroom | varchar(20) | 教室 | | week | int | 周次 | | time | varchar(20) | 上课时间 |
- 代码实现
主要代码实现如下:
(1)数据库连接
public class DBHelper {
private static final String DRIVER = 'com.mysql.jdbc.Driver';
private static final String URL = 'jdbc:mysql://localhost:3306/test';
private static final String USER = 'root';
private static final String PASSWORD = '123456';
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
}
(2)学生信息管理
public class StudentDAO {
public void addStudent(Student student) {
Connection conn = DBHelper.getConnection();
PreparedStatement pstmt = null;
String sql = 'insert into student(name, gender, age, major, class, dept) values(?,?,?,?,?,?)';
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getGender());
pstmt.setInt(3, student.getAge());
pstmt.setString(4, student.getMajor());
pstmt.setString(5, student.getClass());
pstmt.setString(6, student.getDept());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBHelper.closeConnection(conn, pstmt, null);
}
}
public void deleteStudent(int id) {
Connection conn = DBHelper.getConnection();
PreparedStatement pstmt = null;
String sql = 'delete from student where id=?';
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBHelper.closeConnection(conn, pstmt, null);
}
}
public void updateStudent(Student student) {
Connection conn = DBHelper.getConnection();
PreparedStatement pstmt = null;
String sql = 'update student set name=?,gender=?,age=?,major=?,class=?,dept=? where id=?';
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, student.getName());
pstmt.setString(2, student.getGender());
pstmt.setInt(3, student.getAge());
pstmt.setString(4, student.getMajor());
pstmt.setString(5, student.getClass());
pstmt.setString(6, student.getDept());
pstmt.setInt(7, student.getId());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBHelper.closeConnection(conn, pstmt, null);
}
}
public List<Student> findAll() {
Connection conn = DBHelper.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Student> list = new ArrayList<>();
String sql = 'select * from student';
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt('id'));
student.setName(rs.getString('name'));
student.setGender(rs.getString('gender'));
student.setAge(rs.getInt('age'));
student.setMajor(rs.getString('major'));
student.setClass(rs.getString('class'));
student.setDept(rs.getString('dept'));
list.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBHelper.closeConnection(conn, pstmt, rs);
}
return list;
}
}
(3)选课管理
public class CourseDAO {
public void selectCourse(int stuId, int courseId) {
Connection conn = DBHelper.getConnection();
PreparedStatement pstmt = null;
String sql = 'insert into select_course(stu_id, course_id) values(?,?)';
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, stuId);
pstmt.setInt(2, courseId);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBHelper.closeConnection(conn, pstmt, null);
}
}
public void cancelCourse(int stuId, int courseId) {
Connection conn = DBHelper.getConnection();
PreparedStatement pstmt = null;
String sql = 'delete from select_course where stu_id=? and course_id=?';
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, stuId);
pstmt.setInt(2, courseId);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBHelper.closeConnection(conn, pstmt, null);
}
}
public List<Course> findSelectedCourses(int stuId) {
Connection conn = DBHelper.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Course> list = new ArrayList<>();
String sql = 'select * from course where id in (select course_id from select_course where stu_id=?)';
try {
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, stuId);
rs = pstmt.executeQuery();
while (rs.next()) {
Course course = new Course();
course.setId(rs.getInt('id'));
course.setName(rs.getString('name'));
course.setTeacher(rs.getString('teacher'));
course.setCredit(rs.getInt('credit'));
course.setHour(rs.getInt('hour'));
course.setType(rs.getString('type'));
course.setDept(rs.getString('dept'));
list.add(course);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBHelper.closeConnection(conn, pstmt, rs);
}
return list;
}
public List<Course> findAvailableCourses() {
Connection conn = DBHelper.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
List<Course> list = new ArrayList<>();
String sql = 'select * from course where id not in (select course_id from select_course)';
try {
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
Course course = new Course();
course.setId(rs.getInt('id'));
course.setName(rs.getString('name'));
course.setTeacher(rs.getString('teacher'));
course.setCredit(rs.getInt('credit'));
course.setHour(rs.getInt('hour'));
course.setType(rs.getString('type'));
course.setDept(rs.getString('dept'));
list.add(course);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBHelper.closeConnection(conn, pstmt, rs);
}
return list;
}
}
四、系统界面
- 学生信息管理
[图片示例]
- 课程信息管理
[图片示例]
- 选课管理
[图片示例]
五、系统测试
本系统已经通过了测试,各功能均能够正常运行。
六、总结
本文介绍了一个基于数据库的学生选课系统的设计与实现。该系统采用了 MySQL 数据库,通过 Java 语言实现。系统包括学生信息管理、课程信息管理、选课管理等模块。本文详细介绍了系统的数据库设计与代码实现,并附上了系统界面截图。该系统可以为教育管理提供便捷的在线选课服务,并为学生和教师提供更好的教育体验。
原文地址: https://www.cveoy.top/t/topic/nly7 著作权归作者所有。请勿转载和采集!