基于Mahout的电影推荐网站的设计与实现(JAVA语言实现)

2023-05-16

1.概要
本系统是一个以Mysql为数据库,利用Java servlet开发的基于B/S结构的电影推荐网站。服务器是Apache Tomcat,推荐库是Apache Mahout,在Eclipse环境下进行开发。采用的数据集是明尼苏达大学双子城计算机科学与工程系的研究实验室GroupLens研究实验室收集的电影数据。
2.需求分析
本系统的用户分为普通用户和管理员,普通用户的功能主要包含三个部分,分别是:登录查看所有电影,查看自己评分的电影并进行管理,点击查看由系统推荐的电影。管理员的功能包含两部分:登录管理用户信息和管理电影信息。用例图分别如下:
管理员用例
用户用例
3.数据库设计
数据来源:
数据来源:http://www.grouplens.org/node/12
数据库设计:
数据表分为三张主要表,一是存储用户评分数据集的电影评分表,二是储存电影信息的电影信息表,三是存储用户信息的用户表。
主要数据表
逻辑设计:
本系统的数据集的关系为:用户的信息和电影的信息通过电影评分表来进行联系,用户根据用户Id来和正在查看的电影的Id来在电影评分表中确定其对当前电影的评分。
数据集中的关系模型:
电影(电影Id,电影名称,发行日期,类型)
电影评分(用户Id,电影Id,评分时间)
用户(用户Id,密码,用户类型)
数据集中数据的实体关系图如图:
数据实体关系图
4.功能模块设计与实现
1.首页
网站首页在用户正确登录后可见,其功能是显示所有的电影。由后台代码获取到数据库中Movies表中的信息后,将其显示出来,电影海报在系统文件夹中以电影名称命名,首页需要将电影海报读取显示出来。由于有的海报数据的缺失,有的电影海报不能显示。
2.我的电影
我的电影页面包含在电影评分表中当前用户评过分的所有电影信息以及评分,用户在此页面可以对自己评分过的电影修改自己以前的评分,也可以删除此电影。
3.推荐模块的设计
利用mahout的推荐算法,分别实现了基于用户的推荐,基于内容的推荐和基于SlopeOne的推荐,部分代码如图:
推荐代码示例
4.管理模块
管理员登录后默认跳转到此页面,在此页面管理员可以对电影信息和用户信息进行管理。
系统整体的架构图如图:
整体功能图
5.项目截图
登录:
在这里插入图片描述
首页:
在这里插入图片描述
我的电影页:
在这里插入图片描述
推荐页:
在这里插入图片描述
在这里插入图片描述
管理页:
在这里插入图片描述
6.项目源码
源码私聊,有偿。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Mahout的电影推荐网站的设计与实现(JAVA语言实现) 的相关文章

  • 异步消息处理机制--线程

    多线程编程 执行一条耗时操作 xff0c 需放在子线程里运行 1 线程的基本用法 新建类继承 或实现接口 xff0c 重写方法 xff08 可直接内部类 xff09 class MyThread extends Thread run 处理具
  • 自定义适配器--ListView数据源的绑定

    ListView 利用自定义的适配器 xff0c 使用缓存机制优化 首先 xff0c ListView完整写法的三个步骤 xff1a 1 初始化数据源 2 定义适配器 3 加载适配器 一 数据源 1 定义数组保存已经准备好的数据源 2 定义
  • ViewPager + Fragment 仿微信滑动切换页卡

    1 新建类 xff0c 继承Fragment 导入的是v4的包 xff08 向下兼容 xff09 xff0c 利用布局加载器将其与xml结合起来 public class FragmentAddress extends Fragment 6
  • Android Studio 一些实用的快捷键

    Alt 43 Enter 自动导入提示 Ctrl 43 点击关键字 查看源码 Ctrl 43 tab 切换代码窗口 Ctrl 43 P 显示方法参数 Ctrl 43 Alt 43 t 弹出包围结构 xff08 if xff09 Ctrl 4
  • View、自定义View

    view绘制 1 控件架构 ViewGroup作为 父控件 xff0c 可包含多个View控件 xff0c 形成控件树 上层控件负责下层子控件的测量与绘制 xff0c 并传递交互事件 2 View的测量 绘制前提 96 96 96 onMe
  • 标题栏与水平滑动界面:TabLayout、ViewPager、Fragment;;引导页:ViewPager+View

    一 1 布局中添加TabLayout 控件 xff0c 需要添加依赖 xff1b 使用相关的属性 xff0c 需要定义命名空间 compile 39 com android support design 25 0 1 39 在app下的bu
  • SharedPerference

    1 定义前的考虑 1 xff09 定义存取方式 get put 2 xff09 明确数据类型 Int String Boolean 3 定义删除功能 单个 全部 2 实现步骤 public class SharedUtil public s
  • 圆形头像CircleImageView

    头像图片来源 照相机 相册 xff1b 利用弹出的dialog进行选择 1 添加依赖包 xff0c 添加控件 xff0c 相关属性 在app下的 build gradle 中添加 xff1a compile 39 de hdodenhof
  • RxVolley进行网络请求(get方式),获取json数据

    RxVolley 是一个基于 Volley的网络请求库 项目地址 xff1a https github com kymjs RxVolley 1 添加依赖 xff1a compile 39 com kymjs rxvolley rxvoll
  • SAP 寻找增强点的方法

    SAP中寻找增强的实现方法 SAP 增强已经发展过几代了 xff0c 可参考 SAP 标准教材 BC425 和 BC427 简单的说SAP的用户出口总共有四 代 1 第一代 基于源代码的增强 SAP提供一个空代码的子过程 xff0c 在这个
  • Sublime_text2快捷键

    1 Ctrl 43 Enter 在下一行输入 xff08 添加新的下一行 xff09 2 Ctrl 43 Shift 在上一行输入 xff08 添加新的上一行 xff09 3 Ctrl 43 L 选择当前行 4 Ctrl 43 K 43 B
  • jQuery基础

    1 应用jQuery库 xff1a lt script src 61 34 路径 名称 js 34 gt lt script gt 导入 外链式css样式 xff1a lt link rel 61 34 stylesheet 34 href
  • javaScript基础

    一 浏览器对象 1 window对象 xff1a 指当前的浏览器窗口 方法 xff1a 2 定 时器 xff1a 可设定一个时间之后 xff0c 再来运行 var timer 61 setInterval function 做的事情 xff
  • JavaScript深入浅出(进阶)

    1 数据类型 js是弱类型 xff0c 定义变量时不需要指定具体的数据类型 xff0c 因此会出现一些奇妙的事情 xff1a var num 61 23 number类型 num 61 34 23 34 string类型 34 23 34
  • H5

    一 总体变化 1 H5文档结构 span style font family SimSun font size 18px lt DOCTYPE html gt lt html gt lt head gt lt title gt 这是标题 l
  • JavaScript进阶之--DOM事件、动画(运动框架)

    DOM事件 一 事件流 描述的是从页面中接收事件的顺序 当你点击一个容器里的子控件时 xff0c 默认同时也点击了这个父容器 事件冒泡 ie xff1a 事件最开始由最具体的元素接收 xff0c 然后逐级向上传播到最不具体的结点 子 父 祖
  • CSS3基础与进阶

    一 CSS3新增的选择器 1 属性选择器 1 xff09 att 61 39 val 39 属性att的值以 34 val 34 开头的元素 2 xff09 att 61 39 val 39 结尾 3 xff09 att 61 39 val
  • macbook pro 识别不到外接显示器

    背景 最近在公司和家都用到外接显示器 回到家后合上mac 外接也跟着没信号了 重启后直接不识别了 机型macbookpro15 2018 系统版本10 15 4 1 确保 线材 外接显示器都没有问题 找其他电脑测试 2 不勾选 再次登录时重
  • cisco anyConnect 不用每次输入密码的办法

    opt cisco anyconnect bin vpn s connect HOST ADDRESS lt lt 34 EOF 34 VPN USERNAME VPN PASSWORD y EOF 可保存为sh 直接运行
  • Python 3.7 有什么新变化 - 其他语言更改&新模块

    其他语言更改 await 表达式和包含 async for 子句的推导在格式化字符串文本中的表达式中是非法的 xff0c 因为 实现 在Python 3 7中 xff0c 这个限制被取消了 现在可以将超过 255 个参数传递给函数 xff0

随机推荐