游戏软件信息管理系统软件综合课设.docx
《游戏软件信息管理系统软件综合课设.docx》由会员分享,可在线阅读,更多相关《游戏软件信息管理系统软件综合课设.docx(30页珍藏版)》请在冰豆网上搜索。
游戏软件信息管理系统软件综合课设
游戏软件信息管理系统
摘要
近年来,我国网络游戏软件产业发展迅猛,取得了积极的进展。
带动了一系列的消费人群。
在让不同种类的消费群体得到娱乐化的同时,也增添了我国互联网产业的多元化。
而网络游戏这个产业独有的特点让它在互联网这个平台上面持续升温,占有的比例也越来越大。
本系统前台使用面向对象的可视化编程工具VisualC++6.0,后台使用MicrosoftSQLServer2005数据库,实现了对已上市的游戏软件的管理,添加,删除,修改,查询和统计等功能。
本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。
关键词:
数据库;管理;游戏软件
1.绪论
随着科技的发展,计算机的使用已经深入到日常工作和生活的方方面面,各行各业的人们无需经过特别的训练就能够使用电脑完成许许多多复杂的工作,计算机网络化已经深深影响着现代化的管理方式。
游戏软件信息管理系统记录了游戏软件的各项信息。
设计一个系统管理市面上的游戏软件信息,主要实现以下功能
(1)记录软件的基本信息,主要包括,软件编号,软件名称,软件类别,开发公司,上市时间,玩家评测等。
(2)管理员可以修改和删除游戏软件信息。
(3)可以按游戏名称,开发公司,上市时间段等进行查询。
(4)可以按类别和开发公司统计游戏软件的数量。
2.系统分析
2.1可行性分析
2.1.1技术可行性分析
现在有很多程序语言和相应的开发工具都可以适用于本系统的开发,例如VB、VC、ASP、PHP等,数据库有DB2、Oracle、Informix、SQLServer、mysql等,这些开发工具都很成熟,都可以进行程序的开发设计。
以本人的能力目前只会使用在WindowsXP操作系统下,使用SQLServer2005数据库,开发工具选用VisualC++6.0。
2.1.2经济可行性分析
作为开发系统的一般配置,根据个人情况和资金情况,选择一台性能稳定、效率较高的计算机折旧费约100左右,开发工具是在网上免费下载,上网查询资料没花钱,完成后可以发到XX文库获取积分,也可以出售给卖游戏软件的商家,来获得一定的收益。
2.1.3操作可行性分析
本系统的操作对象是管理员和用户。
对于管理员的维护,操作非常简单,可以顺利的进行操作,管理。
对于用户来说,浏览界面清晰美观。
2.1.4时间可行性分析
本课设安排两周的时间设计这个程序,分析题目需要2天,上网查资料需要2天,设计程序需要5天,写报告需要2天。
2.2需求分析
2.2.1功能需求
本系统主要是游戏软件管理的系统。
记录软件的基本信息,主要包括,软件编号,软件名称,软件类别,开发公司,上市时间,玩家评测等。
管理员可以修改和删除游戏软件信息。
可以按游戏名称,开发公司,上市时间段等进行查询。
可以按类别和开发公司统计游戏软件的数量。
2.2.2数据需求
数据信息包括游戏软件号,游戏软件名,类别,开发公司,上市时间,玩家编号,姓名,密码等。
2.2.3性能需求
(1)相互之间的信息传递准确、快捷和顺畅。
(2)管理信息化,可随时掌握游戏软件信息等情况。
(3)系统界面美观,操作简单,查询方便,数据存储安全。
2.3数据流图
数据流图是结构化系统分析的工具。
它既可以表达数据在系统内部的逻辑流向及存储,又可以表达系统的逻辑功能和数据的逻辑变换。
数据流图既能表达现行人工系统的数据流程和逻辑处理功能,也能表达自动化系统的数据流程和逻辑处理功能。
数据流程有五种基本符号:
外部项、数据流、处理逻辑(加工)、数据元素和数据存储。
本程序的数据流图如图1所示
图1数据流图
2.4数据字典
(1)数据流的描述
数据流编号:
D001
数据流名称:
游戏软件信息
简述:
游戏软件的基本信息
数据流来源:
管理员
数据流去向:
游戏软件信息表
数据流组成:
游戏编号,游戏名,类别,开发公司,上市时间
数据流量:
3次/天
数据流编号:
D002
数据流名称:
评测信息
简述:
玩家对游戏软件打分信息
数据流来源:
玩家
数据流去向:
评测表
数据流组成:
玩家编号,游戏编号,动作,难度,画面
数据流量:
3次/天
(2)处理逻辑的描述
处理逻辑编号:
P001
处理逻辑名称:
查询
简述:
查询游戏软件信息
输入的数据流:
查询条件
处理描述:
按选定的条件查询相应的游戏软件信息。
输出的数据流:
查到的信息
处理频率:
3次/天
处理逻辑编号:
P002
处理逻辑名称:
管理
简述:
管理游戏软件信息
输入的数据流:
登录
处理描述:
管理员对游戏软件信息进行日常维护。
处理频率:
3次/天
处理逻辑编号:
P003
处理逻辑名称:
统计
简述:
统计选中信息
输入的数据流:
进行统计
处理描述:
根据要统计的项统计游戏软件的数量
输出的数据流:
统计到数量
处理频率:
3次/天
处理逻辑编号:
P004
处理逻辑名称:
评测
简述:
对游戏软件打分
输入的数据流:
玩家登录
处理描述:
通过游戏软件的动作,难度,画面等进行打分
处理频率:
3次/天
(3)数据存储的描述
数据存储编号:
F001
数据存储名称:
游戏软件信息
简述:
游戏软件基本信息
数据存储组成:
游戏编号,游戏名,类别,公司,时间
关键字:
游戏编号
相关联的处理:
P002,P003,P004
数据存储编号:
F002
数据存储名称:
评测信息
简述:
玩家评分信息
数据存储组成:
玩家编号,游戏编号,动作,画面,难度
关键字:
玩家编号,游戏编号
相关联的处理:
P001
2.5E-R图
玩家实体图如图2所示
图2玩家实体图
游戏软件实体图如图3所示
图3游戏软件实体图
系统ER图如图4所示
图4系统ER图
3.总体设计
3.1系统结构
该系统采用了C/S结构。
即 客户机服务器结构,是大家熟知的软系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,需要安装客户端才可进行管理操作。
客户端和服务器端的程序不同,用户的程序主要在客户端,服务器端主要提供数据管理、数据共享、数据及系统维护和并发控制等,客户端程序主要完成用户的具体的业务。
开发比较容易,操作简便,但应用程序的升级和客户端程序的维护较为困难。
3.2功能模块设计
根据分析整个系统主要划分为6个功能模块,分别执行要求中的功能。
数据管理中实现玩家对游戏软件的评测、游戏软件信息的查询、添加、删除、修改和统计功能。
功能模块图如图5所示。
图5功能模块图
(1)玩家评测模块:
此模块实现玩家对游戏软件的评测
(2)添加模块:
此模块实现对游戏软件信息的添加。
(3)删除模块:
此模块实现对游戏软件信息的删除。
(4)修改模块:
此模块实现对游戏软件信息的修改。
(5)查询模块:
此模块实现对游戏软件信息的查询。
(6)统计模块:
此模块实现根据游戏软件的类别和开发公司对软件数量的统计。
3.3系统设计方案
主界面、查询和统计界面显示表信息,故需要Datagrid控件,Adodc控件,由于需要输入,故需要EDIT控件,需要按钮操作,故需要Button控件,界面都有采用adodc连接datagrid控件来实现数据库的显示,在增、删、改、查界面中运用了Button控件,EDIT控件进行操作。
3.4数据库详细设计
本节主要介绍后台数据库的结构设计。
结构设计是重要阶段,是数据库设计的重要组成部分。
下面给出下列表基本的数据结构。
(1)user表
主要记载玩家的相关信息(如:
玩家编号,玩家名,密码等,wno是主码)。
玩家信息表由表1所示。
表1user表
字段名称
数据类型
长度
允许空
说明
wno
char
10
NotNull
玩家编号(主键)
wname
char
10
Null
玩家名
wmima
char
20
Null
密码
(2)yxrj表
主要记载游戏软件相关信息(游戏编号,玩家名,类别,开发公司,上市时间,cno是主码)。
游戏软件表由表2所示。
表2yxrj表
字段名称
数据类型
长度
允许空
说明
gno
char
10
NotNull
游戏编号(主键)
gname
char
10
Null
游戏名
leibie
char
20
Null
类别
gongsi
char
20
Null
公司
time
char
20
Null
时间
(3)wjpc表
主要记载游戏软件相关信息(如:
游戏编号,玩家编号,难度,动作,画面,gno,wno是主码)。
玩家评测表由表3所示。
表3wjpc表
字段名称
数据类型
长度
允许空
说明
gno
char
10
NotNull
游戏编号(主键)
wno
char
10
Null
玩家编号(主键)
nandu
char
20
Null
难度
dongzuo
char
20
Null
动作
huamian
char
20
Null
画面
4.详细设计
4.1数据库连接
//成员方法的实现--OnInitADOConn()
voidADOConn:
:
OnInitADOConn()
{
:
:
CoInitialize(NULL);//初始化环境
try
{//创建connection对像
m_pConnection.CreateInstance("ADODB.Connection");
_bstr_tstrConnect="DSN=Manage;Provider=MSDASQL";//通过ODBC数据源连接数据库
m_pConnection->Open(strConnect,"sa","sa",adConnectUnspecified);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
}
//成员方法的实现--GetRecordSet(_bstr_tbstrSQL)
_RecordsetPtr&ADOConn:
:
GetRecordSet(_bstr_tbstrSQL)
{
try{//连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
//创建记录集对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
//取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
}
4.2各功能模块设计与实现
4.2.1玩家登录模块
登录模块首先建立一个新对话框,添加两个静态文本和两个编辑框,对应用户名和密码,双击确定按钮进入编写代码代码。
此模块需要输入姓名和密码,并且都不能为空,输入正确后则登录成功,vSQL="SELECT*FROMUsersWHEREUsername='"+m_User+"'";如图6所示
图6玩家登录流程图
4.2.2游戏软件信息添加模块
开始输入要添加的游戏软件信息,判断游戏编号是否为空,不为空则可以添加,空的话返回继续输入。
vSQL="INSERTINTOyxrj(gno,gname,leibie,gongsi,time)VALUES('"+gno+"','"+gname+"','"+leibie+"',"+gongsi+",'"+time+"')";如图7所示
图7添加模块流程图
4.2.3查询模块
建立一个新对话框,选择DataGrid和Adodc控件,连接到数据库后选择相应的表格进行连接。
开始输入要查询的游戏软件信息,判断游戏名是否为空,不为空则查询成功,否则返回继续输入。
vSQL="SELECT*FROMyxrjWHEREgname="+cgname;如图8所示
图8查询模块流程图
4.2.4删除模块
删除模块在信息列表中就可以直接删除。
通过模块和数据库连接起来即可显示数据库中的内容,然后再删除按钮下写入代码即可。
删除语句vSQL="DELETEFROMyxrjWHEREgno="+cgno;。
如图9所示
图9删除模块流程图
4.2.4修改模块
首先建立一个新对话框,添加5个静态文本和编辑框,分别对应游戏软件的5个信息,点击确定按钮进入后编写修改代码。
修改语句vSQL="UPDATEyxrjSETgno='"+gno+"',gname='"+gname+"',leibie='"+leibie+"',gongsi=gongsi,time='"+time+"'wheregno="+cgno;修改程序流程如图10所示
图10修改模块流程图
4.2.4统计模块
输入要统计的游戏软件信息,开发公司或者类别不能为空,cSQL="selectcount(gno)fromyxrjwhereleibie='"+m_leibie+"'orgongsi='"+m_gongsi+"'";则可以统计其软件的数量。
如图11所示
图11统计模块流程图
5.调试与测试
5.1调试
调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者者来说也是最艰巨的任务。
调试的任务是及时改正测试过程中发现的软件错误。
具体地说,调试过程由两个步骤组成,它从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。
然后仔细研究推断代码以确定问题的原因,并设法改正。
调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。
本系统调试过程中遇到问题、原因和解决方法如下面介绍。
(1)出现错误:
程序执行完增删改查等操作后出现崩溃现象。
解决方法:
屏蔽掉m_AdoConn.ExitConnect();语句即可。
(2)出现错误:
点击按钮没有出现要显示的内容
解决方法:
原因是内容的代码忘记输入,输入即可。
5.2测试
软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。
或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。
过度测试则会浪费许多宝贵的资源。
到测试后期,即使找到了错误,然而付出了过高的代价。
测试数据过程如下。
(1)点击添加按钮输入游戏编号006,游戏名字lol,类别竞技,公司腾讯,上市时间2008,点击确定就会添加到数据库当中。
(2)点击统计按钮,输入查询的公司腾讯,显示出游戏软件数量3,在类别里输入角色扮演,显示的是1。
(3)点击玩家评分按钮,输入1,2,3,4,点击求平均分,显示平均得分2.5。
6.结论
经过两周的时间最终课程设计顺利完成,题目所要求的功能也都一一实现,可以对数据库进行添加修改,删除,查询及统计显示。
但是程序还有些地方不够完善,例如对数据的更新处理的不是很好以及游戏软件的统计不是很详细。
结束语
为期两个礼拜的软件综合课程设计实习终于顺利完成,在这期间付出汗水,辛劳可是一言难尽。
由于是第一次独立完成一个小型系统,因经经验不足,技术欠缺,系统也存在一定的问题,课程设计,通过使用数据库开发工具开发游戏软件信息信息系统,学生实际动手能力以及自学其它系统开发工具的能力有所提高,同时发现平时学习中的许多不足之处。
例如,在开发系统过程中,对数据库重要组件包括ADO控件、数据集组件和数据显示组件等的相关属性及方法不够熟悉,还不能在需要时纯熟、灵活地运用,在技术上无法实理想的效果经过这两个星期的上机实践学习。
还有对函数调用的正确使用不够熟悉,还有对vc++经常出现的错误也不了解我会以后的过程中不断学习,提高自我能力,争取将来能做出好的作品。
参考文献
[1]周进.VisualC++实用教程.北京:
人民邮电出版社,2008
[2]全国计算机等级考试命题研究组.全国计算机等级考试二级教程及同步辅导—VisualC++语言程序设计.珠海:
珠海出版社,2004
[3]许家珆.软件工程——理论与实践(第二版).北京.高等教育出版社,2009
[4]王珊.数据库系统概论(第四版).北京.高等教育出版社,2006
[5]网络资料查询,XX文库等
附录1-用户手册
点击运行,首先出现的是登录界面,选择用户名称,正确的输入密码即可,如图12所示。
图12登录界面
点击“确定”即进入到系统主界面,如图13所示。
图13系统主界面
电机添加按钮进入添加界面如图14所示
图14添加界面
点击删除按钮,可以删除当前选项,如图15所示
图15删除界面
点击修改按钮,进入修改界面如图16所示
图16修改界面
点击查询按钮,进入查询界面如图17所示
图17查询界面
点击统计按钮,进入统计界面如图18所示
图18统计界面
附录2-源程序
主要模块源代码清单:
(1)数据库连接
voidADOConn:
:
OnInitADOConn()
{
:
:
CoInitialize(NULL);//初始化环境
try
{//创建connection对像
m_pConnection.CreateInstance("ADODB.Connection");
/*bstr_tstrConnect="Provider=SQLOLEDBr;Password=sa;PersistSecurityinfo=True;UserID=sa;InitialCatalog=StudentInfo;DataSource=localhost";
m_pConnection->Open(strConnect,"","",adModeUnknown);*///直接连接数据库
_bstr_tstrConnect="DSN=sa;Provider=MSDASQL";//通过ODBC数据源连接数据库
m_pConnection->Open(strConnect,"sa","sa",adConnectUnspecified);
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
}
}
//成员方法的实现--GetRecordSet(_bstr_tbstrSQL)
_RecordsetPtr&ADOConn:
:
GetRecordSet(_bstr_tbstrSQL)
{
try{//连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
//创建记录集对象
m_pRecordset.CreateInstance(_uuidof(Recordset));
//取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
}
//捕捉异常
catch(_com_errore)
{//显示错误信息
AfxMessageBox(e.Description());
}
returnm_pRecordset;//返回记录集
}
//成员方法的实现--ExecuteSQL(_bstr_tbstrSQL)
BOOLADOConn:
:
ExecuteSQL(_bstr_tbstrSQL)
{
try{//是否已经连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
returntrue;
}
catch(_com_errore)
{
AfxMessageBox(e.Description());
returnfalse;
}
}
//成员方法的实现--ExitConnect()
voidADOConn:
:
ExitConnect()
{
//关闭记录集和连接
if(m_pRecordset==NULL)
m_pRecordset->Close();
m_pConnection->Close();
//释放环境
:
:
CoUninitialize();
}
(2)添加模块
voidCBaseDlg:
:
OnButEdit()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CEditDlgdlg;
dlg.DoModal();
CDialog:
:
OnOK();
}
voidCBaseDlg:
:
OnButUpdate()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
/*if(m_adodc.GetRecordset().GetEof()==1)
{
MessageBox("没有数据!
");
return;
}*/
CUpdateDLgStuU;
StuU.m_gno=m_datagrid.GetItem(0);
StuU.m_gname=m_datagrid.GetItem
(1);
StuU.m_leibie=m_datagrid.GetItem
(2);
StuU.m_gongsi=m_datagrid.GetItem(3);
StuU.m_time=m_datagrid.GetItem(4);
if(StuU.DoModal()==IDOK)
m_adodc.Refresh();
}
(3)删除模块
voidCBaseDlg:
:
OnButDelete()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(m_adodc.GetRecordset().GetEof()==1)
{
MessageBox("请选择要删除的记录");
return;
}
if(MessageBox("删除当前记录请确定","请选择",MB_YESNO)==IDYES)
{
Cyxrjst;