基于SpringBoot的企业人力资源管理系统设计与实现

1.引言

随着经济改革开放的发展,企业之间的竞争也越来越激烈,在这样的大环境下,企业要想立于不败之地,不仅要有好的商品,更要有一支强有力的团队,其本质就是人才。企业对人才的需求不断的增加,也导致人力资源管理的需求也在不断的变化。而传统的管理方法已经无法满足当下管理的形式,因此,可以通过互联网的方式对人力资源管理系统进行人才管理,从而节省额外的开支,提高管理水平。

企业人力资源管理的合理性是决定企业未来发展方向的重要环节。但是, 一些中小企业仍然存在一些基本的管理系统,无法实现管理的信息化和智能化。

很多企业考虑到设计系统的成本,所以宁愿使用价格低廉功能不健全的管理系统,虽然表面上看起来是为企业节约了成本,然而,在长期使用过程中,它仍 然浪费更多的人力,物力和财力。因此,为了真正节省成本并有效实现人力资源管理,有必要利用智能人力资源管理系统。提高人员管理效率,真正找到为公司省钱的方法。本系统基于企业人力资源管理的业务需求结合信息化的技术手段进行开发,保证系统能够智能化的完成企业管理所有工作,保证使用系统的稳定性和长久性的同时提高人力资源管理效率。

2.开发技术

2.1Java语言

Java是一种广泛使用的跨平台编程语言,由Sun Microsystems(现Oracle)公司于1995年推出。它具有简单、面向对象、健壮、安全和可移植等特点,被广泛应用于开发各种类型的应用程序和系统。

以下是Java语言的一些关键特点和描述:

(1)简单易学:Java借鉴了C++语言的语法,并去除了一些复杂和容易出错的特性,使得Java相对而言更简单易学。它具有清晰的语法结构、丰富的类库和强大的工具,使得开发人员能够更轻松地学习和使用Java。

(2)面向对象:Java是一种纯面向对象的编程语言。它支持面向对象的特性,如封装、继承和多态,使开发人员能够以更直观和模块化的方式构建和组织代码。面向对象的编程风格也有助于提高代码的可重用性和可维护性。

(3)跨平台性:Java具有很高的可移植性,一次编写、到处运行。它使用了Java虚拟机(JVM)作为平台中间层,将Java字节码转换为特定平台上的可执行代码。这使得Java程序能够在不同操作系统(如Windows、Linux、Mac等)和硬件上运行,为开发人员提供了广泛的目标环境。

(4)强大的类库和工具:Java具有强大且丰富的类库,提供了各种各样的预定义类和方法,以便于开发人员快速构建各种应用程序。这些类库包括网络、图形界面、数据库连接、加密、多线程等方面的功能。此外,Java还有丰富的开发工具,如集成开发环境(IDE)和调试器,帮助开发人员提高效率和开发质量。

(5)安全性:Java被设计为一种高度安全的语言。它提供了安全机制,如字节码验证和沙箱安全模型,用于防止潜在的安全漏洞和恶意操作。这使得Java在开发网络和分布式系统时具有较高的可信度和安全性。

(6)多线程支持:Java原生支持多线程编程,允许并发执行多个任务。通过使用线程,开发人员可以实现并行计算、提高程序的响应速度和处理能力。Java提供了内置的线程管理和同步机制,使得编写线程安全的代码变得更加容易。

总而言之,Java是一种功能强大、可移植、安全和易学的编程语言。它以面向对象编程的思想为基础,具有丰富的类库和工具支持。通过Java虚拟机的跨平台特性,开发人员能够一次编写代码,实现在多个操作系统和硬件上的运行。Java被广泛应用于开发桌面应用程序、企业级应用、移动应用和嵌入式系统等领域。

2.2SpringBoot

Spring Boot是一个用于快速构建容易配置的、独立的、生产级的Spring应用程序的框架。它是基于Spring框架的,并使用了约定优于配置的原则,旨在简化Spring应用程序的开发和部署。

以下是Spring Boot框架的一些关键特点和描述:

(1)简化的配置:Spring Boot通过约定优于配置的方式来配置Spring应用程序,让开发人员能够快速启动项目并进行开发。它自动配置许多常用的功能,如数据库连接、Web开发、安全性等,默认情况下遵循最佳实践。

(2)微服务支持:Spring Boot专注于构建基于微服务架构的应用程序。它提供了一些便利的特性和工具,如内嵌的应用服务器(如Tomcat、Jetty)、服务注册和发现、负载均衡等,使开发人员能够轻松构建和管理微服务。

(3)自动化依赖管理:Spring Boot通过自动化的依赖管理,简化了项目的依赖配置。它提供了一个叫做“Starter”的概念,即预定义的依赖包,可以一次性引入多个相关的依赖库。开发人员只需添加适当的Starter依赖项,Spring Boot将自动解析和引入所需的依赖。

(4)内嵌的Servlet容器:Spring Boot集成了内嵌的Servlet容器(如Tomcat、Jetty),使得开发和部署Web应用变得更加简单和便捷。开发人员无需手动安装和配置Servlet容器,只需编写代码,即可直接运行和测试应用程序。

(5)强大的监控和管理:Spring Boot提供了强大的监控和管理功能,使开发人员能够更好地了解应用程序的运行状况和性能指标。它集成了许多开箱即用的监控工具,如健康检查、度量指标、日志记录等,方便开发人员进行故障排查和性能优化。

(6)生态系统支持:Spring Boot作为Spring框架的衍生版本,能够充分利用Spring生态系统的各个方面。它可以轻松集成Spring框架的其他模块和扩展,如Spring Security、Spring Data等,为开发人员提供更丰富、更完整的功能和支持。

总而言之,Spring Boot是一个简化Spring应用程序开发的框架,它提供了诸多方便和便捷的功能,如简化的配置、微服务支持、自动化依赖管理等。通过使用Spring Boot,开发人员能够快速构建和部署高效、健壮的应用程序,并享受Spring生态系统的丰富功能和支持。

2.3Vue

Vue.js是一种流行的JavaScript框架,用于构建用户界面(UI),特别是单页应用程序。Vue以其简洁、响应式和灵活的特性受到开发者的欢迎,并且易于集成到现有项目中。

以下是Vue技术的一些关键特点和描述:

(1)响应式:Vue使用响应式的数据绑定机制。通过将数据和视图进行绑定,当数据发生变化时,视图会自动更新。这使得开发人员能够以一种直观和简洁的方式管理和响应数据的变化。

(2)组件化:Vue鼓励开发人员将应用程序拆分为多个可重用的组件。每个组件都有自己的模板、逻辑和样式,使得开发过程更加模块化和可维护。组件之间的通信通过props和事件来实现。

(3)虚拟DOM:Vue使用虚拟DOM来优化页面渲染性能。虚拟DOM是一个轻量级的JavaScript对象,表示真实的DOM结构。通过对比虚拟DOM的变化,Vue只更新实际需要改变的部分,提高了页面的渲染效率。

(4)模板语法:Vue提供了一种简洁而灵活的模板语法,用于声明式地将数据绑定到DOM。模板语法支持插值、指令和表达式,使得开发人员能够轻松地在模板中使用JavaScript逻辑和动态内容。

(5)路由和状态管理:Vue提供了Vue Router和Vuex等官方插件,用于实现路由和状态管理。Vue Router用于实现单页应用的路由功能,而Vuex则提供了集中式状态管理,方便多个组件之间共享和管理状态。

(6)生态系统和社区支持:Vue拥有活跃的开源社区和庞大的生态系统。许多第三方库和插件都与Vue无缝集成,提供丰富的功能和工具支持。Vue社区提供了大量的文档、教程和示例,为开发人员提供了学习和解决问题的资源。

通过使用Vue技术,开发人员能够构建交互式的用户界面,实现数据和视图的动态绑定。Vue的响应式、组件化和虚拟DOM等特性使得开发过程更加高效和灵活。同时,Vue的生态系统和社区支持提供了丰富的工具和资源,帮助开发人员更好地构建和维护Vue应用程序。

2.4Mysql

MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发。它被广泛应用于各种类型的应用程序,从小型个人网站到大型企业级应用程序。

以下是MySQL数据库的一些关键特点和描述:

(1)关系型数据库:MySQL是一种关系型数据库管理系统,基于表和关系的概念来组织和存储数据。它支持SQL(Structured Query Language)作为查询和管理数据库的标准语言。

(2)可靠和稳定:MySQL以其可靠性和稳定性而闻名,被许多大型组织用于处理重要的数据。它具有高度的可用性、容错性和数据完整性,适合处理企业级的大量数据。

(3)跨平台性:MySQL可以运行在多个操作系统上,包括Windows、Linux、Mac等。这使得开发人员可以在不同平台上使用MySQL来构建和部署应用程序。

(4)高性能:MySQL在处理大量数据时表现出色,并具有高效的读写速度。它进行了各种性能优化,如索引、查询优化和缓存机制等,以提供快速的数据访问和处理能力。

(5)可扩展性:MySQL具有良好的可扩展性,可以在不影响性能的情况下处理大量数据。它支持水平扩展和垂直扩展,允许通过添加更多服务器、分区和集群等方式来提高数据库的容量和性能。

(6)安全性:MySQL提供了多种安全机制来保护数据的安全性。它支持用户身份验证、访问控制、加密传输、事务处理等功能,可以保护敏感数据免受未授权访问和恶意攻击。

(7)丰富的功能:MySQL提供了丰富的功能和特性,如存储过程、触发器、外键约束、视图、备份和恢复等。这些功能使开发人员能够更灵活和高效地管理和操作数据库。

总而言之,MySQL是一种可靠、稳定且性能优秀的关系型数据库管理系统。它在可靠性、可扩展性和安全性方面表现出色,并且具有跨平台性和丰富的功能。作为开源软件,MySQL拥有庞大的用户社区和活跃的开发者群体,提供了大量的支持、文档和资源。无论是小型网站还是大型企业级应用程序,MySQL都是一个强大的选择。

3.功能设计

 该项目的研发主要采用web浏览器的设计模式。其系统结构如图3-1所示:

本系统是利用现代化的计算机网络技术将传统信息宣传方式整合,按照实践过程设计完成的。同时完善服务,初步设计一个企业人力资源系统平台以利于相关的事务操作。为了使系统在各项管理中发挥更大的作用,实现计算机信息化高效的管理,现将开发目标功能需求介绍如下:

(1)管理员登录模块

管理员有权进行系统企业人力资源平台的管理,但所有的注册以及权限的使用,都需经过超级管理员授权,管理员可以对部门管理、培训管理、招聘管理、请假管理、员工管理、考勤管理、薪酬管理。

(2)部门管理模块

拥有一定管理权限管理员,可进行部门管理列表的查看,以及对应的部门管理增加、删除、修改、查询操作。

(3)用户管理模块

拥有一定管理权限管理员,可进行用户列表的数据查看,以及对应的用户增加、删除、修改、查询操作。

(4)培训管理列表管理模块

拥有一定管理权限管理员,可进行用户培训管理列表的数据查看,以及对培训管理的修改操作。

4.实现效果展示

 

5.参考文章

 6.核心代码

@RestController
@RequestMapping("renren/checkmanger")
public class CheckMangerController {
    @Autowired
    private CheckMangerService checkMangerService;

    /**
     * 列表
     */
    @RequestMapping("/list")
    /*@RequiresPermissions("renren:checkmanger:list")*/
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = checkMangerService.queryPage(params);
        Object principal = SecurityUtils.getSubject().getPrincipal();
        SysUserEntity userEntity = (SysUserEntity) principal;
        return R.ok().put("page", page).put("user",userEntity.getUsername());
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    /*@RequiresPermissions("renren:checkmanger:info")*/
    public R info(@PathVariable("id") Integer id){
		CheckMangerEntity checkManger = checkMangerService.getById(id);

        return R.ok().put("checkManger", checkManger);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    /*@RequiresPermissions("renren:checkmanger:save")*/
    public R save(@RequestBody CheckMangerEntity checkManger){
        Object principal = SecurityUtils.getSubject().getPrincipal();
        SysUserEntity userEntity = (SysUserEntity) principal;
        QueryWrapper<CheckMangerEntity> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("staff_num",userEntity.getUserNum());
        List<CheckMangerEntity> list = checkMangerService.list(queryWrapper);
        //上班打卡
        if (checkManger.getRemark().equals("1")){
            if (list.size()>0){
                CheckMangerEntity checkMangerEntity = list.get(0);
                Date shanDa = checkMangerEntity.getShanDa();
                String format = DateUtils.format(shanDa, "yyyy-MM-dd");
                String format2 = DateUtils.format(new Date(), "yyyy-MM-dd");
                if (format.equals(format2)){
                    return R.error("今天已签到");
                }
            }
            checkManger.setShanDa(new Date());
        }
        if (checkManger.getRemark().equals("2")){
            if (list.size()>0){
                CheckMangerEntity checkMangerEntity = list.get(0);
                Date shanDa = checkMangerEntity.getXiaDa();
                String format = DateUtils.format(shanDa, "yyyy-MM-dd");
                if (format!=null){
                    String format2 = DateUtils.format(new Date(), "yyyy-MM-dd");
                    if (format.equals(format2)){
                        return R.error("今天已签到");
                    }
                }

            }
            CheckMangerEntity entity = list.get(0);
            entity.setXiaDa(new Date());
        /*    entity.setStaffNum(userEntity.getUserNum());
            entity.setPartName(userEntity.getUserPart());
            entity.setStaffName(userEntity.getUsereal());*/
            checkMangerService.updateById(entity);
            return R.ok();
        }

        checkManger.setStaffNum(userEntity.getUserNum());
        checkManger.setPartName(userEntity.getUserPart());
        checkManger.setStaffName(userEntity.getUsereal());


        checkMangerService.save(checkManger);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    /*@RequiresPermissions("renren:checkmanger:update")*/
    public R update(@RequestBody CheckMangerEntity checkManger){
		checkMangerService.updateById(checkManger);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    /*@RequiresPermissions("renren:checkmanger:delete")*/
    public R delete(@RequestBody Integer[] ids){
		checkMangerService.removeByIds(Arrays.asList(ids));

        return R.ok();
    }

}
@RestController
@RequestMapping("renren/coursemanager")
public class CourseManagerController {
    @Autowired
    private CourseManagerService courseManagerService;

    /**
     * 列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = courseManagerService.queryPage(params);

        return R.ok().put("page", page);
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Integer id){
		CourseManagerEntity courseManager = courseManagerService.getById(id);

        return R.ok().put("courseManager", courseManager);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody CourseManagerEntity courseManager){
		courseManagerService.save(courseManager);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody CourseManagerEntity courseManager){
		courseManagerService.updateById(courseManager);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
		courseManagerService.removeByIds(Arrays.asList(ids));

        return R.ok();
    }

}
@RestController
@RequestMapping("renren/coursetype")
public class CourseTypeController {
    @Autowired
    private CourseTypeService courseTypeService;

    /**
     * 列表
     */
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = courseTypeService.queryPage(params);

        return R.ok().put("page", page);
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Integer id){
		CourseTypeEntity courseType = courseTypeService.getById(id);

        return R.ok().put("courseType", courseType);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody CourseTypeEntity courseType){
		courseTypeService.save(courseType);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody CourseTypeEntity courseType){
		courseTypeService.updateById(courseType);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
		courseTypeService.removeByIds(Arrays.asList(ids));

        return R.ok();
    }

}
@RestController
@RequestMapping("renren/hupart")
public class HuPartController {
    @Autowired
    private HuPartService huPartService;

    /**
     * 列表
     */
    @RequestMapping("/list")
    /*@RequiresPermissions("renren:hupart:list")*/
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = huPartService.queryPage(params);

        return R.ok().put("page", page);
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    /*@RequiresPermissions("renren:hupart:info")*/
    public R info(@PathVariable("id") Integer id){
		HuPartEntity huPart = huPartService.getById(id);

        return R.ok().put("huPart", huPart);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    /*@RequiresPermissions("renren:hupart:save")*/
    public R save(@RequestBody HuPartEntity huPart){
		huPartService.save(huPart);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    /*@RequiresPermissions("renren:hupart:update")*/
    public R update(@RequestBody HuPartEntity huPart){
		huPartService.updateById(huPart);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
   /* @RequiresPermissions("renren:hupart:delete")*/
    public R delete(@RequestBody Integer[] ids){
		huPartService.removeByIds(Arrays.asList(ids));

        return R.ok();
    }

}
@RestController
@RequestMapping("renren/leavemanger")
public class LeaveMangerController {
    @Autowired
    private LeaveMangerService leaveMangerService;

    /**
     * 列表
     */
    @RequestMapping("/list")
    /*@RequiresPermissions("renren:leavemanger:list")*/
    public R list(@RequestParam Map<String, Object> params){
        PageUtils page = leaveMangerService.queryPage(params);

        Object principal = SecurityUtils.getSubject().getPrincipal();
        SysUserEntity userEntity = (SysUserEntity) principal;
        return R.ok().put("page", page).put("user",userEntity.getUsername());
    }


    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    /*@RequiresPermissions("renren:leavemanger:info")*/
    public R info(@PathVariable("id") Integer id){
		LeaveMangerEntity leaveManger = leaveMangerService.getById(id);

        return R.ok().put("leaveManger", leaveManger);
    }

    /**
     * 保存
     */
    @RequestMapping("/save")
    /*@RequiresPermissions("renren:leavemanger:save")*/
    public R save(@RequestBody LeaveMangerEntity leaveManger){
		leaveMangerService.save(leaveManger);

        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    /*@RequiresPermissions("renren:leavemanger:update")*/
    public R update(@RequestBody LeaveMangerEntity leaveManger){
		leaveMangerService.updateById(leaveManger);

        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    /*@RequiresPermissions("renren:leavemanger:delete")*/
    public R delete(@RequestBody Integer[] ids){
		leaveMangerService.removeByIds(Arrays.asList(ids));

        return R.ok();
    }

}

猜你喜欢

转载自blog.csdn.net/lf21qp/article/details/131691293