idea Springboot 电影推荐系统LayUI框架开发协同过滤算法web结构java编程计算机网页

一、源码特点
 springboot 电影推荐系统是一套完善的完整信息系统,结合mvc框架和LayUI框架完成本系统springboot dao bean  采用协同过滤算法进行推荐 ,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
前段主要技术 css jquery  LayUI框架
后端主要技术 Springboot  框架
数据库 mysql
开发工具 IDEA  JDK1.8

idea Springboot 电影推荐系统1


二、功能介绍
前台功能:
1)系统首页
2)公告浏览
3)电影浏览、查看电影详情 ,并记录用户浏览记录,系统采用协同过滤算法,根据用户的行为习惯进行推荐其他电影
4)电影评价
5)用户注册、登录


后台功能:
(1)管理员管理:对管理员信息进行添加、删除、修改和查看
(2)用户管理:对用户信息进行添加、删除、修改和查看
(3)公告管理:对公告信息进行添加、删除、修改和查看
(4)电影管理:对电影信息进行添加、删除、修改和查看,excel导入
(5)浏览管理:对浏览信息进行删除、修改和查看
(6)评价管理:对评价信息进行添加、删除、修改和查看 
(7)用户登录、个人信息修改

数据库设计

CREATE TABLE `gly` (
`glyid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',  PRIMARY KEY  (`glyid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `yonghu` (
`yhid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',
`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
`lxdz` VARCHAR(40) default NULL COMMENT '联系地址',  PRIMARY KEY  (`yhid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `gonggao` (
`ggid` int(11) NOT NULL auto_increment,
`bt` VARCHAR(40) default NULL COMMENT '标题',
`nr` VARCHAR(40) default NULL COMMENT '内容',
`fbsj` VARCHAR(40) default NULL COMMENT '发布时间',  PRIMARY KEY  (`ggid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `dianying` (
`dyid` int(11) NOT NULL auto_increment,
`dymc` VARCHAR(40) default NULL COMMENT '电影名称',
`js` VARCHAR(40) default NULL COMMENT '介绍',
`tp` VARCHAR(40) default NULL COMMENT '图片',
`zy` VARCHAR(40) default NULL COMMENT '主演',
`jq` VARCHAR(40) default NULL COMMENT '剧情',  PRIMARY KEY  (`dyid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `liulan` (
`llid` int(11) NOT NULL auto_increment,
`yh` VARCHAR(40) default NULL COMMENT '用户',
`dy` VARCHAR(40) default NULL COMMENT '电影',
`sj` VARCHAR(40) default NULL COMMENT '时间',  PRIMARY KEY  (`llid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `pingjia` (
`pjid` int(11) NOT NULL auto_increment,
`dy` VARCHAR(40) default NULL COMMENT '电影',
`pj` VARCHAR(40) default NULL COMMENT '评价',
`yh` VARCHAR(40) default NULL COMMENT '用户',
`sj` VARCHAR(40) default NULL COMMENT '时间',  PRIMARY KEY  (`pjid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

控制层代码设计

/**电影列表 查询dianying* */@RequestMapping(value = "listpage")public ModelAndView  listpage(HttpServletRequest request, HttpServletResponse response)  {try {request.setCharacterEncoding("gb2312");//强制字符集}catch(Exception e){e.printStackTrace();}Map<String,Object> map= new HashMap<String,Object>();ModelAndView mav = new ModelAndView();//初始化mav.setViewName("dianying/dianyinglist");//跳转jsp 页面String dyid=(String)request.getParameter("dyid");if(dyid!=null&&!dyid.equals("")){//判断电影编号// System.out.println(dyid);map.put("dyid",dyid);//拼接sql语句电影编号}String dymc=(String)request.getParameter("dymc");if(dymc!=null&&!dymc.equals("")){//判断电影名称// System.out.println(dymc);map.put("dymc",dymc);//拼接sql语句电影名称}String js=(String)request.getParameter("js");if(js!=null&&!js.equals("")){//判断介绍// System.out.println(js);map.put("js",js);//拼接sql语句介绍}String tp=(String)request.getParameter("tp");if(tp!=null&&!tp.equals("")){//判断图片// System.out.println(tp);map.put("tp",tp);//拼接sql语句图片}String zy=(String)request.getParameter("zy");if(zy!=null&&!zy.equals("")){//判断主演// System.out.println(zy);map.put("zy",zy);//拼接sql语句主演}String jq=(String)request.getParameter("jq");if(jq!=null&&!jq.equals("")){//判断剧情// System.out.println(jq);map.put("jq",jq);//拼接sql语句剧情}List<dianying> list=dianyingdao.getAll(map);//查询dianying 表数据返回 list对象mav.addObject("list",list);//赋值变量return mav;}/**电影添加方法 对表 dianying 进行添加* */@RequestMapping(value = "add")public ModelAndView  add(HttpServletRequest request, HttpServletResponse response){try {request.setCharacterEncoding("gb2312");//强制字符集}catch(Exception e){//捕获异常e.printStackTrace();}ModelAndView mav = new ModelAndView();//初始化mav.setViewName("dianying/dianyingadd");//跳转页面dianying bean=new dianying();String dyid=(String)request.getParameter("dyid");//电影编号 变量bean.setDyid(dyid);//赋值封装String dymc=(String)request.getParameter("dymc");//电影名称 变量bean.setDymc(dymc);//赋值封装String js=(String)request.getParameter("js");//介绍 变量bean.setJs(js);//赋值封装String tp=(String)request.getParameter("tp");//图片 变量bean.setTp(tp);//赋值封装String zy=(String)request.getParameter("zy");//主演 变量bean.setZy(zy);//赋值封装String jq=(String)request.getParameter("jq");//剧情 变量bean.setJq(jq);//赋值封装dianyingdao.add(bean);//执行 添加 dianying 添加操作request.setAttribute("msg", "<script>alert('添加成功');</script>");//操作提示return addpage(request,response);}/**电影添加页面 * */@RequestMapping(value = "addpage")public ModelAndView  addpage(HttpServletRequest request, HttpServletResponse response){try {request.setCharacterEncoding("gb2312");//强制字符集// request.setAttribute("conn",jdbcTemplate.getDataSource().getConnection());}catch(Exception e){//捕获异常e.printStackTrace();}ModelAndView mav = new ModelAndView();//初始化对象mav.setViewName("dianying/dianyingadd");//跳转页面对象return mav;}/**电影删除方法 对表 dianying 进行删除* */@RequestMapping(value = "del")public ModelAndView  del(HttpServletRequest request, HttpServletResponse response){String id=(String)request.getParameter("keyid");//获得 主键idModelAndView mav = new ModelAndView();// mav.setViewName("add/add");try{dianyingdao.delete(Integer.parseInt(id));//执行 删除 dianying 方法}catch(Exception e){e.printStackTrace();;}request.setAttribute("msg", "<script>alert('删除成功');</script>");//返回前台 操作提示return listpage(request,response);}/**电影查看方法 对表 dianying 进行查看* */@RequestMapping(value = "detail")public ModelAndView  detail(HttpServletRequest request, HttpServletResponse response){String id=(String)request.getParameter("keyid");//获得 主键idtry {request.setCharacterEncoding("gb2312");//强制字符集// request.setAttribute("conn",jdbcTemplate.getDataSource().getConnection());}catch(Exception e){e.printStackTrace();}dianying bean=new dianying();//初始对象电影ModelAndView mav = new ModelAndView();//初始化mav.setViewName("dianying/dianyingdetail");//跳转jsp页面try{bean=dianyingdao.getdianyingByID(Integer.parseInt(id));//查询获得当前dianying对象request.setAttribute("dyid", bean.getDyid());//电影编号request.setAttribute("dymc", bean.getDymc());//电影名称request.setAttribute("js", bean.getJs());//介绍request.setAttribute("tp", bean.getTp());//图片request.setAttribute("zy", bean.getZy());//主演request.setAttribute("jq", bean.getJq());//剧情}catch(Exception e){e.printStackTrace();;}return mav;}

核心算法设计

static {DBO db=new DBO();String sql="";ResultSet rs=null;///电影int i=0;sql="select * from dianying where 1=1";try{rs=db.query(sql);while(rs.next()){userSet.add(rs.getString("dyid"));//电影//    users[i]=rs.getString("spid");i++;}}catch(Exception e){e.printStackTrace();}users=new String[i-1];sql="select * from yonghu where 1=1";i=0;try{rs=db.query(sql);while(rs.next()){filmSet.add(rs.getString("yhm"));//用户//films[i]=rs.getString("yhm");i++;}}catch(Exception e){e.printStackTrace();}films=new String[i-1];score = getScore();}public static String outNearbyUserList(String user) { //user电影idDBO db=new DBO();Map scores = new HashMap();String sql="";ResultSet rs=null;///商品int i=0;sql="select * from dianying where 1=1";try{rs=db.query(sql);while(rs.next()){//   i++;if (rs.getString("dyid").equalsIgnoreCase(user)) {continue;}double score = getOSScore(user, rs.getString("dyid"));System.out.println("score="+score);scores.put(rs.getString("dyid"), String.valueOf(score));}db.close();}catch(Exception e){e.printStackTrace();}/*for (String tempUser : users) {if (tempUser.equalsIgnoreCase(user)) {continue;}double score = getOSScore(user, tempUser);System.out.println("score="+score);scores.put(tempUser, score);}*/System.out.println(scores.toString());TreeMapTest mp=new TreeMapTest();String a= mp.getMin(scores);System.out.println("a="+a);return a;}private static Double getOSScore(String user1, String user2) {HashMap user1Score = (HashMap) score.get(user1);HashMap user2Score = (HashMap) score.get(user2);double totalscore = 0.0;Iterator it = user1Score.keySet().iterator();while (it.hasNext()) {String film = (String) it.next();int a1 = (Integer) user1Score.get(film);int a2 = (Integer) user1Score.get(film);int b1 = (Integer) user2Score.get(film);int b2 = (Integer) user2Score.get(film);int a = a1 * a2 - b1 * b2;//System.out.println(Math.abs(a));totalscore += Math.sqrt(Math.abs(a));}return totalscore;}

三、注意事项
1、管理员账号:admin密码:admin 数据库配置文件src\main\resources  下的 application.properties
2、开发环境为IDEA开发,数据库为mysql,使用java语言开发。
3、数据库文件名是jspfilmsql 系统名称film
4、地址:qt/index.jsp 
四系统实现

协同过滤算法计算过程 在控制台打印

下载地址
https://download.csdn.net/download/qq_41221322/89059304

需要源码 其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA—抽象—定义抽象类Converter及其子类WeightConverter

同样&#xff0c;我们由这道题引出抽象类&#xff0c;抽象方法这个概念。 按下面要求定义类Converter及其子类WeightConverter 定义抽象类&#xff1a;Converter&#xff1a; 定义一个抽象类Converter&#xff0c;表示换算器&#xff0c;其定义的如下&#xff1a; 一个私有…

Git场景运用

git 脚本在开发中应用场景-CSDN博客 Git基础 Git基本运作流程 ​​​​​​​ (1) workspace->index->Repository ​ 本地写代码在workspace&#xff0c;add暂存到index&#xff0c;commit提交到本地Repository。多项目成员&#xff0c;每员对应本地仓库&#xff0c;各自…

机器学习(30)

文章目录 摘要一、文献阅读1. 题目2. abstract3. 网络架构3.1 Sequence Generative Adversarial Nets3.2 SeqGAN via Policy Gradient3.3 The Generative Model for Sequences3.4 The Discriminative Model for Sequences(CNN) 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过…

蓝桥杯刷题-13-子矩阵-二维滑动窗口 ಥ_ಥ

给定一个 n m &#xff08;n 行 m 列&#xff09;的矩阵。 设一个矩阵的价值为其所有数中的最大值和最小值的乘积。求给定矩阵的所有大小为 a b &#xff08;a 行 b 列&#xff09;的子矩阵的价值的和。 答案可能很大&#xff0c;你只需要输出答案对 998244353 取模后的结果。…

鸿蒙内核源码分析 (双向链表篇) | 谁是内核最重要结构体

双向链表是什么&#xff1f; 谁是鸿蒙内核最重要的结构体 &#xff1f; 一定是: LOS_DL_LIST(双向链表)&#xff0c; 它长这样。 typedef struct LOS_DL_LIST {struct LOS_DL_LIST *pstPrev; /**< Current nodes pointer to the previous node | 前驱节点(左手)*/struct L…

AFCI 应用笔记三、使用 mlflow 管理模型

1. 简介 由于 AI 神经网络涉及多种参数&#xff0c;需要频繁修改各种超参数&#xff0c;比如&#xff1a;learning rate&#xff0c;batchsize&#xff0c;filter numbers&#xff0c;alpha 等等&#xff0c;每个参数都有可能影响到模型最终的准确率&#xff0c;所以比较这些参…

如何保证全部流量走代理

最近因为某些原因&#xff0c;需要做一些确保高匿的事情&#xff0c;便花时间做了一定的调研&#xff0c;至于是什么事情这里不便多说。 本文主要还是聊聊我看到的一些使用代理软件误区和确保流量全部走代理的方法&#xff0c;甚至也可以说是Proxifier的用户使用手册&#xff…

2023年下半年中级软件设计师上午真题及答案解析

01 02 03 04 05 06 07 08 09 10 篇幅有限&#xff0c;私我获取免费完整 pdf文件

如何在Linux中安装软件

文章目录 一、Linux应用程序基础1.Linux软件安装包分类2.应用程序和系统命令的关系3.常见的软件包的封装类型 二、安装软件的方式1.RPM包管理工具2.yum安装3.编译 一、Linux应用程序基础 1.Linux软件安装包分类 Linux源码包&#xff1a; 实际上&#xff0c;源码包就是一大堆源…

海纳斯删除广告位

找到文件 vim /var/www/html/home.php 删除代码段 <div class"adleft" id"adleftContainer"><button onclick"closeAd()">关闭</button><a href"https://www.ecoo.top/ad.html" target"_blank">&l…

bugku-misc 啊哒

拿到题目得到一张图片 尝试查看属性看到照相机型号 应该是加密字符&#xff0c;用010打开图片查看源码 文件结尾看到50 4B&#xff0c;是压缩包形式并且看到flag.txt 猜测是文件包含 kali用foremost尝试分离图片 得到zip文件&#xff0c;打开显示需要密码 想到一开始图片属…

GESP Python编程五级认证真题 2024年3月

Python 五级 2024 年 03 月 1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 下面流程图在yr输入2024时&#xff0c;可以判定yr代表闰年&#xff0c;并输出 2月是29天 &#xff0c;则图中菱形框中应该填入&#xff08; &#xff09;。 A. (yr % 400 0…

LDR6328助力Type-C普及,便捷充电,绿色生活更精彩

随着科技的进步和全球统一接口的需求&#xff0c;Type-C接口正日益受到青睐。越来越多的设备正选择采纳这一先进的接口设计&#xff0c;它的普及无疑在改善着我们的日常生活。 在过往&#xff0c;许多小功率设备如小风扇、蓝牙音箱、桌面台灯以及家用加湿器等&#xff0c;都普遍…

在ChatGPT中,能用DALL·E 3编辑图片啦!

4月3日&#xff0c;OpenAI开始向部分用户&#xff0c;提供在ChatGPT中的DALLE 3图片编辑功能。 DALLE 3是OpenAI在2023年9月20日发布的一款文生图模型&#xff0c;其生成的图片效果可以与Midjourney、leonardo、ideogram等顶级产品媲美&#xff0c;随后被融合到ChatGPT中增强其…

20.2k stars项目搭建私人网盘界面美功能全

Nextcloud是一套用于创建网络硬盘的客户端&#xff0d;服务器软件。其功能与Dropbox相近&#xff0c;但Nextcloud是自由及开放源代码软件&#xff0c;每个人都可以在私人服务器上安装并执行它。 GitHub数据 20.2k stars561 watching3.2k forks 开源地址:https://github.com/ne…

博弈论(Nim+sg)

Nim游戏 给定 n 堆石子&#xff0c;两位玩家轮流操作&#xff0c;每次操作可以从任意一堆石子中拿走任意数量的石子&#xff08;可以拿完&#xff0c;但不能不拿&#xff09;&#xff0c;最后无法进行操作的人视为失败。 问如果两人都采用最优策略&#xff0c;先手是否必胜。…

Android Studio学习15——多页面情况下再看Activity生命周期

按返回键退出APP时&#xff1a; 走正常页面的退出流程&#xff1a;onPause–>onStop–>onDestroy(会Destroy,因为它从任务栈中退出了) 再点击图标回来时&#xff1a; 走正常页面的创建流程&#xff1a;onCreate–>onStart–>onResume 按Home键退出App时&#xff1a…

测试基础|为啥大多数功能测试会觉得测试平台不好用?自动化测试的几点思考

一、接口自动化到底要验证什么 个人觉得做什么事情前&#xff0c;应该想下做的动机和想要达成的目的&#xff0c;这样会减少很多不必要的弯路。 1. 自动化的原因 测试界普遍认为应该加自动化用于提高测试效率和保障&#xff1b; 测试kpi任务&#xff1b; 应对需要频繁执行…

0基础如何进入IT行业?

0基础如何进入IT行业&#xff1f; 简介&#xff1a;对于没有任何相关背景知识的人来说&#xff0c;如何才能成功进入IT行业&#xff1f;是否有一些特定的方法或技巧可以帮助他们实现这一目标&#xff1f; IT 行业可能是当今门槛最低的行业之一&#xff0c;想要进入 IT 行业&a…

【机器学习·浙江大学】机器学习概述、支持向量机SVM(线性模型)

机器学习概述 机器学习 特征提取(feature) 根据提取的特征构造算法&#xff0c;实现特定的任务⭐&#xff08;这门课程的重点&#xff1a;假设所有的特征已经存在且有效&#xff0c;如何根据这些特征来构造学习算法&#xff09; 如下图所示&#xff0c;机器学习主要就是来进行…