springboot+vue前后端分离实现宿舍管理系统

 作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:BS-GX-032

开发技术:

   后台:Springboot+springmvc+mybatis-plus

   前台:VUE

运行环境:

   数据库:mysql5.7+Redis

   JDK: 1.8

   Maven: 3.9

  开发工具:IDEA /Eclipse

本系统基于springboot+vue采用前后端分离的方式实现了一个宿舍管理系统,功能完整,界面美观大方,交互简洁方便,比较适合做毕业设计使用。

系统有完整的权限管理系统:用户可以自定义角色、权限和功能菜单,给不同的用户角色分配不同的功能,从而实现灵活的管理功能。

业务功能实现主要包括:

学生管理、宿舍管理、班级管理、宿舍报修管理、请假管理、晚归管理

系统管理主要包括:

用户管理、权限管理、菜单管理、日志管理等

下面展示一下系统的主要功能:

用户登陆

宿舍管理

班级管理

学生管理

班级管理

查看班级学生

维修管理

晚归记录

请假管理

用户管理

角色管理

菜单管理

日志管理

个人中心

部分核心代码如下:

package com.hzvtc.myproject.controller;

import com.github.pagehelper.PageInfo;
import com.hzvtc.myproject.annotation.Log;
import com.hzvtc.myproject.annotation.RequirePermission;
import com.hzvtc.myproject.config.Constant;
import com.hzvtc.myproject.dto.ListQuery;
import com.hzvtc.myproject.entity.BackLate;
import com.hzvtc.myproject.entity.SystemUser;
import com.hzvtc.myproject.service.BackLateService;
import com.hzvtc.myproject.utils.RedisUtil;
import com.hzvtc.myproject.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * @author znz
 * @date 2021-12-17
 */
@RestController
@RequestMapping("/backlate")
public class BackLateController {
    @Autowired
    private BackLateService backLateService;
    @Autowired
    private RedisUtil redisUtil;

    @PostMapping("/saveOrUpdate")
    @RequirePermission(permissions = {"back:save","back:update"})
    @Log
    public Result<?> saveOrUpdate(@RequestBody @Validated BackLate backLate) {
        backLateService.saveOrUpdate(backLate);
        return Result.ok("操作成功");
    }

    @GetMapping("delete/{id}")
    @RequirePermission(permissions = {"back:delete"})
    @Log
    public Result<?> delete(@PathVariable Long id) {
        backLateService.delete(id);
        return Result.ok("删除成功");
    }

    @PostMapping("/list")
    @RequirePermission(permissions = {"back:list"})
    public Result<PageInfo<BackLate>> list(@RequestBody ListQuery<BackLate> listQuery,
                       @RequestHeader(Constant.HEADER_TOKEN) String token) {
        SystemUser systemUser = redisUtil.exchange(token).get();
        PageInfo<BackLate> pageInfo = backLateService.list(listQuery, systemUser.getBuildingId());
        return Result.<PageInfo<BackLate>>ok().add(pageInfo);
    }

    @GetMapping("/query/{id}")
    @RequirePermission(permissions = {"back:query"})
    public Result<BackLate> query(@PathVariable Long id) {
        BackLate backLate = backLateService.query(id);
        return Result.<BackLate>ok().add(backLate);
    }
}

package com.hzvtc.myproject.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hzvtc.myproject.annotation.Log;
import com.hzvtc.myproject.annotation.RequirePermission;
import com.hzvtc.myproject.dto.ListQuery;
import com.hzvtc.myproject.entity.Building;
import com.hzvtc.myproject.entity.Room;
import com.hzvtc.myproject.exception.HttpException;
import com.hzvtc.myproject.service.BuildingService;
import com.hzvtc.myproject.service.RoomService;
import com.hzvtc.myproject.utils.HttpCode;
import com.hzvtc.myproject.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author znz
 * @date 2021-12-19
 */
@RestController
@RequestMapping("/building")
public class BuildingController {
    @Autowired
    private BuildingService buildingService;
    @Autowired
    private RoomService roomService;


    @GetMapping("/listAll")
    @RequirePermission(permissions = {"manage:building:list"})
    public Result<List<Building>> listAll() {
        List<Building> list = buildingService.listAll();
        return Result.<List<Building>>ok().add(list);
    }

    @GetMapping("/list")
    @RequirePermission(permissions = {"manage:building:list"})
    public Result<List<Building>> list() {
        List<Building> list = buildingService.list();
        return Result.<List<Building>>ok().add(list);
    }

    @GetMapping("delete")
    @RequirePermission(permissions = {"manage:building:delete"})
    @Log("删除building")
    public Result<?> delete(@RequestParam("id") Long id) {
        List<Room> list = roomService.listByBuildingId(id);
        if (list.size() > 0) {
            throw new HttpException(HttpCode.FAILED, "该节点下或子节点还有寝室,无法删除");
        }
        buildingService.delete(id);
        return Result.ok("删除成功");
    }

    @GetMapping("/query")
    @RequirePermission(permissions = {"manage:building:query"})
    public Result<Building> query(@RequestParam("id") Long id) {
        Building building = buildingService.query(id).orElseThrow(() -> new HttpException(HttpCode.FAILED, "该数据不存在"));
        return Result.<Building>ok().add(building);
    }

    @PostMapping("/saveOrUpdate")
    @RequirePermission(permissions = {"manage:building:save","manage:building:update"})
    @Log
    public Result<?> saveOrUpdate(@RequestBody @Validated Building building) {
        if (building.getId() == null) {
            buildingService.save(building);
        } else {
            if (building.getId().equals(building.getParentId())) {
                throw new HttpException(HttpCode.FAILED, "父节点不能为自己");
            }
            buildingService.update(building);
        }
        return Result.ok("操作成功");
    }
}

package com.hzvtc.myproject.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.hzvtc.myproject.config.Constant;
import com.hzvtc.myproject.dto.ListQuery;
import com.hzvtc.myproject.dto.Message;
import com.hzvtc.myproject.entity.DepartApplication;
import com.hzvtc.myproject.entity.DepartApplicationUser;
import com.hzvtc.myproject.entity.SystemUser;
import com.hzvtc.myproject.exception.HttpException;
import com.hzvtc.myproject.service.DepartApplicationService;
import com.hzvtc.myproject.service.StudentService;
import com.hzvtc.myproject.service.SystemUserService;
import com.hzvtc.myproject.socket.WebSocket;
import com.hzvtc.myproject.utils.HttpCode;
import com.hzvtc.myproject.utils.RedisUtil;
import com.hzvtc.myproject.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author znz
 * @date 2021-12-09
 */
@RestController
@RequestMapping("/depart")
public class DepartApplicationController {
    @Autowired
    private DepartApplicationService departApplicationService;
    @Autowired
    private StudentService studentService;
    @Autowired
    private RedisUtil redisUtil;
    @Autowired
    private SystemUserService systemUserService;

    @PostMapping("/listMy")
    public Result<PageInfo<DepartApplication>> listMyApplication(@RequestBody ListQuery<DepartApplication> listQuery,
                                    @RequestHeader(Constant.HEADER_TOKEN) String token) {
        Long id = redisUtil.get(token);
        PageHelper.startPage(listQuery.getPage(), listQuery.getRows());
        List<DepartApplication> list = departApplicationService.listMyApplication(id);
        PageInfo<DepartApplication> pageInfo = new PageInfo<>(list);
        return Result.<PageInfo<DepartApplication>>ok().add(pageInfo);
    }

    @PostMapping("/listMyFlow")
    public Result<PageInfo<DepartApplicationUser>> listMyFlow(@RequestBody ListQuery<DepartApplication> listQuery,
                             @RequestHeader(Constant.HEADER_TOKEN) String token) {
        Long id = redisUtil.get(token);
        PageHelper.startPage(listQuery.getPage(), listQuery.getRows());
        List<DepartApplicationUser> list = departApplicationService.listMyFlow(id);
        PageInfo<DepartApplicationUser> pageInfo = new PageInfo<>(list);
        return Result.<PageInfo<DepartApplicationUser>>ok().add(pageInfo);
    }

    @GetMapping("/listFlow/{id}")
    public Result<List<DepartApplicationUser>> listApplicationFlow(@PathVariable("id") Long id) {
        List<DepartApplicationUser> list = departApplicationService.listApplicationFlow(id);
        return Result.<List<DepartApplicationUser>>ok().add(list);
    }

    @PostMapping("/update")
    public Result<?> update(@RequestBody DepartApplicationUser departApplicationUser,
                         @RequestHeader(Constant.HEADER_TOKEN) String token) {
        String msg = "成功,";
        SystemUser user = redisUtil.exchange(token).get();
        DepartApplicationUser applicationUser =
                departApplicationService
                        .getApplicationUser(departApplicationUser.getId());
        if (!user.getId().equals(applicationUser.getOperateUserId())) {
            throw new HttpException(HttpCode.FAILED, "无法审核");
        }
        if (applicationUser.getIsAgree() != null) {
            throw new HttpException(HttpCode.FAILED, "已审核过,无法修改");
        }
        departApplicationService.update(departApplicationUser);
        DepartApplication application =
                departApplicationService
                        .getByDepartApplicationUserId(departApplicationUser.getId());

        if (departApplicationUser.getIsAgree()) {
            if (user.getLeaderId() == null) {
                studentService.delete(application.getStudentId());
                msg += "该学生已成功退宿";
            } else {
                departApplicationService.saveApplication(user.getLeaderId(), application.getId());
                WebSocket.sendMessage(user.getLeaderId(),
                        new Message().setTitle("新的退宿申请").setType(2).setMessageBody(application.getReason()),
                        systemUserService);
                msg += "等待上一级审核";
            }
        } else {
            msg += "审核未通过";
        }

        return Result.ok(msg);
    }

    @GetMapping("delete/{id}")
    public Result<?> delete(@PathVariable Long id) {
        departApplicationService.deleteApplication(id);
        return Result.ok("撤销成功");
    }

    @GetMapping("/query/{id}")
    public Result<DepartApplication> query(@PathVariable Long id) {
        DepartApplication data = departApplicationService.getApplication(id);
        return Result.<DepartApplication>ok().add(data);
    }

}

package com.hzvtc.myproject.controller;

import com.hzvtc.myproject.annotation.Log;
import com.hzvtc.myproject.annotation.RequirePermission;
import com.hzvtc.myproject.entity.Faculty;
import com.hzvtc.myproject.entity.Student;
import com.hzvtc.myproject.exception.HttpException;
import com.hzvtc.myproject.service.FacultyService;
import com.hzvtc.myproject.service.StudentService;
import com.hzvtc.myproject.utils.HttpCode;
import com.hzvtc.myproject.vo.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author znz
 * @date 2021-12-19
 */
@RestController
@RequestMapping("/faculty")
public class FacultyController {
    @Autowired
    private FacultyService facultyService;

    @GetMapping("/list")
    @RequirePermission(permissions = {"faculty:list"})
    public Result<List<Faculty>> list() {
        List<Faculty> list = facultyService.list();
        return Result.<List<Faculty>>ok().add(list);
    }

    @GetMapping("/listAll")
    @RequirePermission(permissions = {"faculty:list"})
    public Result<List<Faculty>> listAll() {
        List<Faculty> list = facultyService.listAll();
        return Result.<List<Faculty>>ok().add(list);
    }

    @PostMapping("/saveOrUpdate")
    @RequirePermission(permissions = {"faculty:save", "faculty:update"})
    @Log("添加或更新学院")
    public Result<?> saveOrUpdate(@RequestBody @Validated Faculty faculty) {
        if (faculty.getId() == null) {
            facultyService.insert(faculty);
        } else {
            if (faculty.getId().equals(faculty.getParentId())) {
                throw new HttpException(HttpCode.FAILED, "父节点不能为自己");
            }
            facultyService.update(faculty);
        }
        return Result.ok("操作成功");
    }

    @GetMapping("/delete")
    @RequirePermission(permissions = {"faculty:delete"})
    @Log("删除学院")
    public Result<?> delete(@RequestParam("id") Long id) {
        facultyService.delete(id);
        return Result.ok("删除成功");
    }

    @GetMapping("/query")
    @RequirePermission(permissions = {"faculty:query"})
    public Result<Faculty> query(@RequestParam("id") Long id) {
        Faculty faculty = facultyService.query(id).orElseThrow(() -> new HttpException(HttpCode.FAILED, "没有该数据"));
        return Result.<Faculty>ok().add(faculty);
    }

}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
1.项目概况 ​ 提到宿舍,现在无论是学校,还是工厂,都是在熟悉不过的了,学生宿舍楼,职工教员工,职工宿舍楼等等,每一栋楼房都有很多的房间,每个宿舍分配了多少个床位,住着什么人,那些床位是空的,那些房间是空的,这些都需要人员去维护,曾经的我们,通过纸张登记,查看房间信息,房间床位信息,房间少的情况下还好,我们可以一个个进行比对,看登记信息去查看房间信息,床位信息,但是房间多,登记信息多的情况下,或者有人员进行变动,退房,换房的情况下,可就麻烦了我们的宿舍管理员了,我们的宿舍管理员,需要慢慢的进行查找,浪费了时间成本不说,还容易出错,新来的学生或员工需要等待很长时间才能进去入住,在加上现在楼层在逐渐的向高层发展,人员手动管理已经不能满足社会的需要,因而,社会需要更好的工具去管理这些枯燥的的宿舍管理工作,从而宿舍管理系统应用而生。 ​ 宿舍管理系统,解决了当前人力成本,时间成本问题,可以快速的定位到房间号,宿舍床位号,通过宿舍管理系统,我们只要根据系统的要求去操作,就可以分分钟的时间解决某个宿舍是否满员,可以方便的把人员和宿舍,床位进行绑定,就像我们的身份号似的,都是唯一的,查询起来很方便,相比较起传统的宿舍纸张登记来说,现代化的宿舍管理系统更快捷,更高效,更适应人们快捷化的生活。 ​ 现在高校的发展和体制不断的进行了完善,所以学校的服务也逐渐有了变化,对于学校宿舍管理有了新形势的管理模式。学校根据自身的实际情况,对于学生宿舍生活管理的服务进行改善。有些学校因为管理工作的错误,影响了学校里学生的现况,甚至给整个学校造成了负面的影响,而且现在学校管理问题普遍存在。所以现在学校也在建设信息化管理系统,这种管理系统,可以为学校的管理工作和宿舍管理工作带来很好的效果。
在现代化的软件开发中,前后端分离是一种较为流行的开发模式,因为这种模式具有很多优点:增加了系统的可扩展性、提高了开发效率、让前端人员和后端人员更专注于自己的领域等等。基于springbootvue,我来介绍一下如何实现宿舍管理系统前后端分离开发。 首先,我们需要搭建好springbootvue的开发环境。接着,创建springboot项目,并集成mybatis等技术实现基本的后端功能。然后,使用vue-cli创建前端项目,并引入axios、vue-router等技术实现前端页面的开发和数据请求。在这一过程中,我们要注意前后端分离的原则,即前端和后端应该各自独立运行,可以分别部署在不同的服务器上,通过http接口进行通信。 接下来,我们就可以开始对宿舍管理系统进行开发了。我们可以先完成一些基本的功能,如登录、注册、修改密码等。接着,再逐步开发宿舍相关的功能,如学生信息管理宿舍信息管理宿舍住宿管理等等。在这个过程中,需要注意前后端的数据传输方式。由于是前后端分离的模式,前端需要发送http请求给后端,后端接收请求后返回json格式的数据,前端再根据返回的数据进行渲染。 最后,我们可以对系统进行测试,并部署到服务器上进行实际使用。这样,我们就可以享受到前后端分离带来的诸多好处,如便于维护、快速迭代、高效沟通等。同时,我们也需要注意系统的安全性,如对登录信息进行加密、防止sql注入等措施。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程千纸鹤

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

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

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

打赏作者

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

抵扣说明:

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

余额充值