摘 要
目前,国内游戏市场上的网络游戏有许多种类,游戏在玩法上也越来越雷同,形式越来越单调。这种游戏性系统给玩家带来的成就感虽然是无穷的,但是也有随之而来的疲惫感,尤其是需要花费大量的时间和精力,这对于大多数人来说都是很难做到的。
本设计采用Java面向对象编程语言,论述了基于Java Web开发的多功能游戏大厅的开发与实现,研究了目前主流的轻量级J2EE应用体系结构,对所选框架进行了分析和论述。系统集成了Spring MVC、Spring、Mybatis的Java Web开发框架,使用IntelliJ IDEA集成开发工具和SQL Server数据库管理系系统(DBMS)。系统界面简单清晰,内容包含用户管理、游戏管理、游戏热度排名、公告展示等模块。
Web游戏大厅与其他游戏大厅不同,首先,它不需要下载客户端,打开网页就能游戏;其次,Web游戏有一定的益智性,比如策略类、经营类等等。在画面上虽无法与大型网络游戏的界面与规模相比,但是开发者在制作过程中将更多的精力放在了如何提高游戏的趣味性和乐趣上。于是Web游戏大厅应运而生,并且以其界面简洁、功能齐全、易用性高、对硬件要求低等特点备受青睐。
关键词:游戏大厅; 软件开发框架; 数据库管理系统
ABSTRACT
At present, there are many kinds of online games in the domestic game market, and the game is more and more similar in terms of gameplay, and the form is more and more monotonous. This kind of gameplay system gives players a sense of accomplishment, but there is also a sense of exhaustion, especially the need to spend a lot of time and energy, which is very difficult for most people.
This design adopts Java object-oriented programming language, discusses the development and implementation of multi-function game hall based on Java Web development, studies the current mainstream lightweight J2EE application architecture, and analyzes and discusses the selected framework. The system integrates the Java Web development framework of Spring MVC, Spring, and Mybatis, using IntelliJ IDEA integrated development tools and SQL Server database management system (DBMS). The system interface is simple and clear, and the content includes modules such as user management, game management, game popularity ranking, and announcement display.
The web game hall is different from other game halls. First, it does not need to download the client, and the webpage can be played. Secondly, the Web game has certain ingenuity, such as strategy, business, and so on. Although it is not comparable to the interface and scale of large online games on the screen, developers are focusing more on how to improve the fun and fun of the game during the production process. So the Web game hall came into being, and it was favored for its simple interface, complete functions, high ease of use, and low hardware requirements.
Keywords:Game Hall; Software Development Framework; DMBS
目 录
第一章 引言 1
第一节 课题背景 1
第二节 研究现状 1
第二章 开发环境与相关技术 3
第一节 开发环境 3
第二节 相关技术 5
第三节 项目管理工具 5
第三章 系统分析与设计 8
第一节 任务概述 8
第二节 可行性分析 9
第三节 功能描述 10
第四节 数据库设计 12
第四章 系统实现 16
第一节 架构分析 16
第二节 登录注册界面设计 19
第三节 游戏大厅界面设计 22
第四节 游戏管理模块 26
第五节 公告管理模块 29
第五章 系统测试 34
第一节 测试的基本概念 34
第二节 系统测试计划 34
第三节 系统测试结果分析 36
第六章 结 论 38
参考文献 39
致 谢 40
第一章引言
本文首先叙述了本次课题的背景、开发目的和意义,其次介绍了系统开发环境、开发工具、相关开发语言、系统框架,并对相关技术进行阐述,重点论述了需求分析、详细设计、编码实现和系统测试等过程[1]。Java Web开发不仅需要丰富的实战经验,也需要熟练掌握不同框架的优缺点、应用场景,从而开发出符合用户需求、吸引用户的产品[2]。
第一节 课题背景
随着经济的发展,个人电脑和网络不断普及,人们物质生活得到提高,因此对精神生活质量提出了新的要求。随着网络的发展,游戏大厅逐渐成为游戏界的一种主流形式。
目前,游戏已经成为了一种大家喜闻乐见的主流休闲方式。小游戏正是由于其迭代速度快和简单易玩的属性,以惊人的速度发展着,游戏网站也因此蕴含了巨大的市场潜力。Web游戏凭借互动性和易用性,深受各年龄段人群的喜爱。所以设计一款休闲娱乐、简易方便的益智游戏网站前景非常可观。本系统就是基于Java Web开发的一套简洁的游戏大厅,意在打造一个集合多种益智、休闲游戏的平台,给用户一种不一样的娱乐体验。
在有着庞大数量的小游戏网站中,如何在众多游戏里挑选一款方便易玩,设计巧妙,并拥有较高品质的游戏现如今成为了大家在生活中所关注的问题。为了适应人们日益增长的娱乐需求,网站开发者们做了许多尝试。例如,为了方便玩家准确便捷的挑选游戏,许多网站对当前热门的小游戏进行归纳与分类。
本系统在此基础上进一步优化,用户通过登录注册,可于平台上选择小游戏试玩,并对心仪的游戏进行收藏评分。用户对游戏的评价将实时反馈于界面上。开发者可通过反馈内容进行总结整理,登录管理员界面发布相关公告,改进系统。
第二节 研究现状
随着小游戏数量急速增长,游戏种类也日益繁多,简单的归纳类网站已经无法满足用户的需求,于是根据用户喜好进行排名,能进行个性化收藏的游戏大厅也应运而生。但他们存在着一个共同的问题,功能繁多、操作复杂。
因此,用户急需一个功能简洁完整的游戏平台,而多功能游戏大厅恰恰满足了这种需求。多功能游戏大厅的任务主要是为用户提供一个功能完整,使用体验良好的游戏平台。一方面帮助用户选择并收藏自己喜爱的小游戏,另一方面可以根据用户的反馈与参与度改善游戏大厅的功能与体验,为开发者反馈真实有用的信息,帮助完善系统。
电子游戏自从60年代出现起,发展迅速。目前已有多种多功能游戏大厅,在很大程度上已经遍布世界各地并为全世界受众喜爱,具有一定知名度的多功能游戏平台如Steam游戏平台,Origin游戏平台,国内腾讯研发的We Game游戏平台,以及已经延续多年的QQ游戏大厅,这些游戏平台主要提供一个集成式的游戏大厅,供玩家方便快捷的选择自己想玩的游戏。
对于目前市面上所做的多功能游戏大厅,很多只是将不同种类的游戏堆砌在一个笼统的画面与服务器上,缺乏对游戏的分类与管理,由此可以得出,游戏大厅在未来的发展趋势主要有两点,一是提升系统在用户心中的可信度;二是建立好用户与开发者的沟通桥梁。首先需要做好主界面,使玩家进去大厅能直观的了解最新最热门的游戏,做好游戏宣传以及程序升级,如每周榜单一类的排行榜可以方便玩家了解实时信息。通过数据统计,针对玩家进行游戏推荐,最好按兴趣对用户进行划分。做好玩家账户的保护,管理员在后台进行每日维护,并定时更新游戏与最新信息,充分利用网络资源,筛选适合不同年龄层的游戏。
第二章 开发环境与相关技术
第一节开发环境
软件开发工具的应用可加快软件开发周期,降低软件开发者的劳动强度,提升软件工程系统化程度。在本设计中应用了功能强大的IntelliJ IDEA集成开发环境。
一、IntelliJ IDEA集成开发环境
当前软件开发业界使用最广泛,用户友好度最高的Java开发工具是由Jet Brains开发出的IntellingjIDEA(简称为IDEA)。该工具功能多样性远远优于其他工具性软件,其智能代码助手可以在代码编写过程中自动提示或重构代码,结合代码审查功能大大减少了开发者的工作量;IDEA中内置了Ant这一灵活的构建工具,且支持J2EE架构;在图形页面上更是做到了超前的创新。
在IDEA中,Project和Module在项目结构中的意义完全不同,这是IDEA与Eclipse的主要差异。由于IDEA中的Project只起到定义相关项目并限制其范围的作用,并无任何开发功能,所以构成某项目的Module,即使互相之间存在依存关联关系,但是并不需要一定处于同一项目业务之下。
IDEA对语言的支持有Java、scala等,通过安装插件可以支持更多语言,对数据库的支持有My SQL、oracle、SQL Server,对框架的支持有Spring MVC、Web Service、Structs、Hibernate等,对前端框架支持有Html5、CSS3、Node.JS等
IDEA采用了用户友好度高的设计理念,可以将开发者的静态代码分析能力做到极大的开发,提高总体系统开发速率。IDEA可以自动为用户代码编写出架构科学的索引,并根据代码上下文自动生成有效建议,为动态代码解析提供了有效支持。
IDEA提供了compile、build和make三种方式的编译,如下:
Compile
IDEA不像Eclipse一下在写完代码后需要进行手动保存,并且保存时会进行编译(可能是项目很缓慢和停顿,用过的都应该有映像),但是不编译也不会影响代码的检查(同样会进行报错)。
ReBuild、Rebuild Module
这是对整个工程、工程下的模块进行编译,执行时间可能较长。
Make
只对修改过的文件进行编译。
二、编程语言
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,在结构上与C++有很大的相似之处,不过相较于C++要更为简单。Java拥有更为强大的功能,囊括了其他程序语言的大部分优点,相较于C++语言,其更为简单清晰,不但无需使用指针,其可以被视为是中立的,这是由于在对Java进行应用的过程中,首先使用的是聚合成中间代码,即字节码;然后,在进行加载的过程中,会实施奇偶校验,并将其中的代码释放出来,而后就能够在Java平台上进行运行,而且这种运行并不会对所应用的系统做出特殊的要求。在Java程序运行的过程中,在平台中存在Java解释器,而对字节码的执行就是通过解释器实现的,其中也包括类的性能,使之能够在特定的运行环境中形成有效的结合。Java语言本身具有多线程的特点,也就是在对某一应用程序进行运行时,其中同时存在多个数据流,共同完成对程序的执行,而多线程程序与应用在计算机工艺设计方面也是未来发展的一个重要方向;Java在虚拟机上解释运行,从而达到实时编译的效果,在一定程度上加快了Java的运行速度。这些特点使开发人员不用再为内存管理而担忧。
Java最突出的特点之一就是支持多线程,使得多个任务可以同时进行[3]。但是严格意义上说,受目前的技术限制,当代的计算机在某一时刻仅能执行单一线程,多线程并不能同时执行多个任务。产生如此矛盾的原因在于计算机硬件技术的飞速发展,处理器速度得到极大的提升,远超人类感官接收信息的速度,使用户的使用体验得到满足。
Java程序的基本组成单元是类,它拥有许多标准类库和大量的第三方类库,对于Java开发人员来说可以使用集成开发环境(比如Spring Tool Suite、IntelliJ IDEA)来帮助他们进行高效地编程[4]。Java作为一门根深蒂固的编程语言,有一个大型的社区、海量的资源为其作为支持。
三、数据库
(一)数据库意义
数据库(Database)是以某种有组织的方式存储的数据集合,保存有组织的数据的容器。数据库管理系统(DBMS: Database Manage System):数据库是通过DBMS创建和操作的容器。
(二)SQL Server简介
SQL Server是使用度最高的关系型数据库管理系统之一[5]。其特点主要是体积小、速度快、成本低,且源码开放,所以在选择WEB应用方面的数据库时,很多中小型网站都会使用SQL Server。
SQL Server可以允许于多个系统(Unix,Linux,Windows)上,并支持多种语言,包括C、C++、python、Java、PHP等。SQL Server使用最常用的数据库管理语言SQL进行数据库管理。
第二节 相关技术
一、B/S架构简介
B/S架构是指:浏览器/服务器结构(Browser/Server)。它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种架构下,用户界面通过Web浏览器来实现,事务逻辑的极少部分在前端(Browser)实现,在服务器端(Server)实现主要的事务逻辑,形成所谓的三层结构。对于C/S结构的客户端来说,使用者需要事先在电脑上安装相应的客户端软件,而B/S结构属于一种“瘦”客户端,它将主要业务逻辑存放在了服务器端,因此使用者不再需要在自己的PC端安装任何客户端软件,通过浏览器即可访问软件服务。B/S结构的软件系统升级或维护时只需要在服务器端更新即可,这样一来便大大的简化了对客户端电脑的负荷、减轻了系统维护与升级的成本和工作量。B/S体系结构如图2-1所示。
图 2-1 基于B/S体系结构图
二、SpringMVC + Spring + Mybatis(SSM)框架
对于绝大部分 Java Web 开发者来说,开发的第一个项目应该都是以JAVA服务器页面JSP[6] 或者 JSP+Servlet 形式完成的项目。而这些项目只是学习过程中的练习项目,仅仅能作为是个人练习项目并不能实际应用到企业中去,学习 Java Web 开发的目的是研究企业级应用的开发,因此闭门造车的思维模式不可取。假如一个中小型项目全部使用 JSP+Servlet 进行开发和维护,其运行、维护成本都会很高,更不用说大型项目了,开发成本、迭代成本、维护成本将会不可胜计。
俗话说工欲善其事必先利其器,一个优秀的Java Web框架可以说是程序员的利器,开发者的学习成本降低了,同时也能减少开发者的重复编码工作,简化开发过程,加快开发进度,降低维护难度。
在框架整合上,最初是Struts+ Spring + Hibernate,后来演变为Struts2 + Spring + Hibernate,随着Spring的强大以及Struts漏洞上的等等问题,演变成为了Spring + SpringMVC + Hibernate/Mybatis。SSM框架在项目开发中经常使用到,相比于SSH框架,它在近几年的开发中运用的更加广泛,因此本次设计选择了SSM框架技术[7]。
本次设计采用SpringMVC + Spring + Mybatis(SSM)开发框架,并且集合了Java服务器页面JSP、Javascript、html5等知识设计,主要目的是针对目前较流行的框架技术进行学习,体会通过使用框架进行开发应用程序的有利之处[8]。掌握MVC模式结构,熟悉Spring框架的工程设计模式,学会开发基于动态页面的B/S结构程序。
使用SQL Server数据库保存游戏访问量、玩家得分及排名信息,利用JDBC将Java代码连接到SQL Server数据库,实现SQL语句在数据库中的执行。
SpringMVC属于SpringFrameWork的后续产品,属于表现层框架,已经融合在SpringWebFlow里。SpringMVC分离了控制器、模型对象、处理程序对象等,使其制定更为容易。
是一种非侵入式的 应用框架。就各种 框架而言,可作为一个粘合平台,实现很多技术的有效整合,并形成一个统一整体,进而解决当前所面对的诸多问题,使系统结构和性能更为出彩。假如 框架所负责的表单相当于提交了显卡,则MyBatis 框架主要负责对数据库计算机CPU进行操作,那么框架相当于将主板和中央处理器进行组装。
Mybatis是一个用来封装JDBC的持久层框架,其主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便。的操作均围绕展开。通过完成文件配置将实体关联到文件,文件中配置的类对数据库的语句完成映射。在每次同数据库进行交互时,均通过拿到一个,再实现命令的执行。
Mybatis工作原理如图2-2所示[10]。
图 2- 2Mybatis工作原理
SpringMVC+Spring+Mybatis搭建的框架原理如图2-3所示,Spring在运行时具有良好的条理性,不同层均由Spring管理,可实现其他层的调用,Handler调用Service,Service调用Mapper等。依照此调用关系,我们可以从下往上一步步整合。
图 2- 3 SpringMVC + Spring + Mybatis的架构
三、项目管理工具
项目采用的是Maven管理工具,Maven是Apache下的开源项目,一个跨平台项目管理构建工具,基于Java平台完成的项目构建,利用Maven工具可以实现项目生命周期的管理,包含清除、编译、打包、部署等操作(图2-4)。基于此可以方便灵活的控制项目,重要的是方便开发人员不必浪费时间去在不同的环境中配置依赖的jar包,能够专心于业务逻辑。
图 2- 4 maven构建的生命周期
第三章 系统分析与设计
对软件系统功能需求进行分析对于软件的功能实现而言具有重要意义,也是整个系统设计中最为关键的核心步骤之一[11]。在本文所设计的系统中,主要针对系统的可行性进行论述,并在相应的功能结构下对系统组织结构以及功能实现过程和原理进行说明。系统需求分析指的是在设计者明确设计前提以及系统所需实现的基本功能前提下对软件进行有目的的开发设计,了解系统应当具备哪些功能。遵循科学的需求分析步骤可以使需求分析工作更高效。系统需求包含以下几点:业务需求、用户需求、功能性需求、非功能性的需求[12]。
需求分析的一般步骤如图3-1所示:
图 3- 1需求分析步骤示意图
第一节任务概述
一、课题目标
游戏在当前社会中已经成为了帮助人们释放生活压力、放松心情的最容易、最行之有效的娱乐方式之一。随着互联网技术的快速发展,网页端游戏备受互联网玩家青睐,设计一种集合多游戏类型的游戏大厅能够快速实现用户对各种主流网页游戏的需求。在传统网页游戏形式的基础上,首先需求分析确定游戏界面布局,然后采用面向对象编程语言实现用户登录、用户权限管理、信息维护、公告发布、游戏分类管理等功能。
为了能获得用户的喜爱,我们在设计的时候必然要考虑到用户使用时的简洁度与易玩度,系统要能快捷方便的实现客户需求,在基础功能完善的条件下可以尝试添加其他个性化功能。这要求我们所设计的游戏大厅系统在展示多款游戏的同时,能让用户自由的为喜爱的游戏进行评分与收藏,还能通过有趣方便的操作使新玩家更快适应操作本系统,获得更好的游戏体验。
二、运行环境
表 3- 1软件开发环境配置参数
操作系统 Windows 7 旗舰版 64位
开发平台 IntelliJ IDEA
数据库服务系统 Microsoft SQL Server 2008
第二节可行性分析
要想经济获得最高效益,需要通过分析它的可行性来降低开发过程中的成本。通过对系统分析可行性就能依照各种用户的需求确定要研究的方向以及目标。最合理的分析步骤是先进性调查,再对满足要求功能的框架进行分析。要想最合理地利用信息资源,需要从多面对该系统进行调查,包括技术、经济、操作等各方面的可行性。。
一、技术可行性
本系统采用IntelliJ IDEA作为开发工具,数据库采用SQL Server 2008,Java 为本系统的开发语言。在本章之前的内容中已着重介绍了相关开发工具的优点与特点,也分析了所使用的关键技术的核心内容。由此可知这些技术可以使多功能游戏大厅被成功开发与运行。综上所述,技术可行性满足要求。
二、运行可行性
该系统采用的模式为B/S模式。B/S模式作为当今世界网络程序开发体系结构的主流,已经成为了当今应用软件的首选体系结构。B/S以其相对低廉的开发和维护成本受到了青睐。在电脑保持网络通畅的情况下,任何浏览器与操作系统均可使用,这大大降低了系统开发的复杂度,可操作性也非常可观。综上所述,系统的运行和操作在可行性方面都没有问题。
三、进度可行性
表 3- 2进度计划表
3月18日-4月8日 完成开题报告和文献翻译,系统需求分析
4月9日-4月15日 确定研究方案及数据库设计
4月16日-5月10日 进行系统程序的详细设计,编写代码
5月11日-5月20日 系统测试,资料整理
由以上进度计划表可以得出本次设计的大致进度计划,在两个月左右的时间里储备计算机的相关知识、熟悉开发技术与开发环境、完成系统的编写与调试,虽然有一定的难度,但通过上文对可行性的逐一分析,大致可以在规定时间内将系统基本实现。
第三节功能描述
作为简单快捷的小游戏大厅系统,主要有游戏体验,游戏管理 ,公告管理以及用户信息管理等功能。系统的管理员与在玩用户(即玩家)为此系统的主要使用者。
在本系统内,管理员可对游戏信息进行删、增、改,查等操作。管理员通过对游戏热度的监控,可实时调整大厅内的游戏种类,同时更新数据库信息,方便管理人员实时了解用户需求并不断调整大厅游戏配置;管理人员还有管理普通用户的权利,根据用户行为增删改查普通用户的基本信息。
对于玩家用户,即本系统的服务对象,主要功能是游戏体验,对于大厅内的每个游戏进行体验,对喜欢的游戏进行收藏方便日后查找。
整个系统需要玩家、管理员与游戏三者有机结合,打造一个轻松专业的管理平台。
根据以上的分析,本系统的构思大致为以下几个方面:通过SQL Server构建游戏的数据库,设计游戏大厅的界面基本功能以及游戏的链接(包含三个小游戏贪吃蛇,扫雷,走迷宫),设计用户的登录退出以及新用户注册,用户可进行小游戏收藏等功能。设置管理员权限可发布公告,大厅内根据游戏热度进行实时排名显示在首页。
下面将对整个系统的功能进行描述。
一、用户注册
在注册页面中只能注册普通用户,无管理员权限注册。为了整个系统管理方便,本系统只设计一位管理员进行所有功能的管理。
二、菜单管理
不同的用户类型登录有不同的菜单选项。管理员通过账号登录后,拥有对菜单项中所有界面访问的最高权限。普通用户登陆后仅能访问系统首页、游戏界面、公告页面。此功能有效的区分了不同用户的权限,提高了系统的逻辑层次。
三、用户管理
(一)系统管理员登录后,在系统内可以新增游戏链接、修改游戏、删除游戏、管理用户账号(用户的增、删、改、查操作)等操作。如需修改、删除大厅内小游戏或用户,当管理员选择“修改”按钮,当前界面会进行跳转,管理员可以进行需要的修改。
(二)普通用户可修改自身用户密码、手机号等信息。
四、游戏管理
(一)游戏管理中,系统管理员可以新增游戏链接、修改游戏、禁用、删除游戏等操作。
(二)普通用户只能点击游戏列表中的游戏跳转至游戏界面,并增加此游戏的点击量。
五、公告管理
(一)管理员负责公告信息,负责对公告进行新增、禁用、删除等操作。
(二)公告信息是管理发布公告后在用户界面中的公告页面中可以查看。
图 3- 2总体需求分析图
根据图3-2的总体需求分析可知,多功能游戏大厅系统的主要功能模块有:普通用户管理模块,游戏模块和管理员模块。在各个模块之下,又含有多个子功能,分别是:游戏体验、游戏管理(收藏)、游戏数据、游戏点击量、游戏信息管理、公告信息管理、用户信息管理。
第四节数据库设计
数据库是很重要的部分。没有了数据库管理系统的支持,是不能进行收集信息和对信息的一系列处理。当前在进行软件系统设计和系统 开发时最为关键也是最为核心的步骤时对系统的数据库部分进行合理设计[13]。
一、概要设计
概要设计的目的是确认系统中存在的所有实体,以及理清各个实体之间的关系,该部分的设计质量会影响数据库逻辑设计的过程。
以下图3-3是本系统的E-R图。
图3-3 E-R图
根据以上E-R图可以得出,本系统的实体主要有管理员、用户、公告与游戏。由于本系统设定管理员账号只有一位,所以管理员在后台可以管理多个用户或游戏的信息,同时可以在游戏大厅内发布多个公告,因此为一对多关系;用户可以收藏多个游戏,一款游戏在系统中也可以被不同的用户收藏,因此为多对多关系。
二、数据库逻辑设计
根据上述E-R图与第三章的功能描述可知,本系统的主要实体有管理员、普通用户、公告、游戏。其中管理员可对用户信息和游戏信息进行增、删、改、查等操作。可以发布公告并对公告进行管理。用户可以在游戏大厅中体验不同的游戏,并对喜爱的游戏进行收藏。
本系统数据库名称为db_game_hall,共含有如下6张表结构,这6张表的设计含义见表3-3所示,表3-4至表3-8列出了各个表的属性字段的内容及含义。根据对本系统中各实体的关系进行分析,可以得出如下数据表。
表 3- 3 数据库表信息一览
表名称 含义
t_sys_user 用户表,用于记录用户名、密码、角色等
t_game_info 游戏信息表,用于记录游戏名、链接、类型、点击量、评分等
t_collector 收藏信息表,用于用户收藏的游戏等相关信息
t_notice 公告信息表,用于记录公告内容、标题、发布时间、发布人等
t_gly 管理员信息表,用于储存管理员信息
详细字段信息及其相关含义列举如下:
表3-4是用户信息表,包含了userid、phone、password、username等字段,这些字段代表了用户名、手机号、密码、用户昵称等用户信息。其中userid为主键。
表 3- 4 t_sys_user表(用户信息表)
序号 字段名 类型 约束 字段说明
1 userid varchar(32) 主键 用户名
2 phone varchar(11) 手机号
3 password varchar(24) 密码
4 username varchar(11) 用户昵称
5 img_url varchar(64) 头像地址
6 type int 角色类型 1:普通、2:管理员
7 token varchar(64) Token
8 expiry_time dateTime 失效时间
9 enable varchar(11) 数据有效性
注:enable:ENABLE:有效、DISENABLE:禁用、DELETE:删除
表3-5是游戏信息表,包含了gameid、name、img_url、game_url等字段,这些字段代表了游戏编号、游戏名称、游戏图片地址、游戏链接地址等游戏信息。其中gameid为主键。
表 3- 5 t_game_info表(游戏信息表)
序号 字段名 类型 约束 字段说明
1 gameid varchar(32) 主键 游戏编号
2 name varchar(64) 游戏名称
3 img_url varchar(64) 游戏图片地址
4 game_url varchar(125) 游戏链接地址
5 type int 游戏类型
6 click_tate int 点击量
7 create_time dateTime 创建时间
8 creater varchar(32) 创建人
9 enable varchar(11) 数据有效性
注:enable:ENABLE:有效、DISENABLE:禁用、DELETE:删除
表3-6是管理员表,包含了managerid、password等字段,这些字段代表了管理员名称、密码等管理员信息。其中userid为主键。
表 3- 6 t_gly表(管理员表)
序号 字段名 类型 约束 字段说明
1 managerid varchar(32) 主键 管理员名称
2 password varchar(24) 密码
表3-7是收藏信息表,包含了collectionid、userid、gameid、collection date等字段,这些字段代表了收藏编号、用户ID、游戏ID、收藏时间等收藏信息。其中collectionid为主键。
表 3- 7 t_collector 表(收藏信息表)
序号 字段名 类型 约束 字段说明
1 collectionid varchar(32) 主键 收藏编号
2 userid varchar(32) 用户ID
3 gameid varchar(11) 游戏ID
4 collection_date dateTime 收藏时间
5 enable varchar(11) 数据有效性
注:enable:ENABLE:有效、DISENABLE:禁用、DELETE:删除
表3-6是公告信息表,包含了noticeid、title、content、release_time等字段,这些字段代表了公告编号、公告标题、公告内容、发布时间等公告信息。其中noticeid为主键。
表 3- 8 t_notice表(公告信息表)
序号 字段名 类型 约束 字段说明
1 noticeid varchar(32) 主键 公告编号
2 title varchar(125) 公告标题
3 content varchar(225) 公告内容
4 release_time dateTime 发布时间
5 type int 1:及时发布、2:到时发布
6 create_time dateTime 创建时间
7 creater varchar(11) 创建人
8 enable varchar(11) 数据有效性
注:enable:ENABLE:有效、DISENABLE:未启用、DELETE:删除
第四章 系统实现
第一节 架构分析
一、实体层对象类
该系统包含两个实体类,分别是用户信息类UserVo和游戏信息类GameVo。类通过封装一系列的私有属性,并通过Set和Get方法进行调用。
下面展示部分用户信息类UserVo,具体内容如图4-1。
图 4- 1 类UserVo
二、持久层
持久层对于传统的SSM框架来说是与Mybatis打交道的,通常设计中通过创建接口然后在调用相对应的XML文件,完成对业务层的功能接口。游戏管理持久层UserServiceImpl,GameServiceImpl,添加用户登录、用户注册抽象方法:
图4- 2 持久层用户登录用户注册
然后,创建映射文件UserMapper.xml,GameMapper.xml:
三、业务层
业务层这部分使用了注解的开发方法,利用@Service和@Autowired实现了注解开发,注解持久层的IPersist接口并创建了profilePersist对象,通过注解的方式,直接调用接口的方法而不用再生命对象。以用户管理、游戏管理为例,创建对应的业务接口UserService、GameService:
四、表现层
表现层(也叫控制层)也是利用了注解的方式@Controller。
用户登录;在登录过程中,首先要获取Session中的验证码,输入验证码后通过if语句判断验证码是否正确,手机号密码是否为空,用户名密码是否错误。若无误即可登陆成功。
在表现层中,可实现对系统内游戏的增删改查以及记录游戏点击量的变化。
表现层利用注解@Controller,@Autowired完成对象ProfileService的方法的实现。创建Map对象作为传输到前端的媒介。利用注解方法获取后端的数据。最后数据返回到前端。
六、前后端接口实现
在前期框架搭建的步骤中,通过加入Json.jar包,同时在Spring-MVC.xml的做出“<mvc:annotation-driven />”声明,我们可以利用AJAX+JSON动态局部刷新实现前后台数据的交互[14]。下面以游戏管理前端代码为例,主要讲述前后端接口实现过程。
此部分包含用户收藏的游戏信息,游戏编辑、游戏访问量排名前端方法实现。
七、针对前端发送的ajax请求解释说明:
此处,设置的方法为只要点击“class=“e-login-btn””的按钮,就会触发“dialogRegister”这个函数。同时向后端发送一组数据,内容为:
url:发送的额请求地址,后台controller用@RequestMapping的value属性接受请求[15]。
type:请求方式(如post,get,delete等),controller的method属性与之相对应。
dataType:“json”:告诉后端,前端需要的是JSON格式的数据。
contentType:“application/json;charset=utf-8”:告诉后台前端传过去的数据是JSON格式,后台需要用JSON的方式进行解析。
“data:jsonstr”:这里指数据类型必须得是JSON字符串,javascript中Json对象转化为Json字符串的方法:JSON.stringify()。
success:成功接收后端返回的数据后要执行的操作,此处是弹出结果窗口,里面的数据即对应后端返回的数据[16]。
error:接收数据失败或后端返回错误结果时,页面将出现提示信息。
开始时在spring-MVC配置文件中加入的<mvc:annotation-driven />会自动将AnnotationMethodHandlerAdapter类注入到Spring容器,该类中有很多消息转换器(HttpMessageConverter),JSON转换器便是其中的一个。在请求数据(HttpInputMessage)到达后台时会经过JSON转换器将数据转化为JSON对象然后通过@RequestBody赋值给Controller类中方法的参数。Controller类中方法的返回的对象会先经过JSON转换器转化为JSON对象变成响应数jiHttpOutputMessage然后写进响应报文传给前台。Json数据转换原理图如图6-3所示[17]。
图 4-3 Spring MVC前后端JSON数据转换原理图
这里遵循软件工程源程序文档化的思想,各个模块的类及其方法定义都做了详细地说明,对主要的类和方法意义及SSM三层架构的实现做了较为详细的注释[18]。
第二节 登录注册界面设计
一、用户登录及注册模块
系统用户,登录界面如图4-4所示,此界面展示的是用户登录入口,如需登录管理员界面,则要输入相对应的管理员账号密码信息进行登录。
图 4- 4 系统登录界面
图 4- 5 登录界面代码图
新玩家用户如需进行注册,点击“去注册”后对应出现图4-6,在登录时,新玩家需要输入新的用户名、手机号与密码,信息填写完成后即可注册成功。
对于游戏大厅系统的登录界面,设计不能过于冗杂,因此用户名与登录密码应为整个界面最突出的主体,其中,管理员可通过特殊账户登录,管理员登录完后,可以对普通用户进行管理,并实时发布一些相关信息,帮助用户更好的使用自己的账号。
吸收市面上先进游戏大厅系统的经验,用户界面越简单明了越吸引用户,整体界面一目了然,用户可以直接找到相对应的位置,填写好自己的信息。但设计时有一点非常重要,文本框不能空白,系统在此将检验该部分是否为空,数据库链接结束后若用户名与密码正确,可完成界面的登录。在整体登陆后,相关信息会反映到后台进行处理,管理员会在在此时进行整体管理,防止恶意盗号等其他非正常情况发生。
图 4- 6 用户注册界面
用户在登录时用户名或密码等信息不可为空,同理,新用户在注册界面进行信息填写时,手机号、用户名与密码皆不可为空,否则会弹出提示窗口,如图4-7所示。新用户可根据该窗口的提醒及时核对并更正本人的注册信息,从而完成用户注册。
图 4-7 信息填写界面界面
图 4- 8 注册界面代码图
第三节 游戏大厅界面设计
一、系统管理员界面
系统管理员在成功登录后,将显示主界面,如图4-9所示。系统管理主界面集成了管理员拥有的所有菜单权限和功能。所包含的功能模块为:【系统管理】(包含玩家用户信息管理、菜单管理等),【游戏管理】(包含游戏链接增加、编辑、删除,游戏相关图片插入、修改,游戏链接顺序修改等),【公告管理】(公告信息的增加、删除等),管理员的主要作用是整体的处理不同用户在游戏中的各种信息,将其账号,游戏等级的每个账户的不同信息进行整体系统化的管理,同时将相似类型的游戏推荐给对该类型兴趣比较多的用户,进行智能化,信息化的统一管理;同时对于恶意篡改他人账号的用户进行封禁等其他处理。
图 4- 9 系统管理员主界面
如图4-10管理员对用户进行管理时,对违反规定的用户可进行冻结账户的操作。暂时封禁此用户账号,待用户符合游戏大厅使用规定后可再次进行解冻操作。
图 4- 10 用户冻结界面
图 4- 11 用户冻结代码
二、普通用户界面
普通用户只能点击游戏列表中的游戏跳转至游戏界面(由于跳转的是新窗口,在此过程中浏览器可能会弹出拦截新窗口的提示,使用过程中需要点击允许),并增加此游戏的点击量,对于普通用户而言,是游戏最重要的体验者,并根据普通用户的游戏体验,对游戏本身进行改进与完善,并进行玩法上的更新与尝试,用户的体验与反馈是整个游戏大厅最重要的基石。同时,用户根据个人的喜好可以对新游戏进行建议,方便游戏大厅整体得到提升。图4-12为普通用户登录后主界面。
图 4- 12 普通用户登录后主界面
当用户点击游戏进行体验时,系统将跳转至该游戏链接所对接的界面,用户在此界面上可进行游戏操作与体验,如图4-13为点击扫雷游戏后出现的游戏界面。
图 4-13 扫雷游戏界面
三、游戏热度实时排名
本系统在游戏大厅界面可对小游戏的点击量进行实时更新汇总,显示于每个小游戏图表下方。用户在点击界面左上角的【按游戏人气】按钮后,系统将在此界面根据游戏人气进行游戏热度排名。通过此排名可直观清晰的了解各游戏的被喜爱程度,从而选择更适合自己的小游戏,管理员也可根据热度排名及时删减或更新大厅内的游戏种类。提升了整体体统的实时性与使用性。
图4-14为游戏的点击量显示界面
图 4-14 点击量显示界面
图 4-15 增加点击量代码
图4-16为点击按钮后按照点击量完成排名后的游戏界面
图 4-16 热度排名界面
图 4-17 热度排名代码
第四节 游戏管理模块
游戏模块包含添加游戏信息、修改游戏信息、根据ID查询游戏信息、游戏收藏、增加游戏列表等功能。增加与修改游戏信息等权限仅管理员可进行相应操作。
一、游戏增删改查
管理员通过后台用户所反应的游戏点击量与喜爱度可在系统内对游戏进行增删改查。同时整体的游戏运营与反馈是管理者与用户双向进行的。用户根据自己游戏体验,对游戏的缺点以及漏洞进行反馈,同时有喜欢的游戏类型同样可以反馈给后台管理者,并根据自己的兴趣进行游戏分类,方便自己游戏。对于管理人员,安排人手内部测试的同时,信息搜集是重中之重,搜集当下最有趣的游戏,有助于提高用户满意度,增加游戏大厅的整体竞争力。
图 4- 18 新增游戏信息界面
图 4-19 游戏管理代码
二、游戏收藏
用户在体验过程中如有喜爱的游戏,可通过点击游戏图标下方的收藏游戏对指定游戏进行收藏。
图 4-20 收藏成功界面
对于用户已经收藏过的游戏,若再次点击收藏按钮,则会跳出弹窗提示用户已经收藏过该游戏。该功能有效解决了单个游戏多次收藏的情况,降低了系统界面的冗杂性,提升了系统的界面友好度。
图 4-21 已收藏界面
图 4-22 游戏收藏代码
已收藏的游戏目录将记录于用户菜单栏左侧的【我的收藏】中。用户在此界面可看到本人已收藏的游戏。同时也可点击右侧取消收藏按钮撤销对游戏的收藏。
图 4-23 收藏目录界面
图 4-23 取消收藏界面
第五节 公告管理模块
一、公告管理界面设计
公告管理菜单只有管理员才能显示与操作,对公告进行新增(如图4-25)、禁用、删除等操作。管理员在登录后,可对所有大厅内玩家发布公告。公告包括公告标题与公告内容。在确认信息无误之后点击确定即可发布,若内容有误则点击取消重新编辑。对于公告管理,同时最重要的是数据分析,比如在其中两款新游戏同时更新时,管理员根据用户爱好不同,可以发布公告推荐用户试玩,测试游戏热度。并且公告管理具有实时性与有效性,公告发布后将显示发布时间,并将新更新的公告置于公告界面最上。
公告管理列表如图4-24所示。管理员可在此界面核对以往公告信息,确认新发出公告,并对公告进行其他操作,编辑过往公告以及失效公告。
图 4- 24公告管理界面
图 4- 25新增公告信息界面
图 4- 26新增公告信息代码
对于出现暂时需要停止发布的公告,管理员可在对该条公告启动禁用操作。操作成功后用户界面将无法显示该公告。后期如需再次显示可点击解禁重新启用此公告。
图 4-27 公告禁用删除界面
图 4- 28公告禁用删除代码
二、公告信息界面设计
公告信息是在管理员发布公告后,用户可以通过点击在用户界面中的公告菜单可以查看公告信息,如图4-29。此界面为用户与管理员共享界面。用户在此界面可浏览公告具体时间信息和发布内容。
图 4- 29公告信息界面
上文展示了本系统的基本界面和实现过程。通过运用界面截图与相对应的关键代码解释说明了系统主要功能的具体实现,譬如各功能之间的联系,多层架构的联系,展现了完整的系统性能,与多样的操作可能性。使用户不用通过繁杂的操作也能直接体验游戏的乐趣,通过查看游戏热度选择喜爱的游戏,并且拥有独立且个性化的收藏界面。站在管理员的角度,各功能使系统的整体管理更加便利,能更好的对系统进行疏通维护,实时观测,真正体现多功能的汇聚共通。
本阶段将对各模块的运行界面进行了呈现,各功能模块相辅相成,实现了多功能游戏大厅系统的基本搭建。
第五章 系统测试
第一节 测试的基本概念
系统测试也是系统完成的重要部分,良好的系统测试对保证系统的准确性、完整性有着重要的作用[19]。本章讨论对系统技术准确性和功能完整性的验证。
一、测试的相关含义
软件测试就是对可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。利用测试工具按照测试方案和流程对产品进行功能和性能测试,设计和维护测试系统,对测试方案可能出现的问题进行分析。
系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。
测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求[20]。
二、测试的目的
系统测试的目的是为了保证产品的最终质量,在软件开发的过程中,对软件产品进行质量控制。一般来说系统测试应由独立的产品评测中心负责,严格按照系统测试流程,制定测试计划、测试方案、测试规范,实施测试,对测试记录进行分析,并根据回归测试情况撰写测试报告。测试是为了证明程序有错,而不能保证程序没有错误。
第二节 系统测试计划
一、测试项目
用户注册功能测试
用户登录功能测试
管理员、用户管理功能测试
游戏管理功能测试
公告管理功能测试
服务器模块(数据库等)功能测试
系统集成测试
二、测试项目的具体测试设计(见表5-1)
表 5- 1测试用例的设计
序号 测试模块 具体测试用例的输入设计 是否达到
预期结果
1 用户注册模块 ①登入名或密码输入字段空的处理
是
②用户名输入正确但密码错误的处理 ③用户邮箱的正则表达式验证 ④字段输入完毕回车键代替【登录】按钮的处理 ⑤注册用户名已存在时的处理
2 用户登录模块 ①输入用户姓名不存在的处理 是
②输入用户姓名正确,密码错误时的处理
③输入用户密码不属于字母、数字、符号组合的处理
④用户名输入字段过长时的验证处理
3 管理员、用户管理模块 ①已用户的基本增删改查测试
②管理员对普通用户密码修改、重置的处理
③用户列表信息显示处理 是
4 游戏管理模块 ①增加游戏链接的处理片的
②对新增游戏上传游戏Logo图处理
③删除游戏链接的处理
④编辑游戏链接等相关信息的处理
⑤实时记录游戏点击量的处理
⑥实时游戏访问热度排名的处理 是
5 公告管理模块 ①管理员增加公告信息的处理
②公告栏信息显示 是
6 服务器模块(数据库等)模块 ①连接至db_game_hall数据库的测试
②取得DBMS服务的测试(数据操控语言SQL操作) 是
7 系统集成 ①各模块中子模块的调用测试
②系统调试(发布)各模块的独立性测试 是
(一)对于用户注册模块,测试的重点是用户名与密码的一一对应关系,多名测试人员根据用户名密码的匹配与否进行多次系统测试,保证用户注册号码能顺利登录。
(二)对于用户登录模块,登录时的错误信息以及登录账户与密码大小写是否正确输出这些容易出现的问题都是测试人员测试的重点,对于报错信息的及时提示以及用户账户密码的匹配,都是用户体验的重要一环。
(三)对于管理员管理模块,主要的重点是普通用户账号是否能在管理员权限下正常维护,以及管理员账户对整个游戏大厅是否能正确更新。测试人员需要整体的完成整个游戏大厅的维护工作。
(四)对于游戏管理模块。 发现漏洞以及根据热点实时更新游戏是发展的重点,如何让自己游戏大厅更有名气,游戏才是基石,需要测试人员对整个游戏进行内侧,全部完成后方可公测。
(五)对于公告管理模块,测试者需要测试其及时性,是否能第一时间跟进最新的报道;同时测试人员需要了解不同用户的喜好进行活动推荐。
第三节 系统测试结果分析
基于上述测试用例对系统不同功能模块测试效果进行了分析,在正常执行条件下,测试用例均达到预期效果,在功能和技术上也均实现了系统预期所有需求。
技术层面上,实现了不同技术的结合,并对不同功能进行了测试,例如多功能游戏大厅的信息反馈,公告栏的使用以及根据使用者的兴趣不同所建立的游戏分类模式,测试以不同使用者的用户体验,对系统的使用满意度,以及不同模块间的协调运作是否合理,将整体功能完整的测试了一番;对于管理员模式与普通用户模式的区别测试也进行了多重角度的测试,权限的利用以及信息的发布时我们整体测试的重要目的与重点。达到了整体的目标,完成了一个系统的多功能游戏大厅上设计,将几大模块之间连接到一起,前端界面与后端数据库之间的相互连接,使整个游戏大厅能够全面的满足用户的需求。不过还有一些小的内容可以改进,如个人用户名的保密性,对个人账号的加密保护以及高级账号的维护与管理,不能让用户出现无端账号丢失的情况;整体游戏大厅快速更新也需要完成,实现玩法与新型游戏能够及时拿到用户的面前。还有类似于多人同玩好友对战等多功能玩法的设计也在进行之中,很多小的细节与不足可以改进,就总体而言,能够证实整体游戏大厅各方面的能力都可达标,能够满足当初设计时所想要达到的要求。对于数据的保存以及个人隐私的保护仍需要加强,以及界面的优化与新信息的传递是我们的重点。
整体来说,系统测试给我们带来多种类型的数据结果,不只是测试这个系统项目,同时记录下这些数据,将其中的漏洞一一指出,同时将初始设计时没有完善的地方加以完善,添加一些的新的想法与创新,有助于未来更加完善这个游戏大厅的设计。
第六章 结论
本文详细论述了基于Java web的多功能游戏大厅系统的开发与实现,遵循软件工程的基本原理,对实施软件开发的流程进行科学规范并进行了详细的论述。经过2个多月的分析与设计,本次设计的系统基本实现了需求设计目标。在开发此系统的过程中我遇到了诸多问题,比如随着业务的深入了解,在功能实现上带来的是代码量的增加,如何将代码和功能科学的组织起来也是一个难点,界面风格的设计、软件框架使用的不熟练等等问题,这其中的原因主要归结于自己的实战经验短缺、知识储备量不够丰富,以后需要在这些方面加强。
通过这次毕业设计,逐渐熟悉了JSP和Ajax在Java web中的应用,熟悉了主流的开发框架SSM,拓宽了知识面、巩固和加深了理论知识学习,真正提高了自己从理论到实践转化的能力。同时,分析和解决问题的能力都得到了锻炼和提高。也能认识到,在软件开发领域,理论和经验都非常重要的,将他们融合在一起发挥出作用的途径只有一个,那就是不断地积累,惟有不断地积累才能在计算机科学的路上稳定持久的走下去,成为一名优秀的软件开发工程师。
参考文献
[1]王国辉.王毅.王殊宇.Java Web开发典型模块大全[M].人民有限出版社,2009:233-251
[2]Bluce Eckel. Java编程思想(第4版)[M].北京:机械工业出版社,2007.6:216-357
[3]张宝华.SQLServer2008数据库管理项目教程.化学工业出版社.2010
[4]基于SSM的毕业设计管理系统设计与实现[J].肖祥林.电子科技. 2016(10)
[5]SSM框架在Web应用开发中的设计与实现[J]. 李洋.计算机技术与发展. 2016(12)
[6]杨静. 基于JAVA WEB中MVC模式的研究与应用[J].电脑知识与技术.2014.(28):6668-6671
[7]吕学婷.基于Springmvc和Mybatis框架的门户网站及其内容管理系统的设计与实现[D].东华理工大学.2016
[8]何玉洁.梁琦等.数据库原理与应用.北京:机械工业出版社.2011
[9]洪奎,基于Struts框架的Java Web应用开发研究[J]. 通讯世界,2016,13:14.
[10]深入浅出SQL(中文版)[M]. 东南大学.贝里.2009(6)
[11]黄俊.Java程序设计与应用开发.第二版.机械工业出版社.2014
[12]屈展.李婵.JSON在Ajax 数据交换中的应用研究[J].西安石油大学学报(自然科学版).2011,26(01):95-98
[13]系统软件开发过程中的软件工程技术[J].徐歆冰.电子技术与软件工程. 2016(21)
[14]精通Spring 4.x[M]. 电子工业出版社.陈雄华, 2017
[15]何依林.Java游戏引擎的开发与实现[J].无线互联科.2016,01:50-51+68
[16] Alice Woudhuysen .china internet:the long march toward e-commerce[j].the economist intelligence unit.2007
[17] Bruce Eckel. Thinking in Java[M]. Upper Saddle River, New Jersey, USA: Prentice Hall, 2006
[18]S. Vidal,A. Bergel,J.A. Díaz-Pace,C. Marcos. Over-exposed classes in Java: An empirical study[J]. Computer Languages, Systems & Structures,2016
[19]RogerS.Pressman .Software Engineering-A practitioner’s Approach[M]. 2011
[20]Stephen Winthall.Software Requirement Pattern[M]. 2008.
致 谢
首先最应该感谢的是我们的指导老师,老师一次次细心的建议与耐心的教导帮助我们在毕设的道路上少走了许多弯路。这次毕设的顺利进行,也得益于她一次一次的推进我们的进度,督促我们在不同阶段要完成应该完成的工作。老师富有建设性的建议也成为了我们在学习道路上的指明灯。在此,我由衷的感谢老师这段时间的付出!
其次还要感谢我的组员与舍友,在过去几个月的时间里,我们一起在图书馆查阅资料,经常在宿舍研究系统的不同解决方案与需求。编写代码的过程需要集中精力,细心仔细。在遇到困难时,我们相互帮助,共同进步,攻克了许多难关,收获了不少知识。我的毕业设计离不开周围同伴的帮助。
最后要感谢一直陪伴在我身边的父母。感谢他们为我提供了良好的教育环境,让我有机会在大学的校园里收获知识。