SpringBoot+layui宿舍管理系统(附源码)

🍅 作者主页: java源码客栈
🍅 简介:大厂java程序员,分享源码、学习资料、面试题库、技术干货【关注我,都给你】
🍅 文末获取源码联系方式 📝
一、功能简介
1、系统介绍

这是一个宿舍管理系统,包含三个角色,后勤、学生和宿管,各自的功能如下图

后勤:调换处理、宿舍分配、用户管理、房间管理

学生:通知管理、调换申请、维修申请、日程管理和记账管理

宿管:通知发布、账单管理和维修处理

2、功能框架

二、技术和环境
技术:

Spring Boot + SpringMVC + MyBatis + Layui

环境:

jdk版本:jdk1.8

mysql版本:mysql5.7

开发运行工具:Idea/Eclipse

maven版本:maven3.x

三、项目截图
  1. 后勤

用户管理

调换审核

楼宇管理

房间管理

宿舍分配

  1. 宿管

通知发布

水电账单

维修处理

  1. 学生

个人信息

通知公告

调换申请

维修申请

日程管理

记账管理

四、项目结构和数据库
    • 数据库

    • 项目结构

后端:

前端:

五、运行教程

1. 准备工作

1.1 开发环境

JDK 1.8

MySQL 8.0 (替代品:MySQL 5.7)

1.2 开发工具

WebStorm 2020.3(替代品:Visual Studio Code)

IntelliJ IDEA 2020.3(替代品:Eclipse【界面、图标太丑,不推荐】)

DataGrip 2020.3(替代品:Navicat)

Google Chrome 90.0

2. 打开项目文件并运行

本系统将前后端开发分离:分别在IntelliJ IDEA(后端)与WebStrom(前端)中进行开发。

因此,在此用IntelliJ IDEA 2020.3与WebStrom 2020.3进行演示。

2.1 IntelliJ IDEA

点击Open,选择源文件中的dormitory文件并打开。

进入到pom.xml中

点击此图标,下载项目所需依赖

⚠️注意:如果两三分钟内还没有下载完所有的依赖,那么可能是没有用国内的镜像;使用Windows的小伙伴可以先在IDEA的settings->Maven->User settings file找到settings.xml文件的地址,打开该文件后再参考上面那篇文章进行国内镜像设置

依赖全部下载完毕后,会出现绿色的√

打开application.xml,如果有需要,修改这三项内容。

选择DormitoryApplication,点击运行按钮

2.2 WebStorm(idea打开与WebStorm相同)

点击Open,选择源文件中的dormitoryfont文件并打开。

进入到login.html,点击浏览器图标。即可进入到系统中

因手工向数据库中输入的数据数量所限,故仅有三个人登录系统,各个模块才能达到正常显示效果。

登录账号列表

六、部分代码
/**
 * @author 
 * @date 2021年3月13日, 周六
 */
@RestController
@RequestMapping("/repair")
public class RepairController {

    @Autowired
    private RepairService repairService;
    @Autowired
    private UserService userService;
    @Autowired
    private BuildingService buildingService;
    @Autowired
    private RoomService roomService;

    @PostMapping("create")
    public Result create(@RequestBody Repair repair){
        int flag = repairService.create(repair);
        if(flag>0){
            return Result.ok();
        }else{
            return Result.fail();
        }
    }

    @GetMapping("delete")
    public Result delete(String ids){
        int flag = repairService.delete(ids);
        if(flag>0){
            return Result.ok();
        }else{
            return Result.fail();
        }
    }

    @PostMapping("update")
    public Result update(@RequestBody Repair repair){
        int flag = repairService.updateSelective(repair);
        if(flag>0){
            return Result.ok();
        }else{
            return Result.fail();
        }
    }

    @GetMapping("detail")
    public Repair detail(Integer id){
        return repairService.detail(id);
    }

    @PostMapping("query")
    public Map<String,Object> query(@RequestBody  Repair repair, HttpServletRequest request){
        User param = (User)request.getAttribute("user");
        int userId = param.getId();     // 1. 获取该宿管员Id

        System.out.println("宿管员ID:" + userId);
        int buildingId = buildingService.queryDomersBuilding(userId);
        repair.setBuildingId(buildingId);
        PageInfo<Repair> pageInfo = repairService.query(repair);
        pageInfo.getList().forEach(entity->{
            entity.setUser(userService.detail(entity.getStuId()));
            entity.setBuilding(buildingService.detail(entity.getBuildingId()));
            entity.setRoom(roomService.detail(entity.getRoomId()));
        });
        return Result.ok(pageInfo);
    }



    @PostMapping("query_my_room")
    // HttpServletRequest传入发起请求的用户信息
    public Map<String,Object> queryMyRoom(@RequestBody Repair repair, HttpServletRequest request){

        User param = (User)request.getAttribute("user");        // 获取前端发起请求的用户信息
        // TODO: 完成查询全寝室的报修记录(3月15日)

        // repair.setRoomId(param.getRoomId());            // 按学生所在房间的id去查整个寝室发起的报修
                                                            // ⚠️因返回结果显示未多个,暂时无法解决
        repair.setStuId(param.getId());                 // 按学生学号去查自己发起的报修
        PageInfo<Repair> pageInfo = repairService.query(repair);
        System.out.println(pageInfo);
        pageInfo.getList().forEach(entity->{
            // entity.setUser(userService.detailByRoom(entity.getRoomId()));
            entity.setUser(userService.detail(entity.getStuId()));
            entity.setBuilding(buildingService.detail(entity.getBuildingId()));
            entity.setRoom(roomService.detail(entity.getRoomId()));
        });
        return Result.ok(pageInfo);
    }



//    @PostMapping("query_my_room")
//    // HttpServletRequest传入发起请求的用户信息
//    public Map<String,Object> queryMyRoom(@RequestBody Repair repair, HttpServletRequest request){
//
//        User param = (User)request.getAttribute("user");        // 获取前端发起请求的用户信息
//        // TODO: 完成查询全寝室的报修记录(3月15日)
//
//
//
//        System.out.println("User Param:" + param);
//        System.out.println("User Id:" + param.getId());
//        repair.setStuId(param.getId());                 // 按学生学号去查自己发起的报修
//
//        User student = userService.detail(param.getId()); //获取当前学生信息
//        int roomId = student.getRoomId();       // 获取当前学生所在房间
//        repair.setRoomId(roomId);    // 按学生所在房间的id去查整个寝室发起的报修
//
//        PageInfo<Repair> pageInfo = repairService.query(repair);
//        System.out.println(pageInfo);
//        pageInfo.getList().forEach(entity->{
//            // entity.setUser(userService.detailByRoom(entity.getRoomId()));
//            entity.setUser(userService.detail(entity.getStuId()));
//            entity.setBuilding(buildingService.detail(entity.getBuildingId()));
//            entity.setRoom(roomService.detail(entity.getRoomId()));
//        });
//        return Result.ok(pageInfo);
//    }



    @PostMapping("stu_create")
    public Result stuCreate(@RequestBody Repair repair, HttpServletRequest request){
        User param = (User)request.getAttribute("user");                // 获取发起当前操作的用户信息

        User student = new User();
        student.setId(param.getId());                                      // 构造一个新的学生用户,并通过前端传入的用户信息为TA的ID赋值

        PageInfo<User> pageInfo = userService.query(student);              // 将查询到的该学生信息封装为pageInfo信息

        if (pageInfo.getList() != null && pageInfo.getList().size()>0){
            User user = pageInfo.getList().get(0);                         // 将pageInfo中数据赋值给user
            Room room = roomService.detail(user.getRoomId());              // 通过user房间ID获取room信息

            repair.setBuildingId(room.getBuildingId());                    // 将“通过room获取到的楼栋id”赋值给repair的楼栋id
            repair.setRoomId(user.getRoomId());                            // 将“通过user获取到的房间id”赋值给repair的房间id
            repair.setStuId(param.getId());                                // 将“从前端获取到的用户id”赋值给repair的学生id
            repair.setRepStatus(0);                                        // 将维修状态置0(等待维修)
            repair.setRepDate(new Date());                                 // 将维修申报时间设定为现在

            int flag = repairService.create(repair);                       // 将上述信息打包后插入数据库
            if(flag>0){
                return Result.ok();
            }else{
                return Result.fail();
            }
        }else {
            return Result.fail("操作失败,没有该学生的相关宿舍信息");
        }
    }

}

获取完整源码:
大家 点赞、收藏、关注、评论啦 、 查看 👇🏻 👇🏻 👇🏻 微信公众号获取联系 👇🏻 👇🏻 👇🏻
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java源码客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值