基于个性化推荐的图书网站设计与实现
项目描述
临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问题,今天给在家介绍一篇基于个性化推荐的图书网站设计与实现。
功能需求
本系统就是为了解决这一问题而提出的,立足于产品的特点,结合电子商务的技术手段以及协同过滤推荐算法,实现具有个性化推荐的产品商城。本系统采用 SpringBoot 作为基础的脚手架管理所有框架及技术,使用SpringCloud 连接前后端的所有服务。前端服务采用的是 Spring MVC 配合 Vuetify 作为展示页面,Spark 处理用户及商品记录生成推荐统计表供前端页面展示。具有创建便捷, 运行高效,高内聚低耦合的特点。
基于统计的推荐主要分为:历史评价最多的商品统计、最近 30 天最多评价商品统计、和优质商品统计。
历史热门商品统计是通过商品评分表中的商品 ID、商品评分的个数来进行的统计得出的。按照商品 ID 查询有评分记录的商品,统计商品个数按照从大到小,保存到历史热门表中。
最近热门商品统计是通过商品评分表中的商品 ID、商品评分的个数以及评分时间的年月进行统计得出的。按照评分年月和商品 ID 分组,按照评分年月和评分数量从大到小排序,保存到近期热门商品表中。
优质商品统计是通过商品评分表中的商品 ID 以及商品评分的平均值进行的统计。以商品 ID 进行分组,对商品平均得分降序排列,保存到商品平均得分表中。
统计推荐算法是为了提供基础的推荐,也是推荐中最常用的手段,随着推荐算法的发展,它们的弊端也越来越明显,但是很多商城任然沿用,只是在其中穿插了很多个性化的推荐。
基于物品的协同过滤推荐算法
基于物品的协同过滤系统算法的适用性强是使用最广泛的推荐算法。众多行业、
公司都应用其产生了巨大的盈利。由于用户的数量不断增长,用户的喜好矩阵的计算变得愈发困难,而且根据人的喜好所做出的推荐很难作出解释,因为人的喜好根据人的心情做出不同的行为,很难以量化。因此,亚马逊公司提出了“基于物品的协同过滤算法。
这里可以使用余弦相似度来进行计算,因为余弦相似度可以避免出现热门的物品.
用户喜欢 Hadoop 和 Spark 两个技术。然后 ItemCF 会为这两个技术找出和它们最类似的 3 门技术,然后计算用户对每种技术的兴趣程度。比如,ItemCF 给用户推荐 Hive,是因为这门技术和 Hadoop 相似,相似度为 0.6,而且这门技术也和 Spark 相似,相似度是 0.7。考虑到,用户对 Hadoop 的兴趣度是 1.5,对 Spark 的兴趣度是 0.8,那么用户对 Hive 的兴趣度就是 1.5 x 0.6 + 0.8 x 0.7 = 1.46。
具备以下功能:
1)用户注册和登录: 用户可以用游客身份浏览系统,在浏览系统时,系统会随机的进行图书推荐,但用户不能购买图书,只有注册并登录后才可以进行图书交易。
2)登录验证: 验证用户身份,用JavaScript中的正则表达式来判断用户的合法性,实现用户登录。
3)修改个人密码: 对注册的用户密码进行修改。
4)个人信息管理: 用户登录后可查看修改个人信息。
5)书籍浏览:用户进入首页后可浏览书籍及详细信息。
6)查询书籍:用户可以根据自己的喜好搜索书籍。
7)添加购物车:浏览过程中有意向的书籍可以添加购物车,添加购物车后,系统会根据买家有意向购买的这些书籍的书类进行第二次推荐。
8)生成订单:确认书籍信息,提交订单,生成订单号。
9)收货地址:用户可以保存多个个人收获地址,在下单时直接选择自己的收货地址,用户可以对收货地址进行增删改。
10)推荐书籍:新用户首次登录选择自己喜好书籍,根据其选项个性推荐书籍。根据用户的浏览记录或是否加入购物车做推荐书籍功能。
11)订单评价:用户对已购买的书籍可以做打分评价,书籍的总体评分根据所有评价该书籍的评分求平均值获得,并在推荐书籍页面按书籍所获评分的平均值进行前后顺序的推荐。
后台管理系统面向系统的管理者,帮助卖家管理商品信息,管理前台商城的数据, 实现的功能如下:
1)后台登陆:后台管理员通过选择权限登陆后台。
2)书籍管理: 通过编号查找相关书籍,对书籍名称、类别等信息进行及时的修改。
3)会员管理: 管理注册的用户信息,实现用户的添加、修改、删除等。
4)订单管理: 查看订单,了解顾客购买情况,及时处理交易情况。
系统功能模块框架图
部分效果图
首页推荐
商品详情
用户管理
图书分类界面
商品管理
订单管理
数据库设计
系统中用到了36张表,针对每个表都进行了设计,下面对部分核心表进行汇总罗列展示。
(1)用户信息表
(2)订单信息表
(3)喜欢记录信息表
(4)书籍信息表
部分代码
@Overridepublic ResultInfo findBorderByUid(int uid) {ResultInfo info = new ResultInfo();List<Border> borderByUid = borderDaoImpl.findBorderByUid(uid);if (borderByUid.size() != 0){List<Map> mapList = new ArrayList<Map>();for (int i = 0; i < borderByUid.size(); i++) {Book bookByBid = bookDaoImpl.findBookByBid(borderByUid.get(i).getBid());Address addressByAdid = addressDaoImpl.findAddressByAdid(borderByUid.get(i).getAdid());Map<String,Object> map = new HashMap<String,Object>();map.put("boid",borderByUid.get(i).getBoid());map.put("bname",bookByBid.getBname());map.put("bonum",borderByUid.get(i).getBonum());map.put("boprice",borderByUid.get(i).getBoprice());map.put("botime",borderByUid.get(i).getBotime());map.put("address",addressByAdid);//判断当前山沟是否评价if (borderDaoImpl.findBorderByBoid(borderByUid.get(i).getBoid()).getScore() != 0){map.put("isevaluate","已评价");}else {map.put("isevaluate","未评价");map.put("bid",bookByBid.getBid());}mapList.add(map);}info.setFlag(true);info.setData(mapList);return info;}else {info.setFlag(true);info.setErrorMsg("当前用户没有订单");return info;}}@Overridepublic ResultInfo addBorder(Border border) {ResultInfo info = new ResultInfo();border.setBoid(UuidUtil.getUuid());Date date = new Date();DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");border.setBotime(format.format(date));int i = borderDaoImpl.addBorder(border);if (i == 1){info.setFlag(true);info.setErrorMsg("添加成功");}else {info.setFlag(true);info.setErrorMsg("添加失败");}return info;}@Overridepublic ResultInfo delBorder(Border border) {ResultInfo info = new ResultInfo();int i = borderDaoImpl.delBorder(border);if (i == 1){info.setFlag(true);info.setErrorMsg("删除成功");}else {info.setFlag(true);info.setErrorMsg("删除失败");}return info;}@Overridepublic ResultInfo findall() {ResultInfo info = new ResultInfo();List<Border> borderByUid = borderDaoImpl.findall();if (borderByUid.size() != 0){List<Map> mapList = new ArrayList<Map>();for (int i = 0; i < borderByUid.size(); i++) {Book bookByBid = bookDaoImpl.findBookByBid(borderByUid.get(i).getBid());Map<String,Object> map = new HashMap<String,Object>();map.put("boid",borderByUid.get(i).getBoid());map.put("bname",bookByBid.getBname());map.put("uname",userDaoImpl.findUserByUid(borderByUid.get(i).getUid()).getUname());map.put("bonum",borderByUid.get(i).getBonum());map.put("boprice",borderByUid.get(i).getBoprice());map.put("botime",borderByUid.get(i).getBotime());if (borderByUid.get(i).getScore() != 0){map.put("enum",borderByUid.get(i).getScore());}else {map.put("enum","未评价");}mapList.add(map);}info.setFlag(true);info.setData(mapList);}else {info.setFlag(true);info.setErrorMsg("当前没有订单");}return info;}
安装部署需求
idea运行一键启动
本项目用到的技术和框架
1.开发语言:Java
2.开发模式:B/S
3.数据库:MySQL
4.框架:SSM+JSP
本项目中的关键点
此系统的开发采用java语言开发,基于B/S结构,这些开发环境使系统更加完善。使用到的工具和技术都是开源免费的。
环境工具
开发工具 Eclipse/IDEA
语言 JDK1.8 、SSM、JSP
硬件:笔记本电脑;
软件:Tomcat9.0 Web服务器、Navicat数据库客户端、MySQL;
操作系统:Windows 10;
其它软件:截图工具、常用浏览器;
微信扫下方二维码关注公众号,经常分享一些技术上的理解文章。
基于个性化推荐的图书网站设计与实现相关推荐
- 基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...
- 基于个性化推荐的居舍优品商城的设计与实现(论文+源码)_kaic
摘要 随着国内外电子商务的蓬勃发展, 让人们看到了线上消费市场的无穷潜力. 人们从分析国内外电商交易平台的发展中产生灵感, 进而关注细化的消费市场. 最近几年校园市场无论是在规模还是潜力上展现出来的发 ...
- 计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw
计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybati ...
- java毕业设计基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw
java毕业设计基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于Bootstrap框架的读书网站设计与实现mybatis+源码+调 ...
- asp毕业设计——基于asp+sqlserver的美食网站设计与实现(毕业论文+程序源码)——美食网站
基于asp+sqlserver的美食网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的美食网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章 ...
- 基于Java毕业设计爱心公益网站设计与制作源码+系统+mysql+lw文档+部署软件
基于Java毕业设计爱心公益网站设计与制作源码+系统+mysql+lw文档+部署软件 基于Java毕业设计爱心公益网站设计与制作源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B ...
- asp毕业设计——基于asp+access的中学网站设计与实现(毕业论文+程序源码)——中学网站
基于asp+access的中学网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的中学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章目录: 基于 ...
- 基于JavaWeb的影视评论网站设计与实现 毕业论文+项目源码及数据库文件
下载地址:https://download.csdn.net/download/ouyangxiaobai123/20720855 项目介绍: 基于JavaWeb的影视评论网站设计与实现 毕业论文+项 ...
- 基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+ ...
最新文章
- ExtJS入门之一 类与继承
- Leetcode题库234.回文链表(递归 类似双指针 c实现)
- 移动端vue ui框架总结
- 从产品展示页面谈谈Hybris系列之三:Hybris Service层介绍
- 【渝粤教育】 国家开放大学2020年春季 1001中国法制史 参考试题
- 数组重复次数最多的元素递归_在不使用递归的情况下计算链接列表中元素的出现次数...
- 球谐函数的概念与应用:可视化理解傅里叶级数
- 学 shell (1/5)
- SolidBuilder 2019 64位破解版+安装教程
- 汇编语言集成开发环境 RadASM 中文版 (修复object file not found报错)
- python 搭建服务器
- 论文中的参考文献怎么写?
- VirtualBox中虚拟机的克隆方法
- 怎么把html的网页做成视频,html5网页中怎么加入视频?怎么为网页添加视频?
- 后端进度报告(2018.5.17)
- lambda表达式 拉姆达
- 那些,我们难以把握的人生
- Unity可自定义loading页的异步加载工具,免费下载,使用说明
- 【备忘】无限互联IOS全套视频教程下载
- html avatar属性,CSS自定义属性在组件开发中的使用