基于SSM的线上宿舍管理系统(人脸识别登录)
🍅 作者主页:Selina .a
🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。
主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。
🍅文末获取源码联系🍅
目录
课题的提出
随着高等教育事业与集体经济的蓬勃发展,各类学校、产业园区及大型企业的住宿规模持续扩张,宿舍资源的管理复杂度呈指数级上升。然而,当前大量宿舍管理仍停留在手工登记、Excel台账或功能单一的单机软件阶段,存在信息更新滞后、数据孤岛严重、报修流程冗长、费用核算易错等突出问题。宿管员与入住者之间缺乏高效的信息交互渠道,查寝记录无法实时同步,空余床位难以动态调配,甚至因数据分散导致安全责任追溯困难。这种“人治”为主、信息化程度滞后的管理模式,已难以适应智慧校园与数字化园区建设的现实需求。
本课题选择SSM(Spring + Spring MVC + MyBatis)框架作为宿舍管理系统的技术底座,旨在以轻量级企业级开发方案破解上述痛点。SSM组合在Java Web开发领域历经十余年考验,兼具稳定性与灵活性:Spring容器通过IoC(控制反转)管理入住登记、费用计算、维修派单等业务对象,大幅降低模块间的耦合度;Spring MVC作为控制层,能够清晰分离请求解析与视图响应,便于为移动端、PC端提供统一API接口;MyBatis则凭借其半自动化的持久层映射机制,既支持动态SQL以应对宿舍分配、水电费分摊等复杂统计查询,又保留了SQL调优的灵活性。这一架构能够以适中的开发成本构建出高内聚、低耦合的管理系统,且对服务器资源要求不高,尤其适合预算有限、技术团队规模不大的后勤管理部门。
从技术演进视角审视,宿舍管理场景虽不如电商平台那般高并发,却对权限分级、流程闭环、数据准确性有着严格要求。学生/员工、楼长、宿管员、财务、后勤主管等多类角色交织,查寝、报修、调宿、退费等多种业务流程叠加,恰好能够充分发挥SSM框架在事务控制、拦截器权限校验、声明式服务等方面的优势。此外,本项目并非简单复现传统管理软件,而是以SSM为核心探索宿舍场景下的“微服务预备”方案——通过合理的模块化分层,未来可平滑将报修引擎、支付模块等重业务拆分为独立服务,为智慧园区整体建设预留技术接口。因此,本课题既是对高校及企事业单位宿舍管理效率瓶颈的针对性回应,亦是对SSM框架在垂直领域深度整合的一次实践检验,具有明确的现实意义与可落地的应用价值。
功能角色描述
学生:注册登录(可人脸识别登录)、系统首页、宿舍活动、公告栏、留言板、个人中心(修改密码、宿舍报修、宿舍维修、活动报名、宿舍卫生、水电缴费、访客申报、违规登记、通知信息、我的收藏)。
宿管:登录(账号密码或者人脸识别)、个人中心、宿舍信息、宿舍报修、宿舍维修、宿舍卫生、水电缴费、访客申报、违规登记、通知信息、公告栏。
管理员:登录(账号密码或者人脸识别)、个人中心、宿管、宿舍信息、学生、报修类型、宿舍报修、宿舍维修、宿舍活动、活动报名、宿舍卫生、水电缴费、访客申报、违规分类、违规登记、通知信息、留言板、系统管理。
系统界面展示










关键代码
package com.controller;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
return R.error("用户名已存在。");
}
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
专栏推荐
Spring Boot+Vue+CSS+JavaScript+HTML等技术项目专栏推荐
推荐项目
基于Node.js+Vue+MySQL的小型企业工资管理系统
基于Spring Boot+Android+MySQL的记录生活管理系统
源码获取
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)