毕设帮助、开题指导、源码交流,联系方式见文末。。
 音乐检索系统的开发目的是使音乐检索模式转变成信息管理,为音乐检索人员提供方便条件。对音乐检索的实际情况进行调研之后,进行详细的需求分析,对现有的管理模式进行改进,开发出一套新型的管理系统,从中领悟系统开发的思想,掌握系统开发的流程和方法。音乐检索系统的实施的现实意义:减少管理音乐检索的工作人员;检索人员可以随时浏览查看,而且更加直观;改变了以前手工记录的方式,电脑录入更加方便快捷;实现了音乐检索的计算机化。
 
 
音乐推荐算法:/*** 获取w2dNetwork矩阵中横轴对应下标的文档节点* 这里用歌曲Id表示文档节点* @param index* @param engSongList* @return* 文档节点(歌曲Id)*/public static int getW2DNode(int index, List<Song> songList) {return songList.get(index).getSongId();}public static Map<String, int[]> constructW2DN(Set<String> wordSet, List<Song> engSongList,ServletContext servletContext) {Map<String,int []> w2dNetwork=new HashMap<String, int[]>();Iterator<String> iterator=wordSet.iterator();while(iterator.hasNext()) {//当前单词节点String curWord=iterator.next();//邻接文档节点权重数组,0表示节点没有连接int weightArray[]=new int[engSongList.size()];int arrayIndex=0;int curWordLen=curWord.length();for(Song song:engSongList) {//计算当前单词在每个文档中出现的次数int cnt=0;/*** 获取当前文档的内容* 这里采用一个文档一个文档的重复读取* 虽然增加了IO的负担,避免文档数量过大,一次性读入,内存开销太大*/StringBuilder documentSb=readContentSb(servletContext.getRealPath(song.getLyricAddress()));int indexOfCurWord=0;while(true) {indexOfCurWord=documentSb.indexOf(curWord,indexOfCurWord);//找不到了if(indexOfCurWord==-1) {break;}cnt++;indexOfCurWord+=curWordLen;}weightArray[arrayIndex++]=cnt;}w2dNetwork.put(curWord, weightArray);}return w2dNetwork;}/*** 获取	累计权重 to 边 的映射表. * 这里简单地根据权重来采样,即权重高的边被采集到的可能性更大* 如 Edge_1:1,Edge_2:2,Edge_3:3,Edge_4:4,那么* 所有权重的长度和为10,即* 0-1为Edge_1* 1-3为Edge_2* 3-6为Edge_3* 6-10为Edge_4* 现在随机产生一个0-10之间的数字(色子),如果落在区间1-3内,则采用的边为Edge_2.* 此方法并不是最佳方法,这里只是简单的采用这种方式* @param w2wNetwork* 歌词到歌词网络* @param wordSet* 歌词节点集合* @param bipartiteSetA * 双边网络A集合* @return*/public static Map<Integer, Edge<String, String>> getWeight2EdgeTableW2W(final Map<String, int[]> w2wNetwork,final Set<String> wordSet, Set<String> bipartiteSetA) {//整理权重表key-累计的权重和final Map<Integer,Edge<String,String>> weight2EdgeTableW2W=new TreeMap<Integer, Edge<String, String>>();bipartiteSetA.forEach(new Consumer<String>() {//对于从双边网络A发出的每一条边public void accept(String node_i) {//获取邻接关系数组int relatedArray[]=w2wNetwork.get(node_i);for(int j=0;j<relatedArray.length;j++) {//对于和当前节点有连边的节点if(relatedArray[j]>0) {String node_j=W2WNetwork.getW2WNode(j,wordSet);//创建边Edge<String,String> edge=new Edge<String,String>(node_i,node_j,relatedArray[j]);weightSumW2W+=relatedArray[j];weight2EdgeTableW2W.put(weightSumW2W, edge);}}}});return weight2EdgeTableW2W;}
程序效果图:
 

 
 
 
 目录
 第一章 引言 1
 1.1项目开发的背景 1
 1.2项目开发的意义 1
 第二章 系统分析 3
 2.1可行性分析 3
 2.1.1 技术可行性 3
 2.1.2 经济可行性 3
 2.1.3 社会可行性 3
 2.2系统功能分析 4
 2.3 数据字典 5
 第三章 系统设计 7
 3.1 总体设计原则 7
 3.2系统数据库设计 7
 3.2.1数据库的安全性和完整性要求 7
 3.2.2 E-R图 8
 3.2.3数据表 10
 第四章 系统实现 14
 4.1前台模块 14
 4.1.1首页 14
 4.1.2用户注册界面 14
 4.1.3 音乐下载界面 15
 4.1.4 发布评论界面 15
 4.1.5 音乐推荐 15
 4.2 后台模块 22
 4.2.1 登录界面 22
 4.2.2 音乐管理界面 23
 4.2.3 会员管理界面 23
 4.2.4 评论管理界面 24
 4.2.5 音乐播放界面 24
 第五章 系统测试 25
 第六章 结束语 27
 参考文献 28
 致谢 29

![[附源码]java毕业设计网易云音乐推荐系统](https://img-blog.csdnimg.cn/bdbea73a6ac845e0b08655f5676a7f7d.png)
















