项目描述

临近学期结束,还是毕业设计,你还在做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;
其它软件:截图工具、常用浏览器;
微信扫下方二维码关注公众号,经常分享一些技术上的理解文章。

基于个性化推荐的图书网站设计与实现相关推荐

  1. 基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA阅读与存储图书网站设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...

  2. 基于个性化推荐的居舍优品商城的设计与实现(论文+源码)_kaic

    摘要 随着国内外电子商务的蓬勃发展, 让人们看到了线上消费市场的无穷潜力. 人们从分析国内外电商交易平台的发展中产生灵感, 进而关注细化的消费市场. 最近几年校园市场无论是在规模还是潜力上展现出来的发 ...

  3. 计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA基于Bootstrap框架的读书网站设计与实现mybati ...

  4. java毕业设计基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计基于Bootstrap框架的读书网站设计与实现mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于Bootstrap框架的读书网站设计与实现mybatis+源码+调 ...

  5. asp毕业设计——基于asp+sqlserver的美食网站设计与实现(毕业论文+程序源码)——美食网站

    基于asp+sqlserver的美食网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的美食网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章 ...

  6. 基于Java毕业设计爱心公益网站设计与制作源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计爱心公益网站设计与制作源码+系统+mysql+lw文档+部署软件 基于Java毕业设计爱心公益网站设计与制作源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B ...

  7. asp毕业设计——基于asp+access的中学网站设计与实现(毕业论文+程序源码)——中学网站

    基于asp+access的中学网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+access的中学网站设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章目录: 基于 ...

  8. 基于JavaWeb的影视评论网站设计与实现 毕业论文+项目源码及数据库文件

    下载地址:https://download.csdn.net/download/ouyangxiaobai123/20720855 项目介绍: 基于JavaWeb的影视评论网站设计与实现 毕业论文+项 ...

  9. 基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java基于Bootstrap框架的读书网站设计与实现计算机毕业设计源码+ ...

最新文章

  1. ExtJS入门之一 类与继承
  2. Leetcode题库234.回文链表(递归 类似双指针 c实现)
  3. 移动端vue ui框架总结
  4. 从产品展示页面谈谈Hybris系列之三:Hybris Service层介绍
  5. 【渝粤教育】 国家开放大学2020年春季 1001中国法制史 参考试题
  6. 数组重复次数最多的元素递归_在不使用递归的情况下计算链接列表中元素的出现次数...
  7. 球谐函数的概念与应用:可视化理解傅里叶级数
  8. 学 shell (1/5)
  9. SolidBuilder 2019 64位破解版+安装教程
  10. 汇编语言集成开发环境 RadASM 中文版 (修复object file not found报错)
  11. python 搭建服务器
  12. 论文中的参考文献怎么写?
  13. VirtualBox中虚拟机的克隆方法
  14. 怎么把html的网页做成视频,html5网页中怎么加入视频?怎么为网页添加视频?
  15. 后端进度报告(2018.5.17)
  16. lambda表达式 拉姆达
  17. 那些,我们难以把握的人生
  18. Unity可自定义loading页的异步加载工具,免费下载,使用说明
  19. 【备忘】无限互联IOS全套视频教程下载
  20. html avatar属性,CSS自定义属性在组件开发中的使用

热门文章

  1. Three.js的DEM建模【数字高程模型】
  2. 22个高阶布局+配色技巧,才能造就如此高颜值的数据可视化
  3. 2018福建省c语言二级成绩查询,全国计算机二级成绩查询
  4. CSS字体默认样式设置
  5. python实现——在图像上放置虚拟物
  6. 一些mathtype符号
  7. Material+Icons
  8. 标准证件照尺寸表,网页修改证件照尺寸的方法
  9. 【应用安全】微软的安全开发生命周期(SDL)
  10. 「每日一题」回旋镖的数量