1、毕业设计(论文)报告学生毕业设计(论文)报告系别:专业:班级:学生姓名:学生学号:设计(论文)题目:基于WEB的游戏论坛的设计与实现指导教师:设计地点:起迄日期:毕业设计(论文)任务书专业班级姓名一、课题名称:基于WEB的游戏论坛的设计与实现二、主要技术指标:1、用户界面美观大方、系统可正常运行2、论文格式应符合规范,主要包含:1)选题背景与意义;2)软件开发与运行环境;3)软件设计过程(主要包含总体方案与详细模块设计、数据库设计、程序设计);4)软件运行效果;5)设计总结3、论文中应有一定数量的流程图、程序
2、代码、运行效果截图等内容三、工作内容和要求:1、系统总体设计、功能模块设计要求:1)本模块与课题由本人独立完成;2)整理设计结果文档2、数据库设计要求:1)本模块与课题由本人独立完成;2)包含数据库系统的表结构图、表间关系统描述、各模块用到的视图和存储过程3、用户界面设计要求:1)直观地体现各模块的功能;2)界面友好4、程序设计与功能调试要求:1)程序结构清晰,便于检查和调试;2)所写程序应符合功能设计的要求;3)访问数据库部分全部编写相应的存储过程5、编著毕业设计论文要求:1)论文中应含各项工作内容;2)论文的最后部分应含设计总结;3)满足要求的
3、字数、严禁抄袭四、主要参考文献:__1、BruceEckel.java编程思想M.第四版.北京:机械工业出版社.2007年.2、李刚.疯狂java讲义M.北京:电子工业出版社.2012年.3、李兴华.java开发实战经典M.北京:清华大学出版社.2009年.4、孙鑫.javaweb开发详解M.北京:电子工业出版社.2012年.5、布里泰恩.Tomcat权威指南M.北京:中国电力出版社.2010年.学生(签名)年月日指导教师(签名)年月日教研室主任(签名)年月日系主任(签名)年月日毕业设计(论文)开题报告设计(论文题
4、目)基于WEB的游戏论坛的设计与实现一、选题的背景和意义:网站打造的可互动的环境可以称为一个论坛,而用户在论坛中的行为称为社交,一群人聚集在一个环境中交流。一直以来都有个感触,对于互联网产品而言,貌似几乎所有的产品都希望搭上论坛的概念,有了社交这层意义后不仅意味着有了UGC,而且产品也就成为了一个可以依靠用户自身创造内容而自行循环的系统。游戏论坛的目标用户群体自然是游戏玩家,我们可以列出游戏玩家的很多心理特性,例如攀比心强、喜欢炫耀等,只可惜并不是用户的一个特性就适用于所有的产品的。理想愿景中,游戏厂商是希望借助论坛让网络玩家之间能够互推游戏,既加深所玩游戏的深度并且增加玩家接触新游戏的可
8、前台客户端运行环境32.2.2后台服务器端运行环境3第3章分析设计43.1可行性分析43.2需求分析53.3论坛内容板块53.4论坛管理策略63.5系统分析63.5.1绘制用例图设计系统功能63.5.2绘制系统流程图73.5.3数据库分析与设计8第4章论坛设计与实现104.1开发平台搭建104.2程序结构104.3系统的实现114.3.1登陆、注册模块的设计与实现114.3.2展示模块的设计与实现164.3,3后台编辑版块功能的设计与实现194.3.4搜索模块的设计与实现22第5章总结与致谢25参考文献26摘要论坛也就是人们常说的BBS(BulletinBoardS
9、ystem),也许有些人不了解,在最早的时候,BBS只是在苹果系统上用来公布股市价格信息的一个工具。到现在,BBS的功能已经有了很大的扩充与完善,每个行业都有自己所属的BBS。通过BBS,人们可以及时了解到一个行业的最新消息,也可以将自己知道的消息发到BBS上与别人共享。本论坛主要是为各类游戏玩家设计。论坛有前台和后台两个大的部分,这两个部分又分为以下几个功能模块:前台主要功能是显示各论坛类别及版面、查看版面下所有根帖、发表回复帖子、搜索帖子等功能;后台主要功能是论坛类别管理、版块管理、用户管理。对于后台部分的用户管理,主要是对管理员进行操作。本系统采用MVC设计模式进行开发。项目中访问数据库
10、统一通过每个Bean对应的DAO类来操作。此外还专门有一个BaseDAO类,该类是实际执行SQL语句的类,在DAO类中定义一个BaseDAO类的成员对象,通过baseDAOL执行SQL语句。使用MVC和BaseDAO这种设计的主要优点是将执行SQL语句的方法统一交给一个类来管理,易于项目的后期维护与管理。关键词:BBS、游戏论坛、MVC、DAO、设计模式AbstractTheforumisalsoknownasBBS(BoardSystemBulletin),perhapssomepeopledonotunderstand,attheearliest
11、time,BBSisonlyusedtopublishatoolforthestockmarketpriceinformationonapplesystem.Bynow,thefunctionofBBShasbeengreatlyexpandedandimproved,eachindustryhasitsownBBS.ByBBS,peoplecanlearnthelatestnewsinanindustry,youcanalsoknowthemessagesenttotheBBSa
12、ndotherstoshare.Thisforumisdesignedforallkindsofgameplayers.Theforumhastheonstageandthebackstagetwomajorparts,thetwopartsisdividedintothefollowingfunctionmodules:foregroundmainfunctionistodisplaycategoryandthelayoutoftheforum,seethelayoutofallroot
13、posts,areplytoposts,searchpostsandsoon;themainfunctionsofthebackgroundistheForumcategorymanagement,forummanagement,usermanagement.Forthebackgroundoftheusermanagement,mainlyfortheadministratortooperate.ThissystemusestheMVCdesignpatterntocarryonthedevelo
14、pment.ItemsinthedatabaseareunifiedbyeachDAOcorrespondingtotheBeanclasstooperate.Inaddition,thereisalsoaBaseDAOclass,whichistheactualimplementationoftheSQLstatementclass,intheDAOclasstodefineaclassBaseDAOmemberobjects,throughthebaseDAOLSQLstatement.U
15、singMVCandBaseDAO,themainadvantageofthisdesignisthattheimplementationoftheSQLstatementtoaclassofmethodstomanage,easytomaintainandmanagetheproject.Keywords:BBS,GameForum,MVC,DAO,designpattern毕业设计(论文)报告第1章引言1.1课程的性质本毕业设计是计算机软件开发类的课题,主要研究方向为基于B/S模式的基于WEB的游戏论坛的设计
16、与实现一个为各类游戏玩家提供的交流性平台。1.2选题背景与依据论坛就是人们口中的BBS,在BBS刚出现的时候,它只是在苹果系统上用来公布股市价格信息的工具。到后来,有些人尝试着将BBS转移到个人计算机上,自此开始,BBS才被人熟知与使用。到现在,BBS的功能已经有了很大的扩充与完善,每个行业都有自己所属的BBS,通过这个BBS,人们可以及时了解到这个行业的最新消息,也可以将自己知道的消息发到BBS上与别人共享。论坛又可以分为好多好多种,有教学型论坛、综合类论坛、专题类论坛、推广型论坛、交流性论坛等等。对于游戏论坛来说,无疑就是交流性论坛,游戏论坛的使用者自然也就是各种游戏玩家了,而且这些玩家大
17、多数都是青少年。在游戏论坛中,有多种游戏的版块,每位游戏爱好者都可以在论坛中找到自己喜欢的游戏对应的版块,并且可以在该版块中发帖、回帖来与众多有相同爱好的朋友交流。先来了解一下网络游戏的整体市场,从2000年左右开始起步发展,到2007年开始,整体的市场规模与数量得到了非常大的发展,增长率甚至达到了400%。包括2003年或者更早以前的棋牌类网络游戏,到之后的RPG(Role-playinggame)等等。实际上这些游戏的出现,与游戏新类型的出现,都慢慢在扩大网络游戏的市场,由于这些游戏分类也更加繁多与精细,这就更加使得网络游戏细分市场。就以舞蹈类游戏来说,从以前的休闲类游戏到现在的劲舞团类
19、:操作系统:Windows7。Web服务器:Tomcat6.0.32。Java开发包:JDK1.6。数据库:MySQL。浏览器:IE8.0。分辨率:最佳效果为1366768像素。本系统采用MVC架构模式开发,具体技术如下。显示层:使用JSP技术开发控制层:使用Servlet技术开发模型层:使用JavaBean技术开发数据访问层:使用DAO模式开发2.系统平台结构的选择在当下的应用开发中,目前系统平台的体系结构主要有C/S(Client/Server)结构和B/S(Brower/Server)结构两种。C/S结构,即客户端和服务器端结构。在几年前,它是软件系统主要的体系结构,因为
20、这种结构可以充分利用两端的硬件环境的优势,将任务合理的分配到Client端和Server端来处理,降低了系统的通讯开销。B/S结构,即浏览器对服务器结构。现在,这种结构正成为主流的,受欢迎的结构,因为这种结构开发有很多好处,它可以非常有效的保护数据平台和控制管理访问权限,这种结构下,服务器数据库也很安全;它是一次性到位的开发,可以实现:不同的人员,在不同的地点,以不同的接入方式时访问和操作共同的数据库。特别是在JAVA这个跨平台语言出现之后,B/S架构更是方便、快捷、高效。3.开发技术本毕业设计项目要求的开发技术为Java+MySQL,因此本项目主要技术采用JSP+Servlet进行开发
21、,数据库使用MySQL,对于JSP与Servlet也是JavaEE的一部分,是JavaEE中三大框架的基础。除了主要技术之外,项目中还使用到了一些网页前端的技术:HTML、CSS、JS和一些JS的开源框架。JSP+Servlet技术:JSP技术与ASP技术特别相似,它是在传统的HTML文件中插入Java程序段和JSP标记形成JSP文件,后缀名为(*.jsp)。因为JSP技术也算是Java的一种扩展,所以用JSP开发出来的Web应用也可以跨平台,既能在Windows下运行,也能在其他操作系统上运行。JavaScript技术:JavaScript是一种脚本语言,目前已经被广泛用于Web应
22、用开发和Web游戏开发,使用JS可以为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是嵌入在HTML中的。同Java一样,JavaScript脚本语言不局限于某个操作系统,仅需要浏览器的支持。因此一个JavaScript脚本,在编写完成后可以在任意装有支持JavaScript的浏览器的操作系统上运行,目前JavaScript几乎已经被所有的浏览器支持。2.2软件运行环境2.2.1前台客户端运行环境由于该项目是基于B/S的项目,所以运行的客户端只需要一台装有一个可以正常上网的浏览器的系统即可,通过浏览器访问网址:8080/LunTan/即可访问项目,该
24、顺利完成开发工作的要求,硬件、软件能否满足开发者的需要等。该游戏论坛管理系统采用了目前非常流行的JSP+Servlet语言和当前新兴的B/S(浏览器/服务器)模式进行开发。B/S体系结构具有许多传统C/(客户机/服务器)体系结构没有的优点,而且又紧密的结合了国际互联网/企业内部互联网技术,所以B/S是技术发展的新起点,它把应用带入了一个崭新的发展时代。数据库服务器选用的是MySQL数据库,它能够处理较大量的数据,同时能保持数据的完整性并提供了一些高级管理功能。MySQL的安全性、灵活性和易用性为论坛系统的数据库编程提供了良好的条件。因此,系统的软件开发平台已成熟可行。硬件方面,现如今硬件更新的
34、发平台搭建开发平台的搭建是系统实现的基础,系统开发平台如下:(1)操作系统:服务器操作系统可选用在WindowsXP系统或win7,本项目选用的是win7系统。(2)服务器:选择Tomcat6.0.32作为Web服务器。(3)数据库系统:数据库选用的是MySql5。(4)开发环境:本系统选择MyEclipse8.5作为开发工具。4.2程序结构图4-1程序结构图LunTan为项目的名称,也是项目的根目录。src目录包含如下几个部分:操作数据库的DAO:com.dao包,用户、主题、回复、板块的JavaBean:com.entity,检验用户输入信息是否合法(如:板块的名称是否为2-
35、20个字符)的工具类:com.match,为了方便某个页面的展示(如:需要在页面上显示导航栏,专门为导航栏设置了一个JavaBean,这样设计可以方便的操作导航栏),专门为页面设计的JavaBean类:com.page,项目中的所有的Servlet:com.servlet,一些项目需要用到的工具类:com.util。WebRoot下的WEB-INF、lib目录及web.xml依然为固定的目录和文件,style为界面美化的css、js的目录,image存放了项目中用到的所有的图片。4.3系统的实现4.3.1登陆、注册模块的设计与实现进入游戏论坛首页,在用户名和密码输入框中分别输入用户名和密
37、,并且填写了正确的验证码,那么网站会直接跳转到登陆界面,在这个界面中,用户名和密码的输入框已经自动填写上了用户刚刚注册的数据,直接点击登陆按钮,即可成功登陆,如果用户在登陆界面填写的信息不合法,会通过JS和Servlet进行不合法信息的验证与提示。图4-3注册页面关于用户头像功能:由于注册界面需要用户上传一张自己的头像(如果不上传,会使用默认的头像),本项目只是使用JSP+Servlet进行开发,没有使用SSH框架,所以在上传图片这块,使用的是一个开源框架SmartUpload,专门用来处理JSP中图片和文件上传的操作。当在reg.jsp中填写好注册的信息之后,会将这些信息交给Ser
38、vletReg.java这个Servlet来处理,因为使用了SmartUpload框架,所以在接收parameter参数时,直接使用request.getParameter(“param”);无法接收到表单传递的参数,此时需要使用到SmartUpload提供的方法来处理传递到本页中的参数:smartUpload.getRequest().getParameter(“param”);,这样就可以正常接收到参数了。解决了参数的接收问题,还有一个最重要的问题就是处理用户上传的头像图片,首先,要先获取到用户上传的图片,并将图片保存到服务器端,这里会有几个问题:1.如何获取到用户上传的图片2.如果用
39、户上传的文件不是图片怎么处理3.如果用户上传的图片名称与服务器端的某张图片名称重名了怎么处理。问题解决:1.因为使用SmartUpload可以一次上传多个文件,当调用SmartUpload中的方法初始化好一个SmartUpload后,可以调用该类中的一个方法getFiles()来获取用户上传的所有文件,该方法的返回值是一个Files类,通过Files类中的方法:getFile(index),可以得到下标为index的文件,getFile()方法的返回值为java.io.File类,这样就获取到了用户上传的文件(图片)。2.判断用户上传的文件是否合法,根据面向对象的思想,因为上传文件的功能是S
41、戳重新生成一个字符串作为文件名,这样文件重名的几率就会非常小了。以下列出了一些重要代码:ServletReg.java中publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException/.一些初始化方法/*【获取用户的ip地址,实例化不重复文件名生成类的对象】*/IPTimeStampits=newIPTimeStamp(request.getRemoteAddr();/*上传表单,需要使用SmartUpload*/Sm
42、artUploadsu=newSmartUpload();/实例化SmartUpload对象su.initialize(this.config,request,response);/【初始化上传操作】/*上传图片部分*/Stringallowed=jpg,bmp,png,gif;su.setAllowedFilesList(allowed);/【设置允许上传的扩展名】su.setMaxFileSize(1024*1024*1);/【设置允许上传的文件的最大Size(1M)】trysu.upload();/将文件上传/su.save(image/sec
43、tion/);/文件保存,在下边使用另一个方法保存catch(SmartUploadExceptione)e.printStackTrace();return;catch(SecurityExceptione)/【如果捕获到该异常,表示上传的文件扩展名不是允许的文件】out.print(+alert(上传文件格式不正确!);+window.history.back();+);return;/*获取一个不重复文件名+文件后缀组成文件名。*/Stringext=su.getFiles().getFile(0).getFileExt();Stringuse
44、rFace=its.getIPTimeStampRand()+.+ext;if(ext=null|ext.trim().equals()userFace=default.jpg;elsetrysu.getFiles().getFile(0).saveAs(image/head/+userFace);/保存文件catch(SmartUploadExceptione)e.printStackTrace();/.其他代码/将用户信息插入数据库if(udao.checkReg(userName,passWord,sexType,userFace,n
45、ewDate()/out.println(注册成功!);request.getSession().setAttribute(userName,userName);request.getSession().setAttribute(passWord,passWord);response.sendRedirect(/LunTan/login.jsp);elseout.println(服务器出错,注册失败!);关于验证码功能:为了防止论坛出现软件注册等现象,需要在注册的时候添加验证码功能,如果用户输入了正确的验证码,才可以进行下一步操作。验证码功能的实现使用的是java的Swing,通过
46、在Servlet使用使用Swing画出一个验证码矩形框,当需要使用验证码图片时,只需要在JSP中写一个标签,标签的src为该Servlet,这样,就可以在网页上显现出来一个验证码了。验证码部分代码:/获取用户输入Stringyanzhengma=su.getRequest().getParameter(yanzhengma);/获取Servlet中生成的验证码的正确答案Stringtemp=(String)request.getSession().getAttribute(yanzhengma);Stringyzm=;for(inti=0;i+yzm);System
47、.out.println(ServletReg:yanzhengma-+yanzhengma);/判断用户输入的验证码if(yzm!=yanzhengma)&(!yzm.equalsIgnoreCase(yanzhengma)out.print(+alert(验证码输入错误!);+window.history.back();+);return;关于自己编写的验证码这块还有一个问题就是验证码图片的缓存问题,因为所有的浏览器为了提高页面的访问速度,都有一个缓存的功能,也就是说,当访问某个网站的时候,浏览器会将该网站中的一些信息(如:图片)保存到本地,当下次访问该网页的时候,如
48、果本地已经缓存了这些文件,那么就会直接使用本地的文件,而不会从服务器端下载;此时验证码图片这块就会有一个问题,当用户第一次访问到验证码界面时,因为本地并没有存储过这张图片,所以会从服务器端下载一张,当第二次访问的时候,因为在用户本地已经有了这张图片,所以会直接使用用户本地的图片,为了让验证码可以正常的更新与验证,需要取消图片的缓存,所以需要在Servlet端生成图片验证码时执行设置:response.setDateHeader(Expires,-1);response.setHeader(Pragma,no-cache);response.setHeader(Cache-Control