Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简易抢课系统 (Course Snatching System)

一个基于 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+

后端配置

  1. 克隆项目
git clone https://gitee.com/silver-kite/course-snatching-system.git
  1. 配置数据库 编辑 src/main/resources/application.yml 配置 MySQL 和 Redis 连接信息。

  2. 启动后端服务

cd course-snatching-system
mvn spring-boot:run

前端配置

  1. 安装依赖
cd resources
npm install
  1. 启动开发服务器
npm run dev
  1. 构建生产版本
npm run build

API 接口概览

公共接口

  • POST /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 - 获取所有课程

系统架构

选课流程

  1. 学生请求可选课程列表
  2. 系统从缓存获取数据,缓存未命中时使用分布式锁查询数据库
  3. 学生选择课程提交选课请求
  4. 后端验证课程容量和选课时间
  5. 使用 Redis 分布式锁保证并发安全
  6. 选课成功更新数据库和缓存

缓存策略

  • 登录 token 存储于 Redis
  • 可选课程列表缓存
  • 使用分布式锁防止缓存击穿

贡献指南

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/xxx)
  3. 提交更改 (git commit -m 'Add xxx')
  4. 推送分支 (git push origin feature/xxx)
  5. 提交 Pull Request

许可证

本项目仅供学习交流使用。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages