Java项目:校园宿舍管理系统(优质版)(Springboot3+Maven+Mybatis Plus+Vue3+ Element Plus+Mysql)
项目介绍 :
Springboot3+Maven+Mybatis Plus+Vue3+ Element Plus+Mysql 开发的前后端分离的校园宿舍管理系统
项目演示:
https://www.bilibili.com/video/BV16UmoYWEVR/
运行环境:
最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
IDE环境:
Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以
适用于:
由于本程序规模不大,可供课程设计,毕业设计学习演示之用
内置功能
管理员角色包含以下功能:
- 首页信息统计展示
- 学生信息管理
- 宿管信息管理
- 楼宇信息管理
- 房间信息管理
- 学生信息管理
- 公告信息管理
- 报修信息管理
- 调宿信息管理
- 访客信息管理
- 水费信息管理
- 电费信息管理
- 卫生检查信息管理
- 个人信息管理
宿舍管理员包含以下功能
- 首页信息统计展示
- 学生信息管理
- 楼宇信息管理
- 房间信息管理
- 学生信息管理
- 报修信息管理
- 调宿信息管理
- 访客信息管理
- 卫生检查信息管理
- 个人信息管理
学生包含以下功能
- 首页信息统计展示
- 房间信息查看
- 床位信息查看
- 报修申请
- 调宿申请
- 水费信息添加
- 电费信息添加
- 卫生信息查看
- 个人信息管理
项目预览
用户管理控制层:
package com.example.springboot.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.springboot.common.Result;
import com.example.springboot.entity.DormManager;
import com.example.springboot.entity.User;
import com.example.springboot.service.DormManagerService;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
@RestController
@RequestMapping("/dormManager")
public class DormManagerController {
@Resource
private DormManagerService dormManagerService;
/**
* 宿管添加
*/
@PostMapping("/add")
public Result<?> add(@RequestBody DormManager dormManager) {
int i = dormManagerService.addNewDormManager(dormManager);
if (i == 1) {
return Result.success();
} else {
return Result.error("-1", "添加失败");
}
}
/**
* 宿管信息更新
*/
@PutMapping("/update")
public Result<?> update(@RequestBody DormManager dormManager) {
if (StringUtils.equals("test",dormManager.getUsername())){
return Result.error("-1", "禁止修改测试账号");
}
int i = dormManagerService.updateNewDormManager(dormManager);
if (i == 1) {
return Result.success();
} else {
return Result.error("-1", "更新失败");
}
}
/**
* 宿管删除
*/
@DeleteMapping("/delete/{username}")
public Result<?> delete(@PathVariable String username) {
if (StringUtils.equals("test",username)){
return Result.error("-1", "禁止修改测试账号");
}
int i = dormManagerService.deleteDormManager(username);
if (i == 1) {
return Result.success();
} else {
return Result.error("-1", "删除失败");
}
}
/**
* 宿管查找
*/
@GetMapping("/find")
public Result<?> findPage(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize,
@RequestParam(defaultValue = "") String search) {
Page page = dormManagerService.find(pageNum, pageSize, search);
if (page != null) {
return Result.success(page);
} else {
return Result.error("-1", "查询失败");
}
}
/**
* 宿管登录
*/
@PostMapping("/login")
public Result<?> login(@RequestBody User user, HttpSession session) {
Object o = dormManagerService.dormManagerLogin(user.getUsername(), user.getPassword());
if (o != null) {
System.out.println(o);
//存入session
session.setAttribute("Identity", "dormManager");
session.setAttribute("User", o);
return Result.success(o);
} else {
return Result.error("-1", "用户名或密码错误");
}
}
}
用户信息主页
<template>
<div>
<el-breadcrumb separator-icon="ArrowRight" style="margin: 16px">
<el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>用户管理</el-breadcrumb-item>
<el-breadcrumb-item>宿管信息</el-breadcrumb-item>
</el-breadcrumb>
<el-card style="margin: 15px; min-height: calc(100vh - 111px)">
<div>
<!-- 功能区-->
<div style="margin: 10px 0">
<!-- 搜索区-->
<div style="margin: 10px 0">
<el-input v-model="search" clearable placeholder="请输入姓名" prefix-icon="Search" style="width: 20%"/>
<el-button icon="Search" style="margin-left: 5px" type="primary" @click="load"></el-button>
<el-button icon="refresh-left" style="margin-left: 10px" type="default" @click="reset"></el-button>
<div style="float: right">
<el-tooltip content="添加" placement="top">
<el-button icon="plus" style="width: 50px" type="primary" @click="add"></el-button>
</el-tooltip>
</div>
</div>
</div>
<!-- 表格-->
<el-table v-loading="loading" :data="tableData" border max-height="705" style="width: 100%">
<el-table-column label="#" type="index"/>
<el-table-column label="账号" prop="username" sortable/>
<el-table-column label="姓名" prop="name"/>
<el-table-column
:filter-method="filterTag"
:filters="[
{ text: '男', value: '男' },
{ text: '女', value: '女' },
]"
filter-placement="bottom-end"
label="性别"
prop="gender"
/>
<el-table-column label="年龄" prop="age" sortable/>
<el-table-column label="手机号" prop="phoneNum"/>
<el-table-column label="邮箱" prop="email"/>
<el-table-column label="任职宿舍楼" prop="dormBuildId" sortable/>
<!-- 操作栏-->
<el-table-column label="操作" width="130px">
<template #default="scope">
<el-button icon="Edit" type="primary" @click="handleEdit(scope.row)"></el-button>
<el-popconfirm title="确认删除?" @confirm="handleDelete(scope.row.username)">
<template #reference>
<el-button icon="Delete" type="danger"></el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
</el-table>
<!--分页-->
<div style="margin: 10px 0">
<el-pagination
v-model:currentPage="currentPage"
:page-size="pageSize"
:page-sizes="[10, 20]"
:total="total"
layout="total, sizes, prev, pager, next, jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
>
</el-pagination>
</div>
<div>
<!-- 弹窗-->
<el-dialog v-model="dialogVisible" title="操作" width="30%" @close="cancel">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-form-item label="账号" prop="username">
<el-input v-model="form.username" :disabled="judgeAddOrEdit" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="form.password" :disabled="disabled" :show-password="showpassword"
style="width: 80%"></el-input>
<el-tooltip content="修改密码" placement="right">
<el-icon :style="editDisplay" size="large" style="margin-left: 5px; cursor: pointer"
@click="EditPass">
<edit/>
</el-icon>
</el-tooltip>
</el-form-item>
<el-form-item :style="display" label="确认密码" prop="checkPass">
<el-input v-model="form.checkPass" :show-password="showpassword" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input v-model.number="form.age" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-radio v-model="form.gender" label="男">男</el-radio>
<el-radio v-model="form.gender" label="女">女</el-radio>
</el-form-item>
<el-form-item label="手机号" prop="phoneNum">
<el-input v-model.number="form.phoneNum" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="邮箱地址" prop="email">
<el-input v-model="form.email" style="width: 80%"></el-input>
</el-form-item>
<el-form-item label="任职宿舍楼" prop="dormBuildId">
<el-input v-model="form.dormBuildId" style="width: 80%"></el-input>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="save">确 定</el-button>
</span>
</template>
</el-dialog>
</div>
</div>
</el-card>
</div>
</template>
<script src="@/assets/js/DormManagerInfo.js"></script>
创作不易,源码非无偿提供,需要获取源码的私信博主