软件b2c网站建设郑州官网网络营销外包
私信或留言即免费送开题报告和任务书(可指定任意题目)
目录
一、摘要
二、相关技术
三、系统设计
四、数据库设计
五、核心代码
六、论文参考
七、源码获取
一、摘要
本论文主要论述了如何使用JAVA语言开发一个图书个性化推荐系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述图书个性化推荐系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析设计。
图书个性化推荐系统的主要使用者分为管理员和学生,实现功能包括管理员:首页、个人中心、学生管理、图书分类管理、图书信息管理、图书预约管理、退换图书管理、管理员管理、留言板管理、系统管理,学生:首页、个人中心、图书预约管理、退换图书管理、我的收藏管理,前台首页;首页、图书信息、好书推荐、留言反馈、个人中心、后台管理等功能。由于本系统的功能模块设计比较全面,所以使得整个图书个性化推荐系统信息管理的过程得以实现。
本系统的使用可以实现本图书个性化推荐系统管理的信息化,可以方便管理员进行更加方便快捷的管理,可以提高管理人员的工作效率。
关键词:图书个性化推荐系统 JAVA语言;MYSQL数据库;Spring Boot框架
二、相关技术
java、tomcat、mysql、spring、springBoot、mybatis、query、vue
三、系统设计
3.1 整体功能设计图
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。
本图书个性化推荐系统结构图如图4-2所示。
3.2 功能具体细节设计
(1)前台首页功能模块
图书个性化推荐系统,在前台首页可以查看首页、图书信息、好书推荐、留言反馈、个人中心、后台管理等内容,如图5-1所示。
学生注册、登录,在学生注册页面可以填写学号、密码、学生姓名、性别、出生日期、联系电话、班级等信息进行注册、登录,如图5-2所示。
图书信息,在图书信息页面通过查看图书编号、图书名称、图书类别、图片、作者、出版社、版次、数量、点击次数等信息进行预约、立即提交或点我收藏操作,如图5-3所示。在个人中心页面通过填写学号、密码、学生姓名、性别、出生日期、联系电话、班级等信息进行更新信息、退出登录操作,如图5-4所示。
(2)管理员功能模块
管理员登录,通过填写输入用户名、密码、角色进行登录,如图5-5所示。
管理员登录进入图书个性化推荐系统可以查看首页、个人中心、学生管理、图书分类管理、图书信息管理、图书预约管理、退换图书管理、管理员管理、留言板管理、系统管理等信息。
学生管理,在学生管理页面中可以通过查看学号、密码、学生姓名、性别、出生日期、联系电话、班级等内容进行修改、删除等操作,如图5-6所示。还可以根据需要对图书分类管理进行修改或删除等详细操作,如图5-7所示。
图书信息管理,在图书信息管理页面中可以查看图书编号、图书名称、图书类别、图片、作者、出版社、版次、数量等信息,并可根据需要对已有图书信息管理进行详情、预约、查看评论、修改或删除等操作,如图5-8所示。
(3)学生功能模块
学生登录进入图书个性化推荐系统可以查看首页、个人中心、图书预约管理、退换图书管理、我的收藏管理等内容。
个人信息,在个人信息页面中通过填写学号、密码、学生姓名、性别、出生日期、联系电话、班级等信息,还可以根据需要对个人信息进行修改等操作、如图5-14所示。
四、数据库设计
本图书个性化推荐系统采用的是MYSQL数据库,数据存储快,因为图书个性化推荐系统 ,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确,系统的E-R图如下图所示:
1、学生信息实体图如图4-5所示:
2、图书信息实体图如图4-6所示:
3、图书预约信息实体图如图4-7所示:
五、核心代码
/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id, HttpServletRequest request){logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);ShigudengjiEntity shigudengji = shigudengjiService.selectById(id);if(shigudengji !=null){//entity转viewShigudengjiView view = new ShigudengjiView();BeanUtils.copyProperties( shigudengji , view );//把实体数据重构到view中//级联表YonghuEntity yonghu = yonghuService.selectById(shigudengji.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//级联表YuangongEntity yuangong = yuangongService.selectById(shigudengji.getYuangongId());if(yuangong != null){BeanUtils.copyProperties( yuangong , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYuangongId(yuangong.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody ShigudengjiEntity shigudengji, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,shigudengji:{}",this.getClass().getName(),shigudengji.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(StringUtil.isEmpty(role))return R.error(511,"权限为空");else if("员工".equals(role))shigudengji.setYuangongId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<ShigudengjiEntity> queryWrapper = new EntityWrapper<ShigudengjiEntity>().eq("yonghu_id", shigudengji.getYonghuId()).eq("yuangong_id", shigudengji.getYuangongId()).eq("shigudengji_uuid_number", shigudengji.getShigudengjiUuidNumber()).eq("shigudengji_name", shigudengji.getShigudengjiName()).eq("shigudengji_types", shigudengji.getShigudengjiTypes()).eq("zeren_types", shigudengji.getZerenTypes());logger.info("sql语句:"+queryWrapper.getSqlSegment());ShigudengjiEntity shigudengjiEntity = shigudengjiService.selectOne(queryWrapper);if(shigudengjiEntity==null){shigudengji.setInsertTime(new Date());shigudengji.setCreateTime(new Date());shigudengjiService.insert(shigudengji);return R.ok();}else {return R.error(511,"表中有相同数据");}}
六、论文参考
七、源码获取
点赞、收藏、关注、评论啦。
联系即送开题报告和任务书,欢迎咨询
👇🏻获取联系方式在文章末尾👇🏻