1963Springboot个性化音乐推荐管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

news2024/9/21 14:26:56


博主介绍:专注于Java .net  php phython  小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作

☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了1000+毕设题目 方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

🍅文末获取源码联系🍅

本个性化音乐推荐平台的开发利用Idea作为本系统的开发工具,MySQL数据库作为开发的数据库系统页面展现jsp技术展现,采用框架springboot做为开发主要框架。系统分为前台和后台功能,前台主要是用户进行业务操作,后台管理功能,主要是管理员。后台主要主要分为用户管理、标签管理、音乐分类管理、音乐管理、浏览管理、收藏管理、帖子管理、回复管理、关联规则管理等。前台的功能主要的功能有用户注册、登录、个人信息修改、音乐浏览、音乐分类浏览、音乐推荐(采用关联规则算法结合用户访问音乐的基础数据为依据进行推荐),在线发帖、回帖等。对于音乐数据系统系统采用python对相关网页音乐(免费,非收费)进行爬取本地化存储

系统主要功能包括:管理员登录、用户管理、标签管理、音乐分类管理、音乐管理、浏览管理、收藏管理、帖子管理、回复管理、关联规则管理、个人信息。系统中管理员主要是为了安全有效地储存和管理各类信息,并且对后台有相应的操作权限。

  1. 系统功能

前台主要功能:

  1. 用户注册、登录,登录时选择当天的心情。记录到session值方便系统根据心情推荐音乐
  2. 音乐分类浏览
  3. 访问音乐详情时,系统根据关联规则算法推荐音乐信息,同时记录用户浏览记录,收藏音乐信息等
  4. 查看浏览音乐记录信息,收藏音乐信息
  5. 发帖,回帖等基础功能
  6. 在线播放音乐收听
  7. 个人信息修改

后台主要功能:

(1)人员信息:对人员信息进行维护。

(2)标签信息:对标签信息进行增加、列表展现、修改、删除等。

(3)分类信息:对音乐分类信息进行增加、列表展现、修改、删除等。

(4)音乐信息管理:对音乐信息进行增加、列表展现、修改、删除等。

(5)浏览信息管理:对音乐浏览信息进行列表展现、删除等。

(6)收藏信息管理:对音乐收藏信息进行列表展现、删除等。

(7)帖子信息管理:对帖子信息进行列表展现、删除等。

(8)帖子回复信息管理:对帖子回复信息进行列表展现、删除等。

(9)关联规则信息管理:对关联规则配置维护。

(10)个人信息修改

Python爬取音乐网站

  1. 通过pycharm平台利用python爬取固定的音乐(可爬取)信息展示列表
  2. 爬取每个音乐信息把对应基本信息存入到数据库中,同时文件存储到磁盘
  3. 对于同名文件系统去重防止存入同名文件造成数据冗余

     顶层数据流图分析 

    主要包括两个角色,用户和管理员进行相关业务操作,如图所示:

  4.  

     一层数据流图分析 

    通过一层数据流图分析,用户和管理员对应操作的数据流关系,如图所示:

  5. 系统主要包括11个大类模块,包含管管理员信息类,用户信息类,公告信息类,标签信息类,分类信息类,音乐信息类,浏览信息类,收藏信息类,帖子信息类,回复信息类,关联规则信息类等,具体如图所示:

  6. 个性化音乐推荐平台主要实现音乐信息的一体化信息管理,涉及到了管理员实体,用户实体,公告实体,标签实体,分类实体,音乐实体,浏览实体,收藏实体,帖子实体,回复实体,关联规则实体等多个实体。下面简单介绍几个关键的实体E-R图。

    (1)个性化音乐推荐平台的E-R图,见图4-2。

    5.2.1 系统首页界面

    访问音乐首页面如图5-1所示:

  7. 图5-1 系统首页登陆界面

    5.2.2 查看歌曲模块

    查看歌曲界面,首先展现歌曲信息,同时根据个性化推荐音乐。系统采用两种模式综合设计推荐音乐功能,登录系统的时候的用户不仅仅输入用户名和密码,同时让用户选择现在的心情,心情属于标签中维护的内容,每个音乐都有一个标签属性,就是对应的心情。当系统关联规则推荐算法的数据采集不够,或者计算不出来数据的情况下,用户访问一个音乐的时候,系统根据用户登录的时候选择心情,随机推荐这个心情下的一个音乐。

    当系统用户 登录后访问每个音乐信息的时,系统记录用户访问音乐日志信息,这个也是关联规则算法的计算的基础数据依据。当用户访问一个音乐信息的时候,系统通过关联规则算法结果表读取,通过后台计算用户访问音乐的行为数据信息,得到推荐出最有可能访问其他音乐信息,然后推荐出来。如图5-2所示。

    图5-2 歌曲信息界面

        系统采用关联规则算法,基于用户浏览数据进行计算,如图所示:

    核心算法代码:

    sc.forEach(set->{

                List<Set<String>> subset = nonEmptySubset(set);

                int y=support(set,data);

                double support = 1.0*y/data.size();

                subset.forEach(sub->{

                    int x=support(sub,data);

                    HashSet<String> target = new HashSet<String>(set);

                    target.removeAll(sub);

                    double conf = 1.0*y/x;

                    System.out.println(set+"\t"+sub+"-->"+target+

                            "\t"+y+"/"+x+"("+String.format("%.2f", conf)+")\t"+

                            y+"/"+data.size()+"("+String.format("%.2f", support)+

                            ")\t"+(conf>this.confidence));

                    Map mp=new HashMap();

                    System.out.println("id="+id);

                    String targeta=this.makeString(String.valueOf(target)).trim();

                    System.out.println("String.valueOf(sub).trim()=="+targeta);

                    if(!id.equals("")) {

                        if (id.equals(targeta)) {

                            System.out.println("ok in ");

                            mp.put("sub", this.makeString(String.valueOf(sub)));

                            mp.put("target", this.makeString(String.valueOf(target)));

                            mp.put("conf", String.format("%.2f", conf));

                            mp.put("support", String.format("%.2f", support));

                            list.add(mp);

                        }

                    }

    //                }else{

    //                    mp.put("sub", this.makeString(String.valueOf(sub)));

    //                    mp.put("target", this.makeString(String.valueOf(target)));

    //                    mp.put("conf", String.format("%.2f", conf));

    //                    mp.put("support", String.format("%.2f", support));

    //

    //                }

                });

            });

            return list;

        }

        //计算频繁项目集的支持度

        public Integer support(Set<String> set,List<Set<String>> data){

            return  (int) data.stream()

                    .filter(d->d.containsAll(set))

                    .count();

        }

        //生成候选项集

        //安算法来讲应该是将候选项集按一定规则排序 将两个集合只有最后一个元素不同的合并

        //个人理解:

        //对任意频繁集A B属于S  若  C = A 并 B 是频繁的  则  D=C- (A 交  B) 也是频繁的

        public  List<Set<String>> candidateSet(List<Set<String>> list) {//候选项集

            List<Set<String>> candidate=new ArrayList<Set<String>>();

            for(int i=0;i<list.size();i++) {

                for(int j=i+1;j<list.size();j++) {

                    Set<String> item = list.get(i);

                    Set<String> compare = list.get(j);

                    if(item.size()==1){

                        Set<String> unionn=new HashSet<String>(item);

                        unionn.addAll(compare);

                        candidate.add(unionn);

                    }else{

                        Set<String> intersection=new HashSet<String>(item);

                        intersection.retainAll(compare);

                        if(!intersection.isEmpty()) {

                            Set<String> unionn=new HashSet<String>(item);

                            unionn.addAll(compare);

                            Set<String> difference =new HashSet<String>(unionn);

                            difference.removeAll(intersection);

                            if(allFrequentSet.contains(difference)) {

                                candidate.add(unionn);

                            }

                        }

                    }

                }

            }

            candidate = candidate.stream().distinct().collect(Collectors.toList());

            return candidate;

        }

        //扫描满足最小支持度的频繁项目集

        public  List<Set<String>> scan(Map<Set<String>, Integer> frequent,double minSupport) {

            List<Set<String>> list=new ArrayList<Set<String>>();

            for(Set<String> key :frequent.keySet()) {

                if(frequent.get(key)>=minSupport*data.size()) {

                    list.add(key);

                    allFrequentSet.add(key);

                }

            }

            return list;

        }

    5.2.3 公告管理模块

    点击公告管理菜单,显示添加公告信息和公告信息列表界面,点击添加公告信息,右侧界面呈现出添加的公告信息界面,包括公告公告编号,标题,内容,发布时间等信息,添加公告信息完毕点击“提交”按钮,则添加公告信息成功。点击“公告列表”,右侧界面呈现出需要公告的具体信息,包括公告编号,标题,内容,发布时间等信息,可对逐条公告信息进行查看、删除和修改,如图5-3所示。

    图5-3 公告管理界面


  8. 大家点赞、收藏、关注、评论啦 ,需要源码 其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2120734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Chain-of-Thought Prompting】链式思考(CoT)提示、零样本 COT 提示、自动思维链(Auto-CoT)

链式思考&#xff08;CoT&#xff09;提示 图片来源&#xff1a;Wei等人&#xff08;2022&#xff09;(opens in a new tab) 在 Wei等人&#xff08;2022&#xff09;(opens in a new tab) 中引入的链式思考&#xff08;CoT&#xff09;提示通过中间推理步骤实现了复杂的推理…

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期] 第三期介绍&#xff1a;频道模块之频道成员 目录 QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第三期]第三期介绍&#xff1a;频道模块之频道成员获取子频道在线成员数获取频道成员列表获取频道身份组成员列…

计算机组成原理简介

计算机组成原理简介 计算机组成原理是一门研究计算机系统结构、工作原理及其性能分析的学科。它主要探讨计算机硬件的结构及其与软件的交互&#xff0c;旨在帮助我们理解计算机如何执行任务、处理数据和控制指令流。 本文将从以下几个方面介绍计算机组成原理的基本概念&#…

大和解!淘宝微信11年“屏蔽战”终落幕

​转载&#xff1a;新熵 原创 作者丨余寐 编辑丨蕨影 拆墙之后&#xff0c;一切才刚刚开始。 见证历史的时刻到了&#xff01;互联网两大巨头正式牵手&#xff0c;淘宝平台拟全面引入微信支付。 淘宝天猫方面回应称&#xff0c;淘宝天猫始终秉持开放的合作理念&#xff0c;积…

【FPGA数字信号处理】- FIR串行滤波器

理解和掌握 FIR 串行滤波器是踏入数字信号处理领域的重要一步。 那么&#xff0c;什么是 FIR 串行滤波器&#xff1f;它是如何工作的&#xff1f;又有着怎样的神奇之处呢&#xff1f;让我们一起揭开它的神秘面纱。 一、FIR 滤波器简介 FIR 滤波器&#xff0c;全称为有限脉冲…

GMT绘图笔记:绘制堆叠三维图

绘制三维图可以更好地表现物理场的空间分布和对比&#xff0c;也有很多的软件工具可以实现这一功能&#xff0c;本专栏主要强调使用GMT绘制。语法也非常简单&#xff0c;实例代码如下&#xff1a; gmt begin tibet_moho_3D png,pdf E600 # 绘制底图 gmt set FORMAT_GEO_MAP d…

【超快解决方法】教资点击打印准考证没反应!!!

首先点击右键【检查】 2.选中控制台 3.点击小红点 4.再点击第二个链接就可以下载下来啦

【Delphi】实现程序屏幕内容防止截图

前言&#xff1a; 有时候&#xff0c;我们做的程序界面内容不希望被截图&#xff0c;那么如何实现呢&#xff1f;其实实现起来非常简单&#xff0c;就是一句话的事。 在主窗口show的时候&#xff0c;调用如下参数即可&#xff01;需要注意的是Delphi中并没有定义WDA_EXCLUDEFRO…

微信加粉计数器/微信加人计数网页版

微信加粉计数器/微信加人计数网页版 计数器支持的vx版本微信计数器特色计数器的定制开发 计数器支持的vx版本 最新版本计数器支持任意版本的微信&#xff0c;在也不用使用指定的版本了 微信计数器特色 目前该计数器采用非hook,非注入&#xff0c;不修改覆盖任何源文件 计数…

Dagger:Android 和 Java 的快速依赖注入框架

在软件开发中&#xff0c;依赖注入&#xff08;DI&#xff09;是一种设计模式&#xff0c;用于实现控制反转&#xff0c;减少代码耦合&#xff0c;提高模块化。Dagger 是一个由 Google 开发的依赖注入库&#xff0c;专门用于 Android 和 Java 应用程序&#xff0c;以其快速和高…

为什么 GitHub 成为开发者的“唯一真爱”?吊打其他代码托管平台

GitHub,这个名字可能已经深深印在了每一个开发者的脑海里。但你有没有想过,为什么 GitHub 能够在激烈的竞争中脱颖而出,成为全球最大、最流行的代码托管平台?其实它的成功背后,有着很多不为人知的细节。今天我们就来聊聊 GitHub 是如何一步步赢得开发者的心,让其他竞争对…

何时何地,你需要提示工程、函数调用、RAG还是微调大模型?

介绍 在快速发展的生成式人工智能领域&#xff0c;某些流行术语已变得司空见惯&#xff1a;“提示工程”、“函数调用”、“RAG”和“微调”&#xff0c;你应该也经常遇到这些术语&#xff0c;但你是否能够理清这些概念之间的关系&#xff1f;这些其实都是一些大模型的应用策略…

OpenGL Texture C++ 预览Camera视频

OpenGL是一个图形API&#xff0c;并不是一个独立的平台。包含了一系列可以操作图形、图像的函数。基于Texture纹理强大的功能&#xff0c;本篇文章实现Android OpenGL Texture C 预览Camera视频流的功能。 项目github地址&#xff1a;https://github.com/wangyongyao1989/WyFFm…

Reflection Llama-3.1 70B:目前最强大的开源大语言模型

Reflection Llama-3.1 70B:目前最强大的开源大语言模型 模型特点性能表现使用建议未来展望 近日,一个名为Reflection Llama-3.1 70B的新型大语言模型(LLM)引起了业界广泛关注。该模型采用了名为"Reflection-Tuning"的创新训练技术,能够自主检测推理过程中的错误并及时…

入门必看!高薪+自由职业的3D建模师有多香?

‌3D建模‌是将现实世界中的物体或场景转化为三维数字模型的过程。这项技术连接着现实与虚拟两个世界&#xff0c;通过3D建模&#xff0c;我们可以将名胜古迹、雕塑艺术品等以三维的形式呈现于互联网&#xff0c;让用户体验到更加真实、立体的视觉感受。3D建模的应用领域广泛&a…

【基于 Spring Boot 的二手交易平台】

构建一个基于 Spring Boot 的二手交易平台是一个涉及多个组件和技术栈的复杂项目。以下是一个基本的框架概述&#xff0c;可以帮助你开始搭建这样一个平台&#xff1a; 技术栈选择 Spring Boot: 用于快速开发 RESTful Web 服务。数据库: MySQL, PostgreSQL, 或其他关系型数据…

华为 HCIP-Datacom H12-821 题库 (15)

有需要题库的可以加下方Q群 V群进行学习交流 1.以下关于 OSPF 路由聚合的描述&#xff0c;错误的是哪一项&#xff1f; A、OSPF 中任意一台路由器都可以进行路由聚合的操作 B、OSPF 有两种路由聚合方式&#xff1a;ABR 聚合和ASBR 聚合 C、路由聚合是指将相同前缀的路由信息聚合…

018.PL-SQL编程—包

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

【Prompt Engineering提示:Active-Prompt、方向性刺激提示、PAL(程序辅助语言模型)】

Active-Prompt 思维链&#xff08;CoT&#xff09;方法依赖于一组固定的人工注释范例。问题在于&#xff0c;这些范例可能不是不同任务的最有效示例。为了解决这个问题&#xff0c;Diao 等人&#xff08;2023&#xff09;(opens in a new tab)最近提出了一种新的提示方法&…

Python的情感词典情感分析和情绪计算

一.大连理工中文情感词典 情感分析 (Sentiment Analysis)和情绪分类 (Emotion Classification&#xff09;都是非常重要的文本挖掘手段。情感分析的基本流程如下图所示&#xff0c;通常包括&#xff1a; 自定义爬虫抓取文本信息&#xff1b;使用Jieba工具进行中文分词、词性标…