1. 项目概述
作为一名经历过多次Java Web项目开发的程序员,我深知一个完整的课表管理系统对于高校教务管理的重要性。这个基于SpringBoot+Vue的课表管理系统,是我在指导毕业设计过程中总结出的一个典型范例,它完美展现了现代Web应用开发的核心技术栈。
这个系统采用前后端分离架构,后端使用SpringBoot框架提供RESTful API,前端采用Vue.js构建用户界面,数据库使用MySQL。系统实现了用户权限管理、课表查询与编辑、课程冲突检测等核心功能,完全满足高校教务管理的基本需求。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 后端技术栈
后端采用SpringBoot 2.7.x作为基础框架,这是目前Java Web开发最主流的选择。SpringBoot的自动配置特性大大简化了项目搭建过程,内嵌Tomcat服务器也让部署变得异常简单。
数据持久层使用MyBatis-Plus 3.5.x,它是对MyBatis的增强工具,提供了强大的CRUD操作和条件构造器,可以显著减少样板代码。例如,对于课程信息的查询,我们只需要这样写:
java复制// 查询周一的所有课程
LambdaQueryWrapper<Course> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Course::getWeekDay, 1);
List<Course> mondayCourses = courseMapper.selectList(queryWrapper);
安全认证采用Spring Security + JWT的方案。用户登录后,系统会生成一个JWT token返回给前端,后续请求都需要在Header中携带这个token进行鉴权。
2.2 前端技术栈
前端使用Vue 3.x作为核心框架,配合Vue Router实现路由管理,Vuex进行状态管理。UI组件库选择了Element Plus,它提供了丰富的现成组件,可以快速构建美观的界面。
前端工程使用Vite作为构建工具,相比传统的Webpack,Vite的启动速度和热更新速度都有显著提升,特别适合开发阶段的快速迭代。
2.3 数据库设计
数据库采用MySQL 8.0,主要包含三张核心表:
- 用户表(user):存储系统用户信息
- 课程表(course):存储课程基本信息
- 课表记录表(schedule):关联用户和课程
表之间的关系如下:
- 一个用户可以有多条课表记录(一对多)
- 一门课程可以被多个用户选择(多对多,通过schedule表实现)
3. 核心功能实现
3.1 用户认证与权限管理
系统采用RBAC(基于角色的访问控制)模型,定义了三种角色:
- 学生:只能查看和选择课程
- 教师:可以管理自己教授的课程
- 管理员:拥有系统所有权限
用户登录接口实现示例:
java复制@PostMapping("/login")
public Result login(@RequestBody LoginDTO loginDTO) {
// 1. 验证用户名密码
User user = userService.getByUsername(loginDTO.getUsername());
if(user == null || !passwordEncoder.matches(loginDTO.getPassword(), user.getPasswordHash())) {
return R
