💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目
@TOC
spring boot导师选择管理系统介绍
SpringBoot导师选择管理系统是一款面向高校毕业设计的轻量级B/S应用,后端采用Spring Boot+MyBatis构建RESTful接口,前端基于uni-app同时输出微信小程序与安卓原生应用,数据层统一使用MySQL,实现跨平台、零安装、即开即用。系统围绕“学生—导师”双向选择流程,将首页轮播图、新闻资讯作为信息入口,学生端可在线浏览导师详情、提交指导申请、发起变更或撤销请求,导师端可实时查看申请列表、一键确认或拒绝并给出反馈;后台管理员则通过学生管理、导师管理、导师分配管理三大模块完成账号审核、数据维护及自动或手动分配算法配置,确保名额均衡。学生交流管理提供类似群聊的轻互动空间,支持文字与表情,方便课题讨论;系统管理整合轮播图、新闻、反馈与意见收集,实现运营闭环;个人中心与修改密码保障账户安全,退出登录即时清除会话。整套系统以清晰的MVC分层、简洁的ER模型和标准化API文档,为计算机专业大四学生提供从选题、选导师到最终确认的完整线上解决方案。
spring boot导师选择管理系统演示视频
spring boot导师选择管理系统演示图片
spring boot导师选择管理系统代码展示
// 1. 学生提交指导申请业务处理
public void submitApplication(StudentAppDTO dto) {
Integer tutorId = dto.getTutorId();
Integer studentId = dto.getStudentId();
Tutor tutor = tutorMapper.selectById(tutorId);
if (tutor == null || "N".equals(tutor.getStatus())) {
throw new BizException("导师不存在或已停招");
}
Integer left = tutor.getQuotaLeft();
if (left <= 0) {
throw new BizException("导师名额已满");
}
LambdaQueryWrapper<Application> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Application::getStudentId, studentId)
.eq(Application::getStatus, "PENDING");
long pendingCount = applicationMapper.selectCount(wrapper);
if (pendingCount >= 5) {
throw new BizException("最多同时存在5条待处理申请");
}
Application app = new Application();
app.setStudentId(studentId);
app.setTutorId(tutorId);
app.setStatus("PENDING");
app.setApplyTime(LocalDateTime.now());
applicationMapper.insert(app);
tutor.setQuotaLeft(left - 1);
tutorMapper.updateById(tutor);
}
// 2. 导师批量处理申请
public void batchProcess(List<Integer> appIds, String action) {
if (appIds == null || appIds.isEmpty()) {
return;
}
List<Application> list = applicationMapper.selectBatchIds(appIds);
list.forEach(a -> {
if (!"PENDING".equals(a.getStatus())) {
throw new BizException("申请状态已变更");
}
});
list.forEach(a -> {
if ("ACCEPT".equals(action)) {
a.setStatus("ACCEPTED");
a.setReplyTime(LocalDateTime.now());
applicationMapper.updateById(a);
Student student = studentMapper.selectById(a.getStudentId());
student.setTutorId(a.getTutorId());
studentMapper.updateById(student);
} else if ("REJECT".equals(action)) {
a.setStatus("REJECTED");
a.setReplyTime(LocalDateTime.now());
applicationMapper.updateById(a);
Tutor tutor = tutorMapper.selectById(a.getTutorId());
tutor.setQuotaLeft(tutor.getQuotaLeft() + 1);
tutorMapper.updateById(tutor);
}
});
}
// 3. 管理员自动分配剩余学生
public void autoAssign() {
List<Tutor> tutors = tutorMapper.selectList(
new LambdaQueryWrapper<Tutor>()
.gt(Tutor::getQuotaLeft, 0)
.orderByDesc(Tutor::getQuotaLeft)
);
List<Student> unassigned = studentMapper.selectList(
new LambdaQueryWrapper<Student>()
.isNull(Student::getTutorId)
);
Map<Integer, Integer> tutorMap = tutors.stream()
.collect(Collectors.toMap(Tutor::getId, Tutor::getQuotaLeft));
for (Student s : unassigned) {
if (tutorMap.isEmpty()) break;
Integer tutorId = tutorMap.entrySet().stream()
.max(Map.Entry.comparingByValue())
.get().getKey();
s.setTutorId(tutorId);
studentMapper.updateById(s);
Integer newLeft = tutorMap.get(tutorId) - 1;
if (newLeft <= 0) {
tutorMap.remove(tutorId);
} else {
tutorMap.put(tutorId, newLeft);
}
}
}
spring boot导师选择管理系统文档展示
💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目