@TOC
ssm800基于web的音乐管理系统的设计与实现+vue
第1章 绪论
1.1 课题研究背景
现在各行各业都开始采用计算机办公软件来进行协助工作,这样可以更好的提高工作效率,减轻办公人员的工作压力,通过计算机信息化管理,可以使信息长期保存,修改和查找起来更加的方便,对于信息资料的核对也更加的精准[1]。虽然现在很多音乐信息都可以从网上获取,但是音乐网站作为一个获得信息的主要途径,还是没办法替代的,很多人还是习惯去各种音乐网站上进行浏览、了解,而音乐网站工作量是非常大的,而且问题种类也是非常的多,如果还是传统的人工管理方式进行管理,那么首先对于音乐的查找和分类管理就是一个很大的挑战,但是如果借助于计算机管理软件的出现,可以把音乐资料全部录入系统里,可以更精准的进行管理,对于信息的查找和存放管理是非常方便的,比如直接输入音乐编号就可以快速查找到相关资料的详情。其次还额外加入了用户权限,用户可以直接通过登录系统就可以播放音乐,还可以发表自己的看法和其它用户进行交流,可以更好的节省时间[2]。所以说不管是针对音乐工作的管理人员还是对于用户来说,都是非常具有开发价值的。
1.2课题研究现状
在我们国内使用最多的管理系统系列有金盘软件、汇文软件,在国外代表软件有ExLibris和Aleph500。随着人们要求的深入,音乐管理加入了新的理念,更好的整合了代表系统的特点和加入自身特点。现代使用的综合性网站可以实现音乐信息的快速查找,方便用户寻找需要的资料,并且可以实现在线评价,用户的评价信息实现信息化管理,实现用户交流[3]。但经过研究,现在的综合性网站还存在一些问题,比如由于部门不同、负责工作内容不同的原因,很多的数据都是隔离保存的,不能实现共享,这就造成在工作中需要多个部门奔跑;再有现有的综合性网站功能丰富,信息杂乱,很多音乐不实,不能实现音乐信息管理的整个流程。想要解决这些问题就需要采用先进的理念进行设计,并且深入了解音乐信息管理的工作内容,采用开放的思路进行设计,最后还需要吸取用户的建议[4]。
1.3课题实现目的和意义
音乐网内存储的音乐资料是非常多的,首先对于音乐资料的管理摆放来说就是非常的耗时耗力,对于管理人员来说也是一个非常大的挑战,其次用户评论的数据也是非常的繁杂,而且频次也是非常的高,通过建设的数字化基于Web的音乐管理系统解决这个难题,全部把音乐资料信息存储到计算机里,实现智能化管理,可以更好的提高工作人员的工作效率[5]。
优质的音乐管理系统不仅可以单纯的满足工作人员管理的日常工作需求,还可以满足用户的需求。可以降低工作人员的工作压力,提高效率,最重要的是可以实现用户参与,把工作人员的部分工作分担给用户,使工作人员的工作安排更加合理[6]。本系统可以实现音乐管理的流程化、信息化,使必要信息实现共享。综合来说本系统可以减少工作人员的工作内容,充分体现网络的作用,实现网络资源的利用从而提高解决音乐管理问题的效率和使音乐推广的管理工作安排更合理,并且实现服务的多样化、人性化[7]。
1.4课题实现内容
本系统包括用户和管理员两部分。用户通过登录后可以查找音乐并进行评价、交流,可以查看音乐分类和进行论坛交流等。管理员在后台可以管理自己的账号和用户信息,并对音乐进行更新和推荐,管理用户的评价信息和进行分类划分、用户管理、论坛管理、公告管理等。本系统中加入音乐分类管理,可以使用户在查询音乐时更加快速。用户在自己的后台里可以查看评价回复和进行个人资料、音乐收藏管理。
1.5论文结构安排
本篇论文按照系统开发的生命周期进行撰写,详细描述了本系统从调研、分析、设计、实现、测试的过程。本论文从课题开发的背景、现状、目的意义开始,介绍了本课题开发的重要性;然后介绍了本课题开发所使用的相关技术和环境等;接着阐述本课题的分析,包括对课题的需求性、可行性、性能方面、功能方面的分析,紧接着设计了系统的功能和建立了系统的数据库,然后进行系统的实现和系统的测试[8]。所以,本篇论文的结构安排为:
绪论,本章包含课题开发背景、现状、目的和意义以及内容;
系统实现的相关技术和环境,对JAVA语言和Mysql数据库进行描述,并对其它相关技术、环境进行描述;
系统分析,针对系统需求分析、系统经济可行性、操作可行性、技术可行性分析,还包括系统的功能、性能、流程进行分析。本章包括各类流程图;
总体设计,描述系统的功能结构和画出系统的功能结构图,描述数据库的设计和画出数据库ER图、数据库表;
系统实现,描述系统的主要功能和进行实现界面的展示;
系统测试,介绍测试的目的、意义、步骤等,着重描述系统的功能测试用例和进行测试总结;
总结
致谢
参考文献
第2章 系统实现的相关技术和环境
2.1Java介绍
Java语言是从C++进行衍生出来的一种新型编程语言,他保留了c++语言中很多核心技术,继承了他的面向对象的优点,而且舍弃了很多缺点,比如在Java语言中去掉了指针,这样可以减少很多错误,还去掉了运算符,这样提高了运行处理效率[9]。还增加了很多优点,添加了垃圾回收功能,提高了代码的使用率,总体来说,Java语言是一个分布式的、高性能的、多线程的开发语言。Java从开发之初就是打算作为一个开放性的语言技术,这就要求需要有很高的兼容性,首先就需要同样的代码程序可以在不同的计算机上运行,还要支持不同的网络,同时还要注重安全性,方便用户使用。Java语言最突出的特点就是面向对象,可以把一个对象当成很多代码状态的物体,然后进行自定义类型进行关联操作,这样进行集合起来的代码就叫对象,面向对象的方法可以使设计根据的简单,方便管理,还可以减少失败[10]。C++最大的一个缺点就是没有垃圾回收机制,通常在编程的过程中,初始化对象时候系统会自动分配一个内存地址,如果不需要这个对象的时候,系统不能进行自动删除和回收,这样造成了很大的内存浪费,导致系统卡顿,会让系统非常的不稳定,严重的话甚至会系统崩溃,而Java语言就是在这个基础上设置了垃圾回收机制,当一个使用过的对象没有引用的时候,系统可以自动删除,回收内存,这样就可以很好的避免了内存泄漏,保障了程序的安全,同时提高了运行效率[11]。
2.2UML建模语言介绍
UML建模语言是一个面向对象开发的标准化建模语言,目前作为一个统一的标注在执行,之前各种建模语言都是相互独立的,而通过UML把他们全部联系了起来,这样可以使技术灵活度很大的提高,减少了不必要的差异化[12]。通过UML建模语言可以很大程度的扩宽系统的适用范围。建模语言的作用就是系统开发前期阶段进行可视化演练,先建立好一个动态的模型,这样就可以清晰的展示出来自己要做的系统大致是个什么类型,更能直观的通过图形化进行信息展示。UML建模工具包含很多图形,比如用例图,类图,时序图等各种图形,通过这些图形可以建立各种类之间的联系[13]。
2.3 Html语言介绍
Html是一种超文本标记语言,经过技术的不断发展,现在已经是html5版本了,html可以结合各种编程语言使用,比如像jsp ,Java等都可以嵌入使用,html的工作原理就是当用户进行信息访问时候,可以借助于浏览器把html代码进行可视化展示,然后显示在浏览器上,所以html主要是网页界面中使用,可以通过div+css等设计界面样式等。因为html是一个静态的网页技术,所以现在一般都不是单独使用,都要结合javascript脚本语言形成动态技术,这样才能实现跟用户的交互,才能满足现代化的需求[14]。
2.4Mysql数据库的介绍
数据库分为很多种,一般有网状型数据库,层次型数据库,关系型数据库和面向对象数据库,而我们经常使用的就都是面向对象的数据库,比如像Mysql ,sql server或者Oracleog。这些数据库可以说是大同小异,采用的都是标准的sql语句格式,可以应用于各种关系型数据库。开发本系统我选用Mysql数据库作为存储方式,因为Mysql数据库体积更小,对硬件要求不高,最重要的还是免费的,直接就可以下载使用[15]。Mysql分为服务端和客户端两部分,可以直接通过客户端Navicat工具进行数据库的管理,数据可以直接进行可视化图形展示,操作起来非常的方便,简单易学,所以非常适合一些中小系统的开发和使用。Mysql是一个开源软件,是面向用户免费的,适合小型项目的开发和使用,而且存储的数据非常的多,存储方式是标准的sql语句形式。支持多种不同的语言开发,比如java ,php,c++等都能很好的兼容,非常适合web语言的开发。而且对于有个性化要求的开发者来说,还支持定制,因为采用的开源的GPL协议,所以开发者可以直接通过修改代码的方式来达到自己的需求[16]。Mysql是一个c/s架构的数据库管理软件,可以直接通过数据库客户端来进行管理操作,主要分为服务端和一个客户端,服务端是安装的时候自动跟谁系统启动的,一般不需要额外操作,使用的时候直接打开客户端就可以,然后输入端口和安装时候设置的密码就可以登录,不用的时候可以断开数据库链接,从而保证数据安全[17]。
2.5 SSM框架介绍
SSM可以理解为是一个简化版的Spring框架模型,可以直接独立运行于各种开发应用中,从而开发各种产品应用。SSM结合了很多框架到一起的,建立好框架模型好,就可以直接自动生成所需要的所有Spring组件,非常的智能化,不需要自己在单独去写各种xml配置,可以自动配置各种所需要的文件包,使开发更加的简化,如果有自己额外需求,也可以手动进行修改默认值[18]。SSM还直接集成了嵌入式的Servlet容器,所以不需要在额外打包WAR包,可以直接进行自动配置和版本控制。不需要多余的代码生成,开箱即用,这样可以减少垃圾,提高系统的运行效率[19]。
2.6Vue技术介绍
目前也有好多的前台框架都可以使用,为什么要选择Vue框架呢:因为随着目前科技的进步,前端也需要有很大的业务工作需要处理,网页功能也需要变的更加的强大,才能满足前端开发的需求,而这些都离不开JavaScript框架,现在开发的前台代码都是直接生成到浏览器里来执行,这就自动生成了很多JavaScript代码,然后这些代码是和各种页面布局和样式文件结合在一起的,通过vue可以进行各种融合;其次通过vue创建的代码维护性更好,还有很好的可测试性,比如已经有了服务端的代码应用,可以直接嵌入到Vue中进行使用,从而有更好的交互体验,更好的满足用户需求,也可以根据需求直接把业务代码逻辑放到前段代码里实现,满足用户的各种需求,可以进行各种定制化操作[20]。Vue还可以把前台网页代码进行重复使用,直接使用到需要网页渲染的地方,通过Vue进行执行命令,使开发更加的简单。
2.7 Idea运行软件介绍
一般运行Java语言开发的项目会采用Eclipse软件和Myeclipse软件以及Idea软件。Idea软件和Myeclipse软件相比,加入了智能助手,可以使系统的调试更快速,加快系统的运行。Idea软件和Eclipse软件相比,Idea软件拥有更多的插件,节省了下载更多插件的时间。Idea软件是后起之秀,现在SpringBoot框架开发的项目大多都采用Idea软件运行。Idea软件可通过网上搜索安装包进行安装,在安装时根据提示即可完成,并且可以免费注册,非常适合练习使用[21]。Idea软件使用时也非常简单,导入项目后,只要通过简单的设置就可以运行项目,并且可以实现系统开发和系统调试为一体,最重要的是,使用Idea软件在开发系统项目时,Idea软件会自我改错和提示错误。它所拥有的智能助手可以智能的修改编程人员在编程中的初级错误,对于重大型的错误也可以智能提示,方便开发者在错误的源头修改,以便发生更严重不好修改的问题[22]。
第3章 系统分析
3.1系统需求分析
需求分析指在系统开发前确定系统开发是要解决什么问题,以及在系统中如果输入了什么信息,想要得到什么结果,最后呈现了什么结果。简单来说,需求分析就是在问“想要干什么”然后通过“想要干什么”的问题找寻答案[23]。需求分析是非常重要的过程,也是非常困难的过程。需求分析具有系统是否要开发的决定权,同时也为系统后期的开发提供基石。在需求分析阶段需要注意由于系统的使用者和开发者之间难以形成交流而且系统使用者的需求会一直变化,所以在需求分析时要采用动态发展的眼光看问题[24]。
了解音乐是跟上时代步伐的重要途径,虽然现在有各种平台可以提供音乐,但在专业平台上浏览音乐还是占有不可动摇的地位。传统了解音乐的方式多为网上搜索,这类方式单一,效率不理想。用户想要评价音乐和其它用户进行交流还必须发布帖子,而本系统可以解放工作人员,想要查询音乐信息、和其它用户交流的用户可以自主操作,提供平台,更加满足用户的需求。所以本系统的开发非常需要。
3.2系统可行性分析
3.2.1技术可行性
本系统对硬件和软件方面的要求都不高,目前市场上常见的计算机硬件设备都可以满足开发本系统的需求,而且操作系统win7,win10都可以,也有很好的兼容性,通过Java语言,结合Html等生成动态网页技术,来实现本系统需要的所有功能。Mysql数据库作为系统的数据存储,安全性有足够的保障,而且有好的管理效率,可以直接对数据进行结构化关系化管理,开发这个系统采用的是SSM框架,SSM是一个非常成熟的框架结构,很多框架结构组件系统可以直接自动生成,非常的简单,适合初学者的使用,不需要繁琐的配置,属于开箱即用的框架,而且功能非常的强大,完成满足本次系统开发的需求。采用的主流B/S开发模式,可以直接通过浏览器进行访问,非常的方便,不受硬件环境的限制。所以开发本系统所采用的所有技术都是可行的。
3.2.2经济可行性
经过前期的考察调研后,本人认为开发本系统不需要有什么大的支出费用,开发本系统只需要有个计算机就可以,而开发过程中所用到的编程软件和画图软件,还有数据库都是直接从官网就行免费下载的,都属于开源的软件,可以免费使用,而且本系统采用的是Mysql数据库,可以直接自己电脑进行维护更新,不需要额外的维护费用,所以在经济上也是可行的。
3.2.3法律可行性
本系统的主题内容是积极向上的,而且开发成功以后还能对社会带来很好经济效益,对社会是有用的,开发本系统的过程中所编写的代码全部是由自己原创的,知识由老师上课所教授的,没有抄袭和借鉴任何别人的系统,所以也不存在侵权行为,所以开发本系统在法律方面也是可行的。
3.2.4操作可行性
开发的时候已经考虑到了,本系统要面向所有的人群,不管是懂计算机操作的,还是不懂的,所以采用的界面设计,简单美观,每个功能按钮都有文字提示,任何人都可以轻松掌握,熟练使用。而且采用的是B/S结构模式,可以直接借助浏览器运行,用户不需要额外安装各种繁琐的软件,直接就能在网页里进行访问,非常的方便,所以本系统在操作上也是可行的。
3.3系统性能分析
性能分析同样重要,系统的性能质量关系着系统的生命周期和受欢迎程度。对于系统的性能分析主要从以下几点来研究:
- 在系统开发的过程中要用长远的目光看待问题,不能只看当下而减少工作量,考虑系统在未来可能遇到的工作强度,在现阶段尽量提高系统的处理事务的能力和进行信息处理的响应时间;
- 系统要做到开放性,在设计数据库时要充分考虑到用户信息查询的多样性和变化性,需要对查询条件不断的进行升级、优化。加入简单的扩展配置,使后期系统在升级中可以通过扩展配置进行补充;
- 在系统开发中尽可能使用熟悉的语法并进行简单标记、注释,方便今后系统的修改和完善,减少后期修改系统时熟悉的时间;
- 除此之外要注意系统中数据的完整性、准确性和一致性,数据要实现必要的共享和独立。
- 因为本系统是开发的一个公益平台,所以操作界面必须站在用户角度进行分析设计,必须让用户看起来更加直观,可以直接抓住主题,而且方便易操作,界面风格要大众化,符合大多人的需求,让用户使用起来更加便利;
- 功能方面要要有完整的流程,还有更可能的简单,因为本系统的目的是传递信息,帮助用户了解音乐,不需要什么花里胡哨的功能,让所有用户都能及时的查看到各种信息,保障系统功能正常运行,不存在漏洞,以免耽误重要信息的发布。
- 还要保障数据信息的安全,因为计算机信息管理系统中,最重要的就是数据信息的安全,如果没有充分考虑到,万一出现什么故障,数据丢失那就是非常麻烦了,所以一定要提前做好工作,重视起来。
3.4系统功能分析
本系统的界面分为前台界面和管理员后台界面。管理员后台界面和前台界面需要符合身份的用户通过登录验证后才可以使用。前台展示音乐信息、论坛信息、公告信息,用户可以播放音乐和收藏音乐、评论音乐,管理员可以更新音乐和审核论坛信息管理用户的评论以及公告信息等。
管理员用例图如下图3.1所示:
图3.1管理员用例图
用户用例图如下图3.2所示:
图3.2用户用例图
3.5系统流程分析
本系统所有的功能使用都基于用户登录后,用户登录时数据流会从登录界面流向用户信息表中,然后数据库进行验证,如果可以找到用户输入的数据则界面就会跳转到登录成功界面,用户就可以在系统里进行操作。操作的数据会流向对应的数据库表中,完成用户的指令,最后将数据流入界面展示给用户。本系统的1层流程图如下图3.3所示:
图3.3系统流程1层图
对系统中信息的流动进行抽象就可以得到数据流程图。数据流程图表达了信息的逻辑模型,用来开发人员和用户进行交流。本系统的流程2层图如下图3.4所示:
图3.4系统流程2层图
对管理员的功能进行分析,得出管理员的信息流动,管理员可以管理音乐信息、用户信息、论坛信息和公告信息等。管理员的流程3层图如下图3.5所示:
图3.5管理员数据流程3层图
对用户的功能进行分析,得出用户的信息流动,用户可以浏览音乐和发表评论。用户的数据流程3层图如下图3.6所示:
图3.6用户数据流程3层图
总结管理员和用户的信息流程,得出本系统的流程图。本系统的流程图如下图3.7所示:
图3.7系统流程图
个人中心功能为基础功能,个人中心的流程图如下图3.8所示:
图3.8个人中心流程图
音乐信息管理功能的流程图如下图3.9所示:
图3.9音乐信息管理功能的流程图
第4章 总体设计
4.1系统设计流程分析
一个好的系统在系统设计时需要采用一定的流程才可以顺利开发。首先需要调研使用用户的需求,这里的使用用户不单单普通用户还指系统的管理人员、工作人员,只有充分了解他们的需求才可以设计也符合要求的系统,其次,选择要使用的开发语言和技术、环境,开发语言和技术、环境的选择非常重要,开源的、生命周期长的、兼容性强的技术、环境、语言才可以保证系统的生命周期,接着是研究目前已有相关类似系统的问题和找出可行的解决方案,最后,也是最重要的,需要尽可能的保证系统的先进性,这样才不会过早的被淘汰。
4.2系统详细设计和设计原则
详细设计就是首先要确定好打算具体怎么实施这个系统,也就是说,通过这个过程,就要完成系统的具体功能的描述和规划,这样就可以在程序编码的时候直接根据自己规划好的功能模块进行开发。详细设计阶段还并不没有到程序开发阶段,而是要先把程序设计出来,相当于就是一个草稿,先规划好设计的每个步骤,然后代码实施的时候直接编码就行了,不需要在进行系统设计。所以通过本思路,开发本系统采用以下具体原则来进行: (1) 有效性:这里的有效性主要是通过两个层面,首先是有用性,其次还要有可用性。有用性主要是指开发的这个系统有市场需求,是站在用户角度就是实施的,,可用性主要是指用户使用后能满足用户的需求。所以说两个方面都要同时兼顾到,这样开发的系统才是一个好的系统,是一个成功的系统,才能让用户满意。
(2) 兼容性:一个成功的系统必须是可以兼容不同的环境的,要充分考虑到用户不同的硬件下,可以达到一样的效果,必须保证非常好的兼容性。
(3) 安全性:用户安全也是最重要的一个环节,因为目前随着网络信息的发展,用户的数据安全,信息安全,隐私安全都是非常重要。既然把硬件和软件进行合理的充分利用,保证用户资源共享的情况下,还要保证系统数据安全,还要有备份和恢复的功能。每个权限的用户,有自己不同的操作权限,从来保证数据信息安全。
(4) 先进性:开发本系统采用目前比较流行的SSM框架,可以满足开发本系统的所有功能,数据库采用Mysql,数据也有很好的安全存储,采用微软平台上进行开发,这样很好的保证了系统的兼容性和易维护性。
(5) 采用标准技术:开发本系统所用到的各种技术标准均是目前国际现行标准,从而使系统有很好的开放性。
4.3系统的界面设计
4.3.1界面设计的原则
系统在界面设计时如果遵循一定的原则可以使设计更加顺利,可以减少错误的发生和减少修改错误的次数。系统的界面设计同样非常重要,只有一个好的界面才可以吸引用户使用,也才可以保证留住用户。界面设计的原则一般为:
- 对于相同功能,比如不同角色的修改个人资料管理采用相同风格进行设计,这样可以养成用户的操作习惯,一眼看过去就知道本功能的作用,不需要再仔细研究;
- 不同角色的操作界面可以分开设计,这样可以区别角色,在角色的操作界面也需要设置提醒信息,方便用户可以一眼看到当前所登录的角色;
- 在界面设计时尽量设计可以减少手动打字,手动打字需要时间和精力,并且错误率也会提高,如果改变方式,改成选择、自动这种方式就可以减少用户的打字压力。比如在用户注册时的性别输入上、信息输入的类别上等;
- 在操作时可以设置尽量多的提示词和提示框来防止用户错误操作和为用户的操作提示指导,比如用户登录不成功后可以提示为什么登录不成功是密码错误还是账号错误。
4.3.2信息输入功能的设计原则
为了提高信息输入的正确率,减轻用户的信息输入压力,可以在信息输入功能设计时采用尽可能减少手动输入的原则进行设计。信息输入功能的设计原则有:
- 可以多选用选择框、列表框等方式减少手动输入,在需要输入大量文字时可以设计可以复制、粘贴,也可以使用特定缩写来代替;
- 采用固定格式设计来减少用户的错误输入,比如在输入联系方式时,只可以输入数字,当输入其它信息时会提示“格式不正确”,在输入数量时,也可以规定好只可以输入数字。
4.4系统目标
本系统旨在达到音乐展示、音乐查询、音乐添加、评价管理、论坛管理、公告管理等为一体,为用户和管理员提供服务。使管理员更加轻松的进行工作,使用户更加快速的解决自己的问题。本系统的设计界面丰富,各个模块和按钮明确展示,使所有使用者都可以一目了然,达到人机交互、功能齐全、可扩展的目的。
4.5系统功能设计
根据第三章的功能分析设计出本系统的功能为音乐管理、在线评价、音乐查询、用户注册、评价管理等。本系统的权限分为用户和管理员两种。界面分为管理员界面和前台界面、用户界面。本系统的功能结构图如下图4.1所示:
图4.1系统功能结构图
4.6数据库设计
数据库主要作为数据库存储,也是系统重要的一步,数据库设计的过程也分为三个阶段来实施,首先是进行数据库需求分析,其次对数据库建立概念模型,最后就是数据库逻辑设计。数据库需求分析就是要弄清楚用户对开发这个系统的明确需求,就是从这个数据库需要实现什么信息,然后具体建立什么类型的表,每个表对应什么数据存储,以及每个字段的设计都要考虑到,为了数据库的安全可靠,所以设计的时候必须站在系统工程的角度进行思考。需求分析阶段,还要站在用户的立场进行考虑,进行数据安全分析,同时进行数据统计和分析用户的需求。数据库建立阶段首先要考虑各个数据字段,日常数据是否能满足基本需求,系统是否安全可靠,性能是否良好,操作是否方便,还有后期维护等。最后就是数据库功能实施阶段,主要就是数据的增删改查,是否能正确的进行操作,是否满足系统需求。
数据库设计分为两部分,数据库概念设计和数据库逻辑设计。数据库概念设计主要是设计数据的ER图,数据库逻辑设计主要是设计数据的数据库表。数据库连接图如下图4.2所示:
图4.2数据库连接图
4.6.1数据库概念模型
数据库概念模型表达了数据实体和数据实体的关系等信息,在数据库的概念模型中记录了每个数据库表的字段,通过数据库概念模型可以轻松设计数据库。对系统中的数据信息进行抽象并建模可以完成数据库的概念模型,而数据库的概念模型用ER图来表达。数据库ER图设计时采用的是自底向上的方式,首先从使用者的角色进行视图设计,然后把设计的这些视图进行整合,最后根据整合进行分析,得出结果。ER图是采用实体、联系的方式进行设计,ER图中的内容包括实体、属性、关系。实体是指系统中在工作时所使用的数据,属性是实体所包括的内容描述,关系是指实体与实体之间的联系。
本系统的主要数据为管理员、用户、音乐信息、分类信息、评价信息等。管理员ER图如下图4.3所示:
图4.3管理员ER图
用户数据由管理员和个人管理。用户数据ER图如下图4.4所示:
图4.4用户ER图
音乐数据由管理员管理,用户可以浏览,音乐数据ER图如下图4.5所示:
图4.5音乐信息ER图
评论数据由用户和管理员管理。评论数据ER图如下图4.6所示:
图4.6评论ER图
分类信息由管理员管理,分类信息ER图如下图4.7所示:
图4.7分类信息ER图
公告信息由管理员发布和管理,公告信息ER图如下图4.8所示:
图4.8公告信息ER图
系统关系ER图如下图4.9所示:
图4.9系统关系ER图
4.6.2数据库表设计
按照高内聚、低耦合的原则,并考虑到系统后期的扩展问题设计出本系统的数据库表。本系统的数据库表为管理员信息表,用户信息表、音乐信息表、评论信息表、论坛信息表等。本基于Web的音乐管理系统的数据库表结构如下表4.1-4.10所示:
表4.1 config
表4.2 dictionary
表4.3 forum
表4.4 news
表4.5 token
表4.6 users
表4.7 yinyue
表4.8 yinyue_collection
表4.9 yinyue_liuyan
表4.10 yonghu
第5章 系统实现
5.1 JAVA与Mysql数据库连接
数据库建立好后需要和系统连接才可以使系统运行。本系统采用Mysql数据库,在连接时需要设置数据库的服务器名和密码。数据库连接的原理如下图5.1所示:
图5.1 JAVA连接数据库原理
5.2系统用户界面的功能实现
5.2.1用户登录功能的实现界面
登录功能是识别身份的唯一途径,本系统中的用户为普通用户、管理员。用户在登录时输入的信息需要流入数据库中进行对比。如管理员输入admin admin,数据库则需要对比管理员信息表中是否有admin admin的数据。存在该条数据才可以登录成功,不存在该条数据时会提示错误。用户登录界面的设计效果如下图5.2所示:
图5.2用户的登录运行界面
5.2.2 前台界面的实现
前台操作界面是门户,一个好的前台界面才可以吸引住用户。本操作界面里含有导航栏、系统名称、信息搜索窗口、音乐展示模块和公告资讯展示模块等。前台操作界面功能的实现界面如下图5.3所示:
图5.3前台操作展示的效果界面
5.2.3用户注册功能的实现界面
游客可以注册,注册成为用户后才可以评价。用户注册功能的实现界面如下图5.4所示:
图5.4个用户注册功能的运行界面
5.2.4音乐信息功能的实现界面
在音乐信息界面里可以播放音频和参与评论。音乐浏览功能的实现界面如下图5.5所示:
图5.5音乐浏览功能的实现界面
5.2.5公告信息功能的实现界面
在本界面里可以展示所有的公告资讯信息。公告信息功能的实现界面如下图5.6所示:
图5.6公告信息功能的实现界面
5.2.6论坛功能的实现界面
用户可以查看帖子和回复别人的帖子也可以发布新帖子。论坛功能的实现界面如下图5.7所示:
图5.7论坛功能的实现界面
5.2.7发表评论功能的实现界面
用户可以发表自己的看法和其它用户进行交流。发表评论功能实现界面如下图5.8所示:
图5.8发表评论功能的实现界面
5.3用户中心功能的实现
5.3.1个人中心功能的实现
在个人中心里用户可以修改密码和个人资料,实现界面如下图5.9所示:
图5.9个人中心功能的实现界面
5.3.2论坛信息管理功能实现
在用户中心里用户可以查看自己的帖子以及自己帖子的回复,论坛信息管理的实现界面如下图5.10所示:
图5.10论坛信息管理功能的实现
帖子回复信息的实现界面如下图5.11所示:
图5.11帖子回复的实现界面
5.3.3公告信息管理功能的实现
用户只能看公告,不能发布。公告信息管理的实现界面如下图5.12所示:
图5.12公告信息的实现界面
5.3.4音乐信息管理实现界面
在本界面里用户可以浏览音乐和播放音乐,实现界面如下图5.13所示:
图5.13音乐信息的实现界面
5.3.5音乐留言管理功能的实现
留言完成后用户可以看到自己的留言内容并看到留言的回复。音乐留言管理功能的实现界面如下图5.14所示:
图5.14音乐留言管理功能的实现
5.3.6音乐收藏管理功能的实现
用户可以管理收藏夹的内容。音乐收藏功能的实现界面如下图5.15所示:
图5.15音乐收藏管理功能的界面实现
5.3系统后台管理员功能实现
5.3.1音乐信息管理功能的实现界面
管理员可以发布音乐信息和实现音乐的修改、删除。音乐信息管理功能的实现界面如下图5.16所示:
图5.16音乐信息管理功能界面的实现
5.3.2公告信息管理功能的实现界面
本功能包括对公告信息的添加、删除、修改、查询。添加公告时填写公告标题就可以完成,查询公告时填写查询条件即可以查询出来相对应的公告信息。查询公告信息功能的实现界面如下图5.17所示:
图5.17查询公告信息功能的实现界面
5.3.3音乐留言管理功能的实现界面
音乐留言管理包括审核用户的留言内容和回复用户留言。回复音乐留言功能的实现界面如下图5.18所示:
图5.18回复音乐留言功能的实现界面
5.3.4用户管理功能的实现
用户信息可在本功能里进行管理,可以查看用户的注册资料。查询用户信息功能的实现界面如下图5.19所示:
、图5.19查询用户信息功能的实现界面
5.3.5管理员管理功能的实现
管理员可以添加设置新的管理员账号和修改、删除已有的管理员账号。管理员管理功能的实现界面如下图5.20所示:
图5.20管理员管理功能的实现界面
5.3.6基础数据管理功能的实现界面
管理员可以对公告类型和音乐类型进行管理。利用本功能,管理员可以设置新的公告类型和音乐类型。基础数据管理功能的实现界面如下图5.21所示:
图5.21基础数据管理功能的实现界面
5.3.7论坛信息管理功能的实现
本功能包括收到用户的帖子信息和查看帖子的回复信息以及进行帖子回复和帖子删除。论坛信息管理功能的实现界面如下图5.22所示:
图5.22论坛信息管理功能的实现界面
StringUtil.java
package com.utils;
public class StringUtil {
public static boolean isEmpty(String s){
if(s==null || s.equals("") || s.equals("null")){
return true;
}
return false;
}
public static boolean isNotEmpty(String s){
return !StringUtil.isEmpty(s);
}
}
TokenServiceImpl.java
package com.service.impl;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.dao.TokenDao;
import com.entity.TokenEntity;
import com.entity.TokenEntity;
import com.service.TokenService;
import com.utils.CommonUtil;
import com.utils.PageUtils;
import com.utils.Query;
/**
* token
* @author
*/
@Service("tokenService")
public class TokenServiceImpl extends ServiceImpl<TokenDao, TokenEntity> implements TokenService {
@Override
public PageUtils queryPage(Map<String, Object> params) {
Page<TokenEntity> page = this.selectPage(
new Query<TokenEntity>(params).getPage(),
new EntityWrapper<TokenEntity>()
);
return new PageUtils(page);
}
@Override
public List<TokenEntity> selectListView(Wrapper<TokenEntity> wrapper) {
return baseMapper.selectListView(wrapper);
}
@Override
public PageUtils queryPage(Map<String, Object> params,
Wrapper<TokenEntity> wrapper) {
Page<TokenEntity> page =new Query<TokenEntity>(params).getPage();
page.setRecords(baseMapper.selectListView(page,wrapper));
PageUtils pageUtil = new PageUtils(page);
return pageUtil;
}
@Override
public String generateToken(Integer userid,String username, String tableName, String role) {
TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("userid", userid).eq("role", role));
String token = CommonUtil.getRandomString(32);
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.HOUR_OF_DAY, 1);
if(tokenEntity!=null) {
tokenEntity.setToken(token);
tokenEntity.setExpiratedtime(cal.getTime());
this.updateById(tokenEntity);
} else {
this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));
}
return token;
}
@Override
public TokenEntity getTokenEntity(String token) {
TokenEntity tokenEntity = this.selectOne(new EntityWrapper<TokenEntity>().eq("token", token));
if(tokenEntity == null || tokenEntity.getExpiratedtime().getTime()<new Date().getTime()) {
return null;
}
return tokenEntity;
}
}
ForumServiceImpl.java
package com.service.impl;
import com.utils.StringUtil;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import com.dao.ForumDao;
import com.entity.ForumEntity;
import com.service.ForumService;
import com.entity.view.ForumView;
/**
* 论坛信息 服务实现类
*/
@Service("forumService")
@Transactional
public class ForumServiceImpl extends ServiceImpl<ForumDao, ForumEntity> implements ForumService {
@Override
public PageUtils queryPage(Map<String,Object> params) {
if(params != null && (params.get("limit") == null || params.get("page") == null)){
params.put("page","1");
params.put("limit","10");
}
Page<ForumView> page =new Query<ForumView>(params).getPage();
page.setRecords(baseMapper.selectListView(page,params));
return new PageUtils(page);
}
}
声明
本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。