1. 项目概述
这个导师选择管理系统是我去年为某高校计算机学院开发的一个实际项目,主要解决学生在导师双选过程中的信息不对称问题。系统基于SpringBoot+Vue前后端分离架构开发,包含了学生端、导师端和管理员端三个角色模块。最核心的功能是实现了双向选择机制,学生可以查看导师的研究方向和剩余名额,导师也能浏览学生的基本情况和研究兴趣,双方通过系统完成匹配。
提示:这类学术管理系统在开发时特别要注意数据权限的控制,比如学生只能看到自己所在学院的导师信息,导师也只能操作自己名下的学生数据。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术选型分析
后端采用SpringBoot 2.7 + MyBatis Plus组合,主要考虑了以下几个因素:
- 快速开发:SpringBoot的自动配置和起步依赖可以大幅减少XML配置
- 数据安全:整合Spring Security实现基于角色的访问控制
- 接口规范:使用Swagger生成API文档,前后端协作更高效
- 性能考虑:MyBatis Plus的AR模式简化了单表操作,复杂查询则用XML映射
前端选用Vue 3 + Element Plus,主要优势在于:
- 组件化开发方便复用UI元素
- 响应式设计适配不同终端
- Axios拦截器统一处理HTTP请求
- Vue Router实现前端路由权限控制
2.2 数据库设计关键点
系统核心表包括:
sql复制CREATE TABLE `t_teacher` (
`id` bigint NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL COMMENT '导师姓名',
`title` varchar(20) DEFAULT NULL COMMENT '职称',
`max_stu` int DEFAULT '5' COMMENT '最大指导学生数',
`current_stu` int DEFAULT '0' COMMENT '当前学生数',
`research_area` varchar(255) DEFAULT NULL COMMENT '研究方向',
`profile` text COMMENT '个人简介',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `selection_relation` (
`id` bigint NOT NULL AUTO_INCREMENT,
`stu_id` bigint NOT NULL,
`teacher_id` bigint NOT NULL,
`status` tinyint DEFAULT '0' COMMENT '0-待确认 1-已接受 2-已拒绝',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_stu_teacher` (`stu_id`,`teacher_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
特别注意的点:
- 导师表设置了最大指导学生数和当前学生数两个字段,便于名额控制
- 选择关系表建立了学生和导师的唯一索引,避免重复选择
- 状态字段使用枚举值表示不同的选择阶段
3. 核心功能实现
3.1 双向选择流程实现
选择流程的状态机设计:
java复制public enum SelectionStatus {
PENDING(0, "待确认"),
ACCEPTED(1, "已接受"),
REJECTED(2, "已拒绝");
// 省略构造方
