游戏防沉迷系统的设计与实现_第1页
游戏防沉迷系统的设计与实现_第2页
游戏防沉迷系统的设计与实现_第3页
游戏防沉迷系统的设计与实现_第4页
游戏防沉迷系统的设计与实现_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、密级:计算机游戏防沉迷系统的设计与实现The Design And Realization of Computer Game Fatigue System学 院:信息科学与工程学院专 业 班 级:计算机科学与技术0702班学 号:070405057学 生 姓 名:蔡旺旺指 导 教 师:靳鹏 (讲师) 2011年 06 月II 摘 要随着国内外游戏产业的发展,越来越多的儿童、青少年沉迷在其中不能自拔,花费了大量的时间在游戏上面,甚至荒废了学业。青少年沉迷网络游戏的主要诱因是大多数网络游戏都设置了经验值增长和虚拟物品奖励功能,需要获得上述奖励,主要靠长时间在线累计获得,因而导致部分青少年沉迷其中无

2、法自拔。计算机游戏防沉迷系统通过动态链接库安装一个全局钩子,在允许青少年在适度游戏的情况下,严格限制游戏的时间,当游戏时间超过预定值时,系统提示游戏者时间已到,然后屏蔽除存盘之外的其他操作。系统提供了对监控游戏的添加和删除的基本操作,查询某个游戏一定时间内的运行时间,用坐标轴绘制出某个游戏运行时间的变化趋势,系统提供监控者调整监控时间的功能,方便对游戏进行更有效的管理。同时,系统提供严格的权限控制,在退出系统或修改游戏信息时,需要用户登录,并提供用户的信息管理等功能。系统编写了一个额外的驱动文件,通过HOOK系统底层函数的方法,实现进程保护,在游戏运行前加载这个驱动文件,来解决从任务管理器强制

3、关闭进程的问题。综上所述,游戏防沉迷系统的构建,是国内外游戏产业发展的必然趋势。系统采用的是Microsoft公司的VC+ 6.0来设计应用系统,而后台数据库部分则采用Microsoft Access来构建,在windows XP平台下开发。1-3关键词:VC+ 6.0;Microsoft Access;游戏防沉迷;钩子;驱动 I AbstractWith the development of domestic and international game industry, a growing number of children and young people find them una

4、ble to indulge in them, spend a lot of time in the game, and even neglect their studies. The main incentive why Young people indulging in online games is that most online games are set to experience value growth in reward function and virtual goods. To get the award, the cumulative gain is needed ma

5、inly by long-line, resulting in some young people addicted to them can not extricate themselves. Computer game fatigue system is installed by a global dynamic link library hook, allowing young people to moderate the game in the case of strictly limited game time, when the game is longer than a prede

6、termined value, the system prompts the player time is up, and then shielded operations except Save. The system provides the basic operations monitoring the game including adding and removing and that querying running time of a game within a certain time and that drawing out the running time trends o

7、f a game with the axis. System provides functions to tune the monitoring time to facilitate more effective management of the game. Meanwhile, the system provides strict access control that when exiting the system or modifying the game in information, requiring users to log in and provide the user

8、9;s information management. System prepared an additional driver files to achieve process protection by the underlying functions of HOOK system. Loading the driver files before running the game to solve the problem that processes are forced to close from the Task Manager processes.In summary, the bu

9、ilding of game fatigue system is a inevitable trend of the domestic and international game industry development. The system uses Microsoft's VC+ 6.0 to design application systems, and some of the back-end database using Microsoft Access to build developed in windows XP platform.Keywords: VC+ 6.0

10、; Microsoft Access; game fatigue; hook; drive II 目 录摘 要IAbstractII第1章 引言11.1系统开发背景及意义11.2课题研究内容和对研究过程中出现问题的解决11.4 SQL语言介绍21.4.1 SQL查询21.4.2 SQL数据更新31.5 系统开发工具41.5.1 VC+ 6.0工具简介41.5.2 Access数据库简介5第2章 系统总体设计72.1 系统分析72.1.1 问题分析72.1.2 需求分析82.1.3 预期实现目标及功能92.2数据库设计102.2.1 概念结构设计102.2.2 逻辑结构设计10第3章 系统详细设

11、计133.1 系统详细设计概述133.2 数据库设计133.2.1 创建数据表133.2.2 数据库链接与使用143.3 系统详细设计153.3.1 系统主窗体模块153.3.2 游戏管理模块183.3.3 游戏时间绘制模块203.3.4 用户管理模块253.3.5 驱动模块273.3.6 其他30第4章 软件测试334.1 测试方法334.2 项目测试33第5章 结论36参考文献37致 谢38IV沈阳工业大学本科生毕业设计(论文)第1章 引言1.1系统开发背景及意义随着文化创意产业在全球的兴起,国家已经将文化创意产业作为未来经济发展的重要动力之一,而游戏产业正是文化创意产业的重要支柱。政府对

12、于游戏产业一方面要扶持,一方面要尽量降低游戏产业兴起带来的社会负面效应。网络游戏产业的发展不仅仅需要约束,也需要扶持,规范网络游戏健康发展是社会、政府、产业的共同责任。政府在这样的系统工程里需要扮演一个协调的角色,而防沉迷系统的发布只是政府协调的行动之一。网络游戏作为一种商业模式的存在,它的产生和兴盛是市场作用下的产物。产业本身不仅创造了很大的商业价值,解决了大量的就业问题,同时网络游戏对相关的行业也有非常大的拉动作用。游戏沉迷问题不是一个简单的产业问题,而是社会问题。在目前的社会环境下儿童、青少年沉迷于网络游戏是有潜在的社会原因存在。解决游戏沉迷问题,需要政府、游戏厂商、社会、家长、学校等多

13、方面的努力,而解决这样的社会问题还需要其他方的参与和努力。面对网络游戏带来的社会负面影响,政府做出了限制其负面影响的规定,网络游戏产业作为一个只有几年发展历史的新鲜事务,为原有的社会及市场带来了很多新情况和影响,这里面既有积极的一面也有消极的一面。在这种情况下,游戏防沉迷系统在允许青少年适度游戏的同时,严格限制游戏时间,来达到避免沉迷游戏的目的,无论从对游戏行业的发展或者对一些社会性问题来说,计算机游戏防沉迷系统的研究就变得非常的有意义。1.2课题研究内容和对研究过程中出现问题的解决课题要研究计算机游戏防沉迷系统的开发与设计。防沉迷,是为了防止儿童、青少年沉迷游戏而发展起来的。它是对游戏时间进

14、行严格的控制来达到防止沉迷的目的,当游戏到达监控者预定的时间时,屏蔽游戏除存盘之外的其他操作。监控者可以查询一定时间内某个游戏的运行时间,系统会根据选择的时间绘制出游戏时间的变化趋势,并采取相应的措施比如及时的更新游戏的监控时间,来达到更有效的管理。这个系统最终实现的主要功能如下:1. 游戏部分:主要完成游戏时间的统计、更新、查询、绘制;2. 监控部分:主要是限制游戏者的操作;3. 用户部分:主要完成用户的管理;4. 驱动部分:主要起到进程保护的作用。那么,一个比较完善的游戏防沉迷系统应该包括以下模块:1. 游戏管理模块:监控游戏的录入、更新、删除等;2. 游戏监控模块:定点更新、实时监控、记

15、录增加;3. 时间绘制模块:游戏时间查询、游戏时间的绘制;4. 用户管理模块:密码修改、用户登录;5. 驱动模块:驱动安装、驱动卸载、驱动控制。系统具有维护游戏信息的功能。为了方便,对各个游戏进行编号,每个编号对应一个游戏关于游戏监控时间的描述。每条游戏运行时间的记录对应一个编号,方便系统统计游戏运行时间和绘制游戏时间的变化趋势。1.4 SQL语言介绍用户对数据库的使用,是通过数据库管理系统提供的语言来实现的。不同的数据库管理系统提供不同的数据库语言。关系数据库管理系统几乎都提供关系数据库标准语言SQL。SQL 的全称是Structured Query Language,即结构化查询语言。SQ

16、L语句可以从关系数据库中获得数据,也可以建立数据库、增加数据、修改数据。1986年ANSI采用SQL语言作为关系数据库系统的标准语言,后被国际化标准组织(ISO)采纳为国际标准。SQL语言使用方便、功能丰富、简洁易学,是操作数据库的工业标准语言,得到广泛地应用。SQL语言是一种非过程化语言,它一次处理一个记录集合,对数据提供自动导航。SQL语言允许用户在高层的数据结构上工作,而不对单个记录进行操作。SQL语言可以完成许多功能,例如:查询数据;在数据库表格中插入、修改和删除记录;建立、修改和删除数据对象;控制对数据和数据对象的存取;确保数据库的一致性和完整性等。1.4.1 SQL查询数据查询是关

17、系运算理论在SQL语言中的主要体现,SELECT 语句是SQL查询的基本语句,当对一个数据库进各种各样的操作时,使用的最多的就是数据查询,在以SQL为基础的关系数据库中,使用的最多的就是SELECT查询语句。SELECT语句的完整句法如下:SELECT 目标表的列名或列表达式序列FROM 基本表和(或)视图序列WHERE 行条件表达式GROUP BY 列名序列HAVING 组条件表达式ORDER BY列名 ASCDEAC在SQL的查询中还会涉及到模糊查询,这就需要使用模式匹配符LIKE(判断值是否与指定的字符通配格式相符)。在包含LIKE的查询语句中可以使用两个通配符:%(百分号)。系统查询中

18、的条件判断往往包含多个条件,这时就需要使用逻辑运算符NOT、AND、OR(用于多条件的逻辑连接),谓词ALL以及保留字DISTINCT等等。做为SELECT语句还有很多的使用方法,这里就不再叙述。1.4.2 SQL数据更新使用数据库的目的是为了有效地管理数据,而数据的插入、删除和修改则是必不可少的一个功能,现做一个简单地介绍。数据插入,往数据库的基本表中插入数据使用的是INSERT语句,其方式有两种:一种是元组值的插入,另一种是查询结果的插入。在系统中使用的是前一种方式,其句法如下:INSERT INTO 基本表名(列表名)VALUES(元组值)数据删除,往数据库的基本表中删除数据使用的是DE

19、LETE语句,其句法如下:DELETE FROM 基本表名 WHERE 条件表达式删除语句实际上是“SELECT * FROM 基本表名 WHERE 条件表达式”和DELETE操作的结合,每找到一个元组,就把它删除。此外,DELETE语句只能从一个基本表中删除元组,WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件。数据修改,当需要修改基本表中元组的某些列的值时,可以用UPDATE语句实现,其句法如下:UPDATE基本表名SET列名=值表达式,列名=值表达式WHERE条件表达式1.5 系统开发工具1.5.1 VC+ 6.0工具简介VC+ 6.0是Microsoft公司推出的一个基于

20、Windows系统平台、可视化的集成开发环境,它的源程序按C+语言的要求编写,并加入了微软提供的功能强大的MFC(Microsoft Foundation Class)类库。MFC中封装了大部分Windows API函数和Windows控件,它包含的功能涉及到整个Windows操作系统。MFC不仅给用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件,这样,开发人员不必从头设计创建和管理一个标准Windows应用程序所需的程序,而是从一个比较高的起点编程,故节省了大量的时间。另外,它提供了大量的代码,指导用户编程时实现某些技术和功能。因此,使用VC+提供的高度可视化

21、的应用程序开发工具和MFC类库,可使应用程序开发变得简单。调试的步骤:1) 保存为C或C+文件;2) 根据断点调试找到错误处;3) 采用F10或F11单步调试找到精确的错误处。其中f10是跳过函数调用,F11是进入函数体调试。一般是先用F10,确定函数输入输出是否正确,如不一样,则用F11进入函数体一步一步调试;4) 在调试过程中,肯定得监视程序中的变量。在vc+6.0的右下角有一个watch窗口,专门用来设置监视变量。具体怎样设置自己体会吧。在调试过程中,鼠标轻轻放在变量上也会显示该变量的值;5) Vc+6.0专门为调试设置了工具箱以方便调试的进行,打开的方法如下。右键->在debug

22、(或调试)选择项的勾勾上。4-61.5.2 Access数据库简介Access 是微软公司推出的基于Windows的桌面关系数据库管理系统,是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。Access能够存取 Access/Jet、Microsoft SQL Server、Oracle(甲骨文软件公司),或者任何 ODBC 兼容数据库内的资料。熟练的软件设

23、计师和资料分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的"进阶用户"则能使用它来开发简单的应用软件。虽然它支援部分面向对象(OO)技术,但是未能成为一种完整的面向对象开发工具。1Access的优点(1)存储方式简单,易于维护管理,Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb或.accdb)的数据库文件中,便于用户的操作和管理。(2)面向对象,Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每

24、个对象它都定义一组方法和属性,以定义该对象的行为和外国,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。同时,这种基于面向对象的开发方式,使得开发应用程序更为简便。(3)界面友好、易操作,Access是一个可视化工具,是风格与Windows完全一样,用户想要生成对象并应用,只要使用鼠标进行拖放即可,非常直观方便。系统还提供了表生成器、查询生成器、报表设计器以及数据库向导、表向导、查询向导、窗体向导、报表向导等工具,使得操作简便,容易使用和掌握。(4)集成环境、处理多种数据信息,Access基于Windows操作系统下的集成开发环境,

25、该环境集成了各种向导和生成器工具,极大地提高了开发人员的工作效率,使得建立数据库、创建表、设计用户界面、设计数据查询、报表打印等可以方便有序地进行。(5)Access支持ODBC(开发数据库互连,Open Data Base Connectivity),利用Access强大的DDE(动态数据交换)和OLE(对象的联接和嵌入)特性,可以在一个数据表中嵌入位图、声音、Excel表格、Word文档,还可以建立动态的数据库报表和窗体等。Access还可以将程序应用于网络,并与网络上的动态数据相联接。利用数据库访问页对象生成HTML文件,轻松构建Internet/Intranet的应用。(6)支持广泛,

26、易于扩展,弹性较大,能够将通过链接表的方式来打开EXCEL文件、格式化文本文件等,这样就可以利用数据库的高效率对其中的数据进行查询、处理。还可以通过以Access作为前台客户端,以SQL Server作为后台数据库的方式(如ADP)开发大型数据库应用系统。总之,Access是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发;即可以开发方便易用的小型软件,也可以用来开发大型的应用系统。2Access的缺点(1)数据库过大,一般百M以上(纯数据,不包括窗体、报表等客户端对象)性能会变差。(2)虽然理论上支持255个并发用户,但实际上根本支持不了那么多,如果以只

27、读方式访问大概在100个用户左右,而如果是并发编辑,则大概在10-20个用户。(3)记录数过多,单表记录数过百万性能就会变得较差,如果加上设计不良,这个限度还要降低。(4)不能编译成可执行文件(.exe),必须要安装Access运行环境才能使用。第2章 系统总体设计2.1 系统分析 本节针对计算机游戏防沉迷系统的设计任务进行论述,对整个计算机游戏防沉迷系统进行问题分析,阐述一个比较好的游戏防沉迷系统主要具体的特征。需求分析,预期目标及功能等。2.1.1 问题分析在网络游戏产业蓬勃发展的今天,未成年人沉迷网游已成为突出的社会问题。越来越多的防沉迷系统开始出现,他们的核心内容是控制游戏的收益即:未

28、成年人累计3小时以内的游戏时间为“健康”游戏时间,超过3小时后的2小时游戏时间为"疲劳"时间,在此时间段,玩家获得的游戏收益将减半。如累计游戏时间超过5小时即为"不健康"游戏时间,玩家的收益降为0,以此迫使未成年人下线休息、学习。但是因为青少年长期陷于游戏中,如果没有一个过渡的过程,防沉迷的效果会微乎其微。所以一个以控制游戏运行时间,并能根据实际的情况来实时调整监控时间来防止青少年沉迷的系统就显得必不可少,随着这个问题的出现,一个比较好的防沉迷系统主要有以下几个方面的特征:1) 防沉迷系统可以让管理员根据被监控者的沉迷程度随时更改监控的时间,系统会根据管

29、理员的要求,绘制出一个监控者最近的游戏时间长短的变化趋势;2) 防沉迷系统可以监控运行的游戏,当游戏运行到预定的时间时,会限制用户的操作,如屏蔽除存盘之外的其他操作;3) 防沉迷系统可以提供预监控游戏的增加和删除,并根据需要实时更新游戏信息;4) 防沉迷系统可以提供的权限管理机制,包括退出系统和修改信息时需要用户验证,并提供修改用户信息的功能;5) 防沉迷系统可以提供用户查询某个游戏,某段时间内的运行时间;6) 防沉迷系统从内核层面提供进程保护功能,不会通过任务管理器等正常手段关闭。目前的计算机游戏防沉迷系统存在一些普遍性问题:1) 对游戏的运行时间是一个既定的限制,没有因人而异,不够科学;2

30、) 没有针对所有的计算机游戏;3) 系统安全性问题较大。综上所述,计算机游戏防沉迷系统的的设计开发,对于促进青少年投入学习、提高自身实力,提高青少年的社会责任感有十分重要的意义。一个优秀的计算机游戏防沉迷系统应能根据不同人,不同时间做出不同的监控措施。2.1.2 需求分析计算机游戏防沉迷系统为了防止青少年沉迷在游戏当中,会允许游戏者游戏一段时间的情况下,严格控制游戏时间来达到这个目的,系统将从操作系统底层来解决此问题,会涉及到windows编程,故所有的动态链接库、钩子函数都将采用windows的API函数,对累计时间的存取将采用数据库的形式,来预防当系统退出时不能准确的统计游戏的时间。系统通

31、过严格的限制游戏者的时间来达到防止沉迷的目的,系统运行之后,如果被监测的游戏运行,则软件应该会监测到其启动,在监视的列表中标记其运行状态,并实时更新监测游戏的运行时间,然后判断是否超过规定的时间,如果超过预定的时间,则用已安装在动态链接库的全局钩子,屏蔽掉存盘(F2)之外的其他任何操作。软件具有定点更新信息,到零点的时候判断当天的运行的时间是否为零,如果不为零,则说明该游戏当天运行过,把今天运行过的游戏的时间统计出来,然后在游戏运行时间表中创建一条新的记录,管理员统计,并作出具体的监控措施。系统提供录入游戏、编辑游戏和删除游戏的功能。为了方便管理系统的权限,系统提供维护密码的功能,普通用户关闭

32、此系统之后将用托盘技术,放在任务栏里,但不能强制将其关闭,管理员用密码可退出软件,系统为了解决应用层强制关闭进程的问题,还应该编写一个额外的驱动文件,通过HOOK系统底层函数的方法,实现进程保护,在游戏运行前加载这个驱动文件,达到有效的监测游戏的目的。系统具有维护游戏信息的功能,为了方便,对各个游戏进行编号,每个编号对应一个游戏关于游戏监控时间的描述。每条游戏运行的时间记录对应一个编号,方便系统统计游戏运行时间和绘制游戏运行时间的变化趋势。软件具有友好的界面,便于与用户交互。2.1.3 预期实现目标及功能系统为了方便监控者对沉迷游戏者的游戏时间进行有效的监控,软件具有友好的界面,便于与用户交互

33、,首先监控者增加被监控的游戏并添加月、周、日的监控时间,软件由操作系统监测游戏运行的时间,当游戏运行的时间超过预定的时间,则强行中止除存盘退出之外的游戏响应。系统自带游戏运行时间统计功能,并绘制出游戏时间的趋势,让监控者直观的看出游戏时间的分布,并可根据具体的情况来修改允许游戏运行时间的长短。通过对用户需求的分析,可以分析出系统可以实现监控游戏的录入、更新、删除等,定点更新,实时监控,屏蔽除存盘之外的其他操作, 游戏时间查询模块,游戏时间绘制模块,登录模块。系统功能的模块图,如图2-1所示:图2-1 系统功能模块图1. 游戏管理模块:管理员对需监控游戏的进行录入、更新,需要设置是否需要监控,以

34、及需监控的月周日的时间,以及删除游戏信息等;2. 游戏监控模块:定点更新,当到达零点之后,把当天的游戏运行时间清零、实时监控游戏的运行时间是否超过月周日的预定时间、记录增加,判断当天游戏是否运行,如果运行创建一条保存运行时间和日期的记录;3. 时间绘制模块:某个游戏某个时间段的游戏时间查询、根据选择的时间来绘制游戏运行时间的变化趋势;4. 用户管理模块:密码的修改、当用户欲修改游戏信息或退出时需要用户的登录;5. 驱动模块:需要先装载驱动,然后启动驱动,驱动控制时传进一个要保护进程的ID开始保护,最后卸载驱动。2.2数据库设计在信息世界中,从周围获得信息,然后将获得的信息转化为数据,再将数据返

35、回到现实世界中。而软件系统的开发工作需要考虑系统开发所需要的数据,以及如何对这些数据进行操作。这两个问题贯穿了整个软件系统的开发过程,这也就是数据库的设计问题,软件设计的一个核心。2.2.1 概念结构设计将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。在系统中采用的是自底向上的概念结构设计方法,通过“实体联系模型”(E-R模型)来描述数据库的结构与语义,以对现实世界进行第一次抽象。E-R模型直接从现实世界抽象出实体类型及实体间联系,然后用E-R图来表示数据模型。2.2.2 逻辑结构设计(1)数据库设计:1) 用户数据表:包括用户名(主要用于登陆),密码;2) 游戏信息表

36、:此表用来保存游戏的ID,名字,每月、周、日运行的时间,以及月、周、日限制的时间,以及游戏的监控状态;3) 运行时间表:此表用于保存游戏每天运行的时间,主要包括ID,游戏名,游戏日期和运行时间。(2)根据需求分析得到防沉迷系统的E-R图,如图2-2所示:图2-2 游戏防沉迷系统的E-R图(3)表设计1)用户表Userinfo:用于存储能够登陆系统的用户的信息。字段设置如表2-1所示:表2-1 用户信息表中文名称英文名称数据类型数据长度其他说明用户名username文本20作为主键密码password文本20不可以为空2) 游戏信息表Gameinfo:此表用来保存游戏的ID,名字,每月、周、日运

37、行的时间,以及月、周、日限制的时间,以及游戏的监控状态。字段设置如表2-2示:表2-2 游戏信息表中文名称英文名称数据类型数据长度其他说明信息IDgame id数字4作为主键游戏名称game name文本20不允许为空月运行时间month run time文本20允许为空续表2-2中文名称英文名称数据类型数据长度其他说明周运行时间week run time文本20允许为空日运行时间day run time文本20允许为空月限制时间monthlimittime文本20允许为空周限制时间week limit time文本20允许为空日限制时间day limit time文本20允许为空监控状态st

38、atus文本20不允许为空3) 运行时间信息表Runtimeinfo:此表用于保存游戏每天运行的时间,主要包括ID,游戏名,游戏日期和运行时间。字段设置如表2-3所示:表2-3 运行时间信息表中文名称英文名称数据类型数据长度其他说明信息编号ID数字4作为主键游戏名称game name文本20不允许为空运行日期run data文本20不可以为空运行时间runtime文本20不可以为空第3章 系统详细设计3.1 系统详细设计概述 本章主要包括数据库的设计,系统详细设计两大部分。数据库的设计主要概括阐述选择Microsoft Access数据库的原因,系统数据库的设计,以及在开发的过程中使用数据库的

39、方法。系统详细设计主要包括各个模块的设计方法,以及每个模块包含的主要代码。3.2 数据库设计系统的数据库采用的是Microsoft Access,它既可适用于桌面系统的单用户数据库,也可适用于小型企业的网络数据库,甚至适用于专业的WEB站点数据库,具有很强的可伸缩性。并且具有很高的可靠性、可用性和可管理性。从经济和开发效率上适合中小型网站。它和VC+6.0同属于微软公司开发,在开发接口有一致性,能更好的协调工作。Access数据库具有以下优点:存储方式简单、易于维护管理,面向对象、界面友好、易操作、集成环境,处理多种数据信息、Access支持ODBC、支持广泛,易于扩展,弹性较大。总之,Acc

40、ess是一个既可以只用来存放数据的数据库,也可以作为一个客户端开发工具来进行数据库应用系统开发;即可以开发方便易用的小型软件,也可以用来开发大型的应用系统,所以系统采用Access数据库来存储信息。3.2.1 创建数据表在Access中创建数据表,过程如下:1. 进入到主页面,选择表,并用鼠标右击使用设计表创建表,选择设计视图。2. 定义字段。创建数据表最重要的步骤,在字段名称里面输入字段,然后在数据类型里面定义类型,并在常规表单里面设置相应的属性。3. 定义主键字段,关键字字段的值在表中是唯一的,并且不允许为NULL。4. 保存数据表。表的字段定义完成后,单击的保存按钮,输入表名称后,完成保

41、存操作。11-145. 用同样的方法创建需要的所有表格。具体表格如表3-1到表3-3所示:表 3-1 UserInfo列名数据类型长度允许空username1文本20password1文本20表3-2 GameInfo列名数据类型长度允许空gameid数字4gamename文本20monthruntime文本20weekruntime文本20daytuntime文本20weeklimittime文本20daylimittime文本20status文本20表3-3 RuntimeInfo列名数据类型长度允许空ID数字4gamename文本20rundata文本20runtime文本203.2.2

42、 数据库链接与使用建完数据库之后,接下来就是要进行数据库的连接。系统采用ADO链接数据库的方式,在连接数据库之前需要构造一个合理的连接字符串。链接数据库的代码:m_pConnection.CreateInstance("ADODB.Connection");CString str;str.Format("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=db1.mdb");m_pConnection->Open(_bstr_t(str),"","",adModeUnkno

43、wn);ADODB.Connection:创建一个ADO的实例db1.mdb:欲链接的数据库的名称执行查询语句的代码:if(m_pConnection=NULL) OnInitADOConn();m_pRecordset.CreateInstance(_uuidof(Recordset);m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);执行增、删、改语句的代码:if(m_pConnection = NULL)OnInitADOConn(

44、);m_pConnection->Execute(bstrSQL,NULL,adCmdText);以上就是链接和使用数据库时所用的代码,以上所有的代码都封装在CADOConn类里面,使用的时候直接调用类里面的方法即可。3.3 系统详细设计3.3.1 系统主窗体模块系统主窗体由左右两个视图组合而成,左边的视图以树控件负责视图的切换,右边主要由MonitorManage、RunInfoCount、UserManege三个视图之间来回切换组成。该页面中主要的技术是如何控制视图之间的切换,主要是通过以下四部分代码进行实现:7-9 15-20(1)在左边视图CLeftPaneView的OnInit

45、ialUpdate函数中创建一个树控件,然后插入三个节点。CTreeCtrl& treeCtrl = GetTreeCtrl();treeCtrl.InsertItem("MonitorManage", 0, 0);treeCtrl.InsertItem("RunInfoCount", 1, 1);treeCtrl.InsertItem("UserManage", 2, 2);(2)在主框架CMainFrame类的OnCreateClient函数中添加创建三个视图。if(!m_wndSplitter.CreateStatic(

46、this,1,2)return false;if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CLeftPaneView),CSize(200,200),pContext)return false;if(!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMonitorView),CSize(100,100),pContext)return false;(2)在左边视图CLeftPaneView的OnSelchanged函数中判断选择的节点对应的是哪个视图,然后调用CMainFrame中的SwitchToView

47、切换到不同的视图。str = treeCtrl.GetItemText(hSelectedItem);if(str.Find("MonitorManage") != -1)pFrame->SwitchToView(MONITORVIEW);else if(str.Find("UserManage") != -1) pFrame->SwitchToView(USERVIEW);else if(str.Find("RunInfoCount") != -1) pFrame->SwitchToView(RUNINFOVIEW

48、); (4)在主框架CMainFrame的SwitchToView函数中,根据判断传进来的nViewType参数是MONITORVIEW,USERVIEW,RUNINFOVIEW三种类型来切换到不同视图。switch(nViewType)case MONITORVIEW:if(!pView->IsKindOf(RUNTIME_CLASS(CMonitorView)m_wndSplitter.DeleteView(0,1);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CMonitorView),CSize(rcRight.Width(),rcRig

49、ht.Height(),NULL);m_wndSplitter.RecalcLayout();break;case USERVIEW:if(!pView->IsKindOf(RUNTIME_CLASS(CUserView)m_wndSplitter.DeleteView(0,1);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CUserView),CSize(rcRight.Width(),rcRight.Height(),NULL);m_wndSplitter.RecalcLayout();break;case RUNINFOVIEW:if(!p

50、View->IsKindOf(RUNTIME_CLASS(CRunInfoView)m_wndSplitter.DeleteView(0,1);m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CRunInfoView),CSize(rcRight.Width(),rcRight.Height(),NULL);m_wndSplitter.RecalcLayout();break;当系统运行时,默认显示的是监控游戏视图的界面,如图3-1所示:图3-1系统主窗体界面当系统运行时,默认的界面是监控游戏的界面,当被监控的游戏运行时,游戏对应的开始时间那一栏显示

51、系统的当前时间,游戏运行的时间随着游戏时间的进行实时的增加,当天游戏还可以运行的剩下时间则实时的减少,游戏的状态变成正在运行的状态。一直到监控的游戏停止游戏或者退出游戏时,状态变成了不运行的状态。默认界面监控游戏视图中的Add、Edit、Delete三个按钮分别用来对游戏的信息进行增加、编辑、删除操作,游戏的信息用一个结构体来操纵,包括游戏的编号,游戏的名称,开始的时间,已经运行的时间,剩下的时间,以及当前的状态。3.3.2 游戏管理模块(1)游戏信息的添加:主要是添加监控游戏的信息。如图3-2所示:图3-2 监控游戏的添加 因为随着每年新型游戏不断的出现,需要对新的游戏进行监控,添加游戏的工

52、程中,可以拉动游戏的图标到路径编辑框中,如果是.exe格式的,系统将自动识别游戏的名称,减少用户的输入,可增加游戏每天、每周、每月限制的时间。根据路径来获得名字的代码如下:CString style = m_gamePath.Mid(strlen(m_gamePath) - 3, strlen(m_gamePath); int n = m_gamePath.ReverseFind(''); CString gamename = m_gamePath.Mid(n + 1, strlen(m_gamePath) - 5 - n); m_gameName = gamename;(2)

53、游戏信息编辑:由于考虑到要实时的观察被监控者的沉迷程度来调整监控的时间,所以每个时期游戏需要监控的时间应该是不同的,也就是说,如果如果被监控者的沉迷程度如果没有减轻,就可适当的减少游戏的运行时间,乃至于禁止游戏运行(只需把限制的时间设置为零即可),如图3-3所示:图3-3 游戏信息的编辑因为考虑到方便管理员的使用,所以编辑游戏时只须在列表框中选择一个游戏,然后点编辑,系统就会自动加载该游戏的数据,方便管理员的使用,减少不必要的输入,当点击列表框的时候获得一个ID,然后点编辑按钮,系统根据ID值上数据库中查询,然后获得游戏的各个属性,加载显示到对话框中,并显示出来。当管理员欲修改游戏的信息时,需

54、要首先登陆系统获得足够的权限,然后才能根据实际的情况修改完游戏的信息,点击提交按钮,更新数据库,其实现的主要代码如下:void CEditGame:OnSubmit() CLoginDlg dlg;if(dlg.DoModal() = IDOK)UpdateData(TRUE);CString str;str.Format("UPDATE Gameinfo SET monthlimittime='%s', weeklimittime='%s', daylimittime='%s' WHERE gameid= %d " , m_

55、monthLimitTime, m_weekLimitTime, m_dayLimitTime, gameid);m_Adoconn.ExecuteSQL(_bstr_t)str);3.3.3 游戏时间绘制模块(1)游戏运行时间查询:游戏运行时间查询的页面主要包括查询和绘制两个功能,如图3-4所示:图3-4 游戏运行时间查询因为每个时期的控制时间可能不一样,所以获得某个游戏一段时间内的游戏时间就显得非常重要,便于绘制游戏时间变化趋势。点击查询按钮的时候,首先获得开始时间和结束时间和输入的游戏名字,然后上数据库中查询,如果没有记录,弹出一个对话框,提示没有记录,如果有记录则获得各个记录的字段值,

56、然后插入到列表框中。(2)游戏运行时间的绘制因为要根据实际情况有效的控制游戏的运行时间,所以统计分析某段时间内游戏运行的时间就显得格外重要,而分析的最直接的手段是让管理员任意时间,然后绘制游戏运行时间的变化趋势,由此直观的获得监控效果,以及为下一步的监控调整做好准备。如图3-5所示:图3-5 游戏运行时间趋势1)首先在CRunInfoView的OnDraw函数中获得游戏的名字,然后判断列表框中的选择框是否被选择,如果被选择的项的ID保存在数组里面,如果选择的项超过7个,则提示用户重新选择,然后调用画图的对话框。2)CDrawDlg对话框类得作用主要用来绘图,在对话框的OnPaint函数中绘制坐标轴曲线,先进行坐标转换,然后画横纵坐标轴,然后根据ID数组从数据库中取出运行时间和运行日期字段分别保存在runtime和rundata数组中,并统计总的运行时间,然后根据runtime和rundata的值在已经转换过的坐标轴上画出点,并连成线描绘出变化的趋势。代码如下:void CDrawDlg:OnPaint() CPaintDC dc(t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论