# 39-学生选课管理系统 - 功能说明

# 项目概述

学生选课管理系统是一个面向高校教学管理的综合性Web应用系统。采用前后端分离架构,基于Vue 3和Spring Boot技术栈,为学校教务管理、教师授课管理、学生选课学习提供全流程服务。系统支持学院专业管理、课程开课管理、学生在线选课、教师成绩录入、选课时间控制等完整的教学管理功能。


# 项目概览

# ✨ 创新点

# 1. 完善的教学管理体系

  • 三级角色设计:管理员、教师、学生三级角色,各司其职。
  • 学院专业体系:学院→专业→班级三级组织架构,层次分明。
  • 课程分类管理:必修课、选修课分类管理,支持课程适用专业设置。
  • 教室资源管理:教室编号、教学楼、楼层、容纳人数、类型统一管理。

# 2. 智能化选课机制

  • 选课时间控制:支持按学期设置选课开始/结束时间,自动控制选课状态。
  • 选课限制规则:可设置每个学生最多可选课程数、最多可选学分数,防止超选。
  • 选课人数上限:每个开课班级可设置选课人数上限,当前已选人数实时更新。
  • 智能冲突检测:系统检测上课时间冲突,避免学生选课时间重叠。

# 3. 灵活的开课安排

  • 开课计划管理:课程+教师+教室+学期+上课时间+人数上限组合形成开课计划。
  • 开课状态流转:未开放选课→选课中→选课结束→已开课→已结课,状态清晰。
  • 多学期管理:支持多个学期的开课计划并行管理,历史数据完整保留。
  • 教师课程关联:一个课程可由多个教师在不同学期、不同班级授课。

# 4. 完整的成绩管理

  • 成绩录入机制:教师录入平时成绩和期末成绩,系统自动计算总评成绩(平时30%+期末70%)。
  • 成绩状态管理:未录入→已录入→已提交,教师可修改未提交的成绩。
  • 成绩查询统计:教师查询本人任课的成绩,管理员查看全部成绩,学生查看个人成绩。
  • 成绩分析功能:支持成绩统计分析,及格率、平均分、成绩分布等数据可视化。

# 5. 系统日志与公告

  • 操作日志记录:记录用户ID、用户名、用户类型、操作类型、操作描述、IP地址、操作时间。
  • 公告管理:支持发布系统公告,可设置置顶、发布时间,统计浏览次数。
  • 公告分类展示:学生、教师都可以查看系统公告,获取选课通知、教务信息。

# ✨ 项目亮点

# 一、业务功能亮点

  1. 完整的选课流程闭环:从选课设置、开课计划、学生选课、退课管理到成绩录入,流程完整。
  2. 灵活的专业课程体系:课程可设置适用专业,NULL表示全专业可选,支持通识课和专业课区分。
  3. 智能的选课控制:选课时间段控制、选课数量限制、学分限制、人数上限控制,全方位保障选课公平。
  4. 多维度的成绩管理:平时成绩、期末成绩、总评成绩、及格状态,成绩数据完整准确。
  5. 实时的数据更新:选课时实时更新开课班级的当前已选人数,成绩录入实时计算总评成绩。

# 二、技术实现亮点

  1. 现代化前端技术栈:Vue 3.4.29 + Element Plus 2.8.4 + Vite 5.3.1,开发高效体验流畅。
  2. 稳定可靠的后端架构:Spring Boot 3.2.10 + MyBatis Plus 3.5.6,构建稳健后端服务。
  3. 完善的数据库设计:11张核心表,utf8mb4字符集,支持完整业务流程。
  4. 安全性设计:JWT Token认证、密码加密存储、接口权限控制。
  5. 富文本编辑:支持公告内容、课程简介的富文本编辑与展示。

# 三、用户体验亮点

  1. 三端界面设计:
    • 学生端:水平导航,简洁直观,适合学生浏览选课。
    • 教师端:侧边导航,功能集中,高效管理课程成绩。
    • 管理后台:侧边导航,功能全面,系统管理便捷。
  2. 交互优化:
    • 实时消息提示。
    • 选课状态实时更新。
    • 成绩自动计算。
    • 公告置顶显示。
  3. 数据可视化:管理后台和教师端提供统计报表,数据可视化展示。
  4. 移动端适配:响应式设计,支持手机、平板等多端访问。

# 管理员

# 系统管理

管理员管理:管理全部管理员账号,支持新增、编辑、删除、启用/禁用操作。

学生管理:管理全部学生账号,包括学号、用户名、姓名、性别、专业、班级、年级、联系方式,支持新增、编辑、删除、启用/禁用。

教师管理:管理全部教师账号,包括工号、用户名、姓名、性别、职称、所属学院、联系方式、个人简介,支持新增、编辑、删除、启用/禁用。

# 组织架构管理

学院管理:管理全部学院信息,包括学院代码、学院名称、学院简介,支持新增、编辑、删除、启用/禁用。

专业管理:管理全部专业信息,包括专业代码、专业名称、所属学院、学制、专业简介,支持新增、编辑、删除、启用/禁用。

教室管理:管理全部教室信息,包括教室编号、教学楼名称、楼层、容纳人数、教室类型(普通教室/多媒体教室/实验室),支持新增、编辑、删除、状态管理(可用/维修中)。

# 课程管理

课程管理:管理全部课程信息,包括课程代码、课程名称、课程类型(必修/选修)、学分、学时、适用专业、课程简介,支持新增、编辑、删除、启用/禁用。

开课管理:管理开课计划(课程安排表),设置课程、任课教师、上课教室、学期、星期几、第几节课、选课人数上限,管理开课状态(未开放选课/选课中/选课结束/已开课/已结课)。

选课设置:管理选课时间和规则,设置学期、选课开始时间、选课结束时间、每个学生最多可选课程数、最多可选学分数,管理选课状态(未开始/进行中/已结束)。

# 选课与成绩管理

选课记录管理:查看全部学生的选课记录,包括学生信息、开课信息、课程信息、教师信息、学期、选课状态(已选课/已退课)、选课时间。

成绩管理:查看全部学生成绩,包括学生信息、课程信息、教师信息、学期、平时成绩、期末成绩、总评成绩、及格状态,支持成绩查询和统计分析。

# 内容管理

公告管理:发布系统公告通知,设置公告标题、内容、是否置顶,查看浏览次数。

系统日志:查看系统操作日志,包括操作用户、用户类型、操作类型、操作描述、IP地址、操作时间,用于系统审计和安全监控。


# 教师

# 个人中心

个人信息:修改个人信息(工号、姓名、性别、职称、学院、手机号、邮箱、头像、个人简介)。

修改密码:修改登录密码。

# 课程管理

我的课程:查看本人任课的所有开课计划,包括课程信息、上课教室、学期、上课时间、选课人数上限、当前已选人数、开课状态。

# 成绩管理

成绩录入:为本人任课的学生录入成绩,填写平时成绩和期末成绩,系统自动计算总评成绩(平时30%+期末70%),自动判断及格状态(60分及格)。

成绩查询:查询本人任课的学生成绩,支持按学期、课程、学生筛选,导出成绩单。

成绩统计:统计本人任课的成绩分布,查看及格率、平均分、最高分、最低分,成绩分段统计,数据可视化展示。

# 公告浏览

公告查看:查看系统发布的公告通知,了解教务信息和选课通知。


# 学生

# 选课管理

在线选课:

  • 浏览可选课程列表,查看课程信息(课程代码、课程名称、课程类型、学分、学时、任课教师、上课教室、上课时间、选课人数上限、当前已选人数)
  • 筛选课程(按课程类型、专业、学期)
  • 选课操作(点击"选课"按钮,系统检测选课时间、选课数量、学分限制、人数上限、时间冲突)
  • 选课成功后,开课班级的当前已选人数+1,生成选课记录

我的课程:

  • 查看已选课程列表,包括课程信息、教师信息、上课时间、上课地点
  • 退课操作(仅选课期间可退课,退课后开课班级的当前已选人数-1,选课记录状态变为"已退课")
  • 查看已选课程的总学分、总课程数

# 成绩查询

我的成绩:

  • 查看个人全部成绩,包括课程名称、任课教师、学期、平时成绩、期末成绩、总评成绩、及格状态
  • 按学期筛选成绩
  • 查看学期平均分、总学分、及格课程数、不及格课程数
  • 成绩分析图表展示

# 公告浏览

公告查看:查看系统发布的公告通知,获取选课通知、成绩查询通知、教务信息。

# 个人中心

个人信息:修改个人信息(学号、姓名、性别、专业、班级、年级、手机号、邮箱、头像)。

修改密码:修改登录密码。


# 功能权限对照表

功能模块 管理员 教师 学生
首页 ✓ ✓ ✓
管理员管理 ✓ - -
学生管理 ✓ - -
教师管理 ✓ - -
学院管理 ✓ - -
专业管理 ✓ - -
教室管理 ✓ - -
课程管理 ✓ - -
开课管理 ✓ - -
选课设置 ✓ - -
选课记录管理(全部) ✓ - -
成绩管理(全部) ✓ - -
我的课程(教师) - ✓ -
成绩录入 - ✓ -
成绩查询(本人任课) - ✓ -
成绩统计(本人任课) - ✓ -
在线选课 - - ✓
我的课程(学生) - - ✓
我的成绩 - - ✓
公告管理 ✓ - -
公告查看 - ✓ ✓
系统日志 ✓ - -

# 选课状态说明

# 选课设置状态

  • 未开始:选课时间未到,学生无法选课
  • 进行中:当前时间在选课开始时间和结束时间之间,学生可以选课和退课
  • 已结束:选课时间已过,学生无法选课和退课

# 开课状态

  • 未开放选课:开课计划已创建,但未开放选课
  • 选课中:已开放选课,学生可以选课
  • 选课结束:选课时间已结束,不再接受选课
  • 已开课:课程已开始上课
  • 已结课:课程已结束

# 选课记录状态

  • 已选课:学生已成功选课
  • 已退课:学生已退课

# 成绩状态

  • 未录入:教师尚未录入成绩
  • 已录入:教师已录入成绩,但未提交
  • 已提交:教师已提交成绩,学生可查看

# 默认账号

# 管理员

用户名: admin
密码: 123456
昵称: 超级管理员
1
2
3

# 测试教师

用户名: teacher1
密码: 123456
工号: T001
姓名: 张教授
职称: 教授
学院: 计算机科学与技术学院
1
2
3
4
5
6
用户名: teacher2
密码: 123456
工号: T002
姓名: 李副教授
职称: 副教授
学院: 计算机科学与技术学院
1
2
3
4
5
6
用户名: teacher3
密码: 123456
工号: T003
姓名: 王讲师
职称: 讲师
学院: 计算机科学与技术学院
1
2
3
4
5
6

# 测试学生

用户名: student1
密码: 123456
学号: 2024001
姓名: 张三
专业: 计算机科学与技术
班级: 计科2024-1班
年级: 2024级
1
2
3
4
5
6
7
用户名: student2
密码: 123456
学号: 2024002
姓名: 李四
专业: 计算机科学与技术
班级: 计科2024-1班
年级: 2024级
1
2
3
4
5
6
7
用户名: student3
密码: 123456
学号: 2024003
姓名: 王五
专业: 软件工程
班级: 软工2024-1班
年级: 2024级
1
2
3
4
5
6
7

# 核心业务流程

# 管理员创建开课计划流程

1. 管理员登录系统
2. 进入"开课管理"页面
3. 点击"新增开课计划"
4. 选择课程(从课程库中选择)
5. 选择任课教师(从教师列表中选择)
6. 选择上课教室(从教室列表中选择)
7. 填写学期(如:2024-2025学年第一学期)
8. 填写上课时间(星期几、第几节课)
9. 设置选课人数上限(如:50人)
10. 设置开课状态(默认:未开放选课)
11. 提交保存,生成开课计划
12. 到选课时间时,将开课状态改为"选课中"
1
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. 到选课结束时间,状态自动变为"已结束",学生无法选课
1
2
3
4
5
6
7
8
9

# 学生选课流程

1. 学生登录系统
2. 进入"在线选课"页面
3. 浏览可选课程列表,查看课程详情(课程名称、课程类型、学分、学时、任课教师、上课时间、上课地点、选课人数上限、当前已选人数)
4. 选择要选的课程,点击"选课"按钮
5. 系统检测:
   - 选课时间是否在允许范围内
   - 学生已选课程数是否超过上限
   - 学生已选学分数是否超过上限
   - 开课班级已选人数是否达到上限
   - 上课时间是否与已选课程冲突
6. 检测通过后,选课成功:
   - 生成选课记录(状态:已选课)
   - 开课班级的当前已选人数+1
   - 学生的已选课程列表更新
7. 检测不通过,提示失败原因(如:选课时间未开始、人数已满、时间冲突等)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 学生退课流程

1. 学生进入"我的课程"页面
2. 查看已选课程列表
3. 选择要退的课程,点击"退课"按钮
4. 系统检测:
   - 当前是否在选课时间段内(仅选课期间可退课)
5. 检测通过后,退课成功:
   - 选课记录状态变为"已退课"
   - 开课班级的当前已选人数-1
   - 学生的已选课程列表更新
6. 检测不通过,提示失败原因(如:选课时间已结束,无法退课)
1
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. 成绩状态变为"已提交",学生可查看成绩
1
2
3
4
5
6
7
8
9
10
11
12
13

# 学生查询成绩流程

1. 学生登录系统
2. 进入"我的成绩"页面
3. 查看个人全部成绩(仅显示状态为"已提交"的成绩)
4. 按学期筛选成绩
5. 查看成绩详情:
   - 课程名称
   - 任课教师
   - 学期
   - 平时成绩
   - 期末成绩
   - 总评成绩
   - 及格状态
6. 查看学期统计数据:
   - 学期平均分
   - 学期总学分
   - 及格课程数
   - 不及格课程数
1
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端都能流畅使用
  • 数据可视化:成绩统计、选课统计以图表形式展示,直观清晰

Java导航网   |