基于Java+Springmvc+vue+element员工信息管理系统详细设计

博主介绍公司项目主程、全网粉丝10W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计

🍅文末获取源码联系🍅

🍅CSDN官方推荐10W+JAVA技术人文章发布打卡社区🍅

前言介绍:

        系统管理也都将通过计算机进行整体智能化操作,对于企业员工考勤管理系统所牵扯的管理及数据保存都是非常多的,这给管理者的工作带来了巨大的挑战,面对大量的信息,传统的管理系统,都是通过笔记的方式进行详细信息的统计,后来出现电脑,通过电脑输入软件将纸质的信息统计到电脑上,这种方式比较传统,而且想要统计数据信息比较麻烦,还受时间和空间的影响,所以为此开发了企业员工考勤管理系统;为用户提供了方便管理平台,方便管理员查看及维护,并且可以通过需求进行设备信息内容的编辑及维护等;对于用户而言,可以随时进行查看企业员工信息,管理员可以足不出户就可以获取到系统的数据信息等,而且还能节省用户很多时间,所以开发企业员工考勤管理系统给管理者带来了很大的方便,同时也方便管理员对用户信息进行处理。

        本论文企业员工考勤管理系统主要牵扯到的程序,数据库与计算机技术等。覆盖知识面大,可以大大的提高系统人员工作效率。

系统设计:

系统功能分析和描述

使用企业员工考勤管理系统系统的用户分管理员和员工两个角色的权限子模块。

管理员所能使用的功能主要有首页、个人中心、员工管理、企业部门管理、年度考勤管理、每日考勤管理、请假信息管理、工资信息管理、调动信息管理、管理员管理等。

员工所能使用的功能主要有首页、个人中心、企业部门管理、年度考勤管理、每日考勤管理、请假信息管理、工资信息管理、调动信息管理等。

系统UML用例分析

管理员用例

管理员登录后可进行首页、个人中心、员工管理、企业部门管理、年度考勤管理、每日考勤管理、请假信息管理、工资信息管理、调动信息管理、管理员管理,管理员用户的用例如图3-1所示。

 

员工用例

员工登录后可进行首页、个人中心、企业部门管理、年度考勤管理、每日考勤管理、请假信息管理、工资信息管理、调动信息管理,员工用例如图3-2所示。

系统功能结构如图所示。

功能截图:

用户登录:管理员通过用户名和密码,密码填写完成后选则提交,如图5-1所示。管理员登录成功后进入到系统操作界面,可以对首页、个人中心、员工管理、企业部门管理、年度考勤管理、每日考勤管理、请假信息管理、工资信息管理、调动信息管理、管理员管理等功能模块进行相对应操作

员工管理:通过列表可以获取索引、工号、密码、姓名、性别、头像、部门、职位、电话等信息,进行调动、工资、修改或删除操作

 员工工资信息:

部门管理:通过列表可以获取索引、部门名称、部门主管、部门人数、部门职责、日期等信息,进行详情、修改或删除操作

考勤管理:通过列表可以获取索引、名称、年份、工号、姓名、部门、职位、迟到次数、早退次数、请假次数、旷工次数等信息,进行详情、修改或删除操作

请假管理:通过列表可以获取索引、名称、请假日期、请假天数、请假内容、工号、姓名、部门、职位、审核回复、审核状态、审核等信息,进行详情、修改或删除操作

请假审核:

工资管理:通过列表可以获取索引、名称、工号、姓名、部门、职位、基本工资、加班工资、福利、社保、扣费、实发工资、日期、是否支付等信息,进行详情、修改或删除操作

 工资统计报表:

调动管理:通过列表可以获取索引、名称、工号、姓名、部门、职位、调动日期、调动理由等信息

普通用户:员工点击后台进入到系统操作界面,可以对首页、个人中心、企业部门管理、年度考勤管理、每日考勤管理、请假信息管理、工资信息管理、调动信息管理等功能模块进行相应操作

数据设计:

 数据库设计原则

每个数据库的应用它们都是和区分开的,当运行到一定的程序当中,它就会与自己相关的协议与客户端进行通讯。那么这个系统就会对使这些数据进行连接。当我们选择哪个桥段的时候,接下来就会简单的叙述这个数据库是如何来创建的。当点击完成按钮的时候就会自动在对话框内弹出数据源的名称,在进行点击下一步即可,直接在输入相对应的身份验证和登录密码。

企业员工考勤管理系统的数据流程:

企业部门管理实体E-R图,如图所示。

工资信息管理E-R图,如图所示。

主要代码:

 文件图片上传:

/*** 上传文件映射表*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{@Autowiredprivate ConfigService configService;/*** 上传文件*/@RequestMapping("/upload")public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {if (file.isEmpty()) {throw new EIException("上传文件不能为空");}String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);String fileName = new Date().getTime()+"."+fileExt;File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);file.transferTo(dest);/*** 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开* 请将以下的"D:\\ssmpiv99\\src\\main\\webapp\\upload"替换成你本地项目的upload路径,* 并且项目路径不能存在中文、空格等特殊字符*/
//		FileUtils.copyFile(dest, new File("D:\\ssmpiv99\\src\\main\\webapp\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/if(StringUtils.isNotBlank(type) && type.equals("1")) {ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));if(configEntity==null) {configEntity = new ConfigEntity();configEntity.setName("faceFile");configEntity.setValue(fileName);} else {configEntity.setValue(fileName);}configService.insertOrUpdate(configEntity);}return R.ok().put("file", fileName);}/*** 下载文件*/@IgnoreAuth@RequestMapping("/download")public void download(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {try {File file = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);if (file.exists()) {response.reset();response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName+"\"");response.setHeader("Cache-Control", "no-cache");response.setHeader("Access-Control-Allow-Credentials", "true");response.setContentType("application/octet-stream; charset=UTF-8");IOUtils.write(FileUtils.readFileToByteArray(file), response.getOutputStream());}} catch (IOException e) {e.printStackTrace();}}}

 用户相关controller:

/*** 员工* 后端接口* @author * @email * @date 2022-03-15 19:41:08*/
@RestController
@RequestMapping("/yuangong")
public class YuangongController {@Autowiredprivate YuangongService yuangongService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth@RequestMapping(value = "/login")public R login(String username, String password, String captcha, HttpServletRequest request) {YuangongEntity user = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", username));if(user==null || !user.getMima().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(), username,"yuangong",  "员工" );return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@RequestMapping("/register")public R register(@RequestBody YuangongEntity yuangong){//ValidatorUtils.validateEntity(yuangong);YuangongEntity user = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", yuangong.getGonghao()));if(user!=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 user = yuangongService.selectById(id);return R.ok().put("data", user);}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){YuangongEntity user = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", username));if(user==null) {return R.error("账号不存在");}user.setMima("123456");yuangongService.updateById(user);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 user = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", yuangong.getGonghao()));if(user!=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 user = yuangongService.selectOne(new EntityWrapper<YuangongEntity>().eq("gonghao", yuangong.getGonghao()));if(user!=null) {return R.error("用户已存在");}yuangong.setId(new Date().getTime());yuangongService.insert(yuangong);return R.ok();}/*** 修改*/@RequestMapping("/update")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);}}

数据库连接配置:

jdbc_url=jdbc:mysql://127.0.0.1:3306/ssmuw3c9_1?useUnicode=true&characterEncoding=UTF-8&tinyInt1isBit=false
jdbc_username=root
jdbc_password=123456

论文参考:

源码获取:

大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信获取联系方式👇🏻👇🏻👇🏻

打卡 文章 更新 265/  365天

 精彩专栏推荐订阅:下方专栏👇🏻👇🏻👇🏻👇🏻

Java项目精品实战案例《100套》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/561654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java程序员怎样考察报表工具的开发效率

前言 工具&#xff0c;本身就是为了解决各种重复性工作效率低下的问题而诞生的产物&#xff0c;报表工具也是工具&#xff0c;所以它的诞生&#xff0c;它的使命&#xff0c;也是为了提效&#xff01;是为了提升数据信息化项目中报表的开发效率而诞生的 但不同的工具&#xf…

基于Java+vue实现高校学科竞赛项目系统详细设计

博主介绍&#xff1a;✌公司项目主程、全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f345;CSDN官方推…

取代 Postman + Swagger 这款神器功能更强大!界面更炫酷

作为软件开发从业者&#xff0c;API 调试是必不可少的一项技能&#xff0c;在这方面 Postman 做的非常出色。但是在整个软件开发过程中&#xff0c;API 调试只是其中的一部分&#xff0c;还有很多事情 Postman 无法完成&#xff0c;或者无法高效完成&#xff0c;比如&#xff1…

基于Java+Spring+vue+element实现唯美鲜花商城购物系统

博主介绍&#xff1a;✌公司项目主程、全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f345;…

的run代码_小心使用 Task.Run 续篇

关于前两天发布的文章&#xff1a;为什么要小心使用 Task.Run&#xff0c;对文中演示的示例到底会不会导致内存泄露&#xff0c;给很多人带来了疑惑。这点我必须向大家道歉&#xff0c;是我对导致内存泄漏的原因没描述和解释清楚&#xff0c;也没用实际的示例证实&#xff0c;是…

基于Java+Spring+vue+element实现旅游信息管理平台系统

博主介绍&#xff1a;✌公司项目主程、全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ 公众号&#xff1a;java奥斯卡 简历模板、学习资料、面试题库…

基于OneDNS实现上网安全防护和监控

前言介绍&#xff1a; 大家是不是经常遇到这种问题、明明上网页输入的是网址地址&#xff0c;打开的却是页游广告或者APP弹窗之类的。在上网的时候突然就打开一个“充值XX元就可获得流量大礼包”的页面。类似下面这样。 照成这样的原因是什么呢&#xff1f;网址输错了?有病毒木…

华为开启管理员模式_又一年的心动模式开启,华为nova8系列8号色撩人肺腑

年底一到&#xff0c;大家又要迎来一波换机热潮&#xff0c;来为自己的新年添一分新鲜感。身边很多小伙伴来找我推荐&#xff0c;当我问到他们的要求时&#xff0c;爱游戏的想要性能好的&#xff0c;经常在外的想要续航强的。喜欢拍照的想要拍照和拍视频好的&#xff0c;看重手…

基于Java生鲜蔬菜食品商城系统详细设计和实现

博主介绍&#xff1a;✌公司项目主程、全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f345;…

摄像头夜间拍摄画面有拖影_让客厅秒变健身房,OPPO智能电视R1+摄像头上手体验...

当前智能电视日趋普及&#xff0c;大屏电视资源也逐渐丰富&#xff0c;借助智能电视&#xff0c;消费者足不出户就能体验到更智能的人机交互和更便捷的生活服务。而购买OPPO智能电视R1所赠送的价值399元的摄像头&#xff0c;也赋予了OPPO智能电视R1更多的玩法&#xff0c;为我们…

【云原生】Spring Cloud是什么?Spring Cloud版本介绍

什么是SpringCloud 上一章节介绍了总体的SpringCloud的总体学习章节&#xff0c;因为最近项目刚好需要用到SpringCloud来搭建微服务项目、所以就跟着大家一起来再学习巩固下SpringCloud的相关知识 SpringCloud是基于SpringBoot提供了一套微服务解决方案&#xff0c;包括服务注…

sap 一代增强_在SAP故乡,感受“边缘智能”之变

汉诺威工业博览会SAP展台在德国&#xff0c;有奔驰、宝马等汽车巨头&#xff0c;但SAP仍然是德国市值最高的企业&#xff0c;目前这家企业正在发生什么变化&#xff1f;5G、人工智能、区块链、VR/AR、物联网等新技术如火如荼&#xff0c;正在港口、汽车、叉车制造等客户带什么样…

基于Java+SpringBoot+vue+element实现餐厅点餐系统平台

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ &#x1f345;文末获取源码联系&#x1f345; 精彩专栏推荐&#x1f447;&a…

字典添加数据_MATLAB自动化——EXCEL与数据字典管理(一)

以下平台同步更新&#xff0c;欢迎喜欢的朋友收藏、分享知乎专栏&#xff1a;汽车电控杂谈微信公众号&#xff1a;AutoGeeker在从EXCEL自动生成Signal和Parameter到Workspace中一文中&#xff0c;我们将所有设计数据都定义在基础工作区。将设计数据存储位置设置在基础工作区&am…

【云原生】微服务架构SpringCloud和Dubbo的区别?

现在做技术开发都在转型微服务化架构、目前主要的选择就是Dubbo和SpringCloud、 Dubbo dubbo启动流程图 先说说Dubbo吧&#xff01;Dubbo是基于Tcp协议、是阿里巴巴开源的分布式服务治理框架&#xff0c;出现的时间比Spring Cloud早&#xff0c;并且当时国内在这方面并未成熟&…

ddmmyy日期格式是多少_解锁9个日期时间计算套路,效率提高3.2%

小伙伴们好啊&#xff0c;今天老祝和大家学习一组日期时间计算的套路&#xff0c;让工作效率再高一点点。1、日期时间合并如下图&#xff0c;需要将A列日期和B列的时间合并到一起&#xff0c;变成既有日期又带有时间的数据。C2公式为&#xff1a;A2B22、日期时间拆分如下图&…

基于Java+SpringBoot+vue+element实现婚纱摄影网系统

博主介绍&#xff1a;✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,CSDN博客之星TOP100、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业设计✌ &#x1f345;文末获取源码联系&#x1f345; 精彩专栏推荐&#x1f447;&a…

【云原生】SpringCloud-Spring Boot Starter使用测试

目录 Spring Boot Starter是什么&#xff1f; 以前传统的做法 使用 Spring Boot Starter 之后 starter 的理念&#xff1a; starter 的实现&#xff1a; 创建Spring Boot Starter步骤 在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件&…

otn系统中常用的电层_自动化系统中常用的液位计

1、磁致伸缩液位计磁致伸缩液位计由探测杆、电路单元和浮子组成。首先&#xff0c;由电路单元提供电流脉冲&#xff0c;接着脉冲按照磁致伸缩线向下方向传输&#xff0c;构成环形磁场。浮子将会沿着探测杆并随液位的变化而往复移动。同时&#xff0c;浮子内的永磁铁产生一个磁场…

【云原生】微服务SpringCloud-eureka(server)集群搭建

目录 工作原理&#xff1a; eureka 高可用集群 项目创建&#xff1a; Maven 依赖 本地hosts文件修改 启动服务测试 工作原理&#xff1a; Spring Cloud框架下的服务发现Eureka包含两个组件 分别是: Eureka Server与Eureka Client Eureka Server,也称为服务注册中心。各个…