他靠SpringBoot导师选择管理系统一周交稿,背后到底用了哪一招?

41 阅读4分钟

💖💖作者:计算机毕业设计小途 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长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等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学习实战项目