摘 要

本音乐系统借助了当前互联网的发展趋势,近几年,随着网络的快速发展,网络已经融入人们的生活中。互联网给人们的生活带来了许多便利,基本上可以达到足不出户就能完成许多事情。互联网的使用基本实现全覆盖,上至老人,下至小孩,人们在干活或者疲劳时,会不经意的打开一首歌,用音乐的力量来缓解疲劳,伴随着时间的流逝,音乐中的某一首歌会伴随着他们的成长而印在脑海深处,成为抹不掉的回忆。因此开发一款在线听音乐的平台是很有必要的。设计该音乐平台,音乐数据采集于网络,支持网上收听、下载、上传、删除,上传跟删除等功能只能由系统管理员登陆后进行,用户可以在听音乐界面对歌曲进行下载、评论,平台也可以根据用户的播放以及搜索量来展示音乐的播放量,并在用户中心同步用户收听过的音乐,将其展示在用户中心模块。
系统基于python+Django框架,前端界面使用JavaScript+HTML+CSS,数据库采用MySQL8.0版本,最终期望实现一个能正常运行,界面元素正常显示,基本功能能够顺利使用的B/S。

关 键 词 :在线音乐系统;后台管理;下载;python;Django;播放

The Design and Implementation of Online Music Website Based On Python+ Django
Student: LIU Zheng- Lai Teacher: SANG Li- Li

Abstract:This music system makes use of the current development trend of the Internet. In recent years, with the rapid development of the Internet, the Internet has been integrated into people’s life. The Internet has brought a lot of convenience to people’s life. Basically, many things can be accomplished without leaving home. Complete coverage of basic implementation, on the use of the Internet to the old man, down to the child, people at work or fatigue, will inadvertently opened a song, with the power of music to relieve fatigue, with the passage of time, a song in the music will be accompanied by their growth and deep in the mind, as do not erase memories. Therefore, it is necessary to develop a platform for listening to music online. Design platform for the music, the music data acquisition in the Internet, online support to listen to, download, upload, delete, upload and delete functions can only be conducted by the system administrator logged in, users can download and listen to the music industry in the face of song for comments, the platform can also according to user’s play and search volume to show the amount of playing music, And synchronize the music that the user has listened to in the user center, and display it in the user center module.
The system is based on python+Django framework, the front-end interface uses JavaScript+HTML+CSS, the database uses MySQL8.0 version, and finally expects to achieve a normal operation, normal display of interface elements, basic functions can be used smoothly B/S.

Key words:Online music system;B/S mode;Background management;Download;Python;Django

目 次

摘 要 I
Abstract II

1 绪论 1
1.1 研究背景和意义 1
1.2 国内外研究现状 1
1.3 本文主要研究内容 2
1.4 本章小结 2
2 相关技术与开发工具介绍 3
2.1 相关技术简介 3
2.1.1 Python的技术介绍 3
2.1.2 Django的技术介绍 3
2.1.3 B/S 架构及其运行原理 3
2.2 MTV模型 4
2.3 HTML技术介绍 5
2.4 CSS技术介绍 5
2.5 MySQL数据库简述 5
2.6 开发工具简述 5
2.7 本章小结 5
3 系统需求分析 6
3.1 需求分析概述 6
3.1.1 系统流程图 6
3.2 功能性需求分析 6
3.2.1 用户角色分析 7
3.2.2 首页模块 7
3.2.3 歌曲排行模块 7
3.2.4 用户中心模块 8
3.2.5 后台管理模块 8
3.2.6 管理员注册登录 9
3.2.7 用户管理 9
3.2.8 歌曲信息 9
3.2.9 歌曲分类 9
3.2.10 歌曲动态 9
3.2.11 歌曲评论 10
3.3 非功能性需求分析 10
3.3.1 系统兼容性需求 10
3.3.2 系统安全性 10
3.3.3 技术可行性 11
3.3.4 经济可行性 11
3.4 本章小结 11
4 系统设计 12
4.1 系统总体架构设计 12
4.2 用户模块设计 13
4.3 首页模块设计 14
4.4 歌曲排行模块设计 15
4.5 用户中心模块设计 16
4.6 后台管理模块设计 17
4.6.1 管理员注册登录设计 17
4.6.2 用户管理设计 18
4.6.3 歌曲信息模块设计 18
4.6.4 歌曲分类设计 19
4.6.5 歌曲动态设计 20
4.6.6 歌曲评论设计 20
4.7 本章小结 20
5 数据库设计 21
5.1 数据库E-R图设计 21
5.2 数据库逻辑设计 22
5.3 本章小结 24
6 系统实现 25
6.1 用户模块功能实现 25
6.2 首页功能模块实现 27
6.3 歌曲排行功能模块实现 29
6.4 音乐分类功能模块实现 30
6.5 新歌推荐模块功能实现 31
6.6 热门下载、热门搜索模块功能实现 33
6.7 后台管理功能模块实现 34
6.7.1 管理员登录功能实现 34
6.7.2 用户管理模块实现 35
6.7.3 歌曲信息功能模块的实现 37
6.7.4 歌曲分类功能模块实现 39
6.7.5 歌曲动态设计功能模块实现 40
6.7.6 歌曲评论功能模块实现 41
6.8 本章小结 42
7 系统功能测试 43
7.1 测试方法 43
7.2 用户模块功能测试 43
7.3 首页功能模块测试 44
7.4 后台功能测试 45
7.4.1 歌曲信息模块测试 45
7.4.2 用户管理 45
7.4.3 用户评论 46
7.5 本章小结 47
8 结论 48
致谢 49
参考文献 50

1 绪论
1.1 研究背景和意义
随着互联网的快速发展,各种信息层出不穷,音乐信息也是,为解决人们对收听音乐的渴望,同时能够根据自己的喜好对音乐进行分类,平台能够根据用户的额收听量对音乐进行排行,这样就能解决用户不知道哪些歌曲比较受欢迎的困扰了。
随着网络技术的飞速发展, APP行业的发展势头已经越来越弱,手机 APP的市场份额越来越大,市场上的竞争也越来越激烈, APP的发展受到了制约。但是,我们有时候不想打开APP听歌,因为响应式网站可以实现各种震撼的网站视觉效果,从而更能吸引用户的眼球,不会轻易跳出网站。从一定意义上来说就抓住了一部分用户。
Internet是我们生活的魔术师,它的诞生给人类的生活添加了很多色彩。当代生活节奏不断加快,人们对娱乐的渴望也越来越强烈。与此同时,人民生活水平不断提高,生活质量不断提高,人均消费水平不断提高。与早年不同,人们的生活只注重吃、穿、暖。现代社会不但追求物质生活,而且追求更多的文化、休闲。伴随着网络技术与资讯科技的飞速发展,出现了各类网络音乐站点。这些乐器的问世,极大地方便了人们收集和倾听的音乐。将多媒体技术与网络技术相融合的音乐站点,在便捷性、数据存储安全性、共享性以及数据存储能力上均有显著优势。今天,信息技术发展得很快,它深入到我们的日常工作中。我们逐渐放弃了常规的储存方法。网络上的音乐体系将会抛弃陈腐的做法,改善老的风格,让老的特色变得更漂亮,让使用者能够享受到更好的网上视频。另外,管理员还可以对用户的个人资料进行管理,并进行音乐的上传与删除等操作,从而大大缩短了工作过程;针对使用者的某些特性,给使用者带来更多的共鸣的音乐。
1.2 国内外研究现状
音乐网站分为很多种,有APP端的,如酷狗、网易云之类的,还有一类就是网页版,客户在电脑上安装浏览器,终端提供地址栏输入网站地址,即可进入网页。
网络音乐由于得益于互联网的便利,大大减少了音乐产业价值链中的中介数量,以低成本的数字化替代了现有高成本的物质生产、包装、传播及售后服务等环节,使得网络音乐市场得到了快速发展,对传统音乐产生了巨大的冲击[1]。
随着互联网的发展,国内的各类音乐发展也非常迅速,流行音乐在当代可谓是比较受年轻人喜爱的,但是也有令人担忧的一面,很多所谓的流行,也就是某个时间段比较火,过了那段时间,再谈起来就没那么受欢迎了。老歌为什么能够流传下来,是因为经受得起时间的考验,加上创作人的用心良苦,这些都是现在的音乐人需要学习的。
当前流行乐站点的类型,大概可分为三种类型:热门的有固定网址的站点、 热门音乐搜索站点、P2P网络流行歌曲站点,三者功能各异、互为补充[2]。
随着电脑技术的发展,电脑在时空上的自由,资源共享,系统开发,便于协作。然而,当前我国众多的网上音乐平台仍仅限于互联网的一个层次,未能在同一平台上提供个性化的业务。现在能够完成此类网上音乐库的系统并不多见。
只有能在网页上实现对音乐系统的综合管理规范,只有这样,我们的网上音乐网站,才能更好的适应使用者的需要。因此,网上的音乐网站很有潜力,也是一种流行的休闲方式。
1.3 本文主要研究内容
本文基于在线音乐平台的研究,使用python+Django搭建一个音乐系统,该系统前台具备在线收听,在线搜索,登录注册,根据session来判断歌曲播放量,并通过热歌榜展示,同时具备下载歌曲,歌曲评论,新歌推荐,后台功能具备登录注册,注册通过cmd控制台操作,在后台进行登录,登录后主页显示的内容为:用户管理功能,可以对登录到的网页的使用者进行管理,分别为添加、删除、查找、修改等功能,网站首页模块包括:歌曲信息、歌曲分类、歌曲动态、歌曲评论,管理员可通过此处对音乐信息以及评论进行管理,具体操作同样分为增删查改。本文主要围绕以上所述的内容来编写。
1.4 本章小结
本章本文重点阐述了目前的国外和国内的音乐发展现状情况,并对音乐系统的主要工作进行了初步的阐述,方便我们后期实现的时候有序可循。

2 相关技术与开发工具介绍
2.1 相关技术简介
本节主要对本项目所采用到的技术以及各项技术在项目中起到何种作用进行相关的介绍,主要使用的技术语言以及框架有:python、Django、HTML、CSS、JavaScript、MySQL。其中Django使用的是 MTV的架构模式,配合各种技术来快速搭建网站。
2.1.1 Python的技术介绍
Python是一种面向对象的解释型计算机程序设计语言,对于编程初学者也很友好,python语言很灵活能够跟多种与语言结合进行。它具备以下特点:
1) Python的开发者创造了很多类库,能够提供给开发者,能极大提升开发效率。
2) Python能跟市面上多种语言结合使用,应用也很广泛,比如网站开发,人工智能,科学计算,数据爬取,操作系统管理、服务器运维的自动化脚本等多个领域。
Python经常被用于Web开发。可以让程序员轻松地开发和管理复杂的Web程序。
2.1.2 Django的技术介绍
Django 框架方便开发者创建高质量、容易维护的应用程序。Django 框架强调代码复用,同时有很多功能强大的第三方插件,可以导入多个插件品使用,开发者也可以自行开发新插件[3]。Django具备有以下特点:完备性、通用性、安全性、可扩展性、可维护性、灵活性。
它的代码只需要编写一次就能被多个视图重用,这样可以减少代码的重复性。控制器则用来进行请求和数据的转发,它接收请求后再把请求转发给相关模型进行处理,并把处理后的相关结果返回给相关视图进行显示,视图是用来向控制器提交请求数据以及进行结果显示的,这三个部分用低耦合的方式进行共同工作,以便提高应用程序的扩展性和维护性。MVC模式具有快速部署、较低的生命周期成本,低耦合以及高可用等特点,因此,采用MVC模式进行论坛系统的开发,能够提升开发效率以及方便后期的测试[4]。
2.1.3 B/S 架构及其运行原理
B/S架构,是从 C/S架构发展而来的一种不需要客户端的架构,这样可以减少软件的开发费用,可以在 Wed Server上提供数据,并在 Wed Server上完成所有的业务流程,Wed Server负责对用户的存取,并将该数据从数据库中提取出来,并将其反馈到用户端。。该架构的优势在于:可以让使用者在任何时候都能进行操作,只要在客户端上安装了web浏览器,就可以看到对应的效果,这样的话,使用者的互动就会变得很好,能够减轻开发人员的工作压力。其特点是易于扩展,易于维护和分布性,对客户端的硬件要求不是很高,B/S的工作方式:
图2.1 B/S架构原理图
2.2 MTV模型
Django使用 MTV的架构,包括模型、模板和视图,它们分别承担着不同的责任。模型(Model)层和MVC中的定义一样,用于数据表的构建;模板(Template)层,主要将数据与HTML语言结合起来,视图(View) 层负责实际业务逻辑实现[4];模版、业务逻辑、访问模式和有关的逻辑,是模型和模版之间的联系。具体关系如下图所示:

图2.2MTV模型
2.3 HTML技术介绍
HTML是超文本标记语言的一种英文简称,它是一种无需编辑就能被浏览器直接使用的标签。它能够结合多种编程语言完成前端界面的设计。
从技术研究领域来看,HTML5 技术是由 HTML 技术、CSS 和 JAVA 技术整合组成的综合类应用技术,2015 年由 W3C 发布了该技术最新的网络技术标准,目前谷歌、火狐、微软等大部分主流浏览器最新版本都支持html5技术[5]。
2.4 CSS技术介绍
CSS技术属于一种以文件形式展现出来的计算机语言,是现代计算机技术快速发展下的产物,也被称之为层叠样式表[6]。它收集了大量的功能库给开发者使用,极大提升了我们制作网页的速度,也给用户展现出多种多样的网页。
2.5 MySQL数据库简述
MySQL是关系型数据库管理系统,基于开源架构和SQL语句,它的机制是在相异的数据库表存储数据,目的是为了更快、更灵活的对数据进行操作,比如常规的增删改查[7]。
2.6 开发工具简述
本项目主要是用到的集成开发工具为Pycharm2020,对于开发人员来说,这是一个很好的工具。它集成很多python库,支持代码高亮显示、语法纠错等智能提示。PyCharm是用于Python脚本语言的最流行的IDE。
Pycharm配合Django搭建网页,极大提升了开发人员的效率,能快速的形成网页雏形,此外,使用pycharm能是我们的代码得到很好地管理,比如内置的语法问题、缩进等,这款开发工具都会进行标注并且提示我们是什么问题导致的,这就方便我们去排查问题所在,快速的解决问题。
2.7 本章小结
本章主要介绍了开发中使用的相关技术进行简单的介绍,并针对关系型数据库管理系统MySQL进行阐述,同时介绍了MTV模型和B/S架构在项目中的应用,通过几项技术的结合,使得我们在开发中能够快速定位系统元素,极大降低了一个项目的研发难度。在后续的编写代码过程中能够有条不紊的进行。

3 系统需求分析
3.1 需求分析概述
需求分析包括功能性需求分析跟非功能性需求分析,这是一个很关键的步骤,就是通过对项目的详细调查,对项目的功能、性能、可靠性等进行详细的研究,并将这些信息转换为一个具体的流程。本章主要通过网络上相关的资料以及查询相关的图书资料,得出该音乐系统的相关功能框架,并在此框架下逐步完善该系统,本章将结合图表来阐述我们系统的详细功能模块,同时还分析介绍了系统的非功能性需求。
3.1.1 系统流程图
3.1系统流程图
3.2 功能性需求分析
通过构造模型以及系统流程图分析,可以清楚地知道我们的系统具备有哪些功能,本系统主要角色有访客、注册用户、管理员,其中访客只具备收听、下载、搜索、评论,其中评论时显示的昵称为匿名名称。已经通过前台注册的用户具有播放音乐、在线下载、搜索歌曲、评论歌曲,最主要的是有记录收听歌曲的记录,访客除了不能拥有歌曲收听记录跟评论显示昵称之外,也具备普通用户的功能,管理员可通过后台对用户、歌曲等信息进行管理。除此之外还具备用上传歌曲、删除、修改、查找等功能,整个系统的歌曲信息以及用户的信息管理员都是可以通过后台来管理的。本网站也是围绕着这几大功能点来开发的。
3.2.1 用户角色分析
首先,我们为普通用户提供了基本的登录、注册以及个人信息修改功能。除此之外,应该满足其搜索音乐、查看热门榜单、分类搜索歌曲、查看音乐详情、音乐评论的需求。根据用户在系统中的行为,将其记录到用户中心。网络音乐站点的需求主要有两个:使用者和管理人员。访客打开网站时,当访问用户中心过程中会先让其注册,然后登录才能进入用户中心,管理员有者至高无上的权限,可以修改歌曲信息、删除歌曲、发布歌曲,也可以对用户信息进行修改[5]。
3.2.2 首页模块
首页功能模块需要实现的就是系统要搭载的主要功能页面,也就是将系统需要展现的东西放到首页,供用户使用。首先设计首页模块,我们需要先设计好每个元素所在的位置以及每个模块需要实现什么样的功能,整体来说首页承载的压力还是非常巨大的。
这里面需要设计搜索模块、新歌推荐模块、歌曲热度模块、音乐分类模块、热门搜索模块,在设计过程中一定是先设计好每个元素的具体位置,包括所有的模块的展位大小等细节。系统是面向用户的,用户使用的体验好才能体现出系统整体的设计。

3.2.3 歌曲排行模块
歌曲排行模块的设计是系统必不可少的一部分,通过设计排行功能,采用降序规则,用户可以通过从上到下的顺序看出哪些歌曲是其他用户收听比较多的。方便了用户的使用,同时很多知名网站也采用设计排行的模块,来展现自己比较好的是产品之类的。我们需要做的就是通过用户收听数量来对歌曲进行排序,通过数字标记出榜单的排行,数字越大表明排名越往后。用户能够快速定位到哪些歌曲的热度高,哪些热度低。如图所示:

图3.2歌曲排行模型图
3.2.4 用户中心模块
在线音乐网站的客户群体为收听音乐的用户,主要采集用户在操作网站过程中的行为特征,比如多数人经常播放爱情类的歌曲,那系统就会多上传这类的音乐。方便用户探索自己感兴趣的音乐。用户模块为系统核心中的一部分,设计这部分是为了用户使用系统听音乐的时候能够记录用户的听歌记录,这样就能帮助用户记录他们的听歌习惯,下次登录进来就能够继续听自己喜欢的歌曲。用户中心这个模块的设计需要使用到网站的缓存功能,也就是平时我们使用的cookie或者session,加上Django的缓存机制,来实现这一功能,Django的缓存机制分为开发调试缓存、本地内存缓存、数据库缓存、文件环迅等几种技术,我们这里主要使用到本地内存缓存来实现。主要在setting.py文件中进行配置。如图所示:

图3.3用户模型图
3.2.5 后台管理模块
后台管理是利采用了django框架自带的管理后台功能,可以通过后台对数据库进行操作,包括添加数据、删除数据、查找数据很修改数据。试想如果你要自己手动编写后台对一个模型进行增删查改,你一般需要4个urls, 4个视图函数或通用视图和4个模板。当一个项目比较大包含多个app时,而每个app又包含多个模型(数据表)时, 那么编写和维护整个项目管理后台的工作量可想而知。Django Admin所做就是将所有需要管理的模型(数据表)集中在一个平台[8],你不仅可以选择性地管理模型(数据表), 你还可以快速订制数据条目查询,过滤和搜索条件。使用这套后台系统,也方便整个系统的管理,也加快了开发的速度。
3.2.6 管理员注册登录
使用Django admin的第一步是创建超级用户(superuser)。进入你的项目文件夹, 使用python manage.py createsuperuser命名,输入用户名和密码即可创建管理员。随后使用注册的账号密码来注册就可以登录进后台了。
3.2.7 用户管理
用户管理是针对整个网站的用户来说的,也就是用户通过前台注册的账号会在后台进行统一管理,用户注册好的账号只能用户登录前台页面,看不到所有的用户信息,这是Django带有的权限管理功能,我们借助这一功能,能够快速定位到我们想要的效果,对整个系统的用户进行增删查改。
3.2.8 歌曲信息
歌曲信息这个模块需要做的就是将前台页面显示的歌曲同步到后台,比如一首歌的时长、序号、专辑、属于哪位歌手、歌名是什么、什么语种、发行时间等一些具体的信息。同样的在这个模块我们也可以根据歌曲的这些属性信息来查找我们系统里歌曲。设计这个模块主要是考虑到我们能够快速的进行歌曲分类,也方便管理员在添加歌曲时对这些歌曲进行管理。歌曲信息越详细,用户对歌曲的信息掌握就越详细,就能吸引更多的用户来听音乐。
3.2.9 歌曲分类
歌曲分类视基于歌曲信息这个模块来做的,也就是需要歌曲信息的铺垫来完成这个需求。只有收集了更详细的歌曲信息,我们才能将这个模块的基本功能搭建起来。目前系统需要完成的就是根据歌曲的属性来进行划分歌曲所属栏目,比如有关爱情就划分到爱情的栏目,民谣的就划分到民谣,以此类推下去。划分这些栏目也方便不同的用户去收听不同的歌曲,能够增加用户的体验感。
3.2.10 歌曲动态
歌曲动态就是用户在前台下载、播放次数、搜索次数、下载次数等这些操作信息同步到后台,我们管理员就能够通过这些信息直观的看出系统用户的活跃程度,也能够通过这些信心来分析哪些歌曲比较受用户欢迎。管理员可以对网站的信息进行添加,删除,修改,查找等操作。这是该模块所要实现的功能特性,也是后台所需要具备的功能。
3.2.11 歌曲评论
歌曲评论是针对用户在前台播放音乐的时候对歌曲进行评论,然后歌曲的评论能够让其他用户看见,前台对评论的展示是通过用户名加评论信息组成,用户又分为匿名用户跟普通用户,所以评论显示的也会出现两种显示格式。如图所示:

图3.4 歌曲评论模型图
3.3 非功能性需求分析
3.3.1 系统兼容性需求
系统兼容性指的是系统在不同软件或者硬件环境下操作,是否对网站的整体功能有影响。一般常见的兼容性就是系统在各大浏览器以及不同电脑系统中的运行情况,系统兼容性是系列计算机的基本特性,是避免用户在老产品型号上开发的软件遭受废弃的一种重要设计思想与技术措施。 它保护了用户的已有资源,节约了厂商和用户的开发投资,加快了计算机的研制过程,促进了计算机产业和应用的发展。在开发网站应当考虑到系统在不同环境下的运行结果是否一致,这直接影响到用户的体验。

3.3.2 系统安全性
安全性是每个领域必须要考虑的事情,系统的安全性直接影响到整个网站的存活。我们在设计网站过程中,安全问题可以分为以下几个方面:
1.账户安全:这直接关系到用户的个人信息泄露以及网站信息丢失。音乐系统在设计登录注册的时候,采用了严格的正则表达式,用户的密码必须是数字、字母加符号组合,而且还控制了密码的长度范围。用户名同样控制了长度。
2.网络环境安全:我们的网站不能在含有恶意病毒的系统上使用,病毒会随时入侵网站,导致网站崩溃等情况出现。
3.硬件安全:指的是我们的电脑或者其他相关的硬件不能放在潮湿或者有化学药品的地方。

3.3.3 技术可行性
技术可行性也称为技术风险分析,研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。技术可行性主要通过考虑以下问题来进行论证:
1) 技术:目前的技术水平和目前的发展状况能否满足整个体系的运行。
2) 目标:因为在项目的可行性分析中,目的是不明确的,所以技术上的可行性与项目的功能、性能和约束条件最好是能够同步。在可行性研究阶段,调整项目目标和选择可行的技术体系都是可以的,而一旦项目进入开发阶段,任何调整都意味着更多的开销[9]。
需要特别指出的是,技术可行性绝不仅仅是论证在技术手段上是否可实现,实际上包含了在当前资源条件下的技术可行性。
对于技术的选择,具体要根据项目的实际情况(例如,开发环境、开发人员的素质、系统的性能要求等)进行决策,但通常的建议是尽可能采用成熟的技术,慎重引入先进技术。IT业界流行的诙谐语“领先一步是先进,领先两步是先烈”讲的就是对技术的选择原则。
3.3.4 经济可行性
经过初步调研和剖析,编写本音乐系统的参考资料等都是可以通过互联网或者相关书籍获取的,整个系统不需要花费太大的成本,而对使用者而言,只要将 Wed浏览器安装在他们自己的电脑上,即可进入到该音乐的环境中。这样就可以进行注册,登录,下载等操作。因而,开发这套新的系统具有较高的经济性和较高的性价比,因而具有较好的发展前景。

3.4 本章小结
这一章是对音乐系统的需求进行了研究,包括对功能和对非功能的要求进行了研究。也就是系统的每个模块需要完成哪些事情,根据市场上的音乐系统综合分析我们的系统主要完成什么样的功能。简单的陈述了每个模块是基于什么技术来设计的,设计这些模块有什么意义。同样也讲述了系统前后期所需要考虑的非功能性系统需求,详细的系统设计过程将在系统设计中具体说明。  
4 系统设计
4.1 系统总体架构设计
系统前台页面的功能主要有以下图中的模块:

图4.1系统用户功能结构图

系统后台管理功能模块如下图所示:
图4.2后台管理功能结构图

4.2 用户模块设计
用户界面的功能是登录、注销用户、听歌记录;其中登录、退出登录只有在用户注册成功的前提下才能进行操作,而注册需要提供用户名、手机号码、密码、确认密码,最后选择勾选已阅读并同意《用户注册协议》点击注册按钮即可成 注册[10]。用户中心只有使用注册成功的账号登录进去才可以使用,这里面的功能为记录该用户听过的歌曲的详细信息。访客只能在主页收听歌曲,不能将其记录。

图4.3用户结构图
4.3 首页模块设计
主页模块有音乐分类,新歌推荐,热门搜索,热门下载,热门歌曲,歌曲搜索。其中热门搜索是根据我们使用搜索栏去搜索歌曲,系统自动统计次数来排行歌曲名称,热门下载是根据用户使用下载的功能去下载我们的歌曲,系统自动统计次数,热门歌曲展示的原理也同样。系统功能结构图如图4.4所示:
图4.4首页功能结构

4.4 歌曲排行模块设计
歌曲信息排行模块作用是展示网站内所有音乐的排行,是根据用户对音乐的搜索量来排序,这个排名根据设置的降序进行排序。这个模块还可以根据每种类型的音乐进行排序,用户可以通过点击左边的类型来查看对应的歌曲排行。当用户登录网站时,可以根据歌曲排行来判断某首歌受人们的喜爱程度,用户就可以通过这个数据来选择自己喜欢听的歌曲。如图所示:

图4.5歌曲排行结构图

4.5 用户中心模块设计
用户中心模块是集合注册、登录的模块,用户未登录的情况下访问首页的几个功能,但是使用不了用户的收听记录信息功能,当用户未登录时,默认的用户名是访客。当用户点击用户中心时,会弹出登录页面,如果用户已经有账号密码了,那么就可以直接输入账号密码进行登录,如果注册有账号,就需要点击注册[11],然后再使用注册好的账号密码来登录系统。用户中心就会根据账号的操作来记录用户的收听歌曲信息。当用户不想让自己的信息留在网站上,那么还可以选择注册退出登录。

图4.6图用户中心结构图
4.6 后台管理模块设计
4.6.1 管理员注册登录设计
管理员注册登录是整个后台管理系统中的前提,也就是必须要先注册好管理员账户,根据注册的账户来登录,我们通过前端页面注册的账号是登录不了我们的后台系统的,必须通过django提供的超级管理员账户创建方式注册的才能登录,登录之后就能对整个网站的音乐以及用户等信息进行管理,具体包括对音乐进行发布、删除、修改、查找,以及对用户的账号进行增删查改。

图4.7管理员注册登录结构图
4.6.2 用户管理设计
所谓用户就是整个网站的使用者,网站用户可以拥有自己的权限,为了方便管理普通用户跟超级管理员的信息,定义了角色的概念。通过后台我们可以对用户进行管理,比如有一些恶意注册的或者不雅的用户名账号,我们可以对其进行惩罚,可以对其进行修改,最严重的是直接删除这个账号。

图4.8用户管理结构图
4.6.3 歌曲信息模块设计
乐网站最重要的当然还是音乐了,通过后台,管理员可以上传音乐到网站,并能够显示到前台页面,用户能通过新歌推荐栏目看到新发布的歌曲。管理员能够对已经发布的歌曲进行修改、查找、删除。

图4.9歌曲信息模块结构图
4.6.4 歌曲分类设计
歌曲分类是根据歌曲的属性来判断的,比如情歌、当下流行音乐、DJ等,这些都可以进行详细的分类,方便用户对自己喜欢的栏目进行快速的定位。管理员可以对这些歌曲的标签进行增删查改。

图4.10歌曲分类管理结构图

4.6.5 歌曲动态设计
歌曲动态信息具体指的是用户通过网站听歌、下载歌曲、搜索歌曲的数据,管理员通过后台很清晰的看到这些信息,并通过这些信息来分析出用户对歌曲的喜爱程度,就可以上传更多类似的歌曲到网站上了。
4.6.6 歌曲评论设计
每首歌曲下方都设置有用户评论功能,这里的评论分为两种,其中一个是匿名用户,一个是普通用户,匿名是指未经过用户中心注册的,该身份就是以访客播放并评论,带注册时的昵称的就是网站的用户,而后台管理系统则能够对匿名评论和用户评论的内容进行管理。

图4.11 歌曲评论管理结构图
4.7 本章小结
这一章重点阐述了该软件所要完成的功能和具体的操作流程,并根据上述的功能要求和非功能要求对其进行了详细的描述。

5 数据库设计
数据库的设计是每个网站所必须的,音乐网站的数据库设计,是整个系统的核心,设计好每一张数据表,关系到整个系统能否顺利运行。数据库的设计包括概念跟逻辑设计,其中概念设计是根据系统的需求得出对应的数据模型结构。以下具体通过E-R图跟数据库来说明。
5.1 数据库E-R图设计
根据前期对系统的需求分析和功能的详细设计,分析出系统包含系统用户、评论、歌曲信息、歌曲标签等。将其自身的特性与各实体的关联相结合,可以得出音乐系统的结构关系。用户E-R图如图所示:

图5.1用户E-R图
音乐实体E-R图:

图5.2 音乐E-R图
音乐系统总体E-R图:
图5.3音乐网站总体E-R图

5.2 数据库逻辑设计
通过分析数据库E-R图可以得出对应的数据表,下面列举歌曲信息表(index_song)、用户信息表(user)、音乐分类标签表(index_label)、歌曲评论表(index_comment)。数据库表结构设计具体如下:
表 5-1设计的是整个系统的歌曲信息表,这里涉及到song_id(歌曲序号)、song_name(歌曲名)、song_singer(歌手)等主要字段,其中设计歌曲ID必须为整数,常规的序号不会出现小数,其与设计也是参照这个规则来的,详细如表 5-1所示:
表5-1歌 曲 信 息 表(i ndex_s o n g)
字段名 数据类型 长度 是否允许为空 备注
song_id int 0 True 主键
song_name varchar 50 False
song_singer varchar 50 True
song_time varchar 10 True
song_album varchar 50 True
song_languages varchar 20 True
song_type varchar 20 True
song_release varchar 20 True
song_img varchar 20 True
表5-2 设计为用户的信息表,系统的实现就是为了给用户去使用,所以用户必须单独设计一张表,其中包含id、username、超级管理员等主要信息,详情如表 5-2所示:
表5.-2用 户 信 息 表(user)
字段名 数据类型 长度 是否允许为空 备注
id int 0 True 主键
password varchar 128 True
last_login datetime 6 False
is_superuser tinyint 1 True
username varchar 150 True
first_name varchar 150 True
last_name varchar 150 True
email varchar 254 True
is_staff tinyint 11 True

表5-3设计为音乐的标签表,我们设计音乐的结构时,会设计歌曲名长度,这里系统设计的名长为10,系统上传歌曲名不允许超出这个范围,详情如图5-3所示:
表5-3 音乐分类 标 签 表(I n d e x_l a b e l)
字段名 数据类型 长度 是否允许为空 备注
label_id int 0 True 主键
label_name varchar 10 True
表5-4设计为歌曲评论表,歌曲评论的设计是为了储存用户在前台对自己喜欢的音乐进行评论的内容,主要包含id、内容、用户等主要信息,详细设计如表5-4所示:
表5-4 歌 曲 评 论 表(I nd e x _c o m m e n t)
字段名 数据类型 长度 是否允许为空 备注
comment_id int 0 True 主键
comment_text varchar 500 True
comment_user varchar 20 True
comment_date varchar 50 True
song_id int 0 True

5.3 本章小结
本章主要介绍通过系统的需求分析以及整体的系统实现的E-R图来设计具体的数据表,这是系统实现的很关键的一个步骤,本章节主要列举这几张表,详细介绍了系统需要的字段以及各种信息。

6 系统实现
系统实现主要是根据音乐系统的需求分析进行设计实现,主要是阐述了系统是如何实现的一个过程,包含用户模块、首页、歌曲排行、音乐分类、新歌推荐、热门下载、热门搜索、管理员等这些功能模块。
6.1 用户模块功能实现
该功能模块主要结合django组件库进行开发。主要有用户登录、注册、个人听歌记录等功能。登录功能通过使用已经注册过的账号进行登录,如果没有账户可点击登录按钮下的注册按钮实现登录。同时如果输入错误的信息,系统将在输入框下面提示用户信息输入有误。登录、注册界面如图:

图6.1用户登录图

图6.2用户注册图
用户模块实现的核心代码:

用户注册与登录

def loginView(request):
user = MyUserCreationForm()
# 表单提交
if request.method == ‘POST’:
# 判断表单提交是用户登录还是用户注册
# 用户登录,判断输入输入的用户名跟密码是否是注册的
if request.POST.get(‘loginUser’, ‘’):
loginUser = request.POST.get(‘loginUser’, ‘’)
password = request.POST.get(‘password’, ‘’)
if MyUser.objects.filter(Q(mobile=loginUser) | Q(username=loginUser)):#数据库中查找
user = MyUser.objects.filter(Q(mobile=loginUser) | Q(username=loginUser)).first()
if check_password(password, user.password):
login(request, user)
return redirect(‘/user/home/1.html’)
else:
tips = ‘密码错误’
else:
tips = ‘用户不存在’
# 用户注册
else:
user = MyUserCreationForm(request.POST)
if user.is_valid():
#判断是否存在改用户,不存在则实行if语句创建用户
username = user.cleaned_data.get(‘username’)
mobile = user.cleaned_data.get(‘mobile’)
password1 = user.cleaned_data.get(‘password1’)
password2 = user.cleaned_data.get(‘password2’) if password1 == password2:
user.save()
tips = ‘注册成功’
else:#如果存在则执行该语句,并提示注册失败
if user.errors.get(‘username’,‘’):
tips = user.errors.get(‘username’,‘注册失败’)
else:
tips = user.errors.get(‘mobile’, ‘注册失败’)
return render(request, ‘user/login.html’, locals())

6.2 首页功能模块实现
首页集合各大模块的功能,各模块之间的关系都以首页为基点完成实现的。头部导航栏可以让用户快速了解到系统整体情况。中部内容为主体部分,用于展示音乐系统中歌曲的海报的展示。首页界面如图:

图6.3首页功能图
首页功能实现核心代码:

#建立各个标签盒子

6.3 歌曲排行功能模块实现
歌曲排行主要是根据用户对系统音乐的播放量来判断哪首歌比较受欢迎,然后根据这个播放量来对系统的音乐进行从高到低的排序,最终显示在页面上的信息包含有歌曲的序号、图片、歌名、专辑、下载量、播放量。歌曲排行界面如图:
图6.4歌曲排行图
歌曲排行实现核心代码:
class RankingView(View):#创建一个类

def get(self, request):# 热搜歌曲search_song = Dynamic.objects.select_related('song').order_by('-dynamic_search').all()[:4]# 歌曲分类列表All_list = Song.objects.values('song_type').distinct() # 去重# 歌曲信息列表song_type = request.GET.get('type', '')if song_type:song_info = Dynamic.objects.select_related('song').filter(song__song_type=song_type).order_by('-dynamic_plays').all()[:10]

6.4 音乐分类功能模块实现
音乐分类模块主要基于后台管理员的操作,管理员在后台进行音乐标签的添加,建立好标签后,在发布音乐的时候就可以根据音乐的属性来选择对应的音乐标签。在发布后,如果发现分类错了,还可以在后台进行修改。分类界面如图所示:

图6.5音乐分类图
分类实现核心代码:

歌曲分类表label

from music.settings import MEDIA_FILE, MEDIA_IMG, MEDIA_Lyric
class Label(models.Model):#创建标签类
label_id = models.AutoField(‘序号’, primary_key=True)
label_name = models.CharField(‘分类标签’, max_length=10)
def str(self):#返回标签的名
return self.label_name
class Meta:
# 设置admin界面的显示内容
verbose_name = ‘歌曲分类’
verbose_name_plural = ‘歌曲分类’

6.5 新歌推荐模块功能实现
新歌推荐就是基于新歌发布来实现的,当管理员在后台发布一首新歌曲,前台页面的新歌推荐模块就会对应的将新发布的歌曲置顶,用户就能很快发现新的歌曲。如图所示:

图6.6新歌推荐图
新歌推荐模块实现核心代码:

新歌推荐

  • {% for list in daily_recommendation %} {% if forloop.first %}
  • {% else %}
  • {% endif %}

6.6 热门下载、热门搜索模块功能实现
热门下载跟热门搜索都是基于用户的操作来定义的,就是用户下载歌曲的数量还有搜索的数量来编写的,下载跟搜索的数量越多,底部的数量显示就越多。如图所示:

图6.7热门下载跟热门搜索图
热门搜索热门下载核心代码:

热门搜索、热门下载 search_ranking = search_song[:6]

down_ranking=Dynamic.objects.select_related(‘song’).order_by(‘-dynamic_down’).all()[:6]
all_ranking = [search_song, down_ranking]
return render(request, ‘index/index.html’, locals())

6.7 后台管理功能模块实现
系统后台的主要功能包括管理员登录,用户管理,歌曲信息管理,分类管理,动态管理,评论管理等。
6.7.1 管理员登录功能实现
管理员的账号是需要从cmd终端使用代码进行注册的,并非通过前台的用户中心注册,这就达到了普通用户跟管理员权限的区分,对系统的管理就方便很多。使用注册好的账号密码登录。如图所示:

图6.8管理员登录图
管理员登录核心代码:
if request.POST.get(‘loginUser’, ‘’):
loginUser = request.POST.get(‘loginUser’, ‘’)
password = request.POST.get(‘password’, ‘’)
if MyUser.objects.filter(Q(mobile=loginUser) | Q(username=loginUser)):
user = MyUser.objects.filter(Q(mobile=loginUser) | Q(username=loginUser)).first()
if check_password(password, user.password):
login(request, user)
return redirect(‘/user/home/1.html’)
else:
tips = ‘密码错误’
else:
tips = ‘用户不存在’

6.7.2 用户管理模块实现
用户管理是针对整个网站的用户来说的,也就是用户通过前台注册的账号会在后台进行统一管理,对整个系统的用户进行增删查改。如图所示:

图6.9用户管理图
用户管理核心代码:
@admin.register(MyUser)
class MyUserAdmin(UserAdmin):
list_display = [‘username’,‘email’,‘mobile’,‘qq’,‘weChat’]
# 在用户信息修改界面添加’mobile’,‘qq’,‘weChat’的信息输入框
# 将源码的UserAdmin.fieldsets转换成列表格式
fieldsets = list(UserAdmin.fieldsets)
# 重写UserAdmin的fieldsets,添加’mobile’,‘qq’,'weChat’的信息录入
fieldsets[1] = (_(‘Personal info’),
{‘fields’: (‘first_name’, ‘last_name’, ‘email’, ‘mobile’, ‘qq’, ‘weChat’)})

6.7.3 歌曲信息功能模块的实现
歌曲信息模块主要分为歌曲添加、修改歌曲信息、搜索歌曲等功能。管理员可以通过后台对信息进行操作,各项操作完之后前台的显示都能够及时的进行更新,用户也能快速的看到更新后的歌曲属性或者新发布的歌曲。如图所示:

图6.10 歌曲信息首页图

图6.11歌曲添加图

图6.12修改歌曲信息图
歌曲信息核心代码:
class Song(models.Model):#歌曲数据库所需的各个标签名
song_id = models.AutoField(‘序号’, primary_key=True)
song_name = models.CharField(‘歌名’, max_length=50)
song_singer = models.CharField(‘歌手’, max_length=50)
song_time = models.CharField(‘时长’, max_length=10)
song_album = models.CharField(‘专辑’, max_length=50)
song_languages = models.CharField(‘语种’, max_length=20)
song_type = models.CharField(‘类型’, max_length=20)
song_release = models.CharField(‘发行时间’, max_length=20)
song_img = models.FileField(upload_to=MEDIA_IMG)
song_lyrics = models.FileField(upload_to=MEDIA_Lyric)
song_file = models.FileField(upload_to=MEDIA_FILE)
label = models.ForeignKey(‘Label’, on_delete=models.CASCADE, verbose_name=‘歌曲分类’)

6.7.4 歌曲分类功能模块实现
歌曲分类模块主要实现的功能是对系统中的音乐进行栏目划分,比如一首歌的歌曲是情歌,那我们就通过这个模块建立情歌这个栏目,当然我们也能够新增的栏目进行增删查改。当我们新增的歌曲属于情歌时,就将这首歌的类型分到情歌这个栏目,前台也能够在这个栏目看到这首歌。如图所示:

图6.13歌曲分类图
歌曲分类核心代码:

歌曲分类表label

from music.settings import MEDIA_FILE, MEDIA_IMG, MEDIA_Lyric

class Label(models.Model):
label_id = models.AutoField(‘序号’, primary_key=True)
label_name = models.CharField(‘分类标签’, max_length=10)
def str(self):
return self.label_name
class Meta:
# 设置admin界面的显示内容
verbose_name = ‘歌曲分类’
verbose_name_plural = ‘歌曲分类’

6.7.5 歌曲动态设计功能模块实现
歌曲动态就是用户在前台对歌曲进行下载、播放、搜索的数量进行集中展示,主要是针对普通用户在系统上的行为进行记录。管理员也能通过后台对这些信息进行增删查改。如图所示:

图6.14歌曲动态图
歌曲动态核心代码:

歌曲动态表dynamic

class Dynamic(models.Model):
dynamic_id = models.AutoField(‘序号’, primary_key=True)
dynamic_plays = models.IntegerField(‘播放次数’)
dynamic_search = models.IntegerField(‘搜索次数’)
dynamic_down = models.IntegerField(‘下载次数’)
song = models.ForeignKey(‘Song’, on_delete=models.CASCADE, verbose_name=‘歌名’)
class Meta:
verbose_name = ‘歌曲动态’
verbose_name_plural = ‘歌曲动态’

6.7.6 歌曲评论功能模块实现
歌曲评论模块的设计是为了直观的看到用户在前台对歌曲的评论,在后台,管理员能清晰的看到是哪个用户、评论内容,评论歌曲,评论日期等细节。管理员可以管理这些信息。如图所示:

图6.15歌曲评论图
歌曲评论管理核心代码:

歌曲点评论comment

class Comment(models.Model):#创建一个评论模型,并实例化各个参数
comment_id = models.AutoField(‘序号’, primary_key=True)
comment_text = models.CharField(‘内容’, max_length=500)
comment_user = models.CharField(‘用户’, max_length=20)
comment_date = models.CharField(‘日期’, max_length=50)
song = models.ForeignKey(‘Song’, on_delete=models.CASCADE, verbose_name=‘歌名’)
class Meta:
verbose_name = ‘歌曲评论’
verbose_name_plural = ‘歌曲评论’

6.8 本章小结
本章在基于系统设计的基础上以模块为单位,针对不同模块的需求结合音乐系统的各个功能模块的截图、以及解释相关模块代码的执行过程来阐述整个系统每个模块的设计细节跟功能的实现细节。

7 系统功能测试
7.1 测试方法
系统测试方法分为黑盒测试跟白盒测试,其中,黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内部的运作原理,因此软件对用户来说就像一个黑盒子,简单来说,这种测试只关心输入和输出的结果,并不考虑程序的源代码。白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试,白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的[12]。
7.2 用户模块功能测试
用户模块的测试用例应该覆盖到用户名、密码、登录、测试、退出、个人中心听歌记录查看等功能,以下以注册跟登录两个功能为例进行测试,详情如表7-1所示:
表7-1用户登录注册界面测试用例
用例序号 测试描述 预期结果 测试结果
1 准备:在浏览器中登录系统
1.点击用户中心进行注册
2.在用户名输入 ‘xiaoliu’
3.点击密码框输入密码’zhenglai666’
4.点击输入重复密码’zhenglai666’
5.点击勾选已阅读用户注册协议
6.点击注册 1. 成功进入测试界面
2-4.系统无错误提示
5.能勾选
6.注册成功并跳转到登录界面 与预期结果一致
2 准备:在浏览器中登录系统
1.在用户名输入框中输入‘111’
2.在密码框中输入密码‘123’
3.点击注册按钮 1.系统在用户输入框下提示用户名错误
2.系统在密码输入框下提示密码错误
3.注册失败 与预期结果一致
3 准备:在浏览器中注册系统
1.在用例1跟2的前提下,输入正确的用户名密码
2.未勾选用户协议点击注册 1.系统没有错误
2.注册失败 与预期结果一致
4 准备:在浏览器中注册系统
1.未填写输入框中的几项信息,点击注册 1.系统提示请填写信息 与预期结果一致
7.3 首页功能模块测试
首页功能包音乐分类、歌曲排行、用户中心、新歌推荐、热门搜索、热门下载等几个模块,下面主要以首页的基本功能为例进行测试。
表7-2首页界面测试用例
用例序号 测试描述 预期结果 测试结果
1 准备:在浏览器打开系统
1.点击导航栏中歌曲排行,
2.点击歌曲播放
1.页面跳转到新的界面
2.歌曲能够正常播放 与预期结果一致
2 准备:在浏览器打开系统
1.点击新歌推荐中的歌曲
2.点击去听一听
3.点击下载
4.点击歌曲点评
5.点击暂停
6.点击循环播放
7.观察歌词能否按照时间变化自动切换 1.界面跳转到新的页面
2.能够正常播放
3.能够下载,并能够使用其他的播放器播放
4.输入的内容能够正常发布
5.能暂停
6.标签颜色由浅色变深灰色
7.能够正常切换 与预期结果一致
3 准备:在浏览器打开系统
1.点击用户中心
2.输入正确的账号密码登录
3.查看页面显示是否正确,图标是否正常
4.点击退出 1.跳转到登录界面
2.进入到用户中心
3.页面图标以及文字信息均正确显示
4.退回首页,此时为访客模式 与预期结果一致
4 准备:在浏览器打开系统
1.用户未登录
2.点击歌曲点评
3.查看用户名称以及时间 1-2.跳转到输入框,并能发布
3.此时显示匿名用户评论,后面跟系统时间 与预期结果一致

7.4 后台功能测试
后台功能主要包含歌曲的增删查改,歌曲动态、歌曲分类标签的管理、用户管理、歌曲评论等,这里主要以歌曲管理、用户管理、用户评论为例进行功能测试。
7.4.1 歌曲信息模块测试
这里主要测试能否正确上传歌曲,并能对歌曲进行删除、修改、查找,如表:
表7-3歌曲信息测试用例
用例序号 测试描述 预期结果 实际结果
1 准备:用户在浏览中登录系统
1.点击增加按钮
2.填写要发布的歌曲信息
3.点击保存
4.查看前台是否有这首歌 1-2.能够正常输入
3.保存成功
4.前台显示与所发布的歌曲信息一致 与预期结果一致
2 准备:用户在浏览中登录系统
1.点击增加
2.未填写各项信息
3.点击保存
4.查看提示
点击保存后在各项表下提示这是必填字段
与预期结果一致
3 准备:用户在浏览中登录系统
1.选中歌曲点击删除
2.点击歌曲进行修改
3.点击搜索查看能否正确显示搜索内容 1.删除成功
2.能够修改成功
3.能正确搜索 与预期结果不同

7.4.2 用户管理
用户管理模块主要测试点为:测试能否对用户的账号进行增删查改,并测试前台登录能否同步[13]。
表7-4歌曲信息测试用例
用例序号 测试描述 预期结果 实际结果
1 准备:用户在浏览中登录系统
1.点击增加按钮,填写要新增的用户名以及密码等信息
2.点击保存
3.查看前台的用户中心能否登录上这个账户 1.能够正常输入
2.保存成功
3.前台能够登录这个账户 与预期结果一致
2 准备:用户在浏览中登录系统
1.点击增加按钮,填写不符合正则用户名以及密码等信息
2.点击保存
3.前台登录这个错误的账户
4.查看提示
无此账号
与预期结果一致
3 准备:用户在浏览中登录系统
1.选中用户点击删除
2.点击歌曲进行修改
3.前台登录看信息是否一致或者删除之后是否还存在 1.删除成功
2.能够修改成功
3.修改的信息一致,删除的账户不存在 与预期结果不同

7.4.3 用户评论
用户评论管理模块主要功能有对用户在前台发布的歌曲评论进行管理,具体为增删查改等操作[14]。
表7-5歌曲信息测试用例
用例序号 测试描述 预期结果 实际结果
1 准备:用户在浏览中登录系统
1.点击增加按钮
2.输入内容、用户名等信息
3.点击保存
4.返回首页查看是否新增成功 1-2.能够正常输入
3.保存成功
4.首页显示与所发布的信息一致 与预期结果一致
2 准备:用户在浏览中登录系统
1.点击勾选框
2.点击删除
3.点击确定
4.返回查看是否还存在这条评论 1.能够勾选
2-3.弹出提示是否删除
4.不存在 与预期结果一致
3 准备:用户在浏览中登录系统
1.点击歌曲评论
2.点击内容等信息进行修改
3.点击查看能否正确显示修改后的内容 1.跳转到修改页面
2.能够修改成功
3.能正确显示 与预期结果不同

7.5 本章小结
这一章节主要以系统的部分功能为例进行功能测试,检测该音乐系统是否存在问题,通过测试能够及时的发现并纠正漏洞,防止影响用户使用的体验感。

8 结论
在本系统的开发以及论文的撰写的过程中我受益匪浅,无论是在技术上还是在思想上都有了很大的提升,同时也发现了自己在开发过程中的一些短板。本次毕业设计也为自己在开发工作中积累了挺多的经验。
技术方面。在开发过程中,对这四年所学的知识进行了一次巩固,又学习了很多东西知识点。因为在系统开发的过程中难免会遇到一些难题,所有我只有通过自己的摸索、查阅资料,一步一步的解决问题难题。对于一些实在没有办法正面解决的困难,我也会试着用其他的办法去代替解决,整个系统开发下来,让我学会了怎么样能够快速定位问题,以及如何去解决问题,为今后的开发工作积累了不少经验。
思想层面。经过这次毕设设计的制作,让我在思想方面的提升很大,特别是在考虑用户方面的想法。音乐系统的开发是面向对象的开发,我们要做到最终目的的是让用户体验好。在广大的用户面前,仅仅凭借我们的猜测用户的需求这种方式是行不通的。可以说每个用户的个性和特点都不一样,有些用户的需求相对较高,有些用户的需求相对偏低。所以,在进行设计前的时候,我们要从用户的角度出发,了解用户的需求。在了解的用户需求的情况下,我们还需要考虑的是技术难题,在已有的需求上,我们需要对可行的计划进行比较和评测,选出符合用户需求的功能,以及在我们的开发能力之内的需求。这样我们在开发过程中才能够避免卡壳的现象,不会因为某个功能使用某种方式没有办法实现,这也是我们在计划开发前的一部分。对于我们开发者而言,在能完成用户需求的情况下,技术方面当然是怎么容易实现就怎么来。
总的来说,在系统的设计到最终的完成还是遇到了很多坎坷,但是在查阅资料以及询问老师跟同学之后,最终完成系统的基本功能点,系统能够顺利的运行,前端界面也能够正常的显示,响应速度良好。系统还有很多需要不断完善的地方,在今后的工作生活中,会不断的学习新的知识,去完善这个系统。

致谢

参考文献
[1] 侯琳琦. 美国网络音乐发展现状分析[J]. 北京邮电大学学报(社会科学版),2008(01):24-26+31.
[2] 胡斌. 流行音乐网站发展现状分析[J]. 中国科技信息,2006(05):324.
[3] 冼远清,张旭新.基于Django的图书推荐系统设计[J].电子技术与软件工程,2022(05):216-219.
[4] 白相辰. 基于Django框架的Web在线教育平台的设计与实现[D].北京交通大学,2019.DOI:10.26944/d.cnki.gbfju.2019.000099.
[5] 韩迎红.基于HTML5技术的移动Web前端设计与开发[J].电子技术与软件工程,2021(22):55-57.
[6] 秦秋滢.基于CSS技术的网页设计应用研究[J].电子世界,2020(06):194-195.DOI:10.19353/j.cnki.dzsj. 2020.06.111.
[7] 白相辰. 基于Django框架的Web在线教育平台的设计与实现[D].北京交通大学,2019.DOI:10.26944/d.cnki.gbfju.2019.000099.
[8] 肖蕾,刘威,黄慧明.多场景环境监测系统的设计与实现[J].信息技术,2019,43(06):96-100+105.DOI:10.13274/j.cnki.hdzj.2019.06.023.
[9] 刘忠平. 塑料行业电子商务一体化服务平台的设计与实现[D].天津大学,2012.
[10] 高彦刚. 基于SSH框架的陕西省省直机关后勤综合服务平台设计与实现[D].西安电子科技大学,2015.
[11] 增强现实地图导航系统的设计与实现[D].大连理工大学,2017.
[12] 华磊. 基于CCD的图像采集系统设计与实现[D].西安电子科技大学,2012.
[13] 黄筱喆. 基于增强现实的智能视频监控研究与设计[D].电子科技大学,2019.
[14] 顾茗思懿,王会鲜.基于Vue+Spring Boot校园求职学习平台的设计与实现[J].电脑知识与技术,2020,16(33):94-96.DOI:10.14004/j.cnki.ckt.2020.

20220611_214910

基于python的在线音乐系统设计与实现相关推荐

  1. 基于Python的在线音乐推荐系统的设计与实现

     源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 基于Python的在线音乐推荐系统是一个基于Internet,采用PYTHON技术开发的服务于音乐 ...

  2. 【毕业设计之python系列】基于Flask的在线音乐网设计与实现

    基于Flask的在线音乐网设计与实现 摘 要 本论文旨在通过使用Python的Web框架Flask,设计和实现一个具有完整功能的在线音乐网站.该网站包括用户注册.登录.注销.歌曲上传.编辑.删除.歌单 ...

  3. 计算机毕业设计django基于python智能在线考试阅卷系统

    项目介绍 随着计算机多媒体技术的发展和网络的普及.采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的基于python的学校对在线考试阅卷系统的 ...

  4. 基于python的人脸识别系统设计与实现

    案例分享之基于python的人脸识别系统设计与实现 人脸识别即程序对输入的图像进行判别是否有人脸,并识别出有人脸的图像所对应的人.即我们常说的人脸识别一般包含了人脸检测和人脸识别两部分.下面对其在op ...

  5. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于JAVA的在线考试系统设计78084

    如果你自己基础不好或者是小白的情况下那就建议你选择网站.系统类的去做,但是还得问问你们导师,如果你们导师没问题就可以,因为有的导师是不愿意你们选择做网站.系统的,毕竟做的人比较多,重复率调高,选择这种 ...

  6. 基于SSH的在线音乐点评网站-java在线音乐点评网站

    基于SSH的在线音乐点评网站-java在线音乐点评网站 开发环境:Eclipse for J2EE,MYSQL5.1,JDK1.7,Tomcat 7 首页主要展示一些最新的音乐专辑. (1)用户注册: ...

  7. python播放在线音乐_Python实现在线音乐播放器

    最近这几天,学习了一下python,对于爬虫比较感兴趣,就做了一个简单的爬虫项目,使用Python的库Tkinsert做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口, ...

  8. 【基于Python+tkinter的音乐播放器开发-哔哩哔哩】 https://b23.tv/eG2TwOL

    [基于Python+tkinter的音乐播放器开发-哔哩哔哩] https://b23.tv/eG2TwOL https://b23.tv/eG2TwOL

  9. python批量检索文献_基于Python的文献检索系统设计与实现

    基于 Python 的文献检索系统设计与实现 杜兰 ; 刘智 ; 陈琳琳 [期刊名称] <软件> [年 ( 卷 ), 期] 2020(041)001 [摘要] 毕业设计是大学本科教育的一个 ...

最新文章

  1. struts2文件上传大小限制问题小结(引用)
  2. Android源码分析(三):Mms模块总结(一)
  3. 事务,视图 ,函数,存储过程,触发器
  4. 【知识总结】Java类初始化顺序说明
  5. SAP Spartacus B2B 页面 info icon 设计 - 版本1.0
  6. 云湖共生-释放企业数据价值
  7. scala 获取数组中元素_从Scala中的元素列表中获取随机元素
  8. android用户界面编程技巧——更新请求
  9. 一文简单理解Java反射及使用
  10. 田永强:优秀的JavaScript模块是怎样炼成的
  11. AS 3.0 socket 通信,比较基础比较全【转载】
  12. VS2015各版本的区别
  13. 戴尔G3游戏本蓝屏现象频繁解决方案(最新篇)
  14. 如何查看计算机所连接的打印机
  15. 自动驾驶仿真平台Carla从入门到放弃
  16. 品牌笔记本电脑启动BIOS按键
  17. 理科580分学计算机,高考理科580分能上什么学校 理科580分左右的大学有哪些
  18. 分享45个android实例源码,很好很强大.收藏吧!!! http://www.apkbus.com/forum.php?mod=viewthreadtid=20978 (出处: Android开
  19. Qml 中用 Shader 实现圣诞树旋转灯
  20. 一毕业就被抢光的​高薪专业,竟然是这些!

热门文章

  1. IOS端K线系列之K线-绘制蜡烛图
  2. 目标检测、追踪梳理:帧差法、光流法、背景减除法
  3. Life with qmail -- 中文版(英文版本2 Jan 2006)
  4. 1.1 LaTex中文环境搭建
  5. Excel 如何让一列中的很多数 同时加上一个数
  6. matlab求解非线性常微分方程组,求一道用matlab编程解非线性方程组
  7. Matlab:图像轮廓的曲率计算
  8. Redis的数据结构及底层原理
  9. 日本用计算机模拟核试验,法国:将用超级计算机模拟核试验
  10. 学生成绩等级用c语言,C语言实现学生成绩等级划分的方法实例