SpringMVC+Vue项目图书推荐系统

网友投稿 518 2022-11-14

SpringMVC+Vue项目图书推荐系统

SpringMVC+Vue项目图书推荐系统

末获取源码 开发语言:Java开发工具:IDEA /​​Eclipse​​数据库:MYSQL5.7应用服务:Tomcat7/Tomcat8使用​​框架​​​​ssm​​+vueJDK版本:jdk1.8

前言介绍

“互联网+”的战略实施后,很多行业的信息化水平都有了很大的提升。但是目前很多行业的管理仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,使得对人力物力造成诸多浪费,工作效率不高等情况;同时为后续的工作带来了隐患。并且现有的图书推荐系统由于用户的体验感较差、系统流程不完善导致系统的使用率较低。此基于协同过滤算法的图书推荐系统的部署与应用,将对首页、个人中心、用户管理、书籍管理、书籍分类管理、热门图书管理、我的收藏管理、系统管理、订单管理等功能进行管理,这可以简化管理工作程序、降低劳动成本、提高业务效率和工作效率。为了有效推动个性化智能图书推荐资源的合理配置和使用,适应现代个性化智能图书推荐机构的管理办法,迫切需要研发一套更加全面的基于协同过滤算法的图书推荐系统。

本课题在充分研究了ssm框架基础上,采用B/S模式,以Java为开发语言,IDEA为开发工具,MySQL为数据管理平台,实现的内容主要包括首页、个人中心、用户管理、书籍管理、书籍分类管理、热门图书管理、我的收藏管理、系统管理、订单管理等功能。

功能分析

考虑到实际生活中在图书推荐管理方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。

(1)管理员功能需求

管理员登陆后,主要包括首页、个人中心、用户管理、书籍管理、书籍分类管理、热门图书管理、我的收藏管理、系统管理、订单管理等功能。管理员用例图如图

(2)用户功能需求

用户登陆后,用户登录进入系统可以实现首页、书籍、热门图书、个人中心、购物车等功能。用户用例图如图

系统结构设计

系统设计是把本系统的各项功能需求进行细化,而转换为软件系统表示的一个设计过程,在对目标系统的研究分析之后,做出整个系统平台的总体规划,进而对用例中各个对象进一步地合理精细设计。为降低整个系统的复杂度,而使其更加便于修改,提高代码的可读性,我们会将系统模块化,模块间保持相对独立,且每个模块只完成一个子功能,并且与其他模块通过简单的接口链接,即高内聚低耦合原则,而使整个系统能够拥有一个高性能的结构,这边是系统概要设计最重要的目的。在之前的需求分析的基础上,本图书推荐系统结构,如下图

系统功能模块

图书推荐系统,在系统首页可以查看首页、书籍、热门图书、个人中心、购物车等内容,并进行详细操作;如图

用户注册

在用户注册页面通过填写用户账号、用户姓名、密码、确认密码、联系方式等内容进行注册操作,如图

书籍

在书籍页面可以查看书籍名称、图片、价格、书籍分类、作者、出版社、数量、发布时间、评价、部分内容等信息,并进行添加到购物车、立即购买,评论或收藏等操作,如图

热门图书

在热门图书页面可以查看书籍名称、图片、价格、书籍分类、作者、出版社、数量、上市时间、评分、部分内容等信息,并进行添加到购物车、立即购买,评论或收藏等操作,如图

个人中心

在个人中心页面通过填写用户账号、用户姓名、密码、性别、联系方式、上传图片、余额等内容进行更新信息,还可以根据需要对我的订单,我的地址,我的收藏进行相对应操作,如图

购物车

管理员功能模块

管理员登录系统后可以对首页、个人中心、用户管理、书籍管理、书籍分类管理、热门图书管理、我的收藏管理、系统管理、订单管理等功能进行相应的操作,如图

用户管理

在用户管理页面可以对用户账号、用户姓名、性别、联系方式、头像等内容进行详情,修改和删除操作,如图

书籍管理

在书籍管理页面可以对书籍名称、封面、书籍分类、作家、出版社、数量、发布时间、评价、价格等内容进行详情,修改,查看评论和删除操作,如图

书籍分类管理

在书籍分类管理页面可以对书籍分类信息进行修改和删除操作,如图

热门图书管理

在热门图书管理页面可以对书籍名称、封面、书籍分类、作者、出版社、数量、上市时间、评分、价格等内容进行详情,修改,查看评论或删除操作;如图

我的收藏管理

在我的收藏管理页面可以对收藏名称、收藏图片、推荐类型等内容进行详情,修改和删除操作,如图

系统管理

在轮播图管理页面可以对名称、值等内容进行详情或修改操作,如图

订单管理

在已支付订单页面可以对索引、订单编号、商品名称、商品图片、购买数量、价格、折扣价格、总价格、折扣总价格、支付类型、状态、地址、电话、收货人、商品类型、下单时间等内容进行详情、发货和删除等操作,还可对已完成订单、已发货订单、未支付订单、已取消订单、已退款订单进行相对应操作,如图

部分核心代码

/** * 热门图书 * 后端接口 * @author * @email * @date 2022-04-25 22:30:44 */@RestController@RequestMapping("/rementushu")public class RementushuController { @Autowired private RementushuService rementushuService; @Autowired private StoreupService storeupService; /** * 后端列表 */ @RequestMapping("/page") public R page(@RequestParam Map params,RementushuEntity rementushu, HttpServletRequest request){ EntityWrapper ew = new EntityWrapper(); PageUtils page = rementushuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, rementushu), params), params)); return R.ok().put("data", page); } /** * 前端列表 */ @IgnoreAuth @RequestMapping("/list") public R list(@RequestParam Map params,RementushuEntity rementushu, HttpServletRequest request){ EntityWrapper ew = new EntityWrapper(); PageUtils page = rementushuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, rementushu), params), params)); return R.ok().put("data", page); } /** * 列表 */ @RequestMapping("/lists") public R list( RementushuEntity rementushu){ EntityWrapper ew = new EntityWrapper(); ew.allEq(MPUtil.allEQMapPre( rementushu, "rementushu")); return R.ok().put("data", rementushuService.selectListView(ew)); } /** * 查询 */ @RequestMapping("/query") public R query(RementushuEntity rementushu){ EntityWrapper< RementushuEntity> ew = new EntityWrapper< RementushuEntity>(); ew.allEq(MPUtil.allEQMapPre( rementushu, "rementushu")); RementushuView rementushuView = rementushuService.selectView(ew); return R.ok("查询热门图书成功").put("data", rementushuView); } /** * 后端详情 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") Long id){ RementushuEntity rementushu = rementushuService.selectById(id); rementushu.setClicknum(rementushu.getClicknum()+1); rementushuService.updateById(rementushu); return R.ok().put("data", rementushu); } /** * 前端详情 */ @IgnoreAuth @RequestMapping("/detail/{id}") public R detail(@PathVariable("id") Long id){ RementushuEntity rementushu = rementushuService.selectById(id); rementushu.setClicknum(rementushu.getClicknum()+1); rementushuService.updateById(rementushu); return R.ok().put("data", rementushu); } /** * 赞或踩 */ @RequestMapping("/thumbsup/{id}") public R thumbsup(@PathVariable("id") String id,String type){ RementushuEntity rementushu = rementushuService.selectById(id); if(type.equals("1")) { rementushu.setThumbsupnum(rementushu.getThumbsupnum()+1); } else { rementushu.setCrazilynum(rementushu.getCrazilynum()+1); } rementushuService.updateById(rementushu); return R.ok(); } /** * 后端保存 */ @RequestMapping("/save") public R save(@RequestBody RementushuEntity rementushu, HttpServletRequest request){ rementushu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); //ValidatorUtils.validateEntity(rementushu); rementushuService.insert(rementushu); return R.ok(); } /** * 前端保存 */ @IgnoreAuth @RequestMapping("/add") public R add(@RequestBody RementushuEntity rementushu, HttpServletRequest request){ rementushu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue()); //ValidatorUtils.validateEntity(rementushu); rementushuService.insert(rementushu); return R.ok(); } /** * 修改 */ @RequestMapping("/update") @Transactional public R update(@RequestBody RementushuEntity rementushu, HttpServletRequest request){ //ValidatorUtils.validateEntity(rementushu); rementushuService.updateById(rementushu);//全部更新 return R.ok(); } /** * 删除 */ @RequestMapping("/delete") public R delete(@RequestBody Long[] ids){ rementushuService.deleteBatchIds(Arrays.asList(ids)); return R.ok(); } /** * 提醒接口 */ @RequestMapping("/remind/{columnName}/{type}") public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map map) { map.put("column", columnName); map.put("type", type); if(type.equals("2")) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); Date remindStartDate = null; Date remindEndDate = null; if(map.get("remindstart")!=null) { Integer remindStart = Integer.parseInt(map.get("remindstart").toString()); c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart); remindStartDate = c.getTime(); map.put("remindstart", sdf.format(remindStartDate)); } if(map.get("remindend")!=null) { Integer remindEnd = Integer.parseInt(map.get("remindend").toString()); c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindEnd); remindEndDate = c.getTime(); map.put("remindend", sdf.format(remindEndDate)); } } Wrapper wrapper = new EntityWrapper(); if(map.get("remindstart")!=null) { wrapper.ge(columnName, map.get("remindstart")); } if(map.get("remindend")!=null) { wrapper.le(columnName, map.get("remindend")); } int count = rementushuService.selectCount(wrapper); return R.ok().put("count", count); } }

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringMVC 重新定向redirect请求中携带数据方式
下一篇:Android 探究RecyclerView onViewAttachedToWindow 触发时机
相关文章

 发表评论

暂时没有评论,来抢沙发吧~