基于java,SpringBoot和VUE的求职招聘简历管理系统设计

news2024/11/25 5:52:30

摘要

基于Java, Spring Boot和Vue的求职招聘管理系统是一个为了简化求职者与雇主间互动流程而设计的现代化在线平台。该系统后端采用Spring Boot框架,以便快速搭建具有自动配置、安全性和事务管理等特性的RESTful API服务,而前端则使用Vue.js框架构建动态且高效的单页面应用程序(SPA)。

系统提供职位发布、简历投递等功能,并为管理员提供后台管理功能如用户管理和数据分析。数据库选择上,系统使用MySQL或其他关系型数据库来存储用户信息、职位详情和申请记录等数据。整合了Spring Security进行身份验证和授权,确保了系统数据的安全性。系统设计考虑了不同用户角色的需求,支持多用户类型操作,并实现了实时消息通知功能,提升了用户体验。界面设计简洁明了,操作直观方便,同时前后端分离架构有利于搜索引擎优化,提升网站的可发现性。

功能介绍

系统分为三种角色:管理员、求职者和企业用户。

管理员:实现了对求职者和企业用户的信息管理;管理员可以发布图文资讯。

求职者:注册登录、查看资讯、可以发布简历信息(主动选择提交给某个企业)、修改个人信息、和企业用户在线交流;

企业用户:注册登录、查看资讯、可以发布招聘信息、修改企业信息、和求职者在线交流。

技术介绍

后端:Java语言的Spring Boot框架、MySQL数据库、Maven依赖管理等;

前端:Vue、Element UI等。

后端代码展示

public class SysCarouselController {
    @Autowired
    private ResultGenerator generator;
    @Autowired
    private SysCarouselService sysCarouselService;

    //查询管理员账号的所有信息
    @PostMapping("/allInfo")
    public RestResult carouselAllInfo(HttpServletRequest request) {
        QueryWrapper<SysCarousel> wrapper = new QueryWrapper<>();
        wrapper.eq("valid_flag",1);
        List<SysCarousel> list = sysCarouselService.list(wrapper);
        if (list != null) {
            return generator.getSuccessResult(list);
        } else {
            return generator.getFailResult("没有数据");
        }
    }

    // 管理者注册
    @PostMapping("/editOneInfo")
    public RestResult editOneInfo( HttpServletRequest request) {
        SysCarousel sysCarousel = JSON.parseObject(request.getParameter("data"),SysCarousel.class);
        boolean res = false;
        if(sysCarousel.getId()==null){
            sysCarousel.setValidFlag(1);
            sysCarousel.setCreateTime(new Date());
            sysCarousel.setUpdateTime(new Date());
            setPic(sysCarousel);
            res = sysCarouselService.save(sysCarousel);
        }else{
            sysCarousel.setUpdateTime(new Date());
            setPic(sysCarousel);
            res = sysCarouselService.updateById(sysCarousel);
        }
        if (res) {
            return generator.getSuccessResult("编辑成功");
        } else {
            return generator.getFailResult("编辑失败!!");
        }
    }

    @RequestMapping(value = "/getFile/{type}/{path}")
    public void getPicById(@PathVariable int type,@PathVariable String path, HttpServletRequest request, HttpServletResponse response) {
        path = SysInfo.FILE_PATH +path;
        // 设置编码
        response.setCharacterEncoding("UTF-8");
        FileInputStream objInputStream = null;
        ServletOutputStream objOutStream = null;
        String[] imgArr = path.split("\\.");
        String fileType = imgArr[imgArr.length-1];
        response.setContentType(type==0?"image/"+fileType:"audio/"+fileType);
        response.setHeader("Content-Disposition", "attachment;fileName="+new Date().getTime()+"."+fileType);
        try{
            objInputStream= new FileInputStream(path);
            objOutStream = response.getOutputStream();
            int aRead = 0;
            while ((aRead = objInputStream.read()) != -1 & objInputStream != null) {
                objOutStream.write(aRead);
            }
            objOutStream.flush();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            try {
                objOutStream.close();
            }catch (IOException e) {
            }
        }
    }

    public void setPic(SysCarousel sysCarousel){
        if(StringUtils.isNotEmpty(sysCarousel.getPic()) && sysCarousel.getPic().length()>100 ){
            String fileName = CommonFunction.SaveBase64Pic(sysCarousel.getPic());
            sysCarousel.setPic(fileName);
        }
    }

}

前端代码展示

<template>
  <div>
    <h1>搜索</h1>
    <el-form>
      <el-input class="query" v-model="query" placeholder="请输入账号搜索" clearable @keyup.enter.native="getRecruitlist"></el-input>
      <el-button type="success" icon="el-icon-search" circle @click="getRecruitlist"></el-button>
    </el-form>

    <h1>招聘信息</h1>
    <el-table :data="recruitlist" border>
      <el-table-column type="index" label="#"></el-table-column>
      <el-table-column prop="name" label="企业名称"></el-table-column>
      <el-table-column prop="industry" label="所属行业"></el-table-column>
      <el-table-column prop="job" label="招聘职位"></el-table-column>
      <el-table-column prop="salary" label="招聘薪水"></el-table-column>
      <el-table-column prop="address" label="工作地点"></el-table-column>
      <el-table-column prop="releaseTime" label="发布时间"></el-table-column>
      <el-table-column prop="validTime" label="有效时间"></el-table-column>
      <el-table-column prop="web" label="发布网站"></el-table-column>
      <el-table-column prop="education" label="学历"></el-table-column>
      <el-table-column prop="experience" label="经验"></el-table-column>
      <el-table-column prop="number" label="招聘人数"></el-table-column>
      <el-table-column prop="description" label="职位描述"></el-table-column>
      <el-table-column prop="companyProfile" label="公司简介"></el-table-column>

      <el-table-column
        fixed="right"
        label="操作"
        width="100" v-if="showUser">
        <template slot-scope="scope">
          <el-popconfirm
            confirm-button-text='提交简历'
            cancel-button-text='算了'
            icon="el-icon-info"
            icon-color="red"
            title="确定要提交简历吗?"
            @confirm="addInfo(scope.row.username)"
          >
            <el-button slot="reference" type="text" size="small">提交简历</el-button>
          </el-popconfirm>
          </template>
        </el-table-column>
      <el-table-column
        fixed="right"
        label="操作"
        width="100"
        v-if="show">
        <template slot-scope="scope">
          <el-button @click="showEditDialog(scope.row.username)" type="text" size="small">编辑</el-button>
          <el-popconfirm
            confirm-button-text='确定'
            cancel-button-text='算了'
            icon="el-icon-info"
            icon-color="red"
            title="确定要删除这条内容吗?"
            @confirm=deleteInfo(scope.row.id)
          >
          <el-button slot="reference" type="text" size="small">删除</el-button>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>

    <!--    编辑-->
    <el-dialog title="编辑" :close-on-click-modal="false" :visible.sync="editDialog">
      <el-form status-icon :model="editForm" ref="editFormRef"
               label-width="70px">
        <el-form-item label="企业名称" prop="name">
          <el-input type="text" v-model="editForm.name"></el-input>
        </el-form-item>
        <el-form-item label="所属行业" prop="industry">
          <el-input show-password type="password" v-model="editForm.industry"></el-input>
        </el-form-item>
        <el-form-item label="招聘职位" prop="job">
          <el-input type="text" v-model="editForm.job"></el-input>
        </el-form-item>
        <el-form-item label="招聘薪水" prop="salary">
          <el-input type="text" v-model="editForm.salary"></el-input>
        </el-form-item>
        <el-form-item label="工作地点" prop="address">
          <el-input type="text" v-model="editForm.address"></el-input>
        </el-form-item>
        <el-form-item label="发布时间" prop="releaseTime">
          <el-input type="text" v-model="editForm.releaseTime" disabled></el-input>
        </el-form-item>
        <el-form-item label="有效时间" prop="validTime">
          <el-input type="text" v-model="editForm.validTime"></el-input>
        </el-form-item>
        <el-form-item label="发布网站" prop="web">
          <el-input type="text" v-model="editForm.web"></el-input>
        </el-form-item>
        <el-form-item label="学历" prop="education">
          <el-input type="text" v-model="editForm.education"></el-input>
        </el-form-item>
        <el-form-item label="经验" prop="experience">
          <el-input type="text" v-model="editForm.experience"></el-input>
        </el-form-item>
        <el-form-item label="招聘人数" prop="number">
          <el-input type="text" v-model="editForm.number"></el-input>
        </el-form-item>
        <el-form-item label="职位描述" prop="description">
          <el-input type="text" v-model="editForm.description"></el-input>
        </el-form-item>
        <el-form-item label="公司简介" prop="companyProfile">
          <el-input type="text" v-model="editForm.companyProfile"></el-input>
        </el-form-item>
      </el-form>
      <div class="register-button" slot="footer">
        <el-button @click="editDialog=false">取 消</el-button>
        <el-button type="primary" @click="editInfo('editFormRef')">提交修改</el-button>
      </div>
    </el-dialog>
  </div>
</template>

演示视频

基于Spring Boot和Vue求职招聘简历管理系统设计

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

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

相关文章

UE5入门学习笔记(六)——编译低版本插件

对于有些低版本的插件&#xff0c;可以通过此方法自己编译到高版本而无需等待插件作者更新 使用工具&#xff1a;如图所示 步骤1&#xff1a;打开cmd&#xff0c;并使用cd命令切换到此目录 步骤2&#xff1a;输入如下指令 RunUAT.bat BuildPlugin -Plugin“路径1” -Package“…

Vitis HLS 学习笔记--MAXI手动控制突发传输

目录 1. 简介 2. MAXI 突发传输详解 2.1 突发传输的前置条件 2.2 hls::burst_maxi 详解 2.2.1 基本知识 2.2.2 hls::burst_maxi 构造函数 2.2.3 hls::burst_maxi 读取方法 2.2.4 hls::burst_maxi 写入方法 2.3 示例一 2.4 示例二 3. 总结 1. 简介 这篇文章探讨了在…

Java 新手上路常见的5个经典问题,你遇到过吗?

当我们开始学习一门新的编程语言或者开发平台时&#xff0c;经常会遇到一些常见的问题。这些问题不仅是学习过程中的一部分&#xff0c;也是成长和提高的机会。 1. 空指针异常&#xff08;NullPointerException&#xff09; 空指针异常是 Java 开发中最常见的问题之一。它的产…

【AI大模型应用开发】3. RAG初探 - 动手实现一个最简单的RAG应用

0. 什么是RAG 大模型也不是万能的&#xff0c;也有局限性。 LLM 的知识不是实时的LLM 可能不知道你私有的领域/业务知识 RAG&#xff08;Retrieval Augmented Generation&#xff09;顾名思义&#xff1a;通过检索的方法来增强生成模型的能力。你可以把这个过程想象成开卷考…

TCP协议在物联网中的实战

一、TCP协议介绍 网上对TCP协议介绍众多&#xff0c;本人按照自己的理解简单介绍一下。 TCP&#xff08;Transmission Control Protocol&#xff0c; 传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输控制层通信协议。 1.1 协议机制 1.1.1 三次握手 &…

基于Springboot的民宿管理平台

基于SpringbootVue的民宿管理平台设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 民宿信息 后台登录 后台首页 用户管理 商家管理 民宿信息管理 房间类型管理 …

C. Assembly via Remainders

C.通过余数组装 每次测试时限&#xff1a;2 秒 每次测试的内存限制&#xff1a;256 兆字节 输入&#xff1a;标准输入 输出&#xff1a;标准输出 思路分析 我们用arr数组存放输入的数据,用brr代表代表答案数组,我们可以看到答案的第一位是都是arr的首位1,然后我们观察可…

【研发管理】产品经理知识体系-组合管理

导读&#xff1a;新产品开发的组合管理是一个重要的过程&#xff0c;它涉及到对一系列新产品开发项目进行策略性选择、优先级排序、资源分配和监控。这个过程旨在确保企业能够最大化地利用有限的资源&#xff0c;以实现其战略目标。 目录 1、组合管理、五大目标 2、组合管理的…

Numerical Analysis(byRichard.L..Burden)【pdf高清英文原版】

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

Linux下top命令指标说明

目录 Linux下top命令指标说明1. 概览2. CPU利用率3. 内存利用率4. 进程信息 Linux下top命令指标说明 在Linux系统中&#xff0c;top 命令是一个用于实时监视系统运行状态的工具。通过 top 命令&#xff0c;我们可以了解系统的负载情况、CPU利用率、内存使用情况以及各个进程的…

k8s环境部署gpu以及CUDA兼容性分析

本文记录和学习在实用gpu搭建k8s支持上层应用时的功能实践和遇到的问题。 1. 基础概念 CUDA本质上就是NVIDIA专为通用高性能并行计算设计的一套计算平台和编程模型&#xff0c;换句话使用GPU并行编程的规范方法&#xff0c;所以CUDA在软件层面包含了众多库&#xff0c; 那这里…

《QT实用小工具·五十一》带动画的 CheckBox

1、概述 源码放在文章末尾 该项目实现了带动画效果的多选框&#xff0c;鼠标放在上面或者选中都会呈现炫酷的动画效果&#xff0c;demo演示如下&#xff1a; 项目部分代码如下所示&#xff1a; #ifndef LINEARCHECKBOX_H #define LINEARCHECKBOX_H#include <QCheckBox> …

图像处理1,灰度,data,for循环批处理图片,图片属性查看,图片单通道查看,椒盐噪声的生成,滤波处理,图像分割

图像处理1 灰度处理data库的使用for循环批处理图像对图像属性的查看图片类型图片尺寸图片宽度图像高度通道数总像素个数最大像素值最小像素值&#xff0c;像素平均值图像点像素值 for循环分别显示图像rgb通道椒盐噪声的生成中值滤波处理高斯模糊处理图像切割 灰度处理 from sk…

多国语言免费在线客服系统源码,网站在线客服系统,网页在线客服软件在线聊天通讯平台

详情介绍 多国语言免费在线客服系统源码,网站在线客服系统,网页在线客服软件在线聊天通讯平台 新款在线客服系统全开源无加密:多商户、国际化多语言、智能机器人、自动回复、语音聊天、 文件发送、系统强力防黑加固、不限坐席、国际外贸、超多功能 支持手机移动端和PC网页…

如何从Mac电脑恢复任何删除的视频

Microsoft Office是包括Mac用户在内的人们在世界各地创建文档时使用的最佳软件之一。该软件允许您创建任何类型的文件&#xff0c;如演示文稿、帐户文件和书面文件。您可以使用 MS Office 来完成。所有Microsoft文档都可以在Mac上使用。大多数情况下&#xff0c;您处理文档&…

私有开源LLM实例的三个考虑因素

原文地址&#xff1a;three-considerations-for-private-open-source-llm-instances 2024 年 4 月 29 日 在生产应用中使用商业 LLM APIs 会带来明确且经过充分研究的风险。因此&#xff0c;企业越来越多地转向利用开源的私有托管LLM实例&#xff0c;并通过RAG技术进行增强。 介…

RCE学习

从最近的xyctf中&#xff0c;最大的感受就是自己的rce基础并不牢固&#xff0c;所以马上来恶补一下 漏洞成因 php和其他语言有很多能够执行系统命令或执行其他php代码的函数&#xff0c;因为开发者的使用不当&#xff0c;使得用户能够控制传递给执行命令的函数的参数&#xf…

【C++题解】1300. 小明暑假的零花钱

问题&#xff1a;1300. 小明暑假的零花钱 类型&#xff1a;多分支结构 题目描述&#xff1a; 小明同学的妈妈在期末考试之后决定根据小明的考试成绩奖励小明不同的暑假零花钱&#xff0c;如果考试成绩在90 分以上&#xff08;包括 90 分&#xff09;&#xff0c;零花钱是成绩…

clang:在 Win10 上编译 MIDI 音乐程序

先从 Microsoft C Build Tools - Visual Studio 下载 1.73GB 安装 "Microsoft C Build Tools“ 访问 Swift.org - Download Swift 找到 Windows 10&#xff1a;x86_64 下载 swift-5.10-RELEASE-windows10.exe 大约490MB 建议安装在 D:\Swift\ &#xff0c;安装后大约占…

【Linux系统编程】32.线程同步、锁的使用、互斥锁管理

目录 线程同步 锁的使用 注意事项 pthread_mutex_init 注意 参数mutex 参数attr 返回值 动态初始化 静态初始化 pthread_mutex_destroy 参数mutex 返回值 pthread_mutex_lock 参数mutex 返回值 pthread_mutex_unlock 参数mutex 返回值 pthread_mutex_trylo…