Java基于springboot+vue协同过滤算法及在个性化音乐推荐网站

188 篇文章 5 订阅

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

前言

本个性化音乐推荐系统是针对目前个性化音乐推荐的实际需求,从实际工作出发,对过去的个性化音乐推荐系统存在的问题进行分析,完善歌手的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。
本系统结合计算机系统的结构、概念、模型、原理、方法,在计算机各种优势的情况下,采用JAVA语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本个性化音乐推荐系统主要包括用户管理、歌手管理、热门音乐管理、音乐评分管理、系统管理等多个模块。它帮助个性化音乐推荐实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了个性化音乐推荐数据资源,有效的减少了个性化音乐推荐的经济投入,大大提高了个性化音乐推荐的效率。

一、研究背景

随着信息化社会的形成和微电子技术日新月异的发展,为个性化音乐推荐提供了良好的发展环境,而个性化音乐推荐规模的扩大要求有一套实用而且方便的系统进行个性化音乐推荐的管理。在当前的这个大的气候下,个性化音乐推荐将具有长足的发展。特别是在互联网高度发展和应用的今天,人们对汽车的需求越来越多,也正因此,个性化音乐推荐系统应运而生,可以为人们的汽车有效的解决很多实际问题。在软件开发过程中最为重要的就是数据库的应用部分。
随着网络行业的快速发展,个性化音乐推荐涵盖的领域广泛,因此难以管理。传统的个性化音乐推荐系统管理方法的效率无法适应现在的发展,反而更加繁琐,所以需要建立并且完善个性化音乐推荐系统。
系统设计的主要意义在于,一方面,系统上线后可以带来很大的便利性,个性化音乐推荐系统属于非常细致的管理模式,要求数据量大,计算机管理可以提高精确性,更为便利的就是信息的查询,大大的提高了工作效率,改善了管理质量;另一方面,通过系统的设计,自己对软件设计有了更加深入的了解,并且产生了浓厚的学习兴趣,在对问题分析方面有了独特的方式,是进入社会之前一次很好的锻炼机会[1]。

二、研究意义

开发这个项目是为了使个性化音乐推荐得到最大的便利和利用,使一些思想能够得到更多的传广,而如何实现这个目标是此次的研究目的。一个完整的个性化音乐推荐系统要面对不少的挑战,例如:如何让信息可以及时的更新,如何使界面看起来不繁杂,怎样能使歌手方便操作等都是需要解决的问题。而本次项目的关键是管理员的身份,怎样与歌手区分,两者能够实现的功能的划分。数据怎样的显示可以使界面更加干净、美观,也是需要一定的合理规划。

随着互联网技术的发展,国内出现了一系列个性化音乐推荐系统等。近几年来,个性化音乐推荐系统技术不会有重大的改变,传统的个性化音乐推荐系统无法满足学校的现状也不会改变。个性化音乐推荐系统的投入资金相对较低,中国学校基数大,个性化音乐推荐系统的需求巨大,市场容量与盈利性巨大个性化音乐推荐用户规模将呈现爆炸式增长[2]。
在互联网蓬勃发展的今天,网络和我们的生活、学习、工作越来越密不可分,网络正领导着一个新时代的来临,利用开放的Internet技术开发出实时、快捷、全方位的信息传播平台,使得信息在歌手之间的传播更为轻松,系统为歌手提供服务,双方都能及时并且迅速快捷的得到信息。可以解决大量信息的查询和管理,便于系统更好的管理和更改信息,同时也为歌手提供了方便[3]。

三、主要使用技术

开发这个项目是为了使个性化音乐推荐得到最大的便利和利用,使一些思想能够得到更多的传广,而如何实现这个目标是此次的研究目的。一个完整的个性化音乐推荐系统要面对不少的挑战,例如:如何让信息可以及时的更新,如何使界面看起来不繁杂,怎样能使歌手方便操作等都是需要解决的问题。而本次项目的关键是管理员的身份,怎样与歌手区分,两者能够实现的功能的划分。数据怎样的显示可以使界面更加干净、美观,也是需要一定的合理规划。
1.3国内外研究现状
随着互联网技术的发展,国内出现了一系列个性化音乐推荐系统等。近几年来,个性化音乐推荐系统技术不会有重大的改变,传统的个性化音乐推荐系统无法满足学校的现状也不会改变。个性化音乐推荐系统的投入资金相对较低,中国学校基数大,个性化音乐推荐系统的需求巨大,市场容量与盈利性巨大个性化音乐推荐用户规模将呈现爆炸式增长[2]。
在互联网蓬勃发展的今天,网络和我们的生活、学习、工作越来越密不可分,网络正领导着一个新时代的来临,利用开放的Internet技术开发出实时、快捷、全方位的信息传播平台,使得信息在歌手之间的传播更为轻松,系统为歌手提供服务,双方都能及时并且迅速快捷的得到信息。可以解决大量信息的查询和管理,便于系统更好的管理和更改信息,同时也为歌手提供了方便[3]。

四、研究内容

管理员模块可以进行用户管理,对其进行增删改查操作,用户的属性包括歌手名、密码、权限、添加时间;对进行热门音乐管理,可以添加热门音乐,将信息记录表中,经过添加后,此热门音乐可以被歌手查看,可以对信息进行更新,将信息从表中进行删除;可以管理歌手信息,并对歌手信息列表进行查询,对歌手信息进行修改以及删除。进行留言交流管理,可以添加留言交流,对留言交流列表进行查询,对留言交流进行修改以及将留言交流从列表删除。对进行音乐评分,可以添加音乐评分,对音乐评分列表进行查询,对音乐评分进行修改以及将音乐评分从列表删除。可以管理音乐评分,并对音乐评分列表进行查询,对音乐评分进行修改以及删除;可以管理音乐评分,并对音乐评分列表进行查询,对音乐评分进行修改以及删除
在这里插入图片描述

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

五、核心代码


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章 引言 1
1.1开发背景与意义 1
1.2研究目的 1
1.3国内外研究现状 2
1.4论文结构 2
第2章 主要技术 3
2.1 Java语言 3
2.2 SpringBoot框架 4
2.3 Vue框架 4
2.4 MySQL数据库 4
第3章 系统分析 5
3.1可行性分析 5
3.2业务流程分析 6
3.3需求分析 6
第4章 系统设计 8
4.1系统总体功能设计 8
4.1.1管理员模块 8
4.2数据库设计 9
4.2.1数据库设计概述 10
4.3.2概念设计 10
4.3.3表设计 11
第5章 系统实现 15
5.1登录模块的实现 15
5.2用户管理模块 15
5.3歌手信息管理模块 16
5.4热门音乐管理模块 17
5.5音乐评分模块 18
5.6音乐评分管理模块 19
5.7留言交流管理理模块 20
第6章 程序测试 22
6.1测试的目的 22
6.2测试方法 22
6.3测试用例 22
6.3.1界面测试 22
6.3.2管理员登录测试 23
6.3.3音乐评分添加测试 25
6.4测试结果 25
结论 27
致谢 28
参考文献 29

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wqq6310855

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值