Springboot晋韵戏剧点播网站毕业设计源码112304

Springboot晋韵戏剧点播网站

摘 要

网络时代的到来使得人们获取信息的方式更加便捷,信息的传递也更加快速。作为我国有着悠久历史的艺术形式,传统戏曲的传播与发展也必须要与网络媒体这种新兴的传播方式紧密结合。通过互联网,广大戏曲爱好者可以相互交流和沟通,欣赏戏曲演出,研究戏曲艺术。在过去的很长一段时间内,戏曲艺术由于传播形式的单一性以及内容上的原因,发展受到了一定的阻碍,很多观众对于戏曲的关注程度不断降低,而这种局面在进入到互联网传播时代明显得到了改观,也表明了戏剧与网络媒体结合的必要性。

本文研究的“晋韵戏剧点播网站”采用Java技术,Mysql数据库存储数据,基于Springboot框架开发,其开发主要包括应用程序界面设计和后台代码运行两个方面,实现了多功能晋韵戏剧点播网站在计算机上的应用,可以在很大程度上满足用户的需求.该系统主要具备:戏剧资讯、资讯分类、戏剧交流、戏剧分类、戏剧影片等功能模块。

关键词:戏剧交流;Springboot框架;Mysql数据  

Springboot Jinyun drama on demand websiteAbstract

The advent of the Internet age makes the way for people to obtain information more convenient and the transmission of information faster. As an art form with a long history in China, the communication and development of traditional opera must also be closely combined with the emerging communication mode of network media. Through the Internet, opera lovers can communicate with each other, enjoy opera performances and study opera art. For a long time in the past, the development of opera art has been hindered due to the singleness of communication form and content. Many audiences pay less attention to opera. This situation has been significantly improved in the era of Internet communication, which also shows the necessity of the combination of drama and online media.

The "Jinyun drama on demand website" studied in this paper adopts Java technology, MySQL database to store data, and is developed based on springboot framework. Its development mainly includes two aspects: application interface design and background code operation. It realizes the application of multi-functional Jinyun drama on demand website on the computer, which can meet the needs of users to a great extent The system mainly includes: Drama information, information classification, drama communication, drama classification, drama film and other functional modules.

Key Words:Drama exchange;  Springboot framework;  Mysql database

目  录

 

Abstract

  

1 绪论

1.1开发背景与意义

1.2国内外研究现状

1.3论文结构

2 主要技术和工具介绍

2.1 J2EE技术

2.2 MySQL 数据库

2.3 B/S结构

2.4 Springboot框架

2.5 MVVM模式

2.6 B/S体系工作原理

3 系统分析

3.1可行性分析

3.1.1经济可行性

3.1.2技术可行性

3.1.3操作可行性

3.2需求分析

3.3业务流程分析

3.4数据流程分析

4 系统设计

4.1开发环境

4.2系统结构设计

4.3主要功能模块设计

4.4数据库设计

4.4.1数据库设计概述

4.4.2概念设计

4.4.3表设计

5  系统实现

5.1登录模块的实现

5.2用户子系统模块的实现

5.2.1用户首页的实现

5.2.2注册模块的实现

5.2.3评论模块的实现

5.3管理员子系统模块的实现

5.3.1用户管理模块的实现

5.3.2密码修改模块的实现

5.3.3戏剧影片管理模块的实现

5.3.4戏剧资讯管理模块的实现

6  系统测试

6.1软件测试

6.2功能测试

6.3测试结果

7  总结

  

参考文献

第1章 绪论

1.1开发背景与意义

我们深处在科技飞速发展的时代,众多新媒体已然成为时代的宠儿,加之外来文化不断席卷中华大地,它们在提供娱乐方式、满足文化需求等方面颇受人们的青睐,然而戏剧演出行业的发展则严重受限,众多院团发展面临众多困境,观众大量流失,众所周知票房是其维持生存能力、衡量其发展水平的重要指标,那么在这种现状下,如何借助时代发展的浪潮更好的保护、传承戏剧艺术,如何更为妥善而高效的推广戏剧成为时下重要的议题之一。

纵观当下中国,网络已然在我们的生活中无孔不入,它具有传播范围广、速度快、成效高、内容丰富、针对性强、可交互性等众多不可替代作用,为传统戏剧演出的推广内容和呈现方式提供了新的可能。戏剧演出想要让更多的人所知,并符合他们的审美取向,让更多的文艺爱好者为之痴迷,尤其是要满足在网络占据大量文化市场背景下青年观众的需求,为戏剧演出行业赢得广阔的市场和生存空间,除剧目本身所应具备的品质外,如何把其通过强大的网络手段更加高效的推广也尤为重要。然而,现有的各个戏剧演出及相关推广、售票网站存在众多问题:仅包含简单的演出资讯和售票业务,总体内容和形式仅停留在浅层,与观众的需求脱节,并未进行深入的研究和设计,自然网站的流量更是少之又少等等,难以缓解戏曲演出行业面临的问题。

从实践角度,本文在立足于当前社会背景与时代特征,思考当前传统戏剧所面临的实际困境,确保传统戏剧演出的精华被充分保留的前提之下,进而构建一个功能与美观高度统一的晋韵戏剧点播网站。当中从版面到内容,从图片到影像,尽可能从全方位、立体化的角度迎合观众需求和审美取向。

1.2国内外研究现状

在欧美国家随商业社会的发展,市场经济的推动下,文化产业和演出市场飞速发展,演出的形式和内容也是极为为丰富。它们的文化演出网站设计与推广总体态势具备了多样化、标准化、商业化等众多优势,已形成一系列完备的设计规范,与主流网站惯常采用的设计形式、视觉元素、设计标准等相匹配,很多演出网站呈现出个性鲜明的特点,形式和功能上的达到高度统一。

目前国内现有的各个戏剧演出网站及相关推广、售票网站存在诸多问题;大多仅包含简单的演出资讯和售票业务,总体内容和形式仅停留在浅层,与观众的需求脱节,并未进行深入的研究和设计,自然网站的流量更是少之又少等等。现今,对于如何设计完善的戏剧点播网站平台,并进行高效的推广方面的研究寥寥无几,迄今对于该领域也没有一套完备设计规范与方法。所以本文研究的“Springboot晋韵戏剧点播网站”是非常具有价值的。

1.3论文结构

第一章是论文的绪论部分,主要介绍了课题的研究背景以及研究目的和意义。

第二章研究了晋韵戏剧点播网站所采用的开发技术和开发工具。

第三章研究了晋韵戏剧点播网站的需求分析,根据系统的特点,分析采用的体系结构及开发方法,以及该播放器的运行环境,并分析了业务流程,绘制了业务流程以及数据流程。

第四章是对晋韵戏剧点播网站的详细设计进行说明。

第五章是播放器的具体实现,介绍播放器的各个模块的具体实现。

第六章在前几章的基础上对系统进行测试和运行。

最后对系统进行了认真的总结,以此对未来有一个新的展望。

第2章 主要技术和工具介绍

2.1J2EE技术

人可以掌握多门外语,而一个计算机科学家精通的大多是编程语言,它不是人类的自然语言,比如C语言、Java、Perl等等。由于不同的公司开发出的“中间件”不够规范,所以Sun公司推出J2EE,用这个标准来解决弊病。它提供了良好的机制,让每个层次允许与之相对的服务器、组件运行,使得系统的搭建稳定可用、开发高效、维护方便。

2.2 MySQL 数据库

MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。因为其自身的功能相当强大,目前已成为最为流行的数据库软件之一]。

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

2.3 B/S结构

系统计划采用BS模式,是因为比传统的C/S结构具有明显的优越性。B/S模式也就是浏览器/服务器模式,它的界面部分是在浏览器端展示,而主要工作是由服务器端进行实现的,用户的请求由浏览器端提交给服务器端进行处理,而服务器将处理结果反馈给浏览器端,在浏览器端界面描画给用户查看。采用B/S模式不仅可以避免用户必须安装专业软件才能开发系统或者访问系统的局限性,而且更加便利。

2.4Spring boot框架

Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。尽管Spring框架自身对编程模型没有限制,但其在Java应用中的频繁使用让它备受青睐,以至于后来让它作为EJB(EnterpriseJavaBeans)模型的补充,甚至是替补。Spring框架为开发提供了一系列的解决方案,比如利用控制反转的核心特性,并通过依赖注入实现控制反转来实现管理对象生命周期容器化,利用面向切面编程进行声明式的事务管理,整合多种持久化技术管理数据访问,提供大量优秀的Web框架方便开发等等。Spring框架具有控制反转(IOC)特性,IOC旨在方便项目维护和测试,它提供了一种通过Java的反射机制对Java对象进行统一的配置和管理的方法。Spring框架利用容器管理对象的生命周期,容器可以通过扫描XML文件或类上特定Java注解来配置对象,开发者可以通过依赖查找或依赖注入来获得对象。Spring框架具有面向切面编程(AOP)框架,SpringAOP框架基于代理模式,同时运行时可配置;AOP框架主要针对模块之间的交叉关注点进行模块化。Spring框架的AOP框架仅提供基本的AOP特性,虽无法与AspectJ框架相比,但通过与AspectJ的集成,也可以满足基本需求。Spring框架下的事务管理、远程访问等功能均可以通过使用SpringAOP技术实现。Spring的事务管理框架为Java平台带来了一种抽象机制,使本地和全局事务以及嵌套事务能够与保存点一起工作,并且几乎可以在Java平台的任何环境中工作。Spring集成多种事务模板,系统可以通过事务模板、XML或Java注解进行事务配置,并且事务框架集成了消息传递和缓存等功能。Spring的数据访问框架解决了开发人员在应用程序中使用数据库时遇到的常见困难。它不仅对Java:JDBC、iBATS/MyBATIs、Hibernate、Java数据对象(JDO)、ApacheOJB和ApacheCayne等所有流行的数据访问框架中提供支持,同时还可以与Spring的事务管理一起使用,为数据访问提供了灵活的抽象。Spring框架最初是没有打算构建一个自己的WebMVC框架,其开发人员在开发过程中认为现有的StrutsWeb框架的呈现层和请求处理层之间以及请求处理层和模型之间的分离不够,于是创建了SpringMVC。

2.5 MVVM模式

MVVM模式是常用的开发模式,主要是在代码实现上将其分为M层、V层和C层。

视图(View)代表用户交互界面,一个 Web 应用就可能有很多的界面,在 MVVM 模式中,视图仅仅处理的只有数据采集、处理,还有用户的请求, 并不包括业务流程的处理,业务流程由模型(Model)来处理。

模型(Model)就是业务流程/状态的处理及业务规则的制定。模型处理业务流程的过程其它层是无法看见了的,它就像黑箱子,在接受视图请求的数据之后,然后返回最终的处理结果。MVVM 最主要的核心就是业务模型的设计,一个典型的应用例子就是目前流行的 EJB 模型,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但是它不能作为应用设计模型的框架。

控制器(Controller)可以理解为接收用户的请求,然后视图和模型匹配在一起,一起再完成用户请求。它有非常明显的作用在划分控制层上,可以很清晰地告诉你,它就是一个分发器,选择什么样的模型、视图,可以完成用户的什么样的请求。控制层不做所有的数据处理,比如说:用户点击一个连接,控制层接受到请求之后,并不处理业务信息,它只是向模型传递用户的信息,同时告诉模型做什么,然后选择符合需求的视图返回给用户。

2.6 B/S体系工作原理

B/S架构采取浏览器请求,服务器响应的工作模式。

用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;

而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;

Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。

在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。

第3章 系统分析

3.1可行性分析

分析用户需求和数据需求,得到一个方案,然后设定系统的开发方案,为每个功能模块设计出物理设计方案,开发本系统的是否可行?本文从技术上、操作上和经济上对本系统的开发进行可行性分析。

3.1.1经济可行性

开发一个基于计算机的系统主要是为了获取较好的经济效益和社会效益。因此对待开发系统的经济可行性论证就成为可行性研究的重要内容。成本-效益分析可用于评估系统的经济合理性,给出系统开发的成本估算,并将估算的成本与获得的利润进行比对,从经济的角度论证待开发系统是否可行。一般来说,基于计算机系统的成本主要由4部分组成:

1购置并安装软硬件及有关设备的费用。

2系统开发费用。

3系统安装、运行和维护费用。

4人员培训费用。

5结合毕业设计的整个开发过程可知开发晋韵戏剧点播网站所需的全部软件平台都是免费的,

所以在经济上是完全可行的。

3.1.2技术可行性

技术可行性是可行性研究的关键内容。由于系统分析和定义过程与系统技术可行性评估过程同时进行,此时系统的功能、性能和目标的不确定性会给技术可行性论证带来许多困难。因此,技术可行性研究往往是系统开发过程中难度最大的工作。该晋韵戏剧点播网站是用Java语言+Springboot框架开发的,调试比较简单,所需的计算机硬件配置要求不高,一般PC机完全能满足开发要求。

3.1.3操作可行性

本系统使用的是现流行的开发语言,即Springboot框架。同时所有的信息都是以网页的形式展示,系统中的信息都可以在后台操作数据库达到数据更新的效果。用户只需要会计算机的基本操作或者会上网就可以使用本系统。系统布局较简单,功能操作不复杂,完全符合现代市场需求。

3.2需求分析

针对现存的问题和需要,通过功能需求的分析,特建立了数字化、信息化的戏剧推荐与交流系统。

本系统主要包含了戏剧资讯详情、戏剧影片、戏剧交流、戏剧分类等多个功能模块。下面分别简单阐述一下这几个功能模块需求。

表3-1功能需求表

编号

功能名称

功能描述

用户登录

保证用户通过身份验证进入系统进行操作

用户注册

没有账号并想使用系统的用户可以使用用户注册,检测用户的注册内容,信息通过检测之后成为本系统的用户

戏剧搜索

用户可以通过各种各样的关键字搜索戏剧信息

评论发表

普通用户选择要评论的信息进行发布评论

评论管理

管理员对用户的评论信息进行管理,包括删除、修改

修改个人信息

用户可以根据自己当前的情况修改个人的信息

后台登录

仅管理员能够登录后台

戏剧影片信息

管理员添加戏剧影片信息

编辑戏剧信息

管理员修改戏剧信息

删除戏剧信息

管理员删除戏剧信息

戏剧资讯信息

管理员发布戏剧资讯信息

戏剧交流

发布交流信息

收藏列表

用户可以点击收藏喜欢的戏剧

3.3业务流程分析

经过对系统功能的分析,调查,研究,总结出晋韵戏剧点播网站主要实现的是戏剧影片、戏剧资讯、戏剧交流管理功能。这样,可以对该系统绘制业务流程图。

系统的业务流程如下图所示。

 

图3-2系统业务流程图

3.4数据流程分析

根据上文所述的业务流程特点,首先对各个方面总的数据处理环节和外部实体进行了描述, 根据自顶向下原则,逐层分解功能,这个过程产生DFD图。

零层数据流程是流程中最抽象的一层,它包括了注册与登录管理、用户功能管理和检索维护管理等功能模块,在登录注册模块使用到的数据存储有用户信息文档、用户功能管理模块需要的存储是用户动态信息文档、戏剧信息文档,检索维护是通过以上这些文档信息通过关键词进行搜索。

系统的0层数据流图如下图所示。

 

图3-4系统数据流图(0层)

一层数据流程图是对零层数据流程图的细化,将登录与注册细分为¥填制登录注册信息和完善信息,用户功能管理细分为用户基本功能管理和用户特色功能管理。

系统的1层数据流图如下图所示。

 

图3-5系统数据流图(1层)

二层数据流程是对一层数据流层图中填写登录注册信息、用户基本功能和用户特色功能的细化。即:填写登录注册信息细化为填制信息、后台审核,用户基本功能细化为戏剧资讯、戏剧交流,用户特色功能细化为戏剧资讯浏览、戏剧搜索、戏剧影片。

第4章 系统设计

4.1系统结构设计

本系统使用的角色主要有系统管理员、普通用户,本系统分为系统前台和系统后台,首先在系统前台,游客用户可以经过账号注册,管理员审核通过后,用账号密码登录系统前台,进行戏剧资讯浏览、戏剧交流、戏剧影片、发表评论,在前台用户可以通过标题和类别进行前台信息的搜索,普通用户可以登录个人中心进行个人资料管等功能。

后台主要由管理员使用,以管理员的身份在登录页面输入账号和密码,经过数据库身份验证,验证成功后登录系统主页,可以使用用户管理、资讯分类管理、戏剧资讯管理、戏剧交流管理、戏剧影片管理等功能操作。同时管理员可以通过关键字搜索可以搜索相应的信息,打印各种详细信息,导出各类信息列表至excel中。

系统的功能结构图如下图所示。

 

图4-1系统功能结构图

4.2主要功能模块设计

  1. 用户管理模块

该模块包括普通用户管理和系统用户管理,系统用户主要是普通管理员,对用户信息进行管理,只有普通用户才可在该系统上进行相应的操作。用户对个人信息可进行修改;管理员可对自己的个人信息进行维护,同时可对用户的密码信息进行修改,也可删除系统中的用户

  1. 登录模块

根据用户输入的 Id 和密码到数据库中查找该用户,如果未能找到该用户则做出 提醒“用户名或密码错误”,如果找到该用户,则要判断用户的类别然后根据用户类别进入相应的页面。

  1. 注册模块

当新用户第一次登陆时,要求注册账号。在登陆页点击注册后进入用户注册界面,新用户需要填写本人的手机号、用户名、设置登录密码,之后单击注册,则完成了初步信息的填写

  1. 戏剧资讯管理模块

(1)戏剧添加:必须填写戏剧名称、戏剧类别、视频、音频、上映时间、戏剧介绍必须是唯一的, 提交后判断某一项是否为填写, 如果是则做出提醒, 填写符合规则后方可添加到数据库。

(2)戏剧查询:可以根据戏剧名称等信息对戏剧进行查询,查询结果可能有多个。

(3)戏剧修改:除了戏剧名称外,其他信息均可以修改。

(4)戏剧删除:首先找到要删除的戏剧(一个或多个),然后删除即可。

  1. 戏剧交流模块

用户可以选中某一戏剧影片进行线上戏剧交流,提交帖子信息,管理员在后台可以查看或搜索用户发表,同时审核发表内容信息。

  1. 评论信息管理模块

评论模块分为用户评论和管理员管理评论信息,用户登录系统后,选择想要评论的音乐,添加评论,管理员查询该评论信息,并有权对其管理,包括删除。

4.3数据库设计

4.3.1数据库设计概述

为了实现系统的功能设计,就要有相应的数据库表设计。根据系统的功能设计要求为各个数据库表设计字段、数据类型、是否为空等的相关信息。在实际调研和需求分析的基础上,对该系统设计数据库。再有系统的需求分析可以看出,本系统有两个角色:普通用户和管理员,他们分别在系统的运行和使用中起着不同的作用。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整性和一致性。数据库中表的设计主要考虑两个方面:一是整个管理系统的所有表中的数据要共享性高、冗余度小、占用最可能小的存储空间。

4.3.2概念设计

概念设计是整个数据库设计的关键,在概念设计阶段,由需求分析得到了E-R模型。E-R图是识别功能模型与数据模型间关联关系的,在主题数据库的抽取和规范化的过程中,采用的是简化的E-R图表示方法,从而避免过繁过细的E-R图表示影响规划的直观和可用性。是对现实世界的抽象和概括,是数据库设计人员进行数据可设计的有力工具,能够方便直接地表达应用中的各种语义知识,令一方面它简单、清晰、易于用户理解。

系统总体ER图如下图所示。

 

图4-10系统总体ER图

4.3.3表设计

概念模型是独立于任何一种数据模型的信息结构。将概念模型转换成逻辑模型,转换的一般原则如下:

(1)一个实体性转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的码。

(2)一个1:1联系可以转化为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

(3)一个1:n联系可以转化为一个独立的关系模式,也可以与n端对应的关系模式合并。

(4)一个m:n联系转化为一个关系模式。

本系统设计如下多个表,包括戏剧资讯表、戏剧影片列表、戏剧交流表。

名称

类型

长度

不是null

主键

注释

registered_user_id

int

11

注册用户ID

user_name

varchar

64

用户名

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

drama_film_id

int

11

戏剧影片ID

drama_name

varchar

64

戏剧名称

drama_category

varchar

64

戏剧类别

trouper

varchar

64

戏剧演员

cover

varchar

255

封面

video

varchar

255

视频

audio_frequency

varchar

255

音频

release_time

date

0

上映时间

drama_introduction

longtext

0

戏剧介绍

hits

int

11

点击数

praise_len

int

11

点赞数

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

drama_classification_id

int

11

戏剧分类ID

drama_category

varchar

64

戏剧类别

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

forum_id

mediumint

8

论坛id

display

smallint

5

排序

user_id

mediumint

8

用户ID

nickname

varchar

16

昵称:[0,16]

praise_len

int

10

点赞数

hits

int

10

访问数

title

varchar

125

标题

keywords

varchar

125

关键词

description

varchar

255

描述

url

varchar

255

来源地址

tag

varchar

255

标签

img

text

0

封面图

content

longtext

0

正文

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

avatar

varchar

255

发帖人头像:

type

varchar

64

论坛分类

名称

类型

长度

不是null

主键

注释

comment_id

int

11

评论ID:

user_id

int

11

评论人ID:

reply_to_id

int

11

回复评论ID:

content

longtext

0

内容:

nickname

varchar

255

昵称:

avatar

varchar

255

头像地址

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

source_table

varchar

255

来源表:

source_field

varchar

255

来源字段:

source_id

int

10

来源ID:

第5章  系统实现

5.1登录模块的实现

晋韵戏剧点播网站的前段入口就是用户登录功能,在浏览器输系统地址跳转至系统前台首页,系统前台的登录窗口在首页左面,包括用户名、密码、权限、验证码,除了权限框使用下拉列表,其他使用文本框,验证码下方为登录和重置两个按钮,用户点击登录按钮,则进行登录验证。

登录流程图如下所示。

 

图5-1登录流程图

系统登录界面如下所示。

 

图5-2系统登录

登录关键代码如下。

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.select(map, new HashMap<>()).getResultList();

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.select(groupMap, new HashMap<>()).getResultList();

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String sql = "select examine_state from "+ userGroup.getSourceTable() +" WHERE user_id = " + byUsername.getUserId();

            String res = String.valueOf(service.runCountSql(sql).getSingleResult());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

5.2用户子系统模块的实现

5.2.1用户首页的实现

在晋韵戏剧点播网站的用户首页,主要有用户登录页面,以及¥的展示等,在首页的导航栏中可看出,该系统主要有¥等主要模块。

如下图所示为系统的用户首页界面。

 

图5-3用户首页

5.2.2注册模块的实现

这块程序首先根据所取得的表单中的用户名查询数据库中是否有相同用户名的记录,如果数据库存在相同的用户名,则提示用户名已存在,否则,打开记录集并添加一条新的记录,然后系统默认要给用户发送注册成功的提醒。

用户注册流程图如下所示。

 

图5-4用户注册流程图

用户注册界面如下图所示。

 

图5-5用户注册

用户注册关键代码如下。

/**

     * 注册

     * @param user

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(@RequestBody User user) {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        query.put("username",user.getUsername());

        List list = service.select(query, new HashMap<>()).getResultList();

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        user.setUserId(null);

        user.setPassword(service.encryption(user.getPassword()));

        service.save(user);

        return success(1);

}

/**

     * 用户ID:[0,8388607]用户获取其他与用户相关的数据

     */

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    @Column(name = "user_id")

    private Integer userId;

    /**

     * 账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

     */

    @Basic

    @Column(name = "state")

    private Integer state;

    /**

     * 所在用户组:[0,32767]决定用户身份和权限

     */

    @Basic

    @Column(name = "user_group")

    private String userGroup;

    /**

     * 上次登录时间:

     */

    @Basic

    @Column(name = "login_time")

    private Timestamp loginTime;

    /**

     * 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "phone")

    private String phone;

    /**

     * 手机认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "phone_state")

    private Integer phoneState;

    /**

     * 用户名:[0,16]用户登录时所用的账户名称

     */

    @Basic

    @Column(name = "username")

    private String username;

    /**

     * 昵称:[0,16]

     */

    @Basic

    @Column(name = "nickname")

    private String nickname;

    /**

     * 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

     */

    @Basic

    @Column(name = "password")

    private String password;

    /**

     * 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

     */

    @Basic

    @Column(name = "email")

    private String email;

    /**

     * 邮箱认证:[0,1](0未认证|1审核中|2已认证)

     */

    @Basic

    @Column(name = "email_state")

    private Integer emailState;

    /**

     * 头像地址:[0,255]

     */

    @Basic

    @Column(name = "avatar")

    private String avatar;

    /**

     * 创建时间:

     */

    @Basic

    @Column(name = "create_time")

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")

    private Timestamp createTime;

    @Basic

    @Transient

    private String code;

}

5.2.3评论模块的实现

用户点击某个音乐点进入音乐详细页,点击评论按钮进入评论页,提交评论信息,成功发布评论,管理员管理用户的评论信息。

用户评论流程图如下所示。

 

图5-6用户评论流程图

用户评论界面如图所示。

 

图5-7用户评论

5.3管理员子系统模块的实现

5.3.1用户管理模块的实现

系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。

系统用户管理界面如下图所示。

 

图5-8系统用户管理

5.3.2密码修改模块的实现

密码修改是对当前登录用户的密码进行修改,在用户登录后右上方也能进行密码修改。

密码修改流程图如下所示。

 

图5-9密码修改流程图

5.3.3戏剧影片管理模块的实现

戏剧影片信息添加功能主要指对其戏剧名称、戏剧类型、介绍等一些基本信息的添加、删除和修改。戏剧影片查询能根据戏剧id、名称、类型等多种条件对戏剧影片信息进行查询。

戏剧影片管理流程图如下所示。

 

图5-10戏剧影片管理流程图

戏剧影片管理如下图所示:

 

图5-11戏剧影片管理

戏剧影片管理关键代码如下所示。

@PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        service.insert(service.readBody(request.getReader()));

        return success(1);

    }

    @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        service.insert(map);

        return success(1);

}

    public Map<String,Object> readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder("");

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.append(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json, Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

}

    public void insert(Map<String,Object> body){

        StringBuffer sql = new StringBuffer("INSERT INTO ");

        sql.append("`").append(table).append("`").append(" (");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            sql.append("`"+humpToLine(entry.getKey())+"`").append(",");

        }

        sql.deleteCharAt(sql.length()-1);

        sql.append(") VALUES (");

        for (Map.Entry<String,Object> entry:body.entrySet()){

            Object value = entry.getValue();

            if (value instanceof String){

                sql.append("'").append(entry.getValue()).append("'").append(",");

            }else {

                sql.append(entry.getValue()).append(",");

            }

        }

        sql.deleteCharAt(sql.length() - 1);

        sql.append(")");

        log.info("[{}] - 插入操作:{}",table,sql);

        Query query = runCountSql(sql.toString());

        query.executeUpdate();

    }

5.3.4戏剧资讯管理模块的实现

流程图如下所示。

 

图5-12戏剧资讯管理流程图

戏剧资讯管理表如下图所示:

 

图5-13戏剧资讯管理表

戏剧资讯管理关键代码如下所示。

@RequestMapping("/get_list")

    public Map<String, Object> getList(HttpServletRequest request) {

        Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

        return success(map);

第6  系统测试

6.1软件测试

在设计系统的过程中,存在一些错误是不可避免的。For语句语法错误,运行的提示,并要求立即纠正,因此,容易发现和纠正错误等。但另一种类型的错误是程序执行时由于不正确的操作或对某些数据计算公式的逻辑错误导致错误的结果。这种错误的隐蔽性强,有时会出现,有时不出现,因此,这种误差动态屏幕耗时。

6.2功能测试

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项检测,检查产品是否达到用户要求的功能。下面列出的测试用例是基于需求分析阶段的用例描述而进行的设计。

下面将通过表格的形式介绍针对本系统每个功能模块所进行的功能测试。

1.注册模块功能测试,如下表所示。

表6-1注册测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

用户注册

用户打开注册界面

输入合适的用户名,密码为空

无法注册

提示密码不得为空,无法注册

正常

用户注册

用户打开注册界面

输入不合适的用户名、2次相同的密码

无法注册

提示用户注册失败

正常

用户注册

用户打开注册界面

输入合适的用户名,两次密码不一致

无法注册

提示用户名不得为空,无法注册

正常

用户注册

用户打开注册界面

输入的用户名为空

无法注册

提示用户名不能为空

正常

用户注册

用户打开注册界面

输入合适的用户名和两次相同的密码

正常注册

注册成功

正常

2.登录模块功能测试,如下表所示。

表6-2登录测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

登录系统

用户打开登录界面

输入正确的用户名,密码为空

无法登录

提示密码不得为空,无法登录

正常

登录系统

用户打开登录界面

输入正确的用户名,输入错误密码

无法登录

提示密码不正确,无法登录

正常

登录系统

用户打开登录界面

输入正确的密码,用户名为空

无法登录

提示用户名不得为空,无法登录

正常

登录系统

用户打开登录界面

输入正确的密码,错误的用户名

无法登陆

提示用户名不正确,无法登录

正常

登录系统

用户打开登录界面

用户名及密码都为空

无法登录

提示用户名和密码不得为空,无法登录

正常

登录系统

用户打开登录界面

用户名及密码都输入错误

无法登录

提示用户名和密码正确,无法登录

正常

登录系统

用户打开登录界面

输入正确的用户名和密码

正常登录

进入主界面

正常

3.修改密码模块功能测试,如下表所示。

表6-3修改密码测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

修改密码

用户打开修改密码界面

输入正确初始密码和2次相同的新密码

密码修改成功

密码修改成功

正常

修改密码

用户打开修改密码界面

输入错误的原始密码

密码修改失败

密码修改失败

正常

修改密码

用户打开修改密码界面

输入正确初始密码和2次不相同的新密码

密码修改失败

密码修改失败

正常

4.评论功能测试,如下表所示。

表6-4评论测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

在线评论

用户已登录,打开评论界面

输入评论标题、内容等信息

评论成功

评论成功,新评论成功显示

正常

在线评论

用户已登录,打开评论界面

用户未输入评论标题和内容

评论失败

评论失败

正常

5.个人中心功能测试,如下表所示。

表6-5个人中心测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

用户信息修改

用户已登录,进入个人中心,且打开个人信息界面

输入内容不合法或必填项为空

修改失败

提示输入内容非法

正常

用户信息修改

用户已登录,进入个人中心,且打开个人信息界面

输入内容合法

修改成功

提示修改成功

正常

6.戏剧资讯管理功能测试,如下表所示。

表6-6戏剧资讯管理测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

戏剧资讯信息添加

用户已登录,打开戏剧资讯添加界面

输入戏剧资讯标题、内容等信息

戏剧资讯添加成功

戏剧资讯添加成功,新戏剧资讯成功显示

正常

戏剧资讯信息添加

用户已登录,打开戏剧资讯添加界面

用户未输入戏剧资讯标题和内容

戏剧资讯添加失败

戏剧资讯添加失败

正常

7.戏剧影片管理功能测试,如下表所示。

表6-7戏剧影片管理测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

戏剧影片信息添加

用户已登录,打开戏剧影片添加界面

输入戏剧影片标题、内容等信息

戏剧影片添加成功

戏剧影片添加成功,新戏剧影片成功显示

正常

戏剧影片信息添加

用户已登录,打开戏剧影片添加界面

用户未输入戏剧影片标题和内容

戏剧影片添加失败

戏剧影片添加失败

正常

7.戏剧交流功能测试,如下表所示。

表6-8戏剧交流测试

测试用例编号

测试用例描述

前提条件

测试步骤

预期结果

实际结果

状态

戏剧交流

用户已登录,打开戏剧交流界面

输入音乐标题、内容等信息

戏剧交流成功

戏剧交流成功

正常

戏剧交流

用户已登录,打开戏剧交流界面

用户未输入音乐标题和内容

戏剧交流失败

戏剧交流失败

正常

6.3测试结果

通过对晋韵戏剧点播网站功能的测试,发现了许多无法实现的功能并及时得到改正和实现,为音乐推荐与交流系统的发布奠定了基础。此系统中各模块的功能都基本实现,不过还存在着许多不足,在以后的学习中通过测试还需加强和完善。

第7章  总结

本文主要研究了晋韵戏剧点播网站的设计与实现。本次论文主要研究的内容主要包括:

(1)分析研究了本课题的开发背景和课题的研究意义。

(2)对此次毕业设计进行了详尽的需求分析,并根据实际需求,分析了其数据字典。

(3)概要设计了系统的功能模块,详细设计了系统所使用的数据库表,并研究了该系统的ER图。

(4)详细介绍了该播放器要实现的功能,构建了此系统。

从技术上来说,整个系统的基本实现环境是Win10操作系统,数据库的建立使用MySQL软件,系统开发使用Springboot框架,用Java语言进行系统的设计和开发,图片采用Photoshop CS6处理,使整个系统在视觉上和功能上尽量做到完整和美观。系统界面设计美观大方,功能较为完整,技术较先进且具有一定现实意义。

在摸索中前进。对MySQL数据库的使用,如何设计后台表结构,使得系统更加合理,健壮,是面临的又一个难题,通过查找相关资料,以及在充分的需求分析基础上,解决了以上问题。若条件允许,系统的功能模块能够更丰富,某些模块的功能也能更完善,用户之间权限的处理逻辑性也能更强。今后在改善客观条件的情况下,本系统还需要进一步进行研究开发。

致  谢

经历了几个月的毕业设计之旅,遭遇了无数难题与挑战,几经波折后,近乎要摧毁我当初选择这个题目的信心。好在我的导师一直坚持对我悉心支持,并对此套系统提出了诸多改善意见,解决了我所遇到的众多难题,电影点评平台也得以在这样的境况下圆满完成。老师给予了我正确的指导和极大的帮助,这不仅仅使我获得了足够多的开发经验,更使我在系统设计过程中少走了许多的弯路,巩固了以前所学的知识,提高了应用能力,这使我对以后的工作也信心满满。

敬业的工作态度都给予了我极大的鼓励与帮助。对于提出的问题和遇到的困难都给予细心的解答和真诚的帮助,再次表示衷心的感谢。我还要对学院及系里的各位领导、老师们表示谢意,在这次毕业论文期间给我们提供了良好的学习和生活环境,并给予软硬件的支持,使得我的系统设计工作及论文撰写工作更加顺畅、便利。最后我还要感谢所有为我的毕业设计提出指导意见的各位老师、同学。

参考文献

[1]王佳欣.戏剧通过VR传播的可行性分析[J].科技传播,2021,13(23):137-140.DOI:10.16607/j.cnki.1674-6708.2021.23.041.

[2]沈慧. 戏剧线上传播策略研究[D].上海师范大学,2021.DOI:10.27312/d.cnki.gshsu.2021.000380.

[3]徐磊.论短视频背景下戏剧艺术的传播模式创新[J].人文天下,2021(03):36-41.DOI:10.16737/j.cnki.rwtx81281190.2021.03.009.

[4]薛慧君.戏剧艺术传播的移动媒体应用方式探析[J].戏剧之家,2021(02):16-18+67.

[5]李玉娟.“诗意中国”的文化表达 论传统戏剧海外传播的误区及文化品格塑造[J].中国戏剧,2020(04):77-79.

[6]丁一.互联网时代传统戏剧传播思考——评《中国地方戏生存传播案例研究》[J].中国广播电视学刊,2020(02):129-130.

[7]叶颖. 戏剧主义修辞观之于互联网对外新闻翻译——以“中国上海”门户网站新闻英译为个案[C]//.中国修辞2018.,2019:98-100.DOI:10.26914/c.cnkihy.2019.026539.

[8]程娟,丁文菁.“一带一路”背景下汤显祖戏剧国际传播策略[J].文化创新比较研究,2019,3(18):87-88.

[9]王禹洁,王倩.“互联网+”:传统戏剧传播的新载体[J].大众文艺,2019(01):171-172.

[10]祝红波,张思维.全媒体视野下我国戏剧艺术传播和发展现状研究[J].视听,2018(09):46-47.DOI:10.19395/j.cnki.1674-246x.2018.09.024.

[11]王小知.新媒体时代中国戏剧文化传播的问题与对策[J].传媒,2018(12):79-80.

[12]谭志军.浅析新媒介在戏剧传播与发展中的作用[J].戏剧之家,2017(16):25.

[13]赵健. 论大数据时代下的戏剧传播[D].深圳大学,2017.

[14]谢宁,沈悦.全球化视域下中国戏剧对外传播策略[J].戏剧之家,2017(09):26+69.

[15]徐正.戏剧艺术在新媒介环境下的传播与发展[J].戏剧之家,2017(05):43-44.

免费领取本源代码,请关注+私信

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值