基于WEB的音乐播放系统的设计与实现

题目类型:设计                

桂林理工大学

GUILINUNIVERSITY OF TECHNOLOGY

题目:基于WEB的音乐播放系统              

                的设计与实现                     

          学     院:信息科学与工程学院       

          学     生:张 某            



摘  要

毫无疑问,互联网是当今世上最受欢迎的话题,互联网的飞速发展对中国社会发展产生了巨大的影响。从近几年的发展过程来看,互联网巨头们都在互联网领域打起了价格战,尤其是在音乐网站版权归有权空前激烈。中国的音乐网站也十分备受数以万计的中国网民关注。音乐网站如雨后春笋般地成长起来并开始掠夺音乐市场。因此,开发这款音乐播放系统是至关重要的。

本音乐播放系统建设采用软件工程的设计思想,在音乐播放需求分析基础上,进行了概要设计,数据库设计等内容,采用B/S体系结构,Java作为编程语言,高效简洁的动态页面(JSP)技术和关系型数据库MySQL数据库进行开发,实现一个音乐播放系统。

本系统前台实现了用户注册、用户登录、用户信息修改、音乐评论、音乐评论删除、音乐搜藏、音乐播放、搜索等功能;后台主要实现了歌曲分类管理、用户管理、歌曲管理、歌曲评论管理、系统管理等功能。整个音乐系统需要维护方便、灵活实用、操作简单,开发成本低。

关键词:音乐播放系统;JSP;MySQL



The Designand Implementation of Music Player System Base on WEB

Student:ZHANGSheng-rong       

Abstract: There is no doubt that the

Internet is the most popular topic in the world today. The rapid development of

the Internet has had a huge impact on the development of Chinese society.

Judging from the development process in recent years, Internet giants have

fought a price war in the Internet field, especially when the copyright

ownership of music websites has been unprecedentedly fierce. China's music

websites are also highly concerned by tens of thousands of Chinese netizens.

Music websites have sprung up and started to plunder the music market.

Therefore, it is essential to develop this music retrieval website.

The constructionof this music player system adopts the design idea of software engineering.Based on the analysis of music player requirements, a summary design is carriedout. According to the database design and other contents, B/S architecture isadopted. Java is used as the programming language. Development of technologyand relational database MYSQL database, and the realization of a music playersystem.

The front deskof the system implements functions such as user registration, user login, user informationmodification, music reviews, music collection, music playback, search andsystem resource release; the background mainly implements song classificationmanagement, user management, song management, song comment management , Systemmanagement and other functions. The entire music system needs to be easy tomaintain, flexible and practical, simple to operate, and low in developmentcost.

KeyWord: Music Play Site; JSP; MYSQL



目 次

摘   要. I

Abstract II

1绪论. 1

1.1系统开发目的. 1

1.2系统开发意义. 1

1.3国内外研究综述. 1

1.3.1国外音乐网站发展. 1

1.3.2国内音乐网站发展. 2

2  相关技术介绍. 3

2.1方案比选. 3

2.1.1网站页面技术. 3

2.1.2前端UI框架. 3

2.1.3数据库选择. 4

2.2 Java语言介绍. 4

2.3 JSP语言介绍. 5

2.4 JQuery介绍. 6

2.5 MySQL介绍. 6

3  需求分析. 7

3.1可行性分析. 7

3.1.1经济可行性. 7

3.1.2技术可行性. 7

3.1.3操作可行性. 7

3.1.4法律可行性. 7

3.2系统性能分析. 8

4  系统需求分析. 9

4.1功能需求分析. 9

4.1.1 音乐播放系统前台用户模块内容:. 9

4.1.2 音乐播放系统后台管管理员模块:. 9

4.2 系统开发平台及环境. 9

4.2.1 系统开发平台. 9

4.2.2

系统开发环境. 10

5  总体设计. 11

5.1系统功能模块设计. 11

5.2系统流程分析. 11

5.3数据库概要设计. 13

6  详细设计与实现. 25

6.1数据库表设计. 25

6.2功能实现. 26

6.2.1网站首页页面. 26

6.2.2用户注册页面. 28

6.2.3音乐评论页面. 29

6.2.4音乐搜索页面. 30

6.2.5音乐收藏页面. 31

6.2.6管理用户信息页面. 32

6.2.7添加歌曲分类信息页面. 34

6.2.8管理歌曲信息页面. 34

6.2.9管理歌曲评论信息页面. 36

6.2.10添加管理员信息页面. 37

6.2.11

登录密码修改页面. 38

7  系统测试. 40

7.1测试原则. 40

7.2测试目的. 40

7.3测试用例. 40

结束语. 43

致谢. 44

参考文献. 45

 


1 绪论

1.1 系统开发目的

上世纪九十年代末,互联网进入中国就呈现雨后春笋的发展状况,计算机网络技术经过十几载的更新换代,中国的互联网已经成为全球最大的互联网。音乐网站是计算机技术和通信技术发展的必然产物。互联网式的音乐传播彻底改变了原有传统的音频传播途径与方式,方便的传播途径,高效的传播效率,有利于社会资源的最大化利用。由于音乐网站使用方便,越来越受到大家地欢迎。但这也导致了中国的音乐网站数量的激增,网站为了能够有自己稳定的使用者,网站之间的竞争也空前激烈,为能在中国众多的音乐网站中起到领导地位,面对各种新兴的创业机会,建立一个具有自己特色的,功能详细,实用的音乐播放系统尤为重要。

1.2 系统开发意义

中国音乐文化历史悠久,从古至今,音乐一直是人类生活中不可或缺的消遣方式之一,音乐已经深入人心。时过境迁,音乐的传播方式也一直在尝试着各种各样地改变。中国互联网使用人数超过九亿,经济市场份额巨大。音乐网站的建设,不仅使音乐得到高效传输,还刺激了数码设备的更新换代,带动了网民的消费欲望,为社会创造了经济正向收入。音乐网站是音乐传播的工具之一,对音乐的传播、创作和欣赏模式都产生了巨大的影响。如今比较热门的社交式音乐网站让使用者进行交友互动,有助于网站使用者了解歌曲的创作背景和传播一些正能量。音乐播放系统的建设拥有多样化特性,而且更倾向人工智能和人性化方向发展和建设,必会改变现有音乐分享格局。

1.3 国内外研究综述

1.3.1 国外音乐网站发展

在2005年国外音乐网站建设先驱是美国沃尔玛公司建设的一家新型网络音乐下载商店,从商店下载的音乐可以在微软自带的媒体播放器进行播放,该商店开启了在线音乐播放下载收费的模式。在此之后,很多的在线音乐公司都采用了该模式。如今在国外比较流行的音乐网站有Spotify和Apple Music,这两个公司基本承包了国外在线音乐的市场。用户需要每月支付一定的金额才能使用音乐网站的受限功能,通过这种合约的模式,带动了国外在线音乐飞速发展。在国外,有教育机构尝试音乐结合教育。在音乐教育领域代表性的成就是美国当代音乐计划Contemporary Music Project,新一代音乐学习者不再被视为思想视野的延伸,而是社会需要形成跨文化理解的平衡,这可以直接影响国际社会的发展,美国将音乐教育作为人们日常交流和民族感情增进的方式,同时音乐也可以被认为是一种多元文化的结合体[1]。

1.3.2 国内音乐网站发展

国内音乐传播经历了磁带、CD再到如今大数据时代的在线音乐下载。中国在线音乐在2001年步入初期的快速发展阶段,众多在线音乐网站纷纷涌现,市场发展极其迅速[1]。在2004年期间,在国外音乐版权收费冲击下,国内音乐版权争夺激烈,国内在线音乐网站经历了低谷期[2],直到2009年国家规范网络音乐市场秩序,加强了音乐版权的保护,在线音乐经济回暖。随着音乐版权归属的保护与重视,在线音乐网站版权之间的斗争也是愈演愈烈。现如今,网易云音乐、腾讯音乐平台、阿里音乐,实现了对其他小公司音乐平台的收购。在大数据的时代下,各大音乐平台抓住机会,公司更是推出了社交性的在线音乐平台。实行了精准推送功能,根据用户的喜好进行每日音乐推送,深受广大使用者的喜爱。

在今年新冠疫情的影响下,音乐成为人们的刚需,各大在线音乐平台每日用户,都呈现增长趋势,根据各大公司的第一期财务报表数据上看,腾讯公司遥遥领先,成为中国在线音乐网站的领头羊。除此之外,斗鱼、虎牙等直播平台更是邀请大量明星参与音乐在线直播表演。



2  相关技术介绍

2.1 方案比选

2.1.1网站页面技术

(1)方案一:JSP

(2)方案二:HTML

方案一分析:

JSP(Java Server Pages)Java服务器页面它和Servlet技术一样,都是SUN公司定义的一种用于开发动态Web资源的技术,JSP的信息是动态的,可以减少请求次数,相对于HTML还比较安全,不需要考虑浏览器的兼容性。

方案二分析:

HTML(Hypertext  Markup Language)超文本标记语言:它是静态页面,和JavaScript一样属于解释型语言。开发难度大,需要考虑浏览器的兼容性,页面请求过多。

最终选择:方案一

本音乐播放系统的页面数据不是静态的,而是用户和后台之间需要进行数据相互,从数据交互和浏览器兼容性方面考虑使用JSP为本系统页面技术。

2.1.2 前端UI框架

(1)方案一:BootStrap

(2)方案二:Vue

方案一分析:

Bootstrap最初由Twitter作为样式指南而启动。它旨在使开发人员能够以所需的所有精度和效率进行快速开发。它是开源的,具有完整的HTML,CSS和JavaScript框架。它具有一个带有12列网格系统的CSS处理器,并已预先设置样式,可以使用UI组件。Bootstrap具有各种组件,实用程序和迁移工具。这些组件包括警报,表单,分页,导航栏,工具提示等。它还提供了诸如边框,颜色,大小选择,间距选项等实用程序。有了这些,开发变得简单而快速。

方案二分析:

Vue是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 完全有能力驱动采用单文件组件和 Vue 生态系统支持的库开发的复杂单页应用。数据驱动+组件化的前端开发。缺点在于,上手难度比较高,并且大规模开发的化,需要有体系化开发的积累。

最终选择:方案一

Bootstrap相对于Vue开发过程非常快,他提供CSS功能和预定的代码块,节省工作量,确保可以在不通的浏览器中使用,根据本系统的页面美化要求,最终选择Bootstrap作为前端页面开发的框架。

2.1.3 数据库选择

方案一:Oracle

方案二:MySQL

方案一分析:

Oracle 能所有主流平台上运行(包括Windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持,但是对硬件的要求很高,管理维护麻烦,需要技术含量较高。

方案二分析:

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性服务比较稳定,性能强,基本不会出现死机。

最终选择:方案二

相比于Oracle,MySQL开源对硬件基本没有要求,MySQL使用成本低,方便维护,使用简单易于学习,最终选择MySQL作为本音乐播放系统的数据库。

2.1

2.2 Java语言介绍

上世纪九十年代中期,Sun公司开发并且发布了一种富有创造能力的面向对象编程语言-Java,Java的设计之父是Sun研究院院士詹姆斯.戈士林。Java的横空出世,彻底改变了整个Web应用程序设计格局。Oak编程语言是Java编程语言的前身,Oak编程语言是一种用于智能家具的设计语言。但是Oak编程语言由于其他非技术性的原因,无法火遍大江南北。因而导致了该语言慢慢的消失在人们的视野当中。但随着互联网技术的发展,Green小组发现Oak编程语言特别适合Web应用程序的设计与开发,于是Oak又从新回到了编程人员的视野当中,在Oak语言原有基础上得到进一步完善,并且取得巨大成功。Oak最后更名为Java,而名字由来也是很奇特,原因是当时程序编程人员比较爱喝爪哇咖啡。随着Java Servlet的发布,Java语言极大地促进了互联网商务的发展。Java服务器页面(JSP)技术的引入使Java语言成为Web系统开发的最主要的开发工具。

Java语言的快速普及,而且是可以跨平台的,受到了许多编程爱好者与互联网公司的青睐,以下简单列举一些Java重要的特性。

(1)面向对象

对相同类的对象进行向上抽取共同性形成基类,把类的数据和操作方法放在一个类中,形成一个整体—对象,面向对象有三个明显的特性,分别是封装性,继承性和多态性。

(2) 跨平台性

Java语言编程平台不一致是没有关系的,这就意味着由Java语言编写的Web软件程序可以在不同的软件平台上执行并且进行扩展而不需要进行代码的修改。平台独立性有两种类型:源代码级和目标代码级。Java能够在不同的平台执行,不可或缺的一个要素是要有Java虚拟机(JVM)的支持,即在相应的编程平台安装Java虚拟机(JVM)。

(3) 简单易学

Java编程语言是面向对象,与面向过程的C语言相比有很大的区别,Sun公司出于安全性能的考虑,从Java编程语言中剔除了C语言支持的三种数据类型。如指针和Strut等,Java的对象是网格系统和移动系统,所以Java语言自然非常的简单。

(4) 支持多线程编程

Java编程语言是支持多线程的,主要从两个方面支持多线程编程。若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作另一方面,Java语言内置多线程控制,可以极大简化多线程应用程序开发,Java提供了一个类 Thread由它负责启动运行,终止线程,并可检查线程状态[3]。

(5)安全性

Java语言还可以增强对外部攻击性程序的防御。只有检查字节码验证程序并简化系统内容,才能将Java字节码成功写入解释器中。这样,可以防止应用程序之间的相互干扰,并且可以在用Java语言编程期间有效地保证稳定性[4]。

2.3 JSP语言介绍

JSP是Java Server Pagers(Java服务器页面)技术的简称,它的核心技术就是Servlet技术,是Sun公司定义的一套动态页面标准技术。JSP代码与Html代码非常相似,它实际是由Java代码和HTML构成,当用户访问JSP页面时,先执行文件中的Java代码,其结果连同其他HTML部分发送用户给客户端的浏览器。使用JSP开发的Web系统是可以跨平台的,可以在不用的操作系统中运行。通过JSP动态页面技术访问页面操作流程如图2-1所示。

图2-1 JSP页面访问操作流程图

用户在本地客户端浏览器输入网络资源地址时,会向服务器发送一个JSP浏览页面请求,服务器端引擎将JSP源文件翻译成包含.Java后缀名的文件,并且将这个.Java文件编译成Class的字节码文件,通过获取数据库内容,把最后生成的结果页面返回到用户浏览器呈现给用户动态的数据。

2.4 JQuery介绍

JQuery是一个轻量级的JavaScript库。它的核心思想是Write Less, Do More。JQuery是开源并且免费的,使用MIT许可协议[5]。JQuery的语法设计可以让软件开发者使用更加便捷,JQuery可以方便获取和修改页面中的数据,开发人员还可以快捷的控制Web程序下的CSS样式文;高效的页面处理能力,能够与Ajax技术完美结合,极大方便了程序的开发,加深用户的页面体验效果。其模块化的使用方式使开发者可以很轻松的开发出功能强大的静态或动态网页[6]。

2.5 MySQL介绍

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,已被Oracle 公司收购。作为最流行的关系型数据库管理系统有着以下特点:使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性[7]。提供了 TCP/IP、ODBC和 JDBC等多种数据库连接途径。提供了用于管理、检查、优化数据库操作的管理工具。可以处理拥有上千万条记录的大型数据库。而且MySQL是开源的,不需要支付额外的费用。SQL语句使用标准的SQL数据语言形式[8]。MySQL特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,这样的设计增加了MySQL的读取速度,灵活性可管理性也得到了很大提高。



需求分析

3.1 可行性分析

3.1.1 经济可行性

经济可行性分析是软件系统开发的一个重要验证指标,所以在系统开发之前要做好经济可行性。由于音乐播放系统是基于B/S模式开发的毕业项目,毕业设计所要求的硬件和开发软件都能在网上购买或者免费获取,所以程序在人力开发和经济投入都不高。音乐资源也是在其他音乐网站免费下载获得,音乐网站也可以带来一定的经济收入,所以经济可行性是完全可以的。

3.1.2 技术可行性

开发程序选择的是面向对象的,功能强大的,简单易用的Java程序设计语言,数据库的开发工具使用到了MySQL数据库,由于自己之前接触过一些简单的程序开发方面的设计作品,所以对MyEclipse工具的使用比较熟练,对于数据库的操作技巧也有一定的积累。另外,程序开发需要在自己电脑上安装的软件并不多,在win10操作系统的大环境下,能够完全搭建好程序开发的操作环境,比如MyEclipse工具,MySQL数据库工具,以及处理程序图片的Photoshop工具等都能安装在电脑上。总的说来,开发这个程序在技术上是可以实现的。

3.1.3 操作可行性

音乐网站基于B/S结构,用户不要安装客户端,用户只需有任意一个浏览器,就可以在浏览器上注册成为网站的会员,登录系统,可以在网站上进行音乐的试听,收藏等操作。系统操作简便,用户只需掌握基本的电脑操作就可以使用音乐播放系统,用户体验效果较好,因此这个音乐播放系统在操作上完全可行。

3.1.4 法律可行性

本音乐播放系统是自行开发的播放系统,使用具有个人研发的产权,使用的集成开发工具和数据库都是开源的,音乐资源是从正规途径获取,程序的开发合情合理,绝对不存在侵犯他人版权等问题,所以在法律方面是可行的。

根据以上几点可行性分析,开发一个音乐播放网站,具有操作相对简单、节省开发成本的优势。因此,独自开发一个音乐播放系统是可行的。

3.2 系统性能分析

(1)安全性:用户必须经过登录验证成功后才能进入系统。否则,用户没有权限进入系统。系统满足不同的用户需求,用户登录成功后,可以进一步的操作系统

(2)可升级性:由于网站用户需求的不断增加,WEB程序也要做出一定的调整,因此,系统必须要具备可升级性。

(3)机密性:在实际使用过程中,系统要履行保护用户秘密信息的义务。如果系统存在漏洞,将给用户带来巨大损失,所以要保证系统的可靠性。

(4)可靠性:系统不可以有可移植行病毒,系统自身需要检测病毒纯在的风险性,让使用者放心使用。

(5)简单性 :使用者无需进行系统培训就可以操作系统功能。



系统需求分析

4.1 功能需求分析

该音乐播放系统主要是由前台用户模块和后台管理员模块组成,具体的功能描述如下:

4.1.1 音乐播放系统前台用户模块内容:

网站首页:项目启动时,系统首页默认是打开的第一个页面,在该页面显示网站的音乐资源的信息,用户可进行音乐的在线试听。

用户注册与登录:用户想进入个人用户中心时,需进行网站会员的注册与登录。

音乐浏览:实现音乐的列表显示,点击可以查看音乐详情信息,可以进行在线播放音乐,可以下载音乐。

音乐评论:实现用户登录后可以对音乐进行评论。

音乐收藏:实现用户登录后可以收藏音乐。

音乐搜索:实现用户可以搜索音乐。

排行榜:实现音乐排行榜的列表显示,可以下载音乐,可以在线听音乐,用户登录后可以收藏音乐。

用户后台:音乐网站用户输入登录用户名和登录密码,经校验成功进入个人用户后台,可以在用后台播放或查看已收藏的音乐,也修改自己原有的信息,如修改个人登录密码。

4.1.2 音乐播放系统后台管管理员模块:

用户管理:网站后台管理员登录成功进入后台管理系统,可以进行网站普通用户的信息查看、修改,添加和删除。

歌曲分类管理:后台管理员进行网站后台管理系统,可以进行歌曲分类信息的更新,查看、删除。

歌曲管理:后台管理员在网站后台管理系统进行网站音乐资源的上传,查看,修改或删除。

系统管理:该功能仅为超级管理员持有,普通管理员无法达到这个权限,主要功能是超级管理员进行普通管理员信息的添加、查看、编辑或删除,

歌曲评论管理:后台管理员可进行对网站普通用户对歌曲评论信息进行删除或查看。

4.2 系统开发平台及环境

4.2.1 系统开发平台

(1)MyEclipse

MyEclipse是一个十分优秀的用于开发Java,J2 EE的Eclipse插件集合,MyEclipse功能非常强大,也十分广泛,尤其是对各种开元产品的支持十分不错;MyEclipse企业级工作平台 My Eclipse Enterprise

Workbench,简称 MyEclipse)是对Eclipse IDE的扩展,利用它可以在数据库和Java的开发、发布,以及应用程序服务器 的整合方面极大的提高工作效率 [9]。MyEclipse有些常见的结构特性,包括WEB开发工具,数据库服务等,并且可以从官网或其他的第三方平台找到插件实现它们。在不影响其他模块的使用整体性的前提下,可以对任意一个模块进行单独的升级或者扩展。MyEclipse适用多种操作系统,集成了许多常用的框架,在编写程序时非常方便快捷,是一款不错的Java开发工具。

[if !supportLists](2)[endif]Tomcat

Tomcat作为一个可跨平台开发和调试,免费、开源的轻量级Web应用服务器,在系统开发体系当中是首选,随着分布式集群技术的发展,Tomcat得到了广泛应用。面对大数据、高并发网络访问,Tomcat保持高速网络传输、保证信息传递及时、增强大数据并发处理能力、极大改善用户体验[10]。Tomcat支持HTML、JavaScript等静态资源处理。负载均衡,提高网络的灵活性和可用性。

4.2.2 系统开发环境

(1)开发工具:MyEclipse Mars.2 2018.12

(2)数 据 库:MySQL5.7

(3)服 务 器:Apache Tomcat7.0

(4)运行环境 :JDK1.8。

(5)开发技术:Bootstrap、JSP、JavaBeam、Ajax、JQuery、B/S模式。



总体设计

5.1 系统功能模块设计

通过系统需求分析,确定系统总体功能如下图所示:


图5-1 系统功能结构图



5.3 数据库概要设计

良好的数据库设计,可以简单化软件开发者的开发过程,一个合理数据库的设计可以降低程序开发的复杂性,使软件程序开发过程更为轻松和容易。本系统是一个小型的音乐播放系统,考虑开发成本和开发能力等需求,决定采用MySQL作为本次项目开发的数据库。在设计数据库时,需要绘制一个系统实体的E-R图,能够反映系统应用的基本应用需求,E-R图的使用与优化,目的是为了消除用冗余。数据库设计基于概念设计,它的实现基于用户需求,而软件开发者不应该考虑特定软件和硬件。

规划出的实体可以分为六个实体,分别是:管理员实体、收藏实体、用户实体、歌曲实体、歌曲评论实体、歌曲分类实体。主要实体的实体属性图描述如下:

[if !supportLists]1、 [endif]管理员实体:

图5-4 管理员实体属性图

[if !supportLists]2、 [endif]收藏实体:


图5-5 收藏实体属性图


[if !supportLists]3、 [endif]用户实体:

图5-6 用户实体属性图

[if !supportLists]4、 [endif]歌曲实体:

图5-7 歌曲实体属性图

[if !supportLists]5、[endif]歌曲评论实体:

图5-8 歌曲评论实体属性图


[if !supportLists]6、 [endif]歌曲分类实体:

图5-9歌曲分类实体属性图

[if !supportLists]7、 [endif]总E-R图

图5-10 E-R图



详细设计与实现

6.1 数据库表设计

 根据数据分析,可以建立下表。各张表详细字段如下:

表6-1 管理员表

序号列名数据类型长度标识主键外键允许空

1aidint11是是 否

2lnamevarchar50   是

3pwdvarchar100   是

4anamevarchar50   是

5sexvarchar10   是

6telvarchar50   是

7sfvarchar50   是

表6-2 音乐收藏表

序号列名数据类型长度标识主键外键允许空

1coidint11是是 否

2muidint11  是是

3lnamevarchar50   是

4cotimedatetime    是

表6-3 用户表

序号列名 数据类型长度标识主键外键允许空

1lname varchar50 是 否

2pass varchar50   是

3mname varchar50   是

4sex varchar10   是

5birthday varchar50   是

6tel varchar50   是

7logo varchar100   是

8regtime datetime    是

表6-4 歌曲表

序号列名数据类型长度标识主键外键允许空

1muidint11是是 否

2sidint11  是是

3munamevarchar50   是

4peoplevarchar50   是

5muaddrvarchar100   是

6mtotalint11   是

7tjvarchar50   是

8memotext    是

9atimedatetime    是

表6-5 歌曲评论表

序号列名数据类型长度标识主键外键允许空

1didint11是是 否

2muidint11  是是

3scoreint11   是

4memovarchar500   是

5lnamevarchar50   是

6atimedatetime    是

表6-6 歌曲分类表

序号列名数据类型长度标识主键外键允许空

1sidint11是是 否

2snamevarchar50   是

6.2 功能实现

6.2.1 网站首页页面

此页面为网站的首页,显示总的信息,先是左上角是网站名称,下面是导航栏,导航栏包括:首页、流行、摇滚、R&B、嘻哈、民谣、排行榜、用户后台,网站最下方为版权和管理员入口。界面如下图:

图6-1音乐网站首页

首页关键代码如下:

"musicBox

fl ml line">   

"boxHead">

                                          "cateName">推荐歌曲

                                          "member/order.jsp?t=1"class="fr more">更多

                                          "songList">

                                                 <%

                                                         rsmuid=cnmuid.query("select  * from music where tj='是'order by muid desc   limit 0,20 ");

                                                        Integertt=1;

                                                        while(rsmuid.next()) {

                                                 %>



6.2.2 用户注册页面

注册页面实现网站新用户注册功能,带“*”为必填项不能为空,主要的填写包括:登录名、昵称、性别、登录密码、手机号码、头像等主要信息,要求两次输入密码要一致,方可注册成功。界面如下图:

图6-2用户注册页面

用户注册关键代码如下:

        //声明添加字段

                Stringlname=request.getParameter("txt_lname");

        Stringpass=request.getParameter("txt_pass");

        Stringmname=request.getParameter("txt_mname");

        Stringsex=request.getParameter("rtsex");

  String  sql = “insert into member(lame,pass,mname,sex,birthday,tel,logo,regtime)

values('"+lname+"','"+pass+"','"+mname+"','"+sex+"','"+birthday+"','"+tel+"','"+logo+"',now())"

       out.println(sql);   

        //验证是否已经存在

        if (cn.exist("select * from memberswhere lname = '" + lname + "'"))

        {

           out.println("");

            out.println("alert('该用户名已存在!');window.history.go(-1);");

            out.println("");

            return ;}

        //执行注册sql

          int i=cn.update(sql)

          HttpSession session =request.getSession();

          session.setAttribute("mem",lname);

          out.println("");

        out.println("alert('注册成功');");

       out.println("window.location='member/wec.jsp'");

       out.println("");

6.2.3 音乐评论页面

此页面实现音乐的显示,用户登录后可以评论音乐。界面如下图:

图6-3音乐评论页面

歌曲评论关键代码如下:

        Stringmuid=request.getParameter("id");

        Stringscore=request.getParameter("ButtonList1");

        Stringmemo=request.getParameter("txt_memo");

          HttpSession session = request.getSession();

          String lname = (String)session.getAttribute("mem")

          if (lname == null) {

                 out.println("");

                 out.println("alert('对不起,请先登录!');window.history.go(-1);");

                 out.println("");

                 return;

          }

          String sql = “insert into music_discuss(muuid,score,memo,lname,atime)values(“muid”+”score+”)

        out.println(sql);

          inti=cn.update(sql);        

          out.println("");

6.2.4 音乐搜索页面

此页面实现用户登录后可以搜索音乐。界面如下图:

图6-4音乐搜索页面

音乐搜索关键代码如下:

//查询出需要显示的记录

rs=cn.query("select * from music  where "+where+" order by muid desc limit"+pageSize*(pageNow-1)+", "+pageSize);

Integertt=1;

while(rs.next()){

  

  • "mItem">"num"><%=tt++%>"title"style="width:360px;">"member/play.jsp?id=<%=rs.getString("muid")%>"target="play"><%=rs.getString("muname")%>"artistName">"#"><%=rs.getString("people")%>"playCount"><%=rs.getString("mtotal")%>人听过
  •          

     <%} %>

    6.2.5 音乐收藏页面

    此页面实现用户登录后可以播放或删除音乐。界面如下图:

    图6-5音乐收藏页面

    音乐搜藏功能关键代码如下:

    conn cn = new conn();

            Stringmuid=request.getParameter("id");

                HttpSessionsession = request.getSession();

            String lname= (String) session.getAttribute("mem");

                if (lname== null) {

                      out.println("alert('对不起,请先登录!');window.history.go(-1);");

                      return;

                }

                Stringsql="insert into collect(muid,lname,cotime)values("+muid+",'"+lname+"',now())";

           out.println(sql);

            //验证是否已经存在

            if (cn.exist("select * from collect wherelname = '" + lname + "' and muid="+muid))

            {

                out.println("");

               out.println("alert('收藏失败,您已经收藏过此歌曲了!');window.history.go(-1);");

               out.println("");

                return ;

            }

                int i=cn.update(sql);

                out.println("");

                out.println("alert('收藏成功');window.history.go(-1);");

                out.println("");

    6.2.6 管理用户信息页面

    此页面为管理员功能,实现用户信息的管理,可以按用户名、姓名进行查询,可以查看、编辑或删除用户信息。界面如下图:

    图 6-6 管理用户信息页面

    修改用户信息关键代码如下:

                  String id=request.getParameter("id");

            Stringlname=request.getParameter("txt_lname");

            Stringpass=request.getParameter("txt_pass");

            Stringmname=request.getParameter("txt_mname");

            Stringsex=request.getParameter("rtsex");

            Stringbirthday=request.getParameter("txt_birthday");

            Stringtel=request.getParameter("txt_tel");

            Stringlogo=request.getParameter("fujian");

            Stringsql="update members set lname = '"+lname+"',pass ='"+pass+"',mname = '"+mname+"',sex ='"+sex+"',birthday = '"+birthday+"',tel = '"+tel+"',logo= '"+logo+"' where lname='"+id+"'"

            out.println(sql)

             int i=cn.update(sql);      

            out.println("");

            out.println("alert('操作成功');");

            out.println("window.location='admin/members/members_Manage.jsp'");

            out.println("");


    6.2.7 添加歌曲分类信息页面

    该后台页面是管理员功能,管理员可以进行歌曲分类信息的添加,添加信息包括:类别名称。界面如下图:

    图 6-7 添加歌曲分类信息页面


    添加歌曲分类关键代码如下:

    conn cn = new conn();

           String sname=request.getParameter("txt_sname");

           String sql="insert into styles(sname)values('"+sname+"')";

           out.println(sql);

                  inti=cn.update(sql);        

                  out.println("");

                  out.println("alert('操作成功');");

                  out.println("window.location='admin/styles/styles_Add.jsp'");

                  out.println("");

    6.2.8 管理歌曲信息页面

    此页面为管理员功能,实现歌曲信息的管理,可以按:歌曲分类、歌曲名称、歌手进行查询,可以查看、编辑或删除歌曲信息。界面如下图:

    图6-8 管理歌曲信息页面

    管理歌曲信息关键代码:

    onn cn = new conn();

            Stringsid=request.getParameter("se_sid");

            Stringmuname=request.getParameter("txt_muname");

            Stringpeople=request.getParameter("txt_people");

            String muaddr=request.getParameter("fujian");

            Stringtj=request.getParameter("rdltj");

            Stringmemo=request.getParameter("Textarea1");

            String sql="insert intomusic(sid,muname,people,muaddr,mtotal,tj,memo,atime)values("+sid+",'"+muname+"','"+people+"','"+muaddr+"',0,'"+tj+"','"+memo+"',now())";

            out.println(sql);

                  int i=cn.update(sql);        

                  out.println("");

                  out.println("alert('操作成功');");

                  out.println("window.location='admin/music/music_Add.jsp'");

                  out.println("");

    6.2.9 管理歌曲评论信息页面

    此页面为管理员功能,实现歌曲评论信息的管理,可以按:评论人进行查询,可以查看或删除歌曲评论信息。界面如下图:

    图6-9 管理歌曲评论信息页面

    管理歌曲评论信息关键代码:

                      conn cn = new conn();

           String id=request.getParameter("id");

           String muid=request.getParameter("txt_muid");

           String score=request.getParameter("txt_score");

           String memo=request.getParameter("txt_memo");

           String lname=request.getParameter("txt_lname");

           String sql="update music_discuss set muid ="+muid+",score = "+score+",memo ='"+memo+"',lname = '"+lname+"' wheredid='"+id+"'";

           out.println(sql);

                  inti=cn.update(sql);        

                  out.println("");

                  out.println("alert('操作成功');");

                  out.println("window.location='admin/music_discuss/music_discuss_Manage.jsp'");

                  out.println("");

    6.2.10 添加管理员信息页面

    此功能只有超级管理员才可以拥有,普通的管理员无法达到该权限,超级管理员从该后台页面对普通的管理员信息的添加,添加信息包括:手机号码、密码、姓名、性别、登录名。界面如下图:

    图 6-10添加管理员信息页面

    添加管理员信息关键代码:

            Stringpwd=request.getParameter("txt_pwd");

            Stringaname=request.getParameter("txt_aname");

            String sex=request.getParameter("rtsex");

            Stringtel=request.getParameter("txt_tel");

            String sql="insert intoadmin(lname,pwd,aname,sex,tel,sf)values('"+lname+"','"+pwd+"','"+aname+"','"+sex+"','"+tel+"','管理员')";

            out.println(sql)

            if (cn.exist("select * from adminwhere lname = '" + lname + "'"))

               out.println("");

                out.println("alert('该登录名已存在!');window.history.go(-1);");

               out.println("");

                return ;

                  int i=cn.update(sql);        

                  out.println("");

                  out.println("alert('操作成功');");

                  out.println("window.location='admin/admin/admin_Add.jsp'");

                  out.println("");

    6.2.11登录密码修改页面

    该页面功能为网站后台管理员持有,主要实现的功能是管理员可以从该页面进行登录密码修改,要求是管理里首先要输入自己原有密,接着输入新密码,最后再重新输入新密码,而且原密码输入正确后才可以修改。界面如下图:

    6-11 修改登录密码页面

    修改登录密码关键代码如下:

    Stringpwd1=request.getParameter("txt_pwd");

                  Stringpwd2=request.getParameter("txt_pwd2");

                         conn cn=new conn();

                         String sql="select *from admin where aid="+aid+" and pwd='"+pwd1+"' ";

                         ResultSet rs=cn.query(sql);

                                              try {

                                       if(rs.next())

                                              sql="updateadmin set pwd='"+pwd2+"' where aid="+aid;

                                              cn.update(sql);

                                              out.println("");

                                              out.println("alert('恭喜您:修改成功!');");

                                              out.println("window.location='admin/admin/pass.jsp'");

                                              out.println("");

                                       }

                                       else

                                       {

                                              out.println("");

                                              out.println("alert('对不起,原密码错误,请重新输入!');");

                                              out.println("window.location='admin/admin/pass.jsp'");

                                              out.println("");        



    系统测试

    软件测试在整个软件开发过程中起着关键性的作用,软件测试基本贯穿整个系统开发周期,由此可见测试的重要性[12]。伴随着系统测试的不断,就会发现系统存在许多的漏洞 ,测试应该尽早进行。当软件开发人员接触需求文档时,就要测试需求文档,需求测试会使测试人员吃尽苦头,测试到一半时,需求变更,导致测试需要从新的进行。

    网站能否吸引用户,页面交互简便是吸引用户的一大因素。所以页面检测也是尤为重要。一个网站设计者,能够设计出良好的交互页面,更能够代表一个公司或者开发者的形象,冲击使用者第一印象,吸引更多网站使用者,那这就是一个成功的网页。如果没有一个成熟的交互页面,不仅无法吸引到用户,还会增加系统的开发成本。

    7.1 测试原则

    软件测试是一件具有挑战性的工作。软件测试应该遵循以下几点;首先是检测前需要明确系统的标准,只有建立一套标准,才能根据测试所得到的数据对系统的质量进行评估和分析。第二是从用户的角度进行测试,测试标准应该建立在功能能够满足所有系统使用者的需求基础上,因为最严重的错误是不能满足使用者的需求。第三个原则是在系统启动的时候进行测试,尽早的进行软件测试,不仅能尽快的发现系统存在的不足,而且能让软件开发者降低错和修复的成本。第四个原则是,软件开发者尽可能的避免自己进行测试,原因在于,软件开发者可能掺杂个人的主观因素,导致测试过程中一些错误自己无法确认,好比如A的测试一般都会有误差,这需要B来确认。最后一点是软件测试者需要保存测试结果和说明文档,为往后维护提供方便。

    7.2 测试目的

    测试的目的在于要对系统的稳定和可操作性能进行检查。对于软件的开发最终目的在于最后的测试和试用,这是一个不可缺少的重要环节。对于软件开发者而言,在对每一个单独的功能进行编排时候,都要有单独的测试,并通过测试阶段才可以研发多个功能性软件,这样既缩短了研发时间,也可以在的单个的早期测试中发现问题,以免融合后的软件,在查找问题时就很难快速解决或者急速定位问题。

    7.3 测试用例

    表7-1 用户注册测试表

    测试内容输入预期结果实际结果

    必填数据的非空验证必填输入框无输入数据提示输入相关信息符合预期

    手机号码验证输入错误手机号码提示手机输入格式不正确符合预期

    图片上传上传个人头像上传成功,存储响应的数据符合预期

    其他用户注册点击注册数据能完成更新符合预期

    表7-2 用户登录测试表

    测试内容输入预期结果实际结果

    用户名错误输入不存在的用户提示用户名错误符合预期

    密码错误用户名正确,但密码不正确提示用户名密码错误符合预期

    登录成功输入正确的账号信息用户进入用户中心符合预期

    账户状态测试在后台登录界面登录用户账号提示用户错误符合预期

    表7-3 用户中心测试表

    测试内容输入预期结果实际结果

    用户中心检测无用户登录点击用户中心提示“请登录”跳转到登录页面符合预期

    修改个人信息点击“修改信息”弹出修改信息页符合预期

    查看音乐搜藏点击“音乐搜藏”可看到收藏信息符合预期

    退出登录点击“退出”返回首页符合预期

    表7-4 音乐搜藏测试表

    测试内容输入预期结果实际结果

    添加搜藏点击搜藏图标进入音乐收藏页符合预期

    删除搜藏点击删除图标收藏的音乐被删除符合预期

    收藏音乐的试听点击试听图标跳转到音乐播放页面符合预期

    表7-5 音乐播放与下载测试表

    测试内容输入预期结果实际结果

    音乐播放点击“音乐名”跳转到音乐播放页面,音乐自动播放符合预期

    音乐播放进度控制点击播放进度条播放正常符合预期

    音乐音量控制点击音量控制图标可控制音量符合预期

    音乐下载无用户登录点击下载图标提示“请先登录”符合预期

    音乐下载有用户登录点击下载图标音乐音频下载到本地电脑符合预期

    表7-6用户评论测试表

    测试内容输入预期结果实际结果

    音乐评论无用户登录参与评论提示“请先登录”符合预期

    音乐评论有用户登录参与评论可以发表用户评论符合预期

    查看评论点击“用户评论”可看到用户评论符合预期

    删除评论点击“删除”’提示“删除成功”符合预期

    表7-7 管理员管理音乐测试表

    测试内容输入预期结果实际结果

    添加音乐分类点击“添加音乐分类”进入添加歌曲分类页面符合预期

    删除音乐分类选中需要删除的分类提示“删除成功”符合预期

    添加歌曲点击“添加歌曲”歌曲添加到服务器符合预期

    删除歌曲选中需要删除的音乐提示“删除成功”,刷新数据符合预期

    音乐信息编辑点击需要编辑的音乐提示“编辑成功”符合预期

     结束语

    时间飞逝,现在本科生毕业设计也基本完成了,在开发过程中经历了各种酸甜苦辣,从最开始的懵懵懂懂,到中期的渐入佳境,再到最后的得心应手。在这次的为期半学期的毕业设计过程中,遇到了许多令我头疼的问题,但这些在我通过咨询老师和网上查询资料得到了解决,使我学会了运用所学知识解决实际中的问题,使理论和实践得到充分结合,增强了自己的实践能力。因为缺乏实际的商业项目经验,所学知识的有限,考虑问题不是太全面,所以本系统距实际应用还有一些差距,需要以后不断的进行测试及完善,并且测试的时间较短,存在一些未知的错误也在所难免。主要存在以下一些问题:

    1.对于系统的扩展功能考虑不周到,在未来的设计过程中,根据系统要求预留编程接口,便于系统功能的扩展,增强系统的可扩展性。

    2.系统的安全性有待进一步提高,以后的改进过程中,可以通过对表关键字段内容进行加密,在系统中运用多种权限验证,以保证系统的安全。

    3.该网站系统数据均是来自网站管理者的手动添加、修改等操作,工作量稍大,在以后的开发当中应考虑结合网络爬虫技术获取网站原始数据,进行统一大量的数据操作。

       有了这次大四毕业设计的经历我收获很大,也有很多感想;在大学学到的理论知识和一些实习经历得到的经验,在开发中也也是得到了实际验证,锻炼了自己的动手能力,掌握了软件开发的流程,为以后的工作打下基础,是我受益终身。

     致谢

    四年大学求学生涯即将画上一个句号,但这只是我人生中的一个逗号。在毕业设计动员大会之前,经历人生中第一次正式工作面试,经历了多次的挫折和困难,找到了自己喜欢的工作。有了校园招聘的经验,让我深刻的认识到知识的重要性,尤其是大学所积累的专业基础知识。回顾在校大学四年的求学经历,经历过挫折,但也是满载而归。在论文即将交付之际,我要特别感谢我的导师刘老师,我可能不是您最好的学生,但你是我最尊敬和喜欢的老师。在今年国内新冠疫情爆发期间,老师也经常提醒我不要外出,认真做好毕业设计。毕设过程也不是一帆风顺,遇到许多设计上的难题,您都精心指导我解决问题;论文泄露被人发布到网上,您努力的帮我解决问题,让我为之感动;您知识渊博,视野雄阔,优秀的工作作风,对我产生了深远的影响。我要以您为榜样,严格要求自己,让自己做一个对社会有用的人。在此我想致以衷心的感谢和崇高的敬意。

    我还要感谢学院的其他领导和老师,是他们严谨的教学,使我学到了很多专业知识和掌握了一定专业技能,锻炼了自己的动手能力,能够完成这篇毕业论文的基础是每一位老师的教导。还要感谢我的同学们,在大学期间得到你们的关心和帮助,我都记在心里,正是你们的帮助和支持让我完成毕业论文的书写,愿我们的友谊长久。

    最后,我要感谢父母二十多年默默无闻的辛勤养育,感谢你们辛勤的工作,为我创造了良好的学习条件却永不求回报,我最大的心愿是愿你们能够永远健康长寿,以后加倍报答你们。

    参考文献

    [1] 王心严.国内外音乐教育现状分析与对比研究[J].艺术教育,2019(3):47-49.

    [2] 梁晓嘉. 网络销售中长尾效应和明星效应互动关系研究[D]. 复旦大学.

    [3] 王保华,薛锦云,丁树良.Java多线程机制及其应用[J].计算机与现代化,2000(01):1-6+20.

    [4] 何东.基于Java语言的安卓软件开发研究[J].通讯世界,2020,27(04):62-63.

    [5] 孙楠军. 个性化推荐技术在毕业设计选题系统中的应用研究[D].西安石油大学,2015.

    [6] 冯振. 基于WEB的某社交网站SPAM评估系统的设计与实现[D]. 山东大学, 2014.

    [7] 张斯伟. 虚拟现实技术在数字校园建设中的应用研究[D]. 北方工业大学.

    [8] 罗文艺.基于人脸识别技术的ATM认证系统设计与实现[J]. 中国优秀硕士学位论文全文数据库, 2016(03):59-59.

    [9] 周丽丽. 基于MyEcIipse平台的网上书店设计[J]. 中国电子商情:科技创新, 2013(23):2-2.

    [10] 怯肇乾.Tomcat应用服务器高并发优化处理[J].电脑编程技巧与维护,2018,(2):129-136.DOI:10.3969/j.issn.1006-4052.2018.02.040.

    [11] 代文姣. 基于FFMpeg的稳定应用层组播流媒体直播系统研究[D].华中师范大学,2018.

    [12] 赵兰波, 王鑫, 赵洪涛. 软件测试及其支持工具[J]. 交通科技与经济, 2006(02):108-109.

    你可能感兴趣的:(基于WEB的音乐播放系统的设计与实现)