基于Java+SpringBoot+Vue前后端分离人事管理系统设计和实现

news2024/10/2 22:21:24

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

🍅文末获取源码联系🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

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

Java微信小程序项目实战《100套》

系统介绍:

传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,问卷信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的人事管理系统。

本人事管理系统分为管理员还有用户两个权限,管理员可以管理用户的基本信息内容,可以管理公告信息以及公告的租赁信息,能够与用户进行相互交流等操作,用户可以查看问卷信息,可以查看公告以及查看管理员回复信息等操作。

该人事管理系统采用的是WEB应用程序开发中最受欢迎的B/S三层结构模式,使用占用空间小但功能齐全的MySQL数据库进行数据的存储操作,系统开发技术使用到了JSP技术。该人事管理系统能够解决许多传统手工操作的难题,比如数据查询耽误时间长,数据管理步骤繁琐等问题。总的来说,人事管理系统性能稳定,功能较全,投入运行使用性价比很高。

人事管理系统系统在进行系统中功能模块的划分时,采用层次图来进行表示。层次图具有树形结构,它能使用矩形框来描绘数据信息。顶层代表的数据结构很完整,顶层下面的矩形框表示的数据就是子集数据,当然处于最下面的矩形框就是不能再进行细分的数据元素了,使用层次方框图描述系统功能能让用户一目了然,能够明白系统的功能,以及对应功能板块下面的子功能都可以清楚领会。人事管理系统分为管理员和用户两部分操作角色,下面将对他们的功能进行阐述。

管理员可以管理用户的基本信息,可以管理等功能。管理员功能结构图如下:

程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。

程序操作流程图

功能截图:

5.1 管理员功能模块的实现

5.1.1 问卷列表

如图5.1显示的就是问卷列表页面,此页面提供给管理员的功能有:查看问卷、新增问卷、修改问卷、删除问卷等。

图5.1 问卷列表页面

5.1.2 公告信息管理

管理员可以对公告信息进行管理,可以新增公告信息,修改公告信息,删除无效的公告信息。公告信息管理界面如图5.2所示。

图5.2 公告信息管理页面

5.1.3 公告类型管理

公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。下图就是公告类型管理页面。公告类型管理界面如图5.3所示。

图5.3公告类型管理界面

代码实现:

/**
 * 登录相关
 */
@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 role, HttpServletRequest request) {
        UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
        if(user != null){
            if(!user.getRole().equals(role)){
                return R.error("权限不正常");
            }
            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);
        }else{
            return R.error("账号或密码或权限不对");
        }

    }
    
    /**
     * 注册
     */
    @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("/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){
        Integer id = (Integer)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);
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

论文参考:

源码获取:

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

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

2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅

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

Java微信小程序项目实战《100套》

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

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

相关文章

软路由vs传统路由器ip:选择合适的网络设备

在构建和管理网络基础设施时&#xff0c;选择正确的网络设备至关重要。本文将介绍软路由IP和传统路由器两种常见的网络设备&#xff0c;并探讨它们各自特点、优势以及应用场景&#xff0c;帮助读者了解并选择最适合他们需求的网络设备。 什么是软路由IP&#xff1f; 软路由IP是…

vscode软件中不显示文件前的图标

问题&#xff1a; 解决方案&#xff1a; 效果&#xff1a;

专家解读 | 电力行业关基测评安全防护新挑战

在赛宁网安主办的安全运营实践论坛上&#xff0c;中国电力科学研究院信通所网安室测评主管、高级测评师肖红阳以《电力行业关基测评实践和经验交流》为主题发表演讲。他强调“电力行业关键信息基础设施是国家网络安全保护工作的重中之重”&#xff0c;并围绕电力关基测评的背景…

仓储24代电子标签接口文档

电子标签标签注册 通过手动触发电子标签注册到系统&#xff0c;注册成功就可以进行功能测试。 仓储24代注册 注册成功显示rssi:-xxdB如下&#xff1a; 绝对值越小信号越差&#xff0c;一般0 ~ -75dB都可以正常通讯 查询电子标签信息接口 接口描述 查询注册到系统的电子标签的…

八、性能测试之磁盘分析

性能测试之磁盘分析 一、磁盘简介1、存储数据之前&#xff0c;要先进行格式化2、读写数据时&#xff0c;数据与磁盘间有个磁盘缓存&#xff08;内存的一部分&#xff09;3、磁盘&#xff1a;持久化的存储设备4、磁盘读写操作流5、磁盘组成6、磁盘分区7、磁盘阵列RAID&#xff0…

记录Echarts双Y轴左右刻度不一致问题

根据项目需要,echarts实现双Y轴图表。因为两边数据不同&#xff0c;所以会出现左右Y轴刻度不一致。 增长率暂时是0&#xff0c;在X轴上&#xff0c;懒得改了。 修改之前: 修改之后: 根据数据找出最大值&#xff0c;分为6份向上取整&#xff0c;得到的每份就是间隔。 // dataAr…

直播预告 | CAR-T疗法红海赛道如何胜出?CAR-T工艺开发及商业化新思考

直播背景 随着整个细胞治疗行业的快速发展&#xff0c;CGT产业链上下游不断完善&#xff0c;从上游原材料及设备供应商到CXO再到创新药企&#xff0c;各个环节的联系更加紧密&#xff0c;竞争与合作关系愈加凸显。细胞药物研发过程中&#xff0c;对生物试剂、耗材、仪器设备有…

基于springboot的图片文字识别,支持中英文识别

概述 基于springboot的图片文字识别,支持中英文识别. 页面上传图片即可转换为中文或者英文. 详细 1.需求&#xff08;要做什么&#xff09; 识别图片文字, 实现页面上传图片即可转换为中文或者英文. 2.理论概述 OCR&#xff0c;即Optical Character Recognition&#xff…

机器学习-k-近邻算法

k-近邻算法 一、k-近邻算法概述1.1 使用python导入数据1.2 从文本文件中解析数据 二、使用k-近邻算法改进约会网站的配对效果2.1 准备数据2.2 数据预处理2.3 分析数据2.4 测试算法2.5使用算法 三、手写体识别系统 一、k-近邻算法概述 k-近邻算法是一种常用的监督学习算法&…

百度智能云千帆大模型平台2.0来了!从大模型到生产力落地的怪兽级平台!!

目录 前言 最佳算力效能为企业降低门槛 最多大模型&#xff0c;最多数据集为企业保驾护航 企业级安全对于企业来说是硬性要求 前言 普通人或许感知不明显&#xff0c;但是对于企业而言&#xff0c;身处AI时代&#xff0c;是否选择投资大模型&#xff0c;是否拥抱人工智能…

既然有 HTTP 协议,为什么还要有 RPC

HTTP和RPC 什么是HTTP HTTP协议&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff0c;又叫做超文本传输协议。平时上网在浏览器上敲个网址就能访问网页&#xff0c;这里用到的就是HTTP协议。 什么是RPC RPC&#xff08;Remote Procedure Call&#xff09;&…

详解Vision Transformer中的Encoder

一.Transformer架构 左半边是Encoder&#xff0c;右半边是Decoder。 二.Vision Transformer Vision Transformer取了Transformer的左半边。包含 Input EmbeddingPositional Encoding多头注意力机制 Add & Norm(前馈网络)Feed Forward Add & Norm 2.1 Input Embe…

Python 完美解决 Import “模块” could not be resolved ...

首先扩展安装Python插件 Ctrl Shift P&#xff0c;在打开的输入框中输入 Python: Select Interpreter 搜索&#xff0c;选择 Python 解析器。 选好解析器后&#xff0c;就可以直接在 VS Code 里运行&#xff08;快捷键 Ctrl F5&#xff09;或调试&#xff08;快捷键 F5&…

打造高效等级查询系统

在现代教育体系中&#xff0c;考试等级查询系统是学生、家长和校园必不可少的工具。易查分是一款功能强大、易于使用的在线成绩查询平台&#xff0c;可以帮助学生和家长方便查询学生的考试成绩和等级&#xff0c;了解学习情况&#xff0c;从而更好的制定学习计划和提供必要的支…

leetcode(力扣):203移除链表元素 leetcode(力扣):206反转链表 leetcode(力扣):876.链表的中间结点多种解法

目录 203.移除链表元素 解法一&#xff1a;将目标元素前一个元素存放地址改为下一元素地址 解法二&#xff1a;遍历原链表&#xff0c;把不是val的节点拿出来进行尾插到新链表​编辑 解法三&#xff1a;有哨兵位解法->头节点不存储有效数据​编辑 206.反转链表 方法一…

一次说清楚BCD编码

背景 在银行报文中&#xff0c;有很多用到BCD编码的地方&#xff0c;BCD编码和常见的二进制编码或者ASCII编码又有区别&#xff0c;所以很容易搞错&#xff0c;弄错概念&#xff0c;下面笔者就一次把BCD编码讲清楚。 一&#xff0c;概念 1&#xff0c;BCD编码&#xff0c;…

vue开发调试

1、调试方式 1.1 为什么调试 当遇到应用逻辑出现错误&#xff0c;但又无法准确定位的时候&#xff0c;同后台项目开发一样&#xff0c;可以在JS实现的应用逻辑中设置断点&#xff0c;并进行单步、进入方法内、跳出方法等调试&#xff0c;从而准确定位问题根源。 1.2 调试方法…

NC 添加IRule 后置前置规则

1、在保存后触发后置规则&#xff0c;找到保存的规则&#xff0c;在里面进行添加后置规则。 编写自己的规则&#xff0c;通过 CompareAroundProcesser 《AggCLMasterVo》 processor 的processor.addAfterRule(rule); 方法进行后置规则添加 Cl_SAVE_IRule &#xff1a; 实现 IR…

【API 管理】什么是 API 管理,为什么它很重要?

当今复杂的数字生态系统由许多相互关联的部分组成。API 作为看门人和连接器在其中发挥着关键作用——提供了许多最终用户甚至没有注意到的自动化机会和效率。 企业密切关注 API。它们对于应用程序、数据和各种客户交互的功能至关重要。 这使得 API 管理成为几乎每个部门的组织…

[计算机入门] 搜索文件

3.7 搜索文件 随着计算机的使用&#xff0c;里面存放的资料会越来越多&#xff0c;有些文件我们可能不记得存放在哪里了&#xff0c;这个时候就可以通过计算机自带的搜索功能进行搜索。 1、点击任务栏中的放大镜图标&#xff1a; 2、在弹出的窗口下方输入要查询的文件名&…