基于springboot的学生宿舍报修考勤管理系统-开题免费【论文、源码】

  博主介绍:👉全网个人号和企业号粉丝40W+,每年辅导几千名大学生较好的完成毕业设计,专注计算机软件领域的项目研发,不断的进行新技术的项目实战👈
⭐️热门专栏推荐订阅⭐️ 订阅收藏起来,防止下次找不到

🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​
有需求的各位可以先收藏起来,还有大家在毕设选题,开题报告有疑惑的都可以找我,帮你完成文档

⚠️文末联系方式获取完整资料⚠️

4章 系统设计

系统设计是将被设计对象划分为单个模块进行构建,各个模块相互支持,相互制约,它们的组合是一个完整的系统。通过系统设计,可以最大限度地满足系统的预期目标,明确软件开发的目的。

4.1 系统基本结构设计

本次系统采用springboot框架集进行开发,springboot框架是一款企业界主流的软件开发框架,其简化了开发流程,大大缩减了软件开发所需的时间提高了软件的响应速度。系统总体结构图如图4-1所示。

图4-1 系统总体结构图

4.2 数据库设计

数据库结构设计的好坏直接影响到学生宿舍管理系统的效率和实现的效果。本系统的数据库采用MySQL数据库,MySQL是一种开放源代码的关系型数据库管理系统,使用最常见的数据库管理语言SQL进行数据库管理。

4.2.1 数据库E-R图设计

E-R图也可称为实体-联系图,其可以清楚的显示实体与实体之间的关系,是描述概念模型的有效方式,通过各实体间的关系方便数据库结构的设计。以下是本系统主要的实体属性图如下所示。

报修实体如图4-2所示。

图4-2报修实体属性图

访客实体如图4-3所示。

图4-3访客实体属性图

学生考勤实体如图4-4所示。

图4-4学生考勤实体属性图

学生实体如图4-5所示。

图4-5学生实体属性图

报修类型实体如图4-6所示。

图4-6报修类型实体属性图

4.2.2 数据库表设计

数据表是用来保存多种数据的表,它是所有数据库的核心对象,且对于软件开发有着不可替代的作用。其相关数据表如下:

表4-1:baoxiu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

yonghu_id

varchar

50

default NULL

weixiurenyuan_id

varchar

50

default NULL

baoxiu_uuid_numnber

varchar

50

default NULL

baoxiu_name

varchar

50

default NULL

baoxiu_types

varchar

50

default NULL

baoxiu_content

varchar

50

default NULL

insert_time

varchar

50

default NULL

baoxiu_zhuangtai_types

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-2:config表

列名

数据类型

长度

约束

id

int

11

NOT NULL

name

varchar

50

default NULL

value

varchar

50

default NULL

表4-3:yonghuqingjia表表

列名

数据类型

长度

约束

id

int

11

NOT NULL

yonghu_id

varchar

50

default NULL

yonghuqingjia_name

varchar

50

default NULL

yonghuqingjia_text

varchar

50

default NULL

yonghuqingjia_types

varchar

50

default NULL

insert_time

varchar

50

default NULL

yonghuqingjia_time

varchar

50

default NULL

yonghuqingjia_number

varchar

50

default NULL

yonghuqingjia_yesno_types

varchar

50

default NULL

yonghuqingjia_yesno_text

varchar

50

default NULL

yonghuqingjia_shenhe_time

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-4:dictionary表

列名

数据类型

长度

约束

id

int

11

NOT NULL

dic_code

varchar

50

default NULL

dic_name

varchar

50

default NULL

code_index

varchar

50

default NULL

index_name

varchar

50

default NULL

super_id

varchar

50

default NULL

beizhu

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-5:fangke表

列名

数据类型

长度

约束

id

int

11

NOT NULL

yonghu_id

varchar

50

default NULL

fangke_name

varchar

50

default NULL

fangke_phone

varchar

50

default NULL

fangke_id_number

varchar

50

default NULL

sex_types

varchar

50

default NULL

fangke_photo

varchar

50

default NULL

fangke_content

varchar

50

default NULL

insert_time

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-6:suguan表

列名

数据类型

长度

约束

id

int

11

NOT NULL

username

varchar

50

default NULL

password

varchar

2

default NULL

suguan_name

varchar

50

default NULL

suguan_phone

varchar

50

default NULL

suguan_id_number

varchar

50

default NULL

suguan_photo

varchar

50

default NULL

sex_types

varchar

50

default NULL

suguan_email

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-7:sushe表

列名

数据类型

长度

约束

id

int

11

NOT NULL

sushe_uuid_number

varchar

50

default NULL

loudong_types

varchar

50

default NULL

danyuan_types

varchar

50

default NULL

sushe_name

varchar

50

default NULL

sushe_address

varchar

50

default NULL

sushe_content

varchar

50

default NULL

insert_time

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-8:sushe_yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

yonghu_id

varchar

50

default NULL

sushe_id

varchar

50

default NULL

insert_time

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-9:token表

列名

数据类型

长度

约束

id

int

11

NOT NULL

userid

varchar

50

default NULL

username

varchar

50

default NULL

tablename

varchar

50

default NULL

role

varchar

50

default NULL

token

varchar

50

default NULL

addtime

varchar

50

default NULL

expiratedtime

varchar

50

default NULL

表4-10:users表

列名

数据类型

长度

约束

id

int

11

NOT NULL

username

varchar

50

default NULL

password

varchar

50

default NULL

role

varchar

50

default NULL

addtime

varchar

50

default NULL

表4-11:weixiurenyuan表

列名

数据类型

长度

约束

id

int

11

NOT NULL

username

varchar

50

default NULL

password

varchar

50

default NULL

weixiurenyuan_name

varchar

50

default NULL

weixiurenyuan_phone

varchar

50

default NULL

weixiurenyuan_id_number

varchar

50

default NULL

weixiurenyuan_photo

varchar

50

default NULL

sex_types

varchar

50

default NULL

weixiurenyuan_email

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-12:xueshengkaoqin表

列名

数据类型

长度

约束

id

int

11

NOT NULL

yonghu_id

varchar

50

default NULL

xueshengkaoqin_types

varchar

50

default NULL

xueshengkaoqin_content

varchar

50

default NULL

kaoqin_time

varchar

50

default NULL

insert_time

varchar

50

default NULL

create_time

varchar

50

default NULL

表4-13:yonghu表

列名

数据类型

长度

约束

id

int

11

NOT NULL

username

varchar

50

default NULL

password

varchar

50

default NULL

yonghu_name

varchar

50

default NULL

yonghu_phone

varchar

50

default NULL

yonghu_id_number

varchar

50

default NULL

yonghu_photo

varchar

50

default NULL

sex_types

varchar

50

default NULL

yonghu_email

varchar

50

default NULL

create_time

varchar

50

default NULL

4.3 本章小结

通过本章针对学生宿舍管理系统功能的总体结构、E-R属性图和数据表的大概介绍,对在开发系统时所要涉及到的数据库进行简单设计,为下一章系统的实现做好铺垫。

第五章 系统实现

5.1管理员功能模块实现

管理员进入主页面,主要功能包括对个人中心,管理员管理,基础数据管理,报修管理,访客管理,宿舍管理,学生考勤管理,学生管理等进行操作。管理员主页面如图5-1所示:

图5-1 管理员主界面

管理员点击管理员管理。进管理员管理页面输入用户名进行查询,新增或删除管理员管理列表,并对管理员管理详细信息进行详情,修改或删除操作。如图5-2所示:

图5-2管理员管理界面

管理员点击基础数据管理。进入报修类型管理页面输入报修类型进行查询,新增或删除报修类型管理列表,并对报修类型管理详细信息进行详情,修改或删除操作。如图5-3所示:

图5-3基础数据管理界面

JAVA后端代码实现

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.MD5Util;
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();
    }
}

源码获取

大家点赞、收藏、关注 ,让更多需要的同学看到

不同开发语言专栏推荐订阅

 🔎​百套小程序APP项目实战持续更新中~​

🔎​千套JAVA项目实战持续更新中~​

🔎​百套Python实战项目持续更新中~​

👇下方有我的微信名片👇

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值