# 39-学生选课管理系统 - 功能说明
# 项目概述
学生选课管理系统是一个面向高校教学管理的综合性Web应用系统。采用前后端分离架构,基于Vue 3和Spring Boot技术栈,为学校教务管理、教师授课管理、学生选课学习提供全流程服务。系统支持学院专业管理、课程开课管理、学生在线选课、教师成绩录入、选课时间控制等完整的教学管理功能。
# 项目概览
# ✨ 创新点
# 1. 完善的教学管理体系
- 三级角色设计:管理员、教师、学生三级角色,各司其职。
- 学院专业体系:学院→专业→班级三级组织架构,层次分明。
- 课程分类管理:必修课、选修课分类管理,支持课程适用专业设置。
- 教室资源管理:教室编号、教学楼、楼层、容纳人数、类型统一管理。
# 2. 智能化选课机制
- 选课时间控制:支持按学期设置选课开始/结束时间,自动控制选课状态。
- 选课限制规则:可设置每个学生最多可选课程数、最多可选学分数,防止超选。
- 选课人数上限:每个开课班级可设置选课人数上限,当前已选人数实时更新。
- 智能冲突检测:系统检测上课时间冲突,避免学生选课时间重叠。
# 3. 灵活的开课安排
- 开课计划管理:课程+教师+教室+学期+上课时间+人数上限组合形成开课计划。
- 开课状态流转:未开放选课→选课中→选课结束→已开课→已结课,状态清晰。
- 多学期管理:支持多个学期的开课计划并行管理,历史数据完整保留。
- 教师课程关联:一个课程可由多个教师在不同学期、不同班级授课。
# 4. 完整的成绩管理
- 成绩录入机制:教师录入平时成绩和期末成绩,系统自动计算总评成绩(平时30%+期末70%)。
- 成绩状态管理:未录入→已录入→已提交,教师可修改未提交的成绩。
- 成绩查询统计:教师查询本人任课的成绩,管理员查看全部成绩,学生查看个人成绩。
- 成绩分析功能:支持成绩统计分析,及格率、平均分、成绩分布等数据可视化。
# 5. 系统日志与公告
- 操作日志记录:记录用户ID、用户名、用户类型、操作类型、操作描述、IP地址、操作时间。
- 公告管理:支持发布系统公告,可设置置顶、发布时间,统计浏览次数。
- 公告分类展示:学生、教师都可以查看系统公告,获取选课通知、教务信息。
# ✨ 项目亮点
# 一、业务功能亮点
- 完整的选课流程闭环:从选课设置、开课计划、学生选课、退课管理到成绩录入,流程完整。
- 灵活的专业课程体系:课程可设置适用专业,NULL表示全专业可选,支持通识课和专业课区分。
- 智能的选课控制:选课时间段控制、选课数量限制、学分限制、人数上限控制,全方位保障选课公平。
- 多维度的成绩管理:平时成绩、期末成绩、总评成绩、及格状态,成绩数据完整准确。
- 实时的数据更新:选课时实时更新开课班级的当前已选人数,成绩录入实时计算总评成绩。
# 二、技术实现亮点
- 现代化前端技术栈:Vue 3.4.29 + Element Plus 2.8.4 + Vite 5.3.1,开发高效体验流畅。
- 稳定可靠的后端架构:Spring Boot 3.2.10 + MyBatis Plus 3.5.6,构建稳健后端服务。
- 完善的数据库设计:11张核心表,utf8mb4字符集,支持完整业务流程。
- 安全性设计:JWT Token认证、密码加密存储、接口权限控制。
- 富文本编辑:支持公告内容、课程简介的富文本编辑与展示。
# 三、用户体验亮点
- 三端界面设计:
- 学生端:水平导航,简洁直观,适合学生浏览选课。
- 教师端:侧边导航,功能集中,高效管理课程成绩。
- 管理后台:侧边导航,功能全面,系统管理便捷。
- 交互优化:
- 实时消息提示。
- 选课状态实时更新。
- 成绩自动计算。
- 公告置顶显示。
- 数据可视化:管理后台和教师端提供统计报表,数据可视化展示。
- 移动端适配:响应式设计,支持手机、平板等多端访问。
# 管理员
# 系统管理
管理员管理:管理全部管理员账号,支持新增、编辑、删除、启用/禁用操作。
学生管理:管理全部学生账号,包括学号、用户名、姓名、性别、专业、班级、年级、联系方式,支持新增、编辑、删除、启用/禁用。
教师管理:管理全部教师账号,包括工号、用户名、姓名、性别、职称、所属学院、联系方式、个人简介,支持新增、编辑、删除、启用/禁用。
# 组织架构管理
学院管理:管理全部学院信息,包括学院代码、学院名称、学院简介,支持新增、编辑、删除、启用/禁用。
专业管理:管理全部专业信息,包括专业代码、专业名称、所属学院、学制、专业简介,支持新增、编辑、删除、启用/禁用。
教室管理:管理全部教室信息,包括教室编号、教学楼名称、楼层、容纳人数、教室类型(普通教室/多媒体教室/实验室),支持新增、编辑、删除、状态管理(可用/维修中)。
# 课程管理
课程管理:管理全部课程信息,包括课程代码、课程名称、课程类型(必修/选修)、学分、学时、适用专业、课程简介,支持新增、编辑、删除、启用/禁用。
开课管理:管理开课计划(课程安排表),设置课程、任课教师、上课教室、学期、星期几、第几节课、选课人数上限,管理开课状态(未开放选课/选课中/选课结束/已开课/已结课)。
选课设置:管理选课时间和规则,设置学期、选课开始时间、选课结束时间、每个学生最多可选课程数、最多可选学分数,管理选课状态(未开始/进行中/已结束)。
# 选课与成绩管理
选课记录管理:查看全部学生的选课记录,包括学生信息、开课信息、课程信息、教师信息、学期、选课状态(已选课/已退课)、选课时间。
成绩管理:查看全部学生成绩,包括学生信息、课程信息、教师信息、学期、平时成绩、期末成绩、总评成绩、及格状态,支持成绩查询和统计分析。
# 内容管理
公告管理:发布系统公告通知,设置公告标题、内容、是否置顶,查看浏览次数。
系统日志:查看系统操作日志,包括操作用户、用户类型、操作类型、操作描述、IP地址、操作时间,用于系统审计和安全监控。
# 教师
# 个人中心
个人信息:修改个人信息(工号、姓名、性别、职称、学院、手机号、邮箱、头像、个人简介)。
修改密码:修改登录密码。
# 课程管理
我的课程:查看本人任课的所有开课计划,包括课程信息、上课教室、学期、上课时间、选课人数上限、当前已选人数、开课状态。
# 成绩管理
成绩录入:为本人任课的学生录入成绩,填写平时成绩和期末成绩,系统自动计算总评成绩(平时30%+期末70%),自动判断及格状态(60分及格)。
成绩查询:查询本人任课的学生成绩,支持按学期、课程、学生筛选,导出成绩单。
成绩统计:统计本人任课的成绩分布,查看及格率、平均分、最高分、最低分,成绩分段统计,数据可视化展示。
# 公告浏览
公告查看:查看系统发布的公告通知,了解教务信息和选课通知。
# 学生
# 选课管理
在线选课:
- 浏览可选课程列表,查看课程信息(课程代码、课程名称、课程类型、学分、学时、任课教师、上课教室、上课时间、选课人数上限、当前已选人数)
- 筛选课程(按课程类型、专业、学期)
- 选课操作(点击"选课"按钮,系统检测选课时间、选课数量、学分限制、人数上限、时间冲突)
- 选课成功后,开课班级的当前已选人数+1,生成选课记录
我的课程:
- 查看已选课程列表,包括课程信息、教师信息、上课时间、上课地点
- 退课操作(仅选课期间可退课,退课后开课班级的当前已选人数-1,选课记录状态变为"已退课")
- 查看已选课程的总学分、总课程数
# 成绩查询
我的成绩:
- 查看个人全部成绩,包括课程名称、任课教师、学期、平时成绩、期末成绩、总评成绩、及格状态
- 按学期筛选成绩
- 查看学期平均分、总学分、及格课程数、不及格课程数
- 成绩分析图表展示
# 公告浏览
公告查看:查看系统发布的公告通知,获取选课通知、成绩查询通知、教务信息。
# 个人中心
个人信息:修改个人信息(学号、姓名、性别、专业、班级、年级、手机号、邮箱、头像)。
修改密码:修改登录密码。
# 功能权限对照表
| 功能模块 | 管理员 | 教师 | 学生 |
|---|---|---|---|
| 首页 | ✓ | ✓ | ✓ |
| 管理员管理 | ✓ | - | - |
| 学生管理 | ✓ | - | - |
| 教师管理 | ✓ | - | - |
| 学院管理 | ✓ | - | - |
| 专业管理 | ✓ | - | - |
| 教室管理 | ✓ | - | - |
| 课程管理 | ✓ | - | - |
| 开课管理 | ✓ | - | - |
| 选课设置 | ✓ | - | - |
| 选课记录管理(全部) | ✓ | - | - |
| 成绩管理(全部) | ✓ | - | - |
| 我的课程(教师) | - | ✓ | - |
| 成绩录入 | - | ✓ | - |
| 成绩查询(本人任课) | - | ✓ | - |
| 成绩统计(本人任课) | - | ✓ | - |
| 在线选课 | - | - | ✓ |
| 我的课程(学生) | - | - | ✓ |
| 我的成绩 | - | - | ✓ |
| 公告管理 | ✓ | - | - |
| 公告查看 | - | ✓ | ✓ |
| 系统日志 | ✓ | - | - |
# 选课状态说明
# 选课设置状态
- 未开始:选课时间未到,学生无法选课
- 进行中:当前时间在选课开始时间和结束时间之间,学生可以选课和退课
- 已结束:选课时间已过,学生无法选课和退课
# 开课状态
- 未开放选课:开课计划已创建,但未开放选课
- 选课中:已开放选课,学生可以选课
- 选课结束:选课时间已结束,不再接受选课
- 已开课:课程已开始上课
- 已结课:课程已结束
# 选课记录状态
- 已选课:学生已成功选课
- 已退课:学生已退课
# 成绩状态
- 未录入:教师尚未录入成绩
- 已录入:教师已录入成绩,但未提交
- 已提交:教师已提交成绩,学生可查看
# 默认账号
# 管理员
用户名: admin
密码: 123456
昵称: 超级管理员
2
3
# 测试教师
用户名: teacher1
密码: 123456
工号: T001
姓名: 张教授
职称: 教授
学院: 计算机科学与技术学院
2
3
4
5
6
用户名: teacher2
密码: 123456
工号: T002
姓名: 李副教授
职称: 副教授
学院: 计算机科学与技术学院
2
3
4
5
6
用户名: teacher3
密码: 123456
工号: T003
姓名: 王讲师
职称: 讲师
学院: 计算机科学与技术学院
2
3
4
5
6
# 测试学生
用户名: student1
密码: 123456
学号: 2024001
姓名: 张三
专业: 计算机科学与技术
班级: 计科2024-1班
年级: 2024级
2
3
4
5
6
7
用户名: student2
密码: 123456
学号: 2024002
姓名: 李四
专业: 计算机科学与技术
班级: 计科2024-1班
年级: 2024级
2
3
4
5
6
7
用户名: student3
密码: 123456
学号: 2024003
姓名: 王五
专业: 软件工程
班级: 软工2024-1班
年级: 2024级
2
3
4
5
6
7
# 核心业务流程
# 管理员创建开课计划流程
1. 管理员登录系统
2. 进入"开课管理"页面
3. 点击"新增开课计划"
4. 选择课程(从课程库中选择)
5. 选择任课教师(从教师列表中选择)
6. 选择上课教室(从教室列表中选择)
7. 填写学期(如:2024-2025学年第一学期)
8. 填写上课时间(星期几、第几节课)
9. 设置选课人数上限(如:50人)
10. 设置开课状态(默认:未开放选课)
11. 提交保存,生成开课计划
12. 到选课时间时,将开课状态改为"选课中"
2
3
4
5
6
7
8
9
10
11
12
# 管理员设置选课规则流程
1. 管理员进入"选课设置"页面
2. 填写学期(如:2024-2025学年第二学期)
3. 设置选课开始时间(如:2025年2月20日 08:00:00)
4. 设置选课结束时间(如:2025年2月26日 18:00:00)
5. 设置每个学生最多可选课程数(如:10门)
6. 设置每个学生最多可选学分数(如:30学分)
7. 提交保存,系统根据当前时间自动计算选课状态(未开始/进行中/已结束)
8. 到选课开始时间,状态自动变为"进行中",学生可以选课
9. 到选课结束时间,状态自动变为"已结束",学生无法选课
2
3
4
5
6
7
8
9
# 学生选课流程
1. 学生登录系统
2. 进入"在线选课"页面
3. 浏览可选课程列表,查看课程详情(课程名称、课程类型、学分、学时、任课教师、上课时间、上课地点、选课人数上限、当前已选人数)
4. 选择要选的课程,点击"选课"按钮
5. 系统检测:
- 选课时间是否在允许范围内
- 学生已选课程数是否超过上限
- 学生已选学分数是否超过上限
- 开课班级已选人数是否达到上限
- 上课时间是否与已选课程冲突
6. 检测通过后,选课成功:
- 生成选课记录(状态:已选课)
- 开课班级的当前已选人数+1
- 学生的已选课程列表更新
7. 检测不通过,提示失败原因(如:选课时间未开始、人数已满、时间冲突等)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 学生退课流程
1. 学生进入"我的课程"页面
2. 查看已选课程列表
3. 选择要退的课程,点击"退课"按钮
4. 系统检测:
- 当前是否在选课时间段内(仅选课期间可退课)
5. 检测通过后,退课成功:
- 选课记录状态变为"已退课"
- 开课班级的当前已选人数-1
- 学生的已选课程列表更新
6. 检测不通过,提示失败原因(如:选课时间已结束,无法退课)
2
3
4
5
6
7
8
9
10
# 教师录入成绩流程
1. 教师登录系统
2. 进入"成绩录入"页面
3. 选择要录入成绩的课程(本人任课的课程)
4. 选择学期
5. 查看该课程的选课学生列表
6. 逐个录入学生成绩:
- 填写平时成绩(0-100分)
- 填写期末成绩(0-100分)
- 系统自动计算总评成绩 = 平时成绩 × 30% + 期末成绩 × 70%
- 系统自动判断及格状态(总评成绩 >= 60分为及格)
7. 成绩状态变为"已录入"
8. 确认无误后,点击"提交成绩"
9. 成绩状态变为"已提交",学生可查看成绩
2
3
4
5
6
7
8
9
10
11
12
13
# 学生查询成绩流程
1. 学生登录系统
2. 进入"我的成绩"页面
3. 查看个人全部成绩(仅显示状态为"已提交"的成绩)
4. 按学期筛选成绩
5. 查看成绩详情:
- 课程名称
- 任课教师
- 学期
- 平时成绩
- 期末成绩
- 总评成绩
- 及格状态
6. 查看学期统计数据:
- 学期平均分
- 学期总学分
- 及格课程数
- 不及格课程数
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 技术说明
# 系统架构
- 前端:Vue 3.4.29 + Element Plus 2.8.4 + Vite 5.3.1
- 后端:Spring Boot 3.2.10 + MyBatis Plus 3.5.6
- 数据库:MySQL 5.7+
- 认证:JWT Token
# 访问地址
- 后端API:http://localhost:1000
- 前端页面:http://localhost:5173(开发环境)
# 数据库
- 数据库名:course_select
- 字符集:utf8mb4
- 总表数:11张表
# 核心表说明
- admin:管理员表,存储管理员账号信息
- student:学生表,存储学生基本信息、专业班级信息
- teacher:教师表,存储教师基本信息、职称、所属学院
- college:学院表,存储学院代码、名称、简介
- major:专业表,存储专业代码、名称、所属学院、学制
- classroom:教室表,存储教室编号、教学楼、楼层、容纳人数、教室类型
- course:课程表,存储课程代码、名称、类型、学分、学时、适用专业、简介
- course_schedule:开课表(课程安排表),存储开课计划,关联课程、教师、教室、学期、上课时间、人数上限
- course_selection:选课记录表,存储学生选课记录,关联学生、开课、课程、教师、学期
- score:成绩表,存储学生成绩,包括平时成绩、期末成绩、总评成绩、及格状态
- selection_setting:选课设置表,存储选课时间段和规则,包括开始时间、结束时间、可选课程数上限、可选学分数上限
- notice:公告表,存储系统公告通知,支持置顶、浏览次数统计
- system_log:系统日志表,记录用户操作日志,用于审计和安全监控
# 系统特色
# 选课管理特色
- 灵活的选课时间控制:可按学期设置选课开始和结束时间,系统自动控制选课状态
- 完善的选课限制规则:选课数量限制、学分限制、人数上限限制、时间冲突检测,全方位保障选课公平
- 实时的数据更新:选课时实时更新开课班级的当前已选人数,退课时实时减少人数
- 选课记录完整保留:选课和退课记录都保留,状态清晰,便于追溯
# 开课管理特色
- 灵活的开课安排:课程、教师、教室、学期、上课时间、人数上限灵活组合
- 多学期并行管理:支持多个学期的开课计划同时管理,历史数据完整保留
- 开课状态流转:未开放选课→选课中→选课结束→已开课→已结课,状态清晰
- 教室资源管理:教室编号、教学楼、楼层、容纳人数、教室类型统一管理,便于资源调度
# 成绩管理特色
- 自动计算总评成绩:录入平时成绩和期末成绩,系统自动按比例(平时30%+期末70%)计算总评成绩
- 自动判断及格状态:总评成绩 >= 60分自动判定为及格
- 成绩状态管理:未录入→已录入→已提交,教师可修改未提交的成绩
- 成绩统计分析:支持及格率、平均分、成绩分布等统计分析,数据可视化展示
# 组织架构特色
- 学院专业体系:学院→专业→班级三级组织架构,层次分明
- 专业课程关联:课程可设置适用专业,NULL表示全专业可选,支持通识课和专业课区分
- 职称管理:教师职称管理(教授/副教授/讲师/助教),便于师资统计
# 公告与日志特色
- 公告置顶功能:重要公告可设置置顶,优先展示
- 浏览次数统计:记录公告浏览次数,了解公告阅读情况
- 操作日志记录:记录用户操作,包括用户信息、操作类型、操作描述、IP地址、操作时间,用于系统审计和安全监控
# 项目优势
# 1. 解决教学管理痛点
- 选课管理规范化:通过系统化的选课时间控制、数量限制、人数上限管理,避免选课混乱
- 成绩管理自动化:自动计算总评成绩,自动判断及格状态,减轻教师工作负担
- 数据统计便捷化:系统自动统计选课人数、成绩分布、及格率等数据,为教学管理提供数据支持
- 资源调度可视化:教室资源、教师资源、课程资源统一管理,便于教务处调度
# 2. 业务流程完善
- 三级角色协同:管理员负责系统管理,教师负责成绩录入,学生负责选课学习,职责清晰
- 完整的选课流程:选课设置→开课计划→学生选课→教师授课→成绩录入→成绩查询,流程完整
- 灵活的退课机制:选课期间可退课,选课结束后不可退课,规则清晰
- 成绩录入规范:平时成绩和期末成绩分开录入,总评成绩自动计算,成绩提交后学生可查看
# 3. 技术实现先进
- 前后端分离:开发效率高,维护方便
- 响应式设计:适配手机、平板、电脑
- JWT认证:无状态认证,安全高效
- 数据库设计规范:11张表,关系清晰,数据完整
# 4. 用户体验优秀
- 操作简单:界面清晰,流程顺畅
- 实时反馈:选课、退课、成绩录入实时更新,消息及时提示
- 多端适配:手机端、PC端都能流畅使用
- 数据可视化:成绩统计、选课统计以图表形式展示,直观清晰