基于Springboot+Vue的Java项目-毕业就业信息管理系统开发实战(附演示视频+源码+LW)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:Java毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

🎀 Python毕业设计

🌎微信小程序毕业设计

开发环境

开发语言:Java

框架:Springboot+Vue

JDK版本:JDK1.8

服务器:tomcat7

数据库:mysql 5.7

数据库工具:Navicat12

开发软件:eclipse/myeclipse/idea

Maven包:Maven3.3.9

浏览器:谷歌浏览器

演示视频

springboot275毕业就业信息管理系统的录像

原版高清演示视频-编号275:
https://pan.quark.cn/s/5cda95b17ee0

源码下载地址:

https://download.csdn.net/download/2301_76953549/89099745

LW目录

【如需全文请按文末获取联系】

目录

一、项目简介

毕业就业信息管理系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现毕业就业信息管理系统的功能。其中管理员管理用户,新闻公告。

二、系统设计

2.1软件功能模块设计

为了让系统的编码可以顺利进行,特意对本系统功能进行细分设计,设计的系统功能结构见下图。

2.2数据库设计

(1)下图是学生实体和其具备的属性。

(2)下图是职位留言实体和其具备的属性。

(3)下图是公告信息实体和其具备的属性。

(5)下图是公司实体和其具备的属性。

(6)下图是就业统计实体和其具备的属性。

(9)下图是简历投递实体和其具备的属性。

三、系统项目部分截图

3.1学生信息管理

如图5.1显示的就是学生信息管理页面,此页面提供给管理员的功能有:学生信息的查询管理,可以删除学生信息、修改学生信息、新增学生信息,

还进行了对用户名称的模糊查询的条件

3.2公司信息管理

如图5.2显示的就是公司信息管理页面,此页面提供给管理员的功能有:查看已发布的公司信息数据,修改公司信息,公司信息作废,即可删除,还进行了对公司信息名称的模糊查询 公司信息信息的类型查询等等一些条件。

.

3.3公告类型管理

如图5.3显示的就是公告类型管理页面,此页面提供给管理员的功能有:根据公告类型进行条件查询,还可以对公告类型进行新增、修改、查询操作等等。

四、部分核心代码

4.1 用户部分

java 复制代码
package com.controller;

import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 简历
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/jianli")
public class JianliController {
    private static final Logger logger = LoggerFactory.getLogger(JianliController.class);

    @Autowired
    private JianliService jianliService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service
    @Autowired
    private YonghuService yonghuService;

    @Autowired
    private GongsiService gongsiService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("学生".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        else if("公司".equals(role))
            params.put("gongsiId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = jianliService.queryPage(params);

        //字典表数据转换
        List<JianliView> list =(List<JianliView>)page.getList();
        for(JianliView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        JianliEntity jianli = jianliService.selectById(id);
        if(jianli !=null){
            //entity转view
            JianliView view = new JianliView();
            BeanUtils.copyProperties( jianli , view );//把实体数据重构到view中

                //级联表
                YonghuEntity yonghu = yonghuService.selectById(jianli.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody JianliEntity jianli, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,jianli:{}",this.getClass().getName(),jianli.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("学生".equals(role))
            jianli.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<JianliEntity> queryWrapper = new EntityWrapper<JianliEntity>()
            .eq("yonghu_id", jianli.getYonghuId())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        JianliEntity jianliEntity = jianliService.selectOne(queryWrapper);
        if(jianliEntity==null){
            jianli.setCreateTime(new Date());
            jianliService.insert(jianli);
            return R.ok();
        }else {
            return R.error(511,"每个用户只能有一份简历");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody JianliEntity jianli, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,jianli:{}",this.getClass().getName(),jianli.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("学生".equals(role))
//            jianli.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<JianliEntity> queryWrapper = new EntityWrapper<JianliEntity>()
            .notIn("id",jianli.getId())
            .andNew()
            .eq("yonghu_id", jianli.getYonghuId())
            .eq("jianli_uuid_number", jianli.getJianliUuidNumber())
            .eq("jianli_name", jianli.getJianliName())
            .eq("jianli_xingming", jianli.getJianliXingming())
            .eq("jianli_types", jianli.getJianliTypes())
            .eq("jianli_xinzi", jianli.getJianliXinzi())
            .eq("jianli_xueli", jianli.getJianliXueli())
            .eq("jianli_jingli", jianli.getJianliJingli())
            .eq("sex_types", jianli.getSexTypes())
            .eq("jianli_phone", jianli.getJianliPhone())
            .eq("jianli_address", jianli.getJianliAddress())
            .eq("jiaoyu_text", jianli.getJiaoyuText())
            .eq("shixi_text", jianli.getShixiText())
            .eq("geren_text", jianli.getGerenText())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        JianliEntity jianliEntity = jianliService.selectOne(queryWrapper);
        if("".equals(jianli.getJianliPhoto()) || "null".equals(jianli.getJianliPhoto())){
                jianli.setJianliPhoto(null);
        }
        if(jianliEntity==null){
            jianliService.updateById(jianli);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        jianliService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        try {
            List<JianliEntity> jianliList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            JianliEntity jianliEntity = new JianliEntity();
//                            jianliEntity.setYonghuId(Integer.valueOf(data.get(0)));   //学生 要改的
//                            jianliEntity.setJianliUuidNumber(data.get(0));                    //简历唯一编号 要改的
//                            jianliEntity.setJianliName(data.get(0));                    //简历名称 要改的
//                            jianliEntity.setJianliXingming(data.get(0));                    //姓名 要改的
//                            jianliEntity.setJianliTypes(Integer.valueOf(data.get(0)));   //求职意向 要改的
//                            jianliEntity.setJianliXinzi(data.get(0));                    //期望工资 要改的
//                            jianliEntity.setJianliXueli(data.get(0));                    //学历 要改的
//                            jianliEntity.setJianliJingli(data.get(0));                    //工作经历 要改的
//                            jianliEntity.setSexTypes(Integer.valueOf(data.get(0)));   //性别 要改的
//                            jianliEntity.setJianliPhone(data.get(0));                    //手机号 要改的
//                            jianliEntity.setJianliPhoto("");//照片
//                            jianliEntity.setJianliAddress(data.get(0));                    //位置 要改的
//                            jianliEntity.setJiaoyuText(data.get(0));                    //教育经历 要改的
//                            jianliEntity.setShixiText(data.get(0));                    //实习或工作经历 要改的
//                            jianliEntity.setGerenText(data.get(0));                    //个人介绍 要改的
//                            jianliEntity.setCreateTime(date);//时间
                            jianliList.add(jianliEntity);


                            //把要查询是否重复的字段放入map中
                                //简历唯一编号
                                if(seachFields.containsKey("jianliUuidNumber")){
                                    List<String> jianliUuidNumber = seachFields.get("jianliUuidNumber");
                                    jianliUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List<String> jianliUuidNumber = new ArrayList<>();
                                    jianliUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("jianliUuidNumber",jianliUuidNumber);
                                }
                                //手机号
                                if(seachFields.containsKey("jianliPhone")){
                                    List<String> jianliPhone = seachFields.get("jianliPhone");
                                    jianliPhone.add(data.get(0));//要改的
                                }else{
                                    List<String> jianliPhone = new ArrayList<>();
                                    jianliPhone.add(data.get(0));//要改的
                                    seachFields.put("jianliPhone",jianliPhone);
                                }
                        }

                        //查询是否重复
                         //简历唯一编号
                        List<JianliEntity> jianliEntities_jianliUuidNumber = jianliService.selectList(new EntityWrapper<JianliEntity>().in("jianli_uuid_number", seachFields.get("jianliUuidNumber")));
                        if(jianliEntities_jianliUuidNumber.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(JianliEntity s:jianliEntities_jianliUuidNumber){
                                repeatFields.add(s.getJianliUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [简历唯一编号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                         //手机号
                        List<JianliEntity> jianliEntities_jianliPhone = jianliService.selectList(new EntityWrapper<JianliEntity>().in("jianli_phone", seachFields.get("jianliPhone")));
                        if(jianliEntities_jianliPhone.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(JianliEntity s:jianliEntities_jianliPhone){
                                repeatFields.add(s.getJianliPhone());
                            }
                            return R.error(511,"数据库的该表中的 [手机号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        jianliService.insertBatch(jianliList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }





    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));

        // 没有指定排序字段就默认id倒序
        if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
            params.put("orderBy","id");
        }
        PageUtils page = jianliService.queryPage(params);

        //字典表数据转换
        List<JianliView> list =(List<JianliView>)page.getList();
        for(JianliView c:list)
            dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
        return R.ok().put("data", page);
    }

    /**
    * 前端详情
    */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        JianliEntity jianli = jianliService.selectById(id);
            if(jianli !=null){


                //entity转view
                JianliView view = new JianliView();
                BeanUtils.copyProperties( jianli , view );//把实体数据重构到view中

                //级联表
                    YonghuEntity yonghu = yonghuService.selectById(jianli.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody JianliEntity jianli, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,jianli:{}",this.getClass().getName(),jianli.toString());
        Wrapper<JianliEntity> queryWrapper = new EntityWrapper<JianliEntity>()
            .eq("yonghu_id", jianli.getYonghuId())
            .eq("jianli_uuid_number", jianli.getJianliUuidNumber())
            .eq("jianli_name", jianli.getJianliName())
            .eq("jianli_xingming", jianli.getJianliXingming())
            .eq("jianli_types", jianli.getJianliTypes())
            .eq("jianli_xinzi", jianli.getJianliXinzi())
            .eq("jianli_xueli", jianli.getJianliXueli())
            .eq("jianli_jingli", jianli.getJianliJingli())
            .eq("sex_types", jianli.getSexTypes())
            .eq("jianli_phone", jianli.getJianliPhone())
            .eq("jianli_address", jianli.getJianliAddress())
            .eq("jiaoyu_text", jianli.getJiaoyuText())
            .eq("shixi_text", jianli.getShixiText())
            .eq("geren_text", jianli.getGerenText())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        JianliEntity jianliEntity = jianliService.selectOne(queryWrapper);
        if(jianliEntity==null){
            jianli.setCreateTime(new Date());
        jianliService.insert(jianli);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


}

获取源码或论文

如需对应的LW或源码,以及其他定制需求,也可以点我头像查看个人简介联系。

相关推荐
超级小忍14 分钟前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
小样还想跑15 分钟前
axios无感刷新token
前端·javascript·vue.js
程序无bug18 分钟前
Spring IoC注解式开发无敌详细(细节丰富)
java·后端
小莫分享20 分钟前
Java Lombok 入门
java
程序无bug20 分钟前
Spring 对于事务上的应用的详细说明
java·后端
食亨技术团队22 分钟前
被忽略的 SAAS 生命线:操作日志有多重要
java·后端
苦学编程的谢36 分钟前
Maven
java·maven·intellij-idea
考虑考虑38 分钟前
Maven 依赖范围(Scope)
java·后端·maven
用户3802258598241 小时前
vue3源码解析:响应式机制
前端·vue.js
张小洛1 小时前
Spring AOP 设计解密:代理对象生成、拦截器链调度与注解适配全流程源码解析
java·后端·spring·spring aop·aop