基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统

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

文末获取项目下载方式


一、项目背景介绍:

这个系统的研发背景是为了满足现代社会中不断增长的求职和招聘需求。随着经济的发展和人才市场的竞争加剧,传统的求职和招聘方式已经无法满足快速、高效、准确的需求。因此,我们决定开发基于SpringBoot和Vue的前后端分离的求职招聘系统。

在过去,求职者需要通过报纸、招聘会或口碑传播等方式了解和投递简历给潜在的雇主,而企业则需花费大量时间和精力进行筛选和面试。这种方式效率低下、信息不对称的问题导致了大量的资源浪费和错失机会。

为了解决这些问题,我们设计和开发了该求职招聘系统。它可以有效地连接求职者和企业,提供一个便捷和高效的求职招聘平台。通过该系统,求职者可以在一个地方浏览和搜索大量的招聘岗位,并且可以根据自己的条件和偏好来筛选和申请职位。同时,企业可以方便地发布招聘信息,并且可以根据招聘要求来筛选合适的候选人。这样,系统可以帮助双方节省时间和资源,同时提高招聘和求职的效率。

我们选择使用SpringBoot和Vue作为开发框架,因为它们具有良好的生态系统和强大的功能。SpringBoot提供了快速开发和易于维护的特性,而Vue则提供了灵活的前端开发和交互性。前后端分离的架构使得系统更加模块化和可扩展,并且可以支持大量并发用户。

通过研发这个基于SpringBoot和Vue的求职招聘系统,我们的目标是为求职者和企业提供一个高效、便捷和精准的招聘平台,推动人才市场的发展和经济的进步。

二、项目技术简介:

  1. JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。
    Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。
  3. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
  4. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  5. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。

三、系统功能模块介绍:

基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第1张图片

四、数据库设计:

1:tb_admin(tb_admin)

字段名 类型 默认值 列注释
id int NULL 编号
username varchar NULL 账号
password varchar NULL 密码

2:tb_enterprise(tb_enterprise)

字段名 类型 默认值 列注释
id int NULL 企业编号
username varchar NULL 用户名
password varchar NULL 密码
name varchar NULL 企业名称
email varchar NULL 电子邮箱
phone varchar NULL 联系电话
manage varchar NULL 从事行业
address varchar NULL 企业地址
introduce varchar NULL 公司简介

3:tb_recruitment(tb_recruitment)

字段名 类型 默认值 列注释
id int NULL 企业编号
username varchar NULL 用户名
name varchar NULL 企业名称
industry varchar NULL 所属行业
job varchar NULL 招聘职位
salary varchar NULL 招聘薪水
address varchar NULL 工作地点
release_time datetime NULL 发布时间
valid_time varchar NULL 有效时间
web varchar NULL 发布网站
education varchar NULL 学历
experience varchar NULL 经验
number varchar NULL 招聘人数
description longtext NULL 职位描述
company_profile longtext NULL 公司简介

4:tb_resume(tb_resume)

字段名 类型 默认值 列注释
id int NULL 编号
username varchar NULL 求职者姓名
industry varchar NULL 求职行业
work_experience varchar NULL 工作经验
address varchar NULL 工作地点
salary varchar NULL 期望薪资
intention_job varchar NULL 意向职位
job_status varchar NULL 求职状态
personal_introduction varchar NULL 个人介绍
create_time datetime NULL 发布时间
valid_time varchar NULL 有效时间

5:tb_user(tb_user)

字段名 类型 默认值 列注释
id int NULL 用户编号
username varchar NULL 用户名
password varchar NULL 密码
name varchar NULL 真实姓名
age varchar NULL 年龄
gender char NULL 性别
birthday varchar NULL 出生日期
school varchar NULL 毕业学校
phone varchar NULL 联系电话
email varchar NULL 电子邮箱
specialty varchar NULL 所学专业
education varchar NULL 最高学历

五、功能模块:

  1. 系统登录:在登录界面用户可以根据不同的角色账号进入不通的界面

  2. 管理员信息管理:管理员可以进行管理员账户的添加、删除、修改等操作,确保系统安全

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第2张图片

  3. 企业信息管理:管理员可以管理企业的注册信息,包括审核企业信息、修改企业信息等。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第3张图片

  4. 用户信息管理:管理员可以管理用户的注册信息,包括审核用户信息、修改用户权限等。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第4张图片

  5. 简历信息管理:管理员可以查看和管理用户提交的简历信息,包括审核简历、删除简历等操作。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第5张图片

  6. 招聘简历信息管理:管理员可以对企业发布的招聘信息进行匹配和推荐合适的简历。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第6张图片

  7. 企业信息管理:企业可以管理自己的企业信息,包括修改联系方式、上传企业介绍等。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第7张图片

  8. 职位招聘信息管理:企业可以发布新的职位招聘信息,包括填写职位描述、要求等。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第8张图片

  9. 简历查看:企业可以查看投递给自己的简历信息,包括评估简历的匹配度、筛选合适的候选人等。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第9张图片

  10. 个人信息管理:用户可以管理自己的个人信息,包括修改联系方式、完善个人简介等。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第10张图片

  11. 简历信息管理:用户可以填写和修改自己的简历信息,包括教育经历、工作经验等。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第11张图片

  12. 招聘信息查看:用户可以查看发布的各种招聘信息,包括浏览职位详情、投递简历等操作。

    基于JAVA,SpringBoot和Vue的前后端分离的求职招聘系统_第12张图片

六、代码示例:

    /**
     允许任何域名使用
     允许任何头
     允许任何方法(post、get等)
     */
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        // // addAllowedOrigin 不能设置为* 因为与 allowCredential 冲突,需要设置为具体前端开发地址
        corsConfiguration.addAllowedOrigin("http://localhost:8080");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        // allowCredential 需设置为true
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }
@Bean
    public DefaultKaptcha defaultKaptcha() {
        //验证码生成器
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        //配置
        Properties properties = new Properties();
        //是否有边框
        properties.setProperty("kaptcha.border", "yes");
        //设置边框颜色
        properties.setProperty("kaptcha.border.color", "105,179,90");
        //边框粗细度,默认为1
        // properties.setProperty("kaptcha.border.thickness","1");
        //验证码
        properties.setProperty("kaptcha.session.key", "code");
        //验证码文本字符颜色 默认为黑色
        properties.setProperty("kaptcha.textproducer.font.color", "blue");
        //设置字体样式
        properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
        //字体大小,默认40
        properties.setProperty("kaptcha.textproducer.font.size", "30");
        //验证码文本字符内容范围 默认为abced2345678gfynmnpwx
        // properties.setProperty("kaptcha.textproducer.char.string", "");
        //字符长度,默认为5
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        //字符间距 默认为2
        properties.setProperty("kaptcha.textproducer.char.space", "4");
        //验证码图片宽度 默认为200
        properties.setProperty("kaptcha.image.width", "100");
        //验证码图片高度 默认为40
        properties.setProperty("kaptcha.image.height", "40");
        Config config = new Config(properties);
        defaultKaptcha.setConfig(config);
        return defaultKaptcha;
    }
 //管理员登录
    @PostMapping(value = "/admin")
    public RestResult adminLogin( HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);
        Map<String, String> map = new HashMap<>();
        map.put("username",username);
        map.put("password",password);
        QueryWrapper<TbAdmin> wrapper = new QueryWrapper<>();
        wrapper.allEq(map,false);
        if(tbAdminService.getMap(wrapper).size()!=3) return generator.getFailResult("登录失败~~");
        System.out.println(tbAdminService.getMap(wrapper).size());
        String token = JwtUtil.getToken(map);
        return generator.getTokenResult(token);
    }

//    //用户登录
    @PostMapping(value = "/user")
    public RestResult userLogin( HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);
        Map<String, String> map = new HashMap<>();
        map.put("username",username);
        map.put("password",password);
        QueryWrapper<TbUser> wrapper = new QueryWrapper<>();
        wrapper.allEq(map,false);
        Map<String, Object> userMap = tbUserService.getMap(wrapper);
        Object backname = userMap.get("username");
        if(userMap.size()!=12) return generator.getFailResult("登录失败~~");
        System.out.println(tbUserService.getMap(wrapper).size());
        String token = JwtUtil.getToken(map);
        return generator.getSuccessResult(backname,token);
    }
//    //企业登录
    @PostMapping(value = "/entr")
    public RestResult entrLogin( HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username);
        System.out.println(password);
        Map<String, String> map = new HashMap<>();
        map.put("username",username);
        map.put("password",password);
        QueryWrapper<TbEnterprise> wrapper = new QueryWrapper<>();
        wrapper.allEq(map,false);
        Map<String, Object> entrMap = tbEnterpriseService.getMap(wrapper);
        Object backname = entrMap.get("username");
        if(entrMap.size()!=9) return generator.getFailResult("登录失败~~");
        System.out.println(tbEnterpriseService.getMap(wrapper).size());
        String token = JwtUtil.getToken(map);
        return generator.getSuccessResult(backname,token);
    }

七、项目总结:

开发基于SpringBoot和Vue的前后端分离的求职招聘系统是作为毕设作品进行设计的,这个毕设作品是我在校进行知识学习的一个毕业考核项目,也是检验我通过网络工具,图书工具等学习工具进行自学的能力水平,让我在根据程序开发的需求分析初步完成程序功能之外,还接触了程序的测试过程,了解程序测试的具体的过程,以及遇到问题怎么去寻找相应的解决办法等等,毕业作品的制作以及设计才是学校对我真正的考验。

在程序软件没能进行开发之前,我去了学校的图书馆借了有关数据库操作的书籍,在查看了sqlserver和mysql两种数据库的相关知识之后,我最后选择了我比较熟悉的mysql数据库。在编程语言的抉择上,由于自己之前接触过Java程序的开发,所以为了让我尽快在短时间内完成程序制作,我确定用Java编程语言进行程序编程。另外我从百度上下载了很多的有关信息增加,信息删除等操作的源代码,并通过不断调试以及完成配套的数据库的设计,开始完成程序的各个部分的功能。每当我粗心大意,致使我深陷程序开发困扰不能自拔之时,值得庆幸的是,我就会得到老师,还有我的寝室同学的耐心指导。

历经长达几个月的毕业作品制作,我凭借自己的知识技能,还有大家的指导帮助,能够在学校规定的时间段之内提交毕业作品。虽然已经算是完成了毕业作品,但是付出了这么多心血,还是想把这个作品做得更加完美一点。针对我的毕业作品学生信息管理系统,我觉得还有很多方面需要完善,第一就是界面上需要细微调整,比如色彩搭配有点违背广众的审美,需要细微调整,还有系统里面的字体大小也需要调大一点,太小的字体看起来有些费眼。然后在程序的功能上因为自己的入门开发水平的影响,所以目前只能做到这个境界,这个系统相比其他类似系统来说功能很简单,逻辑结构设计得也比较合理。

自己一个人完成程序的开发,我不仅亲自体验了程序的开发流程,体验到了程序开发的各种不易。这种体验也还加深了我对知识的尊重。学海无涯,知识不是大学短短四年就能学完的,在大学学到的知识在最终经历检验时,才会深深地明白自己的知识积累原来还很浅薄。所以今后不管身在何处,自己的学习心态一定要时刻体现出来,要深刻明白知识学到手里就是自己的。同时,自己也不必过多抱怨学到的知识没有用处,相信学到的知识总会有派上用处的那天。不要等到需要用时再去学习知识,那样就会导致自己错失很多本该属于自己的机遇。

八、源码获取:

大家点赞、收藏、关注、评论啦 、查看获取项目下载链接,博主联系方式

链接点击直达:下载链接

你可能感兴趣的:(优质毕业设计,java,spring,boot,vue.js,求职,招聘,前后端分离)