一个基于 Spring Boot + Vue.js 开发的高校课程选课系统,支持学生抢课、教师开课、管理员管理等核心功能。
本系统是一个前后端分离的课程管理平台,采用 Redis 缓存优化选课性能,支持高并发抢课场景。系统提供三种用户角色:
- 学生:查看可选课程、选修课程、退选课程、查看已选课程
- 教师:创建课程、管理授课、查看选课学生
- 管理员:学院管理、用户管理、课程总览、系统数据统计
- Java 17
- Spring Boot 2.x
- MyBatis Plus
- Redis (缓存与分布式锁)
- MySQL
- Aliyun OSS (文件存储)
- Vue 3
- Vite
- Pinia (状态管理)
- Vue Router
- Axios
- SCSS
├── src/main/java/com/coursese/
│ ├── Controller/ # 控制器层
│ │ ├── ComnonController.java # 公共接口
│ │ ├── StudentController.java # 学生接口
│ │ ├── TeacherController.java # 教师接口
│ │ └── RootController.java # 管理员接口
│ ├── Service/ # 业务逻辑层
│ │ ├── Impl/ # 服务实现
│ │ └── 接口定义
│ ├── Mapper/ # 数据访问层
│ ├── DTO/ # 数据传输对象
│ ├── entity/ # 实体类
│ ├── uitl/ # 工具类
│ └── config/ # 配置类
├── resources/ # 前端资源
│ ├── src/
│ │ ├── api/ # API 请求封装
│ │ ├── components/ # 公共组件
│ │ ├── views/ # 页面视图
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── router/ # 路由配置
│ │ └── styles/ # 样式文件
│ └── vite.config.js # Vite 配置
└── pom.xml # Maven 依赖配置
- 登录认证
- 查看可选课程列表
- 选修课程(抢课)
- 退选课程
- 查看已选课程
- 修改个人信息
- 查看个人信息
- 创建新课程
- 管理已开设课程
- 更新课程信息
- 取消课程
- 查看选课学生列表
- 学院管理(增删改查)
- 用户管理(教师/学生)
- 课程管理(全局)
- 强制删除课程
- 手动添加/移除学生
- 课程数据统计
- 仪表盘数据展示
- JDK 17+
- Maven 3.8+
- MySQL 8.0+
- Redis 6.0+
- Node.js 16+
- 克隆项目
git clone https://gitee.com/silver-kite/course-snatching-system.git-
配置数据库 编辑
src/main/resources/application.yml配置 MySQL 和 Redis 连接信息。 -
启动后端服务
cd course-snatching-system
mvn spring-boot:run- 安装依赖
cd resources
npm install- 启动开发服务器
npm run dev- 构建生产版本
npm run buildPOST /common/login- 用户登录POST /common/updateAvatar- 更新头像POST /common/update- 更新用户信息GET /common/colleges- 获取学院列表GET /common/dashboard/stats- 获取仪表盘统计
GET /student/info- 获取学生信息GET /student/availableCourses- 获取可选课程POST /student/selectCourse/{courseId}- 选修课程DELETE /student/dropCourse- 退选课程GET /student/selectedCourses- 获取已选课程
GET /teacher/info- 获取教师信息POST /teacher/createCourse- 创建课程GET /teacher/myCourses- 获取授课课程PUT /teacher/updateCourse- 更新课程DELETE /teacher/cancelCourse- 取消课程GET /teacher/courseStudents- 获取课程学生
GET /root/info- 获取管理员信息POST /root/addcollege- 添加学院PUT /root/updateCollege- 更新学院DELETE /root/deletecollege- 删除学院GET /root/getTeachers- 获取教师列表GET /root/getStudents- 获取学生列表GET /root/getAllCourses- 获取所有课程
- 学生请求可选课程列表
- 系统从缓存获取数据,缓存未命中时使用分布式锁查询数据库
- 学生选择课程提交选课请求
- 后端验证课程容量和选课时间
- 使用 Redis 分布式锁保证并发安全
- 选课成功更新数据库和缓存
- 登录 token 存储于 Redis
- 可选课程列表缓存
- 使用分布式锁防止缓存击穿
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/xxx) - 提交更改 (
git commit -m 'Add xxx') - 推送分支 (
git push origin feature/xxx) - 提交 Pull Request
本项目仅供学习交流使用。