当前位置:   article > 正文

Springboot+vue基于hadoop的高校图书馆阅读书目智慧推荐系统 毕业设计_基于hadoop的图书推荐系统

基于hadoop的图书推荐系统

文末获取资源,收藏关注不迷路

前言

随着信息技术的发展,管理系统越来越成熟,各种企事业单位使用各种类型的管理系统来提高工作效率,从而降低手工劳动的弊端。我国政府一直以来都非常重视教育事业的发展,近几年来高校学生人数逐渐增加,学校对图书馆图书信息、借阅信息的管理也愈发的困难。因此,高校提出通过开发图书馆阅读书目智慧推荐系统来优化管理方案,对图书馆信息进行全方位的在线管理,通过系统跟踪图书借阅的各项状态,并收集浏览及阅读信息进行个性化智能推荐,学生也可以通过系统查询图书的借阅情况。
基于hadoop的高校图书馆阅读书目智慧推荐系统利用Hadoop框架开发的一款管理系统,数据存储到MySQL中,前台使用Vue对界面进行设计和实现。本文先充分调查基于hadoop的高校图书馆阅读书目智慧推荐系统的需求分析,深入剖析系统应该具有的功能,并设计完善的数据库。利用成熟的开发技术完成编码工作,最后进行投入前的测试工作。最终,完成前台和后台的基于hadoop的高校图书馆阅读书目智慧推荐系统的功能,主要包括图书管理模块、用户管理模块、用户浏览及阅读信息挖掘模块、智能推荐模块、读者反馈模块、借阅管理模块等,通过前后台实现数据的传递。

一、研究背景

教育是国家发展的基石,随着目前经济快速的发展,国家也更加重视教育事业,大力发展义务教育并提升高等教育。随着高校扩招的推进,高校图书馆的图书越来越多,图书信息和借阅管理也变得越来越困难。在传统的图书馆管理中,高校往往通过大量的人力和物力进行管理,通过手工记录图书信息,统计借阅情况。这种传统的管理方法容易出错,而且不能适应现代化、信息化的发展过程。因此,本基于hadoop的高校图书馆阅读书目智慧推荐系统应运而生。在Java编程语言的基础上,开发基于hadoop的高校图书馆阅读书目智慧推荐系统。
校园网信息化的普及也推动了管理系统的发展,各高校有条件开发并推广基于hadoop的高校图书馆阅读书目智慧推荐系统,从而提高管理手段,推动信息化进程的发展。无论是高校领导者还是图书馆管理员,都希望通过有效的技术手段改变效率低下的图书馆管理手段,通过管理系统进行全面的图书馆管理。图书馆管理员通过系统可以发布图书信息,借阅通知,管理图书借阅。学生通过系统查询图书资料,在当前疫情严重的阶段,通过管理系统可以有效减少接触,提高师生的安全。
在技术方面,后台使用Hadoop框架进行开发,前端采用Vue.js。这些技术可以处理基于hadoop的高校图书馆阅读书目智慧推荐系统的业务逻辑,并方便用户操作,部署简单。所以适应本项目的开发。数据库方面,选择关系型MySQL数据库,比较成熟稳定,并且开源免费,具有高效、简洁的特点。
当前移动互联网广泛发展,通过智能手机可以方便的参与到系统中来,并借助Vue.js的强大优势,构建基于hadoop的高校图书馆阅读书目智慧推荐系统,更符合当前的信息化水平,无论是哪种用户,都可以通过前台进行登录,从而进行信息查询或者管理,使得用户角色获得了更好的体验。
本文研发的基于hadoop的高校图书馆阅读书目智慧推荐系统,结合高校的现状开发符合学校图书馆管理工作的系统,改变了以前落后的现状。并将图书信息,借阅管理等进行融合,发出通用的管理系统,广泛应用于高校。基于hadoop的高校图书馆阅读书目智慧推荐系统的使用,对于高校的可持续发展具有不可替代的作用。

二、研究意义

在国内,基于hadoop的高校图书馆阅读书目智慧推荐系统发展迅速,从最初的单片机处理时代发展到数据综合处理时期,到目前的数据系统处理时期。信息技术的快速发展带来了管理系统的质的变化,在单片机处理时期,数据存储有限,系统效率较低。在第二时期的数据综合处理时期中,因为计算机软硬件水平较低而且价格昂贵,虽然基于hadoop的高校图书馆阅读书目智慧推荐系统得到了一定的发展,但是受限于昂贵的设备,不能全面普及开来。目前的综合数据系统时代,分布式开发技术、微服务技术,数据库技术逐渐完善,软件设备价格低廉,带动了全面的发展,为基于hadoop的高校图书馆阅读书目智慧推荐系统的普及提供了基础。相比单片机管理系统和客户端服务器模式的系统,目前的轻客户端模式大大降低了开发成本,提高了数据管理的效率。每一台客户端不需要单独安装,通过浏览器即可访问。比如清华大学开发的UEAS高校基于hadoop的高校图书馆阅读书目智慧推荐系统、正方软件公司开发的现代教育管理系统,都具有完善的功能,并随着技术的更新不断的升级。
20世纪90年代个性化推荐技术作为一个独立的概念被正式提出,随后在电子商务、人工智能等相关领域成为了非常热门和受欢迎的独立学科。如今,随着大数据时代的到来,互联网的各个领域竞争都变的越来越激烈,个性化推荐技术已经逐渐成为企业、高校、乃至国家提高其自身竞争力的主要技术。
国内外关于推荐算法、推荐系统和个性化搜索的研究开始于上个世纪90年代,从90年代中期开始,诞生了第一个基于协同过滤推荐技术的推荐系统(Tapestry)然后以此为起始线,各个国家的学者和研究机构开始对推荐系统的研究越来越关注,投入也越来越多,其主要是表现在推荐技术的改进,以此来适应不同的领域和研究方向。从推荐算法所采用的技术可以将推荐技术主要分为基于内容的推荐和协同过滤推荐其中基于内容的推荐主要是根据用户的历史兴趣信息来进行物品的预测,主要分析的是被推荐项目属性之间的关系,它是根据项目的特征或者属性进行推荐。基于内容的推荐技术存在一定的缺陷其主要表现在对用户推荐的物品具有局限性,它只能向用户推荐与其历史兴趣爱好相关的物品,无法实现对用户兴趣的调整。此外当有大批项目被频繁更新的时候,系统会因此变得非常不灵活,因此该算法适用性不是很广。

三、主要使用技术

环境需要
1.运行环境:最好是java jdk 1.8,这是目前最稳定的JDK也是被使用最多的JDK版本。
2.IDE环境:IDEA,Eclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat7/Tomcat8/Tomcat9版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS;
5.数据库:MySql 5.7版本;
6.是否Maven项目:是;
技术栈
后端:Spring+SpringMVC+Mybatis+Springboot
前端:vue+CSS+JavaScript+jQuery+elementui

使用说明
使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
使用IDEA/Eclipse/MyEclipse导入项目,修改配置,运行项目;
将项目中applicationContext.xml配置文件中的数据库配置改为自己的配置,然后运行;
运行成功后,在浏览器中输入:http://localhost:8080/项目名

四、研究内容

在这里插入图片描述
基于hadoop的高校图书馆阅读书目智慧推荐系统包括两种用户,管理员,和学生用户。不同的用户都需要进行登录,然后针对其操作权限才能进入管理系统。
基于hadoop的高校图书馆阅读书目智慧推荐系统包括两个部分,一个是供学生和未注册用户使用的前台页面,另外一个是后台的管理部分。前台通过浏览器访问可以查看系统推荐的图书信息。在图书详情页面可以查看图书的介绍,如果没有账号,可以通过注册,然后进行登录,发表评论或者留言。
后台是系统的管理部分,图书管理员登录后台对图书进行管理,图书分类进行管理,用户管理,留言管理和借阅管理,学生也可以通过登录实现图书的借阅、图书的归还等操作。

在这里插入图片描述
在这里插入图片描述
前台实现的功能包括:学生用户注册、登录,推荐图书查看、在线交流等。网站前台会员的用户需求是查询图书馆图书的信息,包括图书分类信息、公告信息、在线留言信息。游客通过注册后进行登录,成为会员。成为会员的用户才能预约座位,在线留言和交互,提出在看书过程存在的问题,或者预约时遇到的问题进行咨询,其他有经验的用户提供在线回复帮助。会员用户登录后,可以在个人后台对个人的信息进行修改,查看个人的借阅历史记录。
管理员用户具有的功能为:图书类别信息管理、图书信息管理、图书借阅管理、图书归还管理、管理员查看学生的借阅信息,处理归还。

在这里插入图片描述
打开基于hadoop的高校图书馆阅读书目智慧推荐系统后,浏览所有的图书信息,如果需要图书借阅,系统提示用户进行登录,在用户注册和登录页面提供了学生登录的链接。学生登录后的权限包括图书信息的查看,图书借阅、借阅到期后进行图书归还。可以在线留言以及查看图书馆的公告信息。在首页,系统为用户推荐相关的图书信息。其中学生UML用例图如图3.1所示。
在这里插入图片描述
其中用户登录中,通过浏览器访问该基于hadoop的高校图书馆阅读书目智慧推荐系统,选择登录界面,进行登录。登录成功进入到系统,登录失败,提示用户不存在,需要重新输入正确的用户名和密码。
借阅管理中,启动基于hadoop的高校图书馆阅读书目智慧推荐系统,进入到借阅创建的页面,填写创建借阅的基本信息,创建成功后更新借阅数据库表的记录。在借阅修改或者删除的页面,完成操作后,更新借阅数据库表的记录。在借阅列表界面,查询所有的借阅数据库表的记录,然后绑定数据到借阅列表中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
管理员主要功能包括个人中心,用户管理,图书信息管理,图书类型管理,借阅信息管理,归还信息管理,留言管理,系统公告管理等功能模块。其中管理员管理用例图如图 3.2所示。
在这里插入图片描述
通知公告管理中,先运行基于hadoop的高校图书馆阅读书目智慧推荐系统,然后录入通知公告信息,验证信息后,保存信息到数据库,如果保存失败,提示错误信息,并返回到主界面。
图书管理中,启动基于hadoop的高校图书馆阅读书目智慧推荐系统,进入到图书创建的页面,填写创建图书的基本信息,创建成功后更新图书数据库表的记录。在图书修改或者删除的页面,完成操作后,更新图书数据库表的记录。在图书列表界面,查询所有的图书数据库表的记录,然后绑定数据到图书列表中。

在这里插入图片描述
在这里插入图片描述

五、核心代码


package com.controller;


import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.TokenEntity;
import com.entity.UserEntity;
import com.service.TokenService;
import com.service.UserService;
import com.utils.CommonUtil;
import com.utils.MPUtil;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.ValidatorUtils;

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UserController{
	
	@Autowired
	private UserService userService;
	
	@Autowired
	private TokenService tokenService;

	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
		if(user==null || !user.getPassword().equals(password)) {
			return R.error("账号或密码不正确");
		}
		String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
		return R.ok().put("token", token);
	}
	
	/**
	 * 注册
	 */
	@IgnoreAuth
	@PostMapping(value = "/register")
	public R register(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

	/**
	 * 退出
	 */
	@GetMapping(value = "logout")
	public R logout(HttpServletRequest request) {
		request.getSession().invalidate();
		return R.ok("退出成功");
	}
	
	/**
     * 密码重置
     */
    @IgnoreAuth
	@RequestMapping(value = "/resetPass")
    public R resetPass(String username, HttpServletRequest request){
    	UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
    	if(user==null) {
    		return R.error("账号不存在");
    	}
    	user.setPassword("123456");
        userService.update(user,null);
        return R.ok("密码已重置为:123456");
    }
	
	/**
     * 列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,UserEntity user){
        EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
    	PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/list")
    public R list( UserEntity user){
       	EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }
    
    /**
     * 获取用户的session用户信息
     */
    @RequestMapping("/session")
    public R getCurrUser(HttpServletRequest request){
    	Long id = (Long)request.getSession().getAttribute("userId");
        UserEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

    /**
     * 保存
     */
    @PostMapping("/save")
    public R save(@RequestBody UserEntity user){
//    	ValidatorUtils.validateEntity(user);
    	if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
    		return R.error("用户已存在");
    	}
        userService.insert(user);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody UserEntity user){
//        ValidatorUtils.validateEntity(user);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175

六、文章目录

1系统概述 1
1.1 研究背景 1
1.2研究目的 1
1.3系统设计思想 1
2相关技术 3
2.1 MYSQL数据库 3
2.2 B/S结构 3
2.3 Spring Boot框架简介 4
2.4 VUE框架 4
3系统分析 5
3.1可行性分析 5
3.1.1技术可行性 5
3.1.2经济可行性 5
3.1.3操作可行性 5
3.2系统性能分析 6
3.2.1 系统安全性 6
3.2.2 数据完整性 6
3.3系统界面分析 6
3.4系统流程和逻辑 8
4系统概要设计 9
4.1概述 9
4.2系统结构 10
4.3.数据库设计 11
4.3.1数据库实体 11
4.3.2数据库设计表 13
5系统详细实现 17
5.1 管理员模块的实现 17
5.2用户模块的实现 19
6系统测试 21
6.1概念和意义 21
6.2特性 22
6.3重要性 22
6.4测试方法 23
6.5 功能测试 23
6.6可用性测试 24
6.7性能测试 24
6.8测试分析 24
6.9测试结果分析 25
结论 25
致谢语 26
参考文献 26

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/599474
推荐阅读
相关标签
  

闽ICP备14008679号