大家好我是Java1234_小锋老师分享一套锋哥原创的微信小程序校园宿舍管理系统(SpringBoot4后端Vue3管理端)。项目介绍随着高校在校生规模不断扩大与智能终端的普及传统的纸质化、线下化宿舍管理方式在效率、信息共享与数据沉淀等方面已难以满足现代化校园管理需求。本设计面向校园宿舍管理场景以 Spring Boot 为后端核心结合 Vue3 Element Plus 管理端与微信小程序学生端构建一套覆盖宿舍资源管理、入住调换、报修审批、卫生检查、公告通知、访客登记和请假晚归等业务的一体化解决方案。在技术实现上后端采用 Spring Boot 4 MyBatis 的轻量级组合数据库选用 MySQL 8.x通过 JWT 拦截器实现「管理员/宿管员/学生」三角色的统一鉴权管理端基于 Vue3 Vite 搭建使用 ECharts 完成入住率、报修类型、卫生等级等多维度可视化分析学生端使用微信小程序原生开发提供登录、个人信息、公告播报、报修、请假晚归、调宿等高频自助服务。经过功能与性能测试系统在主要业务流程上响应平均时间小于 200 ms能够稳定支撑高校宿舍日常管理工作的数字化升级具有较高的实际应用价值与推广意义。源码下载链接https://pan.baidu.com/s/1VUeG7nocGX9ijauNL-4k9w?pwd1234提取码1234系统展示核心代码package com.java1234.controller; import com.java1234.common.PageResult; import com.java1234.common.R; import com.java1234.common.SecurityHelper; import com.java1234.entity.Dormitory; import com.java1234.service.DormitoryService; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * 宿舍管理。 */ RestController RequestMapping(/dormitory) public class DormitoryController { private final DormitoryService dormitoryService; public DormitoryController(DormitoryService dormitoryService) { this.dormitoryService dormitoryService; } GetMapping(/list/{buildingId}) public RListDormitory listByBuilding(PathVariable Long buildingId) { SecurityHelper.requireStaff(); return R.ok(dormitoryService.listByBuilding(buildingId)); } GetMapping(/page) public RPageResultDormitory page(RequestParam(required false) Long buildingId, RequestParam(required false) String keyword, RequestParam(required false) String status, RequestParam(defaultValue 1) long page, RequestParam(defaultValue 10) long size) { SecurityHelper.requireStaff(); return R.ok(dormitoryService.page(buildingId, keyword, status, page, size)); } PostMapping public RVoid save(RequestBody Dormitory row) { SecurityHelper.requireStaff(); dormitoryService.save(row); return R.ok(); } PutMapping public RVoid update(RequestBody Dormitory row) { SecurityHelper.requireStaff(); dormitoryService.update(row); return R.ok(); } DeleteMapping(/{id}) public RVoid delete(PathVariable Long id) { SecurityHelper.requireStaff(); dormitoryService.delete(id); return R.ok(); } }script setup import { reactive, ref } from vue import { useRouter } from vue-router import { ElMessage } from element-plus import { login } from /api/auth import { useUserStore } from /store/user const router useRouter() const store useUserStore() const form reactive({ username: java1234, password: 123456, }) const loading ref(false) /** 提交登录表单 */ const onSubmit async () { loading.value true try { const data await login(form) store.setLogin(data) ElMessage.success(登录成功) router.push(/dashboard) } finally { loading.value false } } /script template div classlogin-wrap div classleft div classbadgeJava1234微信小程序校园宿舍管理系统/div h1智慧宿管 · 一站式管理平台/h1 p楼栋宿舍、入住分配、报修卫生、访客请假……统一可视化调度。/p div classillus/div /div div classright div classglass card h2欢迎登录/h2 el-form :modelform label-positiontop keyup.enteronSubmit el-form-item label用户名 el-input v-modelform.username placeholder请输入用户名 clearable / /el-form-item el-form-item label密码 el-input v-modelform.password typepassword placeholder请输入密码 show-password / /el-form-item el-button typeprimary classbtn :loadingloading round clickonSubmit登 录/el-button /el-form /div /div /div /div /template style scoped langscss .login-wrap { min-height: 100vh; display: grid; grid-template-columns: 1.1fr 0.9fr; } .left { padding: 64px; background: radial-gradient(1200px 600px at 20% 10%, #7aafff 0%, #4f8df9 35%, #2849c5 100%); color: #fff; display: flex; flex-direction: column; gap: 18px; } .badge { align-self: flex-start; padding: 8px 14px; border-radius: 999px; background: rgba(255, 255, 255, 0.18); backdrop-filter: blur(8px); font-size: 13px; } h1 { margin: 0; font-size: 38px; letter-spacing: 1px; } p { opacity: 0.92; line-height: 1.8; max-width: 520px; } .illus { margin-top: auto; font-size: 96px; opacity: 0.35; } .right { display: flex; align-items: center; justify-content: center; padding: 40px; } .glass { width: min(440px, 100%); padding: 34px 28px; border-radius: 18px; background: rgba(255, 255, 255, 0.82); backdrop-filter: blur(10px); box-shadow: 0 18px 60px rgba(40, 73, 197, 0.18); } h2 { margin: 0 0 18px; } .btn { width: 100%; margin-top: 8px; } .hint { margin-top: 14px; color: #667; font-size: 12px; line-height: 1.6; } media (max-width: 980px) { .login-wrap { grid-template-columns: 1fr; } .left { min-height: 240px; } } /style