基于springboot的人事工资考勤管理系统-开题免费【论文、源码】

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

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

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

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

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

4 系统设计

4.1功能模块设计

根据上文中对员工需求的一系列综合细致的分析,针对本文基于springboot的工资管理系统,得到一个如图4-1所示的宏观的功能模块结构图

4-1 系统模块结构图

4.2 E-R图设计

通过对工资管理系统的分析和设计得出一个系统E-R图所有实体和属性的定义如下所示

留言实体属性图如图4-2所示。

图4-2 留言实体属性图

员工信息实体属性图,如图4-3所示:

图4-3员工信息实体属性图

员工工资实体属性图,如图4-4所示:

图4-4员工工资实体属性图

考勤信息实体属性图,如图4-5所示:

图4-5考勤信息实体属性图

4.3数据库表的设计与开发

在现有的软件工程运行环境中,数据库与数据表的设计都是为了构建最适合最优秀的数据存储框架。建立一个优秀的数据库,必须保证数据的完整、准确,并尽量满足用户对数据存储的需求。那么,数据库中的信息和网络应用程序之间的链接就必须得到保障。在已有的条件下,尽可能地降低占用的数据库的空间资源消耗,使得整个工资管理系统能够迅速地做出反应。根据上述原则并结合实际需要,本文采用MySql进行设计。

4-1token表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

userid

bigint

用户id

username

varchar

100

用户名

tablename

varchar

100

表名

role

varchar

100

角色

token

varchar

200

密码

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

expiratedtime

timestamp

过期时间

CURRENT_TIMESTAMP

4-2留言

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

biaoti

varchar

200

标题

liuyanneirong

longtext

4294967295

留言内容

liuyanshijian

datetime

留言时间

gonghao

varchar

200

工号

xingming

varchar

200

姓名

bumen

varchar

200

部门

shhf

longtext

4294967295

回复内容

4-3考勤信息

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

kaoqinbianhao

varchar

200

考勤编号

gonghao

varchar

200

工号

xingming

varchar

200

姓名

bumen

varchar

200

部门

yuefen

varchar

200

月份

chidaocishu

int

迟到次数

zaotuicishu

int

早退次数

queqintianshu

int

缺勤天数

xiujiatianshu

int

休假天数

qita

varchar

200

其他

yingchuqintianshu

int

应出勤天数

shichuqintianshu

int

实出勤天数

beizhu

longtext

4294967295

备注

dengjishijian

date

登记时间

4-4配置文件

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

name

varchar

100

配置参数名称

value

varchar

100

配置参数值

4-5部门

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

bumen

varchar

200

部门

4-6员工工资

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

yuefen

varchar

200

月份

gonghao

varchar

200

工号

xingming

varchar

200

姓名

bumen

varchar

200

部门

jibengongzi

float

基本工资

jiabangongzi

float

加班工资

jixiaojiangjin

float

绩效奖金

qitabuzhu

float

其他补助

koukuanjine

float

扣款金额

koukuanyuanyin

longtext

4294967295

扣款原因

shifagongzi

float

实发工资

dengjiriqi

date

登记日期

4-7员工

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

addtime

timestamp

创建时间

CURRENT_TIMESTAMP

gonghao

varchar

200

工号

mima

varchar

200

密码

touxiang

longtext

4294967295

头像

xingming

varchar

200

姓名

xingbie

varchar

200

性别

lianxifangshi

varchar

200

联系方式

shenfenzhenghao

varchar

200

身份证号

bumen

varchar

200

部门

ruzhiriqi

date

入职日期

4-8用户表

字段名称

类型

长度

字段说明

主键

默认值

id

bigint

主键

  主键

username

varchar

100

用户名

password

varchar

100

密码

role

varchar

100

角色

管理员

addtime

timestamp

新增时间

CURRENT_TIMESTAMP

5系统运行

5.1管理员功能模块

管理员登录系统,管理员登录页面通过输入用户名、密码,选择角色并点击登录操作,如图5-1所示。

图5-1管理员登录界面图

管理员登录系统后,可以对系统首页、个人中心、员工管理、部门管理、考勤信息管理、员工工资管理、留言管理等功能模块进行相应操作,如图5-2所示。

图5-2管理员功能界图面

管理员点击员工管理;在员工管理页面输入工号、头像、姓名、性别、联系方式、身份证号、部门、入职日期信息,进行查询,新增或删除员工信息操作;如图5-3所示。

图5-3员工管理界面图

管理员点击部门管理;在部门管理页面输入部门信息,进行查询,新增或删除部门操作;如图5-4所示。

图5-4部门管理界面图

管理员点击考勤信息管理;在考勤信息管理页面输入考勤编号、工号、姓名、部门、月份、迟到次数、早退次数、缺勤天数、休假天数、其他、应出勤天数、实出勤天数、登记时间信息,进行查询或新增、删除考勤信息操作;如图5-5所示。

图5-5考勤信息管理界面图

管理员点击员工工资管理;在员工工资管理页面输入月份、工号、姓名、部门、基本工资、加班工资、绩效奖金、其他补助、扣款金额、实发工资、登记日期信息,进行查询新增或删除员工工资操作;如图5-6所示。

图5-6员工工资管理界面图

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实战项目持续更新中~​

👇下方有我的微信名片👇

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值