栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

图书推荐系统(附源码链接)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

图书推荐系统(附源码链接)

 

目录

一、项目功能描述

二、功能展示页面

1.登录注册

 2.管理员

2.1 图书管理

2.2 用户管理

 2.3 个人信息

2.4 修改密码

3.用户端

3.1 图书馆

3.2 借阅

3.3 个人信息

3.4 推荐

总结


gitee地址:easydemo: 一些简单的练手小项目 - Gitee.comhttps://gitee.com/q1425857916/easydemo/tree/Book/

一、项目功能描述

本项目是图书推荐系统适用于学校的书籍管理,该系统提供默认的管理员账号。

管理员端:登陆后可以对图书的信息进行增删改查,对用户的信息也可以进行增删改查同时在编辑页面的密码会有重置按钮,可以对所有用户的密码进行重置,若重置当前用户密码,则会跳转登陆,重新进行系统,可以修改密码,修改个人信息以及退出。添加图书时,可以点击新增添加一本图书,也可以选择上传CSV文件,批量新增,它使用spark读取csv文件并写入mysql,查询的搜索框在后台使用QueryWrapper来模糊查询。

用户端:用户可以注册登录该系统,登录成功后进入图书馆页面,这里展示了所有的图书信息,可以查看某图书详情,也可以点击借阅按钮,在借阅页面会显示已借图书,点击删除即可归还,用户自己注册账号,信息不全,可在个人信息页面进行完善或修改,同时用户也可以修改自己的密码(本系统密码使用MD5加密),最后重头戏当然是推荐功能,本系统会记录用户对不同书籍详情的点击次数,从而根据该信息通过基于用户的协同过滤算法完成推荐,它是使用python及spark的mllib库训练模型,在使用python调用模型,并将其封装为函数保存在py文件,在java代码中通过使用cmd调用python解释器去执行py文件,再获取结果,这个结果是图书的id,根据id查询数据库渲染页面。

二、功能展示页面

1.登录注册

 点击注册会跳转注册页面,同样可以点击登录跳回来

 2.管理员

2.1 图书管理

点击新增可以添加单个图书信息,选择文件可以批量新增,搜索框可以选择关键字进行模糊查询,每一个图书都对应了查看详情,修改,删除的按钮

2.2 用户管理

 点击新增可以添加用户,每个用户都有详情,修改,删除的按钮,搜索框可根据用户名模糊查询,点击编辑可以修改个人信息,密码栏是重置面按钮

 2.3 个人信息

 点击编辑个进入编辑状态,若突然不想编辑可以点击取消,修改好就可以点击确定提交

2.4 修改密码

 输入旧密码,新密码并确认即可提交,出现错误,会有错误提示,比如旧密码不正确等

3.用户端

3.1 图书馆

 该页面显示了所有在馆的图书,可根据书名和出版社模糊查询,并且进行详情查询以及借阅,借阅书籍会显示到借阅页面

3.2 借阅

此页面显示已借阅书籍,并且可以查看详情,删除即可归还 

3.3 个人信息

 若是用户自己新注册账号,则会发现信息不完善,需要自己填写,已填写的可以修改,点击编辑修改,确定提交

3.4 推荐

 推荐页面显示固定数量的书籍,因为是调用python代码以及spark mllib的模型,所有响应时间较长


总结

        本次项目是对本学期以来学习知识的复习,本次完成了以前没有做过得功能,对其体会更加的深刻,例如xls转csv,对于小文件还可以,像本次的数据有5万多条,将其转换甚是耗时,其次是谷歌kaptcha验证码工具,还实现了python的调用,因为spark上课学习的是pyspark,虽然java也能够实现,但是不熟,成本代价太高,则使用python+spark训练模型以及模型加载,通过java调用即可,当然,由于数据量太大,spark实现的将数据批量写入mysql也是需要耗时,不过也能接受,在后端ssm中,使用mybatisplus的分页插件对数据做分页查询时,不够熟练,将Ipage对象put到map集合,在前端需要使用data.data.records获取,与别的获取不一样,还有就是使用QueryWrapper做模糊查询,由于不熟练,没想到.eq()和.last()方法,使得一开始sql语句多拼接另了where。还有是我习惯于使用热部署插件的debug运行,可是它对mybatis映射文件作用不够好,不会识别映射文件的修改,导致经常不记得需要重启服务器,还有就是dao层接口有许多的参数,一般要加@Param注解,有的参数不能封装为对象,只能加注解,如果使用对象传参就比较方便,还有很多其他方面的问题,就不一一列举了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1026216.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号