springboot vue工资管理系统源码和答辩PPT论文

人类现已迈入二十一世纪,科学技术日新月异,经济、资讯等各方面都有了非常大的进步,尤其是资讯与网络技术的飞速发展,对政治、经济、军事、文化等各方面都有了极大的影响。

利用电脑网络的这些便利,发展一套工资管理系统,将会给员工及企业带来更大的效益,而在工资管理效能上,也必然会有很大的方便!这样可以节省大量的人力、时间和金钱。该系统主要包括员工、部门、考勤信息、员工工资、留言等。方便了管理员随时随地,只要电脑联网,就能对所有信息等进行管理。同时,方便员工查询考勤信息、员工工资等。

本篇论文对工资管理系统的需求分析、功能设计、系统设计进行了较为详尽的阐述,并对系统的整体设计进行了阐述,并对各功能的实现和主要功能进行了说明,并附上了相应的操作界面图。

关键词**:** 工资管理系统;

Abstract

Humanity has entered the 21st century, with rapid changes in science and technology, and great progress has been made in various fields such as economy and information. In particular, the rapid development of information and network technology has had a great impact on politics, economy, military, culture, and other aspects.

Using these advantages of the computer network to develop a salary management system will bring greater benefits to employees and enterprises, and in terms of salary management efficiency, there will inevitably be great convenience! This can save a lot of manpower, time, and money. The system mainly includes employee, department, attendance information, employee salary, message, etc. It is convenient for administrators to manage all information anytime and anywhere as long as the computer is connected to the network. At the same time, it is convenient for employees to query attendance information, employee salaries, etc.

This paper describes the requirements analysis, functional design, and system design of the salary management system in more detail, and describes the overall design of the system. It also describes the implementation and main functions of each function, and attaches the corresponding operating interface diagram.

Key words: salary management system;

目 录

[摘 要](#摘 要)

Abstract

[1 绪 论](#1 绪 论)

1.1研究背景

1.2研究目的及意义

1.3研究方法

[2 开发平台及 技术 简介](#2 开发平台及技术简介)

[2.1 Spring boot框架](#2.1 Spring boot框架)

[2.2 Java语言介绍](#2.2 Java语言介绍)

[2.3 MySQL数据库](#2.3 MySQL数据库)

[2.4 Eclipse 编辑器](#2.4 Eclipse 编辑器)

[2.5 Vue简介](#2.5 Vue简介)

[3 系统分析 5](#3 系统分析 5)

[3.1可行性分析 5](#3.1可行性分析 5)

[3.1.1技术可行性 6](#3.1.1技术可行性 6)

3.1.2经济可行性

[3.1.3操作可行性 8](#3.1.3操作可行性 8)

[3.2需求分析 9](#3.2需求分析 9)

[4 系统设计](#4 系统设计)

4.1功能模块设计

[4.2 E-R图设计](#4.2 E-R图设计)

4.3数据库的表的设计与开发

5系统运行

5.1管理员功能模块

[5.2 员工功能模块](#5.2 员工功能模块)

6系统测试

[6.1 系统测试运行环境](#6.1 系统测试运行环境)

[6.2 系统测试](#6.2 系统测试)

[6.3 测试运行记录](#6.3 测试运行记录)

6.4系统运行与维护

[结 论](#结 论)

参考文献

[致 谢](#致 谢)

1 绪 论

1.1研究背景

随着社会和经济的快速发展,信息技术已经迈入了新一代人工智能时代,人类的生活水平也随之水涨船高。随着计算机和互联网的广泛应用,人类对于使用智能技术进行社交活动的能力也越来越强。目前各大行业逐步引入了计算机技术[1]。传统的工资管理工作种类繁多,工作繁杂,要确保工资管理能顺利、有条不紊地进行,必须要建立一个电子化的工资管理系统。为了使这一问题得到更好的解决,一个功能强大、使用方便、操作简便、人性化的工资管理系统应运而生。随着网络的快速普及,使得工资管理系统可以被全面、广泛的运用。它使得传统的管理系统向电子化、智能化、综合化方向发展,实现集中管理、分散操作、共享信息[2]。

随着信息化的不断发展,科技的进步也越来越大。软件编程是一个不断发展的行业,每个行业都必须进行适合自身特点的系统开发,才能在企业中生存和发展。当前,随着网络的快速普及与不断扩大,员工量不断增多,企业在管理和维护工资管理上都遇到了巨大的困难。因此,员工在网站上查看考勤信息、员工工资、留言这是一个重要内容。同时,管理员对信息进行有效地管理和维护,还可以降低企业的工作负担、节约时间等。

在我国,随着各行业的发展,各个地区的行业都在积极探索与实践,并取得了一定的成效。当前,部分企业在借鉴国外先进的信息管理方式后,根据自己的实际情况,进行了一系列的现代化管理[3]。

从我国现阶段的信息化建设来看,当前的信息保存和更新仍有很多问题。由于计算机网络形态多样,分布不均,容易受到病毒、黑客等攻击。所以,加强对工资管理系统体系的维护是非常必要的。

springboot vue工资管理系统源码和答辩PPT论文905

演示视频:

springboot vue工资管理系统【源码 答辩PPT 论文 答疑 讲解视频】

复制代码
package com.controller;

import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
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.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.YuangongEntity;
import com.entity.view.YuangongView;

import com.service.YuangongService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;

/**
 * 员工
 * 后端接口
 * @author 
 * @email 
 * @date 2023-03-17 15:49:43
 */
@RestController
@RequestMapping("/yuangong")
public class YuangongController {
    @Autowired
    private YuangongService yuangongService;


    
	@Autowired
	private TokenService tokenService;
	
	/**
	 * 登录
	 */
	@IgnoreAuth
	@RequestMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		YuangongEntity u = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", username));
		if(u==null || !u.getMima().equals(password)) {
			return R.error("账号或密码不正确");
		}
		
		String token = tokenService.generateToken(u.getId(), username,"yuangong",  "员工" );
		return R.ok().put("token", token);
	}

	
	/**
     * 注册
     */
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody YuangongEntity yuangong){
    	//ValidatorUtils.validateEntity(yuangong);
    	YuangongEntity u = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", yuangong.getGonghao()));
		if(u!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		yuangong.setId(uId);
        yuangongService.insert(yuangong);
        return R.ok();
    }

	
	/**
	 * 退出
	 */
	@RequestMapping("/logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        YuangongEntity u = yuangongService.selectById(id);
        return R.ok().put("data", u);
    }
    
    /**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	YuangongEntity u = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", username));
    	if(u==null) {
    		return R.error("账号不存在");
    	}
        u.setMima("123456");
        yuangongService.updateById(u);
        return R.ok("密码已重置为:123456");
    }


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,YuangongEntity yuangong,
		HttpServletRequest request){
        EntityWrapper<YuangongEntity> ew = new EntityWrapper<YuangongEntity>();

		PageUtils page = yuangongService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangong), params), params));

        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,YuangongEntity yuangong, 
		HttpServletRequest request){
        EntityWrapper<YuangongEntity> ew = new EntityWrapper<YuangongEntity>();

		PageUtils page = yuangongService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yuangong), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( YuangongEntity yuangong){
       	EntityWrapper<YuangongEntity> ew = new EntityWrapper<YuangongEntity>();
      	ew.allEq(MPUtil.allEQMapPre( yuangong, "yuangong")); 
        return R.ok().put("data", yuangongService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(YuangongEntity yuangong){
        EntityWrapper< YuangongEntity> ew = new EntityWrapper< YuangongEntity>();
 		ew.allEq(MPUtil.allEQMapPre( yuangong, "yuangong")); 
		YuangongView yuangongView =  yuangongService.selectView(ew);
		return R.ok("查询员工成功").put("data", yuangongView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        YuangongEntity yuangong = yuangongService.selectById(id);
        return R.ok().put("data", yuangong);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        YuangongEntity yuangong = yuangongService.selectById(id);
        return R.ok().put("data", yuangong);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody YuangongEntity yuangong, HttpServletRequest request){
    	yuangong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yuangong);
    	YuangongEntity u = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", yuangong.getGonghao()));
		if(u!=null) {
			return R.error("用户已存在");
		}
		yuangong.setId(new Date().getTime());
        yuangongService.insert(yuangong);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody YuangongEntity yuangong, HttpServletRequest request){
    	yuangong.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(yuangong);
    	YuangongEntity u = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", yuangong.getGonghao()));
		if(u!=null) {
			return R.error("用户已存在");
		}
		yuangong.setId(new Date().getTime());
        yuangongService.insert(yuangong);
        return R.ok();
    }



    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody YuangongEntity yuangong, HttpServletRequest request){
        //ValidatorUtils.validateEntity(yuangong);
        yuangongService.updateById(yuangong);//全部更新
        return R.ok();
    }


    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        yuangongService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<YuangongEntity> wrapper = new EntityWrapper<YuangongEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = yuangongService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	









}
相关推荐
M1A13 小时前
小红书重磅升级!公众号文章一键导入,深度内容轻松入驻
后端
0wioiw04 小时前
Go基础(④指针)
开发语言·后端·golang
拉不动的猪5 小时前
简单回顾下Weakmap在vue中为何不能去作为循环数据源,以及替代方案
前端·javascript·vue.js
李姆斯6 小时前
复盘上瘾症:到底什么时候该“复盘”,什么时候不需要“复盘”
前端·后端·团队管理
javachen__6 小时前
Spring Boot配置error日志发送至企业微信
spring boot·后端·企业微信
seabirdssss6 小时前
使用Spring Boot DevTools快速重启功能
java·spring boot·后端
java水泥工7 小时前
校园管理系统|基于SpringBoot和Vue的校园管理系统(源码+数据库+文档)
数据库·vue.js·spring boot
OC溥哥9998 小时前
Flask论坛与个人中心页面开发教程完整详细版
后端·python·flask·html
正义的大古9 小时前
OpenLayers常用控件 -- 章节七:测量工具控件教程
前端·javascript·vue.js·openlayers
迷知悟道10 小时前
java面向对象四大核心特征之抽象---超详细(保姆级)
java·后端