1. 项目概述与背景
在大学教务管理工作中,选课系统一直是连接学生、教师和教学资源的核心枢纽。传统的手工选课方式存在诸多痛点:选课高峰期教务办公室排长队、课程容量难以实时控制、课表冲突频发、数据统计滞后等。这些问题不仅影响教学秩序,也给师生带来诸多不便。
我去年为某高校开发的这套选课系统,采用SpringBoot+Vue+MySQL技术栈,实现了全流程数字化管理。系统上线后,该校的选课效率提升了80%,课程冲突率下降至0.3%以下。下面我将从架构设计、技术实现到部署运维,完整分享这个项目的开发经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 整体技术架构
系统采用前后端分离架构,这是现代Web应用的主流设计模式。前端使用Vue 3.x框架配合Element Plus组件库,后端基于SpringBoot 2.7构建RESTful API,数据库选用MySQL 8.0。这种架构的优势在于:
- 前后端可以并行开发,通过API契约先行降低协作成本
- 前端资源可以独立部署,减轻服务器压力
- 更易于实现多终端适配(PC/移动端)
注意:前后端分离架构需要特别注意跨域问题,我们在SpringBoot中配置了全局CORS过滤器,同时在前端axios实例中设置了withCredentials属性处理认证信息。
2.2 功能模块划分
系统按照角色权限划分为三大核心模块:
2.2.1 学生模块功能
- 课程查询与筛选(支持按时间、学分、教师等条件)
- 选课/退课操作(包含冲突检测机制)
- 个人课表可视化展示
- 成绩查询与统计
2.2.2 教师模块功能
- 课程信息管理(创建/修改/下架)
- 学生名单导出(支持Excel格式)
- 成绩录入与修改(带操作日志)
- 课堂考勤管理
2.2.3 管理员模块功能
- 用户账号管理(批量导入/权限分配)
- 学期课程排期设置
- 系统监控看板
- 数据备份与恢复
2.3 数据库设计要点
2.3.1 核心表关系
数据库设计遵循第三范式,主要表间关系如下:
mermaid复制erDiagram
USER ||--o{ COURSE : teaches
USER {
bigint user_id PK
varchar(50) username
varchar(255) password_hash
enum role_type
}
COURSE ||--o{ SELECTION : has
COURSE {
bigint course_id PK
varchar(100) course_name
int max_capacity
}
USER ||--o{ SELECTION : selects
SELECTION {
bigint selection_id PK
enum select_status
decimal(5,2) final_score
}
2.3.2 关键字段说明
- 密码存储:使用BCryptPasswordEncoder进行哈希处理,安全性远高于MD5/SHA-1
- *角色区分
