🍅 作者主页: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的小型企业工资管理系统

基于SSM+Android+MySQL的校园考研论坛 

基于Spring Boot+Android+MySQL的记录生活管理系统 

基于微信小程序的农业电商服务管理系统 

基于微信小程序的智慧物流小程序的设计与实现 


源码获取

 大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐