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

news/2024/5/21 4:33:55

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

💞当前专栏: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目录

【如需全文请按文末获取联系】
在这里插入图片描述
在这里插入图片描述

目录

  • 开发环境
  • 演示视频
  • 源码下载地址:
  • LW目录
  • 一、项目简介
  • 二、系统设计
    • 2.1软件功能模块设计
    • 2.2数据库设计
  • 三、系统项目部分截图
    • 3.1学生信息管理
    • 3.2公司信息管理
    • 3.3公告类型管理
  • 四、部分核心代码
    • 4.1 用户部分
  • 获取源码或论文

一、项目简介

毕业就业信息管理系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为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 用户部分


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);@Autowiredprivate JianliService jianliService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DictionaryService dictionaryService;//级联表service@Autowiredprivate YonghuService yonghuService;@Autowiredprivate 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转viewJianliView 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转viewJianliView 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或源码,以及其他定制需求,也可以点我头像查看个人简介联系。


http://www.mrgr.cn/p/02465772

相关文章

鸿蒙开发接口Ability框架:【@ohos.application.Want (Want)】

Want Want模块提供系统的基本通信组件的能力。 说明&#xff1a; 本模块首批接口从API version 8 开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import Want from ohos.application.Want; 开发前请熟悉鸿蒙开发指导文档&#xff1…

Python | Leetcode Python题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; class Solution:def sortColors(self, nums: List[int]) -> None:n len(nums)p0, p2 0, n - 1i 0while i < p2:while i < p2 and nums[i] 2:nums[i], nums[p2] nums[p2], nums[i]p2 - 1if nums[i] 0:nums[i], nums[p0] num…

绘画作品3d数字云展厅提升大众的艺术鉴赏和欣赏能力

3D虚拟展厅作为未来艺术的展示途径&#xff0c;正逐渐成为文化创意产业蓬勃发展的重要引擎。这一创新形式不仅打破了传统艺术展览的局限性&#xff0c;更以其独特的魅力吸引着全球观众的目光。 3D虚拟艺术品展厅以其独特的魅力&#xff0c;助力提升大众的艺术鉴赏和欣赏能力。观…

HTTP 1.1 与 HTTP 1.0

什么是HTTP HTTP 就是一个 超文本传输协议 协议 : 双方 约定 发送的 域名 数据长度 连接(长连接还是短连接) 格式(UTF-8那些) 传输 :数据虽然是在 A 和 B 之间传输&#xff0c;但允许中间有中转或接力。 超文本:图片、视频、压缩包,在HTTP里都是文本 HTTP 常见状态码 比如 20…

[附源码]石器时代_恐龙宝贝内购版_三网H5手游_附GM

石器时代之恐龙宝贝内购版_三网H5经典怀旧Q萌全网通手游_Linux服务端源码_视频架设教程_GM多功能授权后台_CDK授权后台 本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了…

苹果电脑内存清理神器CleanMyMac2024中文版下载

很多朋友在使用mac电脑一段时间后&#xff0c;可能都会发现&#xff0c;自己的电脑不知道什么原因开始有些卡顿。其实这主要因为内存被占用过多&#xff0c;及时地清理不必要的内存占用&#xff0c;可以为mac减负&#xff0c;也能让电脑的运行变得更加流畅。那么问题来了&#…

C# 和 Qt 相比的一些优势

C# 和 Qt 都是流行的软件开发工具&#xff0c;它们各自具有不同的优势&#xff0c;适用于不同的开发场景。以下是 C# 和 Qt 相比的一些优势。相比之下&#xff0c;Qt 也有其独特的优势&#xff0c;特别是在跨平台 GUI 应用程序开发方面。然而&#xff0c;C# 的这些优势使得它在…

韩顺平0基础学Java——第8天

p155-168 数组&#xff08;第六章&#xff09; 数组可以存放多个同一类型的数据&#xff0c;数组也是一种数据类型&#xff08;引用类型&#xff09;。 即&#xff0c;数组就是一组数据~ 例&#xff1a;double [] hens {1,2,3,4,5,6}; 新建了一组鸡&#xff0c;里面有6个。…

【VMware vSAN】升级 vSAN 基准测试工具 HCIBench 2.8.2 至 2.8.3版本。

HCIBench 是一个HCI超融合基础设施基准测试工具,它本质上是围绕流行且经过验证的开源基准测试工具(Vdbench 和 Fio)的自动化包装器,可以更轻松地跨 HCI 集群进行自动化测试。HCIBench 旨在以一致且可控的方式简化和加速客户 POC 性能测试。该工具完全自动化部署测试虚拟机、…

攻略:ChatGPT3.5~4.0(中文版)国内无限制免费版(附网址)【2024年5月最新更新】

一、什么是ChatGPT&#xff1f; 1、ChatGPT的全名是Chat Generative Pre-trained Transformer&#xff0c;其中"chat"表示聊天。"GPT"则是由三部分组成&#xff1a;生成式&#xff08;generative&#xff09;意味着具有创造力&#xff1b;预训练&#xff0…

linux正则表达式

一、linux中哪些命令支持正则表达式 grep/awk/sed 二、linux正则表达式匹配符含义^,以啥字符开头 $,以啥字符结尾 [0-9]{n,m},匹配0到9的数字n到m次 [a-zA-Z]{n,m},匹配26个因为字母n到m次 .,任意某个单字符 *,匹配前面一个字符或者一个表达式任意次(0,无穷) \,转义字符,…

Vue3父子组件通信

在写vue项目的时候,组件间通信是十分重要的 举个例子这是一个header组件,点击登录会弹出login组件login组件是集成在header组件里面的,也就是说header是login的父组件 在header组件中是通过showLogin变量来控制login组件是否显示的 我的需求是点击登录显示登陆组件,登录成功…

【VMware vSAN】升级vSAN基准测试工具HCIBench 2.8.2 至 2.8.3版本。

HCIBench 是一个HCI超融合基础设施基准测试工具,它本质上是围绕流行且经过验证的开源基准测试工具(Vdbench 和 Fio)的自动化包装器,可以更轻松地跨 HCI 集群进行自动化测试。HCIBench 旨在以一致且可控的方式简化和加速客户 POC 性能测试。该工具完全自动化部署测试虚拟机、…

python学习日记

前记 写这篇博客的目的是博主觉得自己对python语法不够熟悉。。所以尝试通过leetcode写几道题熟悉一下列表/元组等类型的操作,但是写完感觉算法能力太弱了,写出来的代码不够简洁 一、python的一些基本数据类型 列表列表:用[]定义,类似于数组;用list()创建 可变的数据类型…

C118【模板】李超线段树 P4254 [JSOI2008] Blue Mary 开公司

视频链接: Luogu P4254 [JSOI2008] Blue Mary 开公司// 李超线段树 O(nlognlogn) #include <iostream> #include <cstring> #include <algorithm> using namespace std;#define N 50005 #define ls u<<1 #define rs u<<1|1 int n,cnt; struc…

uniapp日期区间选择器

uniapp日期区间选择器 在 uniapp 中创建一个简单的自定义日期范围的日期区间选择器&#xff1a; - 限制有效日期范围开始日期为 2024-01-01&#xff0c;结束日期为当日&#xff1b; - 默认日期区间为当日向前计算的7日区间&#xff1b; - 选择开始时间后&#xff0c;判断不可大…

时序仿真中阻塞赋值和非阻塞赋值的区别

1 实验设置 1.1 功能模块编写 设置8位的变量c,通过非阻塞赋值的方式,将同样为8位的变量a和变量b之间按位与的结果赋值给c,代码如下: module test_a4_and_b4(clk,a,b,c, );input wire clk;input wire [7:0] a;input wire [7:0] b;output reg [7:0] c = 0;//非阻塞赋值a…

免单优选销售模式:创新电商策略引领消费新潮流

免单优选销售模式作为一种创新的电商销售模式&#xff0c;其核心在于通过降低商品价格、设置合理的奖励机制&#xff0c;并结合社交网络的传播力&#xff0c;有效地激发了消费者的购买欲望&#xff0c;实现了销售的快速增长。 一、合规经营&#xff0c;建立信任 在免单优选模式…

项目冲刺——第四篇Scrum冲刺博客

作业所属课程 所属课程作业要求 作业要求作业目标 总结第三天的敏捷开发,安排好第四天敏捷开发冲刺一、站立式会议 1、会议图片2、昨天已完成的内容成员 任务肖杨、梁丽贤 完成贴子发布模块设计黄诃华、欧文杰 完成邮箱发送功能功能姚佳如、李慧娣 完成个人信息界面的设计廖莹…

【第三章】推荐系统冷启动问题

推荐系统需要根据用户的历史行为和兴趣预测用户未来的行为和兴趣,在没有足够初始数据的情况下,设计个性化推荐系统并且让用户对推荐结果满意从而愿意使用推荐系统,就是冷启动的问题。 3.1 冷启动问题简介用户冷启动:新用户没有历史数据 物品冷启动:将新物品推荐给可能对它…