就业信息追踪|基于Springboot+Vue开发实现就业信息追踪系统

简介: 就业信息追踪|基于Springboot+Vue开发实现就业信息追踪系统

项目编号:BS-GX-048

前言:

大学毕业生毕业信息的存档,大学毕业生就业信息的了解,如果没有一个完善的大学毕业生毕业追踪信息管理系统,学校管理人员的工作量就会大大增加。同时大学毕业生信息的手工登录与查询,是一项非常繁重而枯燥的劳动,每年大学毕业生的变化都需要重新规划,耗费许多人力和物力。因此在中国的互联网科技发展飞速发展的今天,应用数据库技术实现毕业生信息的管理是可行而必要的工作。

一,项目简介

本项目分为管理员和学生两个角色,主要有以下模块:系统管理模块、管理员管理模块以及学生应用管理模块。系统管理包括登录和注册;管理员管理模块包括个人中心、专业信息管理、学生信息管理、招聘信息管理、就业信息管理、管理员管理;学生管理模块包括个人中心、招聘信息管理、就业信息管理。

本项目分为管理员和学生两个角色,主要有以下模块:系统管理模块、管理员管理模块以及学生应用管理模块。系统管理包括登录和注册;管理员管理模块包括个人中心、专业信息管理、学生信息管理、招聘信息管理、就业信息管理、管理员管理;学生管理模块包括个人中心、招聘信息管理、就业信息管理。

系统管理模块:管理员登录,判断信息是否正确,正确后即可登录,进入管理员界面;学生登录,判断信息是否正确,正确后即可登录,进入学生界面。

管理员管理模块:管理员登录成功后,可在个人中心修改自己的密码和用户名,在专业信息管理管理员将所有毕业学生的专业、辅导员、专业人数和就业人数等信息汇总进行添加,修改,查询,删除。在学生管理中管理员通过对学生学号、姓名、性别、专业名称、毕业走向(考研、考公、参军、出国留学、灵活就业、创业)等信息进行汇总,然后健出表格,对其进行学生信息的添加、修改、查询、产出。在招聘信息管理中管理员通过对校招企业的工作岗位需求的要求、薪资待遇、工作时间、招聘人数以及负责人的基本信息进行汇总,之后可对其进行信息添加、修改、查询、删除。在就业信息管理中管理员将毕业就业生就业信息进行汇总(就职单位,单位性质,职位名称,就业时间,工资,学号,姓名,专业名称)对其进行管理。管理员可以管理多个管理员账号。

学生应用管理模块:学生登录成功后,可在个人中心修改密码以及对个人信息姓名、性别、头像、手机号和专业名称的修改。在招聘信息中可以查询学生所喜欢的企业,职位等等以及了解该企业的基本信息。在就业信息中学生可以编写出自己所在的工作企业及其基本信息(单位性质,职位名称,工资)以及个人的学校信息(学号、姓名、专业名称)。

二,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

前端:Vue,Element-ui

后端:SprinBoot,MybatisPlus

三,系统展示

用户登陆

学生注册

专业信息维护

学生信息管理

招聘信息管理

就业信息管理

管理员信息管理

学生登陆系统后的功能

个人信息管理

招聘信息查询

个人就业信息维护

四,核心代码展示

package com.controller;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.service.ConfigService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.Map;
/**
 * 登录相关
 */
@RequestMapping("config")
@RestController
public class ConfigController{
  @Autowired
  private ConfigService configService;
  /**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ConfigEntity config){
        EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
      PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params));
        return R.ok().put("data", page);
    }
  /**
     * 列表
     */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ConfigEntity config){
        EntityWrapper<ConfigEntity> ew = new EntityWrapper<ConfigEntity>();
      PageUtils page = configService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, config), params), params));
        return R.ok().put("data", page);
    }
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        ConfigEntity config = configService.selectById(id);
        return R.ok().put("data", config);
    }
    /**
     * 详情
     */
    @IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") String id){
        ConfigEntity config = configService.selectById(id);
        return R.ok().put("data", config);
    }
    /**
     * 根据name获取信息
     */
    @RequestMapping("/info")
    public R infoByName(@RequestParam String name){
        ConfigEntity config = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
        return R.ok().put("data", config);
    }
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody ConfigEntity config){
//      ValidatorUtils.validateEntity(config);
      configService.insert(config);
        return R.ok();
    }
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody ConfigEntity config){
//        ValidatorUtils.validateEntity(config);
        configService.updateById(config);//全部更新
        return R.ok();
    }
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
      configService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}
package com.controller;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.JiuyexinxiEntity;
import com.entity.view.JiuyexinxiView;
import com.service.JiuyexinxiService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.*;
/**
 * 就业信息
 * 后端接口
 * @author 
 * @email 
 * @date 2022-10-16 19:10:54
 */
@RestController
@RequestMapping("/jiuyexinxi")
public class JiuyexinxiController {
    @Autowired
    private JiuyexinxiService jiuyexinxiService;
    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, JiuyexinxiEntity jiuyexinxi,
                  HttpServletRequest request){
    String tableName = request.getSession().getAttribute("tableName").toString();
    if(tableName.equals("xuesheng")) {
      jiuyexinxi.setXuehao((String)request.getSession().getAttribute("username"));
    }
        EntityWrapper<JiuyexinxiEntity> ew = new EntityWrapper<JiuyexinxiEntity>();
    PageUtils page = jiuyexinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiuyexinxi), params), params));
        return R.ok().put("data", page);
    }
    /**
     * 前端列表
     */
  @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, JiuyexinxiEntity jiuyexinxi,
                  HttpServletRequest request){
        EntityWrapper<JiuyexinxiEntity> ew = new EntityWrapper<JiuyexinxiEntity>();
    PageUtils page = jiuyexinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, jiuyexinxi), params), params));
        return R.ok().put("data", page);
    }
  /**
     * 列表
     */
    @RequestMapping("/lists")
    public R list(JiuyexinxiEntity jiuyexinxi){
        EntityWrapper<JiuyexinxiEntity> ew = new EntityWrapper<JiuyexinxiEntity>();
        ew.allEq(MPUtil.allEQMapPre( jiuyexinxi, "jiuyexinxi"));
        return R.ok().put("data", jiuyexinxiService.selectListView(ew));
    }
   /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(JiuyexinxiEntity jiuyexinxi){
        EntityWrapper<JiuyexinxiEntity> ew = new EntityWrapper<JiuyexinxiEntity>();
    ew.allEq(MPUtil.allEQMapPre( jiuyexinxi, "jiuyexinxi"));
    JiuyexinxiView jiuyexinxiView =  jiuyexinxiService.selectView(ew);
    return R.ok("查询就业信息成功").put("data", jiuyexinxiView);
    }
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        JiuyexinxiEntity jiuyexinxi = jiuyexinxiService.selectById(id);
        return R.ok().put("data", jiuyexinxi);
    }
    /**
     * 前端详情
     */
  @IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        JiuyexinxiEntity jiuyexinxi = jiuyexinxiService.selectById(id);
        return R.ok().put("data", jiuyexinxi);
    }
    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody JiuyexinxiEntity jiuyexinxi, HttpServletRequest request){
      jiuyexinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
      //ValidatorUtils.validateEntity(jiuyexinxi);
        jiuyexinxiService.insert(jiuyexinxi);
        return R.ok();
    }
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody JiuyexinxiEntity jiuyexinxi, HttpServletRequest request){
      jiuyexinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
      //ValidatorUtils.validateEntity(jiuyexinxi);
        jiuyexinxiService.insert(jiuyexinxi);
        return R.ok();
    }
    /**
     * 修改
     */
    @RequestMapping("/update")
    @Transactional
    public R update(@RequestBody JiuyexinxiEntity jiuyexinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(jiuyexinxi);
        jiuyexinxiService.updateById(jiuyexinxi);//全部更新
        return R.ok();
    }
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        jiuyexinxiService.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<JiuyexinxiEntity> wrapper = new EntityWrapper<JiuyexinxiEntity>();
    if(map.get("remindstart")!=null) {
      wrapper.ge(columnName, map.get("remindstart"));
    }
    if(map.get("remindend")!=null) {
      wrapper.le(columnName, map.get("remindend"));
    }
    String tableName = request.getSession().getAttribute("tableName").toString();
    if(tableName.equals("xuesheng")) {
      wrapper.eq("xuehao", (String)request.getSession().getAttribute("username"));
    }
    int count = jiuyexinxiService.selectCount(wrapper);
    return R.ok().put("count", count);
  }
    /**
     * 查询所有工资
     */
    @RequestMapping("/getAllGongzi")
    public R getAllGongzi(){
        List<JiuyexinxiEntity> list = jiuyexinxiService.selectList(null);
//        System.out.println("list = " + list);
        return R.ok().put("list",list);
    }
    /**
     * 查询所有单位性质
     */
    @RequestMapping("/getAlldanweixingzhi")
    public R getAlldanweixingzhi(){
        List<Integer> list = jiuyexinxiService.tongjijiuyexinxi();
//        System.out.println("list = " + list);
        return R.ok().put("list",list);
    }
}
package com.controller;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.UsersEntity;
import com.service.TokenService;
import com.service.UsersService;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.Map;
/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UsersController{
  @Autowired
  private UsersService userService;
  @Autowired
  private TokenService tokenService;
  /**
   * 登录
   */
  @IgnoreAuth
  @PostMapping(value = "/login")
  public R login(String username, String password, String captcha, HttpServletRequest request) {
    UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
    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);
  }
  /**
   * 注册
   */
  @IgnoreAuth
  @PostMapping(value = "/register")
  public R register(@RequestBody UsersEntity user){
//      ValidatorUtils.validateEntity(user);
      if(userService.selectOne(new EntityWrapper<UsersEntity>().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){
      UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().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, UsersEntity user){
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
      PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }
  /**
     * 列表
     */
    @RequestMapping("/list")
    public R list(UsersEntity user){
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
        ew.allEq(MPUtil.allEQMapPre( user, "user"));
        return R.ok().put("data", userService.selectListView(ew));
    }
    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UsersEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
      Long id = (Long)request.getSession().getAttribute("userId");
        UsersEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UsersEntity user){
//      ValidatorUtils.validateEntity(user);
      if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
        return R.error("用户已存在");
      }
        userService.insert(user);
        return R.ok();
    }
    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UsersEntity user){
//        ValidatorUtils.validateEntity(user);
      UsersEntity u = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername()));
      if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
        return R.error("用户名已存在。");
      }
        userService.updateById(user);//全部更新
        return R.ok();
    }
    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

五,项目总结

我国高等学校基层学生管理工作的头绪多,内容杂,管理细,要求高,传统管理办法已基本不适应新形势的要求。大学生就业信息的管理是学校日常工作中的重要组成部分。高校招生规模的逐步扩大和认识制度的改革,毕业学生人数将不断增加,而对大学毕业生管理的人员则相对减少。为了实现学生就业追踪,更好的验证学校人才培养效果,开发此系统。大学毕业生就业跟踪系统是学校和大学毕业生双方的沟通而建立的一套现代信息化管理系统,通过这套系统,可以使学校、大学毕业生根据各自所需,及时交流,有效合作,实现“双赢”的局面。随着中国的互联网科技发展的快速发展,人们已经进入了信息时代,人们获得信息并进行相关信息的交流已经不再只是报纸、电视、广播等传统媒体,尤其是大学毕业生的毕业走向:就业、考研、考公、参军、出国、创业,更需要大量的就业信息。如果学校能够提供一个大学毕业生的就业追踪信息平台,就能够快速有效的帮助学生了解大学毕业后走向信息,并且可以让老师或者管理员能够轻松有效率地浏览所有的学生就业信息,因此本课题的选择具有一定的实践意义。

大学毕业生毕业信息的存档,大学毕业生就业信息的了解,如果没有一个完善的大学毕业生毕业追踪信息管理系统,学校管理人员的工作量就会大大增加。同时大学毕业生信息的手工登录与查询,是一项非常繁重而枯燥的劳动,每年大学毕业生的变化都需要重新规划,耗费许多人力和物力。因此在中国的互联网科技发展飞速发展的今天,应用数据库技术实现毕业生信息的管理是可行而必要的工作。

一直以来人们使用传统人工的方式管理大学毕业生信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间长了,将产生大量的文件和资料,这对于查找.更新和维护都带来了不少的困难。

相关文章
|
6天前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
18 0
|
9天前
|
JavaScript 前端开发 BI
采用前后端分离Vue,Ant-Design技术开发的(手麻系统成品源码)适用于三甲医院
开发环境 技术架构:前后端分离 开发语言:C#.net6.0 开发工具:vs2022,vscode 前端框架:Vue,Ant-Design 后端框架:百小僧开源框架 数 据 库:sqlserver2019
25 4
采用前后端分离Vue,Ant-Design技术开发的(手麻系统成品源码)适用于三甲医院
|
11天前
|
JavaScript 测试技术 开发者
Vue 3 Vuex:构建更强大的状态管理系统
Vue 3 Vuex:构建更强大的状态管理系统
21 1
|
14天前
|
JavaScript 前端开发 开发者
Vue的响应式原理:深入探索Vue的响应式系统与依赖追踪
【4月更文挑战第24天】Vue的响应式原理通过JavaScript getter/setter实现,当数据变化时自动更新视图。它创建Watcher对象收集依赖,并通过依赖追踪机制精确通知更新。当属性改变,setter触发更新相关Watcher,重新执行操作以反映数据最新状态。Vue的响应式系统结合依赖追踪,有效提高性能,简化复杂应用的开发,但对某些复杂数据结构需额外处理。
|
18天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的4S店客户管理系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的4S店客户管理系统的详细设计和实现
43 4
|
18天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的在线课堂微信小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的在线课堂微信小程序的详细设计和实现
29 3
|
18天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的微信课堂助手小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的微信课堂助手小程序的详细设计和实现
51 3
|
18天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的商品展示的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的商品展示的详细设计和实现
29 3
|
18天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的电子商城购物平台的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的电子商城购物平台的详细设计和实现
48 3
|
18天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的英语学习交流平台的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的英语学习交流平台的详细设计和实现
29 2