游戲防沉迷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
游戲防沉迷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
游戲防沉迷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
游戲防沉迷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
游戲防沉迷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、密級(jí):計(jì)算機(jī)游戲防沉迷系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)The Design And Realization of Computer Game Fatigue System學(xué) 院:信息科學(xué)與工程學(xué)院專(zhuān) 業(yè) 班 級(jí):計(jì)算機(jī)科學(xué)與技術(shù)0702班學(xué) 號(hào):070405057學(xué) 生 姓 名:蔡旺旺指 導(dǎo) 教 師:靳鵬 (講師) 2011年 06 月II 摘 要隨著國(guó)內(nèi)外游戲產(chǎn)業(yè)的發(fā)展,越來(lái)越多的兒童、青少年沉迷在其中不能自拔,花費(fèi)了大量的時(shí)間在游戲上面,甚至荒廢了學(xué)業(yè)。青少年沉迷網(wǎng)絡(luò)游戲的主要誘因是大多數(shù)網(wǎng)絡(luò)游戲都設(shè)置了經(jīng)驗(yàn)值增長(zhǎng)和虛擬物品獎(jiǎng)勵(lì)功能,需要獲得上述獎(jiǎng)勵(lì),主要靠長(zhǎng)時(shí)間在線累計(jì)獲得,因而導(dǎo)致部分青少年沉迷其中無(wú)

2、法自拔。計(jì)算機(jī)游戲防沉迷系統(tǒng)通過(guò)動(dòng)態(tài)鏈接庫(kù)安裝一個(gè)全局鉤子,在允許青少年在適度游戲的情況下,嚴(yán)格限制游戲的時(shí)間,當(dāng)游戲時(shí)間超過(guò)預(yù)定值時(shí),系統(tǒng)提示游戲者時(shí)間已到,然后屏蔽除存盤(pán)之外的其他操作。系統(tǒng)提供了對(duì)監(jiān)控游戲的添加和刪除的基本操作,查詢(xún)某個(gè)游戲一定時(shí)間內(nèi)的運(yùn)行時(shí)間,用坐標(biāo)軸繪制出某個(gè)游戲運(yùn)行時(shí)間的變化趨勢(shì),系統(tǒng)提供監(jiān)控者調(diào)整監(jiān)控時(shí)間的功能,方便對(duì)游戲進(jìn)行更有效的管理。同時(shí),系統(tǒng)提供嚴(yán)格的權(quán)限控制,在退出系統(tǒng)或修改游戲信息時(shí),需要用戶(hù)登錄,并提供用戶(hù)的信息管理等功能。系統(tǒng)編寫(xiě)了一個(gè)額外的驅(qū)動(dòng)文件,通過(guò)HOOK系統(tǒng)底層函數(shù)的方法,實(shí)現(xiàn)進(jìn)程保護(hù),在游戲運(yùn)行前加載這個(gè)驅(qū)動(dòng)文件,來(lái)解決從任務(wù)管理器強(qiáng)制

3、關(guān)閉進(jìn)程的問(wèn)題。綜上所述,游戲防沉迷系統(tǒng)的構(gòu)建,是國(guó)內(nèi)外游戲產(chǎn)業(yè)發(fā)展的必然趨勢(shì)。系統(tǒng)采用的是Microsoft公司的VC+ 6.0來(lái)設(shè)計(jì)應(yīng)用系統(tǒng),而后臺(tái)數(shù)據(jù)庫(kù)部分則采用Microsoft Access來(lái)構(gòu)建,在windows XP平臺(tái)下開(kāi)發(fā)。1-3關(guān)鍵詞:VC+ 6.0;Microsoft Access;游戲防沉迷;鉤子;驅(qū)動(dòng) 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系統(tǒng)開(kāi)發(fā)背景及意義11.2課題研究?jī)?nèi)容和對(duì)研究過(guò)程中出現(xiàn)問(wèn)題的解決11.4 SQL語(yǔ)言介紹21.4.1 SQL查詢(xún)21.4.2 SQL數(shù)據(jù)更新31.5 系統(tǒng)開(kāi)發(fā)工具41.5.1 VC+ 6.0工具簡(jiǎn)介41.5.2 Access數(shù)據(jù)庫(kù)簡(jiǎn)介5第2章 系統(tǒng)總體設(shè)計(jì)72.1 系統(tǒng)分析72.1.1 問(wèn)題分析72.1.2 需求分析82.1.3 預(yù)期實(shí)現(xiàn)目標(biāo)及功能92.2數(shù)據(jù)庫(kù)設(shè)計(jì)102.2.1 概念結(jié)構(gòu)設(shè)計(jì)102.2.2 邏輯結(jié)構(gòu)設(shè)計(jì)10第3章 系統(tǒng)詳細(xì)設(shè)

11、計(jì)133.1 系統(tǒng)詳細(xì)設(shè)計(jì)概述133.2 數(shù)據(jù)庫(kù)設(shè)計(jì)133.2.1 創(chuàng)建數(shù)據(jù)表133.2.2 數(shù)據(jù)庫(kù)鏈接與使用143.3 系統(tǒng)詳細(xì)設(shè)計(jì)153.3.1 系統(tǒng)主窗體模塊153.3.2 游戲管理模塊183.3.3 游戲時(shí)間繪制模塊203.3.4 用戶(hù)管理模塊253.3.5 驅(qū)動(dòng)模塊273.3.6 其他30第4章 軟件測(cè)試334.1 測(cè)試方法334.2 項(xiàng)目測(cè)試33第5章 結(jié)論36參考文獻(xiàn)37致 謝38IV沈陽(yáng)工業(yè)大學(xué)本科生畢業(yè)設(shè)計(jì)(論文)第1章 引言1.1系統(tǒng)開(kāi)發(fā)背景及意義隨著文化創(chuàng)意產(chǎn)業(yè)在全球的興起,國(guó)家已經(jīng)將文化創(chuàng)意產(chǎn)業(yè)作為未來(lái)經(jīng)濟(jì)發(fā)展的重要?jiǎng)恿χ唬螒虍a(chǎn)業(yè)正是文化創(chuàng)意產(chǎn)業(yè)的重要支柱。政府對(duì)

12、于游戲產(chǎn)業(yè)一方面要扶持,一方面要盡量降低游戲產(chǎn)業(yè)興起帶來(lái)的社會(huì)負(fù)面效應(yīng)。網(wǎng)絡(luò)游戲產(chǎn)業(yè)的發(fā)展不僅僅需要約束,也需要扶持,規(guī)范網(wǎng)絡(luò)游戲健康發(fā)展是社會(huì)、政府、產(chǎn)業(yè)的共同責(zé)任。政府在這樣的系統(tǒng)工程里需要扮演一個(gè)協(xié)調(diào)的角色,而防沉迷系統(tǒng)的發(fā)布只是政府協(xié)調(diào)的行動(dòng)之一。網(wǎng)絡(luò)游戲作為一種商業(yè)模式的存在,它的產(chǎn)生和興盛是市場(chǎng)作用下的產(chǎn)物。產(chǎn)業(yè)本身不僅創(chuàng)造了很大的商業(yè)價(jià)值,解決了大量的就業(yè)問(wèn)題,同時(shí)網(wǎng)絡(luò)游戲?qū)ο嚓P(guān)的行業(yè)也有非常大的拉動(dòng)作用。游戲沉迷問(wèn)題不是一個(gè)簡(jiǎn)單的產(chǎn)業(yè)問(wèn)題,而是社會(huì)問(wèn)題。在目前的社會(huì)環(huán)境下兒童、青少年沉迷于網(wǎng)絡(luò)游戲是有潛在的社會(huì)原因存在。解決游戲沉迷問(wèn)題,需要政府、游戲廠商、社會(huì)、家長(zhǎng)、學(xué)校等多

13、方面的努力,而解決這樣的社會(huì)問(wèn)題還需要其他方的參與和努力。面對(duì)網(wǎng)絡(luò)游戲帶來(lái)的社會(huì)負(fù)面影響,政府做出了限制其負(fù)面影響的規(guī)定,網(wǎng)絡(luò)游戲產(chǎn)業(yè)作為一個(gè)只有幾年發(fā)展歷史的新鮮事務(wù),為原有的社會(huì)及市場(chǎng)帶來(lái)了很多新情況和影響,這里面既有積極的一面也有消極的一面。在這種情況下,游戲防沉迷系統(tǒng)在允許青少年適度游戲的同時(shí),嚴(yán)格限制游戲時(shí)間,來(lái)達(dá)到避免沉迷游戲的目的,無(wú)論從對(duì)游戲行業(yè)的發(fā)展或者對(duì)一些社會(huì)性問(wèn)題來(lái)說(shuō),計(jì)算機(jī)游戲防沉迷系統(tǒng)的研究就變得非常的有意義。1.2課題研究?jī)?nèi)容和對(duì)研究過(guò)程中出現(xiàn)問(wèn)題的解決課題要研究計(jì)算機(jī)游戲防沉迷系統(tǒng)的開(kāi)發(fā)與設(shè)計(jì)。防沉迷,是為了防止兒童、青少年沉迷游戲而發(fā)展起來(lái)的。它是對(duì)游戲時(shí)間進(jìn)

14、行嚴(yán)格的控制來(lái)達(dá)到防止沉迷的目的,當(dāng)游戲到達(dá)監(jiān)控者預(yù)定的時(shí)間時(shí),屏蔽游戲除存盤(pán)之外的其他操作。監(jiān)控者可以查詢(xún)一定時(shí)間內(nèi)某個(gè)游戲的運(yùn)行時(shí)間,系統(tǒng)會(huì)根據(jù)選擇的時(shí)間繪制出游戲時(shí)間的變化趨勢(shì),并采取相應(yīng)的措施比如及時(shí)的更新游戲的監(jiān)控時(shí)間,來(lái)達(dá)到更有效的管理。這個(gè)系統(tǒng)最終實(shí)現(xiàn)的主要功能如下:1. 游戲部分:主要完成游戲時(shí)間的統(tǒng)計(jì)、更新、查詢(xún)、繪制;2. 監(jiān)控部分:主要是限制游戲者的操作;3. 用戶(hù)部分:主要完成用戶(hù)的管理;4. 驅(qū)動(dòng)部分:主要起到進(jìn)程保護(hù)的作用。那么,一個(gè)比較完善的游戲防沉迷系統(tǒng)應(yīng)該包括以下模塊:1. 游戲管理模塊:監(jiān)控游戲的錄入、更新、刪除等;2. 游戲監(jiān)控模塊:定點(diǎn)更新、實(shí)時(shí)監(jiān)控、記

15、錄增加;3. 時(shí)間繪制模塊:游戲時(shí)間查詢(xún)、游戲時(shí)間的繪制;4. 用戶(hù)管理模塊:密碼修改、用戶(hù)登錄;5. 驅(qū)動(dòng)模塊:驅(qū)動(dòng)安裝、驅(qū)動(dòng)卸載、驅(qū)動(dòng)控制。系統(tǒng)具有維護(hù)游戲信息的功能。為了方便,對(duì)各個(gè)游戲進(jìn)行編號(hào),每個(gè)編號(hào)對(duì)應(yīng)一個(gè)游戲關(guān)于游戲監(jiān)控時(shí)間的描述。每條游戲運(yùn)行時(shí)間的記錄對(duì)應(yīng)一個(gè)編號(hào),方便系統(tǒng)統(tǒng)計(jì)游戲運(yùn)行時(shí)間和繪制游戲時(shí)間的變化趨勢(shì)。1.4 SQL語(yǔ)言介紹用戶(hù)對(duì)數(shù)據(jù)庫(kù)的使用,是通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)提供的語(yǔ)言來(lái)實(shí)現(xiàn)的。不同的數(shù)據(jù)庫(kù)管理系統(tǒng)提供不同的數(shù)據(jù)庫(kù)語(yǔ)言。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)幾乎都提供關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL。SQL 的全稱(chēng)是Structured Query Language,即結(jié)構(gòu)化查詢(xún)語(yǔ)言。SQ

16、L語(yǔ)句可以從關(guān)系數(shù)據(jù)庫(kù)中獲得數(shù)據(jù),也可以建立數(shù)據(jù)庫(kù)、增加數(shù)據(jù)、修改數(shù)據(jù)。1986年ANSI采用SQL語(yǔ)言作為關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言,后被國(guó)際化標(biāo)準(zhǔn)組織(ISO)采納為國(guó)際標(biāo)準(zhǔn)。SQL語(yǔ)言使用方便、功能豐富、簡(jiǎn)潔易學(xué),是操作數(shù)據(jù)庫(kù)的工業(yè)標(biāo)準(zhǔn)語(yǔ)言,得到廣泛地應(yīng)用。SQL語(yǔ)言是一種非過(guò)程化語(yǔ)言,它一次處理一個(gè)記錄集合,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL語(yǔ)言允許用戶(hù)在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作。SQL語(yǔ)言可以完成許多功能,例如:查詢(xún)數(shù)據(jù);在數(shù)據(jù)庫(kù)表格中插入、修改和刪除記錄;建立、修改和刪除數(shù)據(jù)對(duì)象;控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取;確保數(shù)據(jù)庫(kù)的一致性和完整性等。1.4.1 SQL查詢(xún)數(shù)據(jù)查詢(xún)是關(guān)

17、系運(yùn)算理論在SQL語(yǔ)言中的主要體現(xiàn),SELECT 語(yǔ)句是SQL查詢(xún)的基本語(yǔ)句,當(dāng)對(duì)一個(gè)數(shù)據(jù)庫(kù)進(jìn)各種各樣的操作時(shí),使用的最多的就是數(shù)據(jù)查詢(xún),在以SQL為基礎(chǔ)的關(guān)系數(shù)據(jù)庫(kù)中,使用的最多的就是SELECT查詢(xún)語(yǔ)句。SELECT語(yǔ)句的完整句法如下:SELECT 目標(biāo)表的列名或列表達(dá)式序列FROM 基本表和(或)視圖序列WHERE 行條件表達(dá)式GROUP BY 列名序列HAVING 組條件表達(dá)式ORDER BY列名 ASCDEAC在SQL的查詢(xún)中還會(huì)涉及到模糊查詢(xún),這就需要使用模式匹配符LIKE(判斷值是否與指定的字符通配格式相符)。在包含LIKE的查詢(xún)語(yǔ)句中可以使用兩個(gè)通配符:%(百分號(hào))。系統(tǒng)查詢(xún)中

18、的條件判斷往往包含多個(gè)條件,這時(shí)就需要使用邏輯運(yùn)算符NOT、AND、OR(用于多條件的邏輯連接),謂詞ALL以及保留字DISTINCT等等。做為SELECT語(yǔ)句還有很多的使用方法,這里就不再敘述。1.4.2 SQL數(shù)據(jù)更新使用數(shù)據(jù)庫(kù)的目的是為了有效地管理數(shù)據(jù),而數(shù)據(jù)的插入、刪除和修改則是必不可少的一個(gè)功能,現(xiàn)做一個(gè)簡(jiǎn)單地介紹。數(shù)據(jù)插入,往數(shù)據(jù)庫(kù)的基本表中插入數(shù)據(jù)使用的是INSERT語(yǔ)句,其方式有兩種:一種是元組值的插入,另一種是查詢(xún)結(jié)果的插入。在系統(tǒng)中使用的是前一種方式,其句法如下:INSERT INTO 基本表名(列表名)VALUES(元組值)數(shù)據(jù)刪除,往數(shù)據(jù)庫(kù)的基本表中刪除數(shù)據(jù)使用的是DE

19、LETE語(yǔ)句,其句法如下:DELETE FROM 基本表名 WHERE 條件表達(dá)式刪除語(yǔ)句實(shí)際上是“SELECT * FROM 基本表名 WHERE 條件表達(dá)式”和DELETE操作的結(jié)合,每找到一個(gè)元組,就把它刪除。此外,DELETE語(yǔ)句只能從一個(gè)基本表中刪除元組,WHERE子句中條件可以嵌套,也可以是來(lái)自幾個(gè)基本表的復(fù)合條件。數(shù)據(jù)修改,當(dāng)需要修改基本表中元組的某些列的值時(shí),可以用UPDATE語(yǔ)句實(shí)現(xiàn),其句法如下:UPDATE基本表名SET列名=值表達(dá)式,列名=值表達(dá)式WHERE條件表達(dá)式1.5 系統(tǒng)開(kāi)發(fā)工具1.5.1 VC+ 6.0工具簡(jiǎn)介VC+ 6.0是Microsoft公司推出的一個(gè)基于

20、Windows系統(tǒng)平臺(tái)、可視化的集成開(kāi)發(fā)環(huán)境,它的源程序按C+語(yǔ)言的要求編寫(xiě),并加入了微軟提供的功能強(qiáng)大的MFC(Microsoft Foundation Class)類(lèi)庫(kù)。MFC中封裝了大部分Windows API函數(shù)和Windows控件,它包含的功能涉及到整個(gè)Windows操作系統(tǒng)。MFC不僅給用戶(hù)提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件,這樣,開(kāi)發(fā)人員不必從頭設(shè)計(jì)創(chuàng)建和管理一個(gè)標(biāo)準(zhǔn)Windows應(yīng)用程序所需的程序,而是從一個(gè)比較高的起點(diǎn)編程,故節(jié)省了大量的時(shí)間。另外,它提供了大量的代碼,指導(dǎo)用戶(hù)編程時(shí)實(shí)現(xiàn)某些技術(shù)和功能。因此,使用VC+提供的高度可視化

21、的應(yīng)用程序開(kāi)發(fā)工具和MFC類(lèi)庫(kù),可使應(yīng)用程序開(kāi)發(fā)變得簡(jiǎn)單。調(diào)試的步驟:1) 保存為C或C+文件;2) 根據(jù)斷點(diǎn)調(diào)試找到錯(cuò)誤處;3) 采用F10或F11單步調(diào)試找到精確的錯(cuò)誤處。其中f10是跳過(guò)函數(shù)調(diào)用,F(xiàn)11是進(jìn)入函數(shù)體調(diào)試。一般是先用F10,確定函數(shù)輸入輸出是否正確,如不一樣,則用F11進(jìn)入函數(shù)體一步一步調(diào)試;4) 在調(diào)試過(guò)程中,肯定得監(jiān)視程序中的變量。在vc+6.0的右下角有一個(gè)watch窗口,專(zhuān)門(mén)用來(lái)設(shè)置監(jiān)視變量。具體怎樣設(shè)置自己體會(huì)吧。在調(diào)試過(guò)程中,鼠標(biāo)輕輕放在變量上也會(huì)顯示該變量的值;5) Vc+6.0專(zhuān)門(mén)為調(diào)試設(shè)置了工具箱以方便調(diào)試的進(jìn)行,打開(kāi)的方法如下。右鍵->在debug

22、(或調(diào)試)選擇項(xiàng)的勾勾上。4-61.5.2 Access數(shù)據(jù)庫(kù)簡(jiǎn)介Access 是微軟公司推出的基于Windows的桌面關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),是Office系列應(yīng)用軟件之一。它提供了表、查詢(xún)、窗體、報(bào)表、頁(yè)、宏、模塊7種用來(lái)建立數(shù)據(jù)庫(kù)系統(tǒng)的對(duì)象;提供了多種向?qū)А⑸善?、模板,把?shù)據(jù)存儲(chǔ)、數(shù)據(jù)查詢(xún)、界面設(shè)計(jì)、報(bào)表生成等操作規(guī)范化;為建立功能完善的數(shù)據(jù)庫(kù)管理系統(tǒng)提供了方便,也使得普通用戶(hù)不必編寫(xiě)代碼,就可以完成大部分?jǐn)?shù)據(jù)管理的任務(wù)。Access能夠存取 Access/Jet、Microsoft SQL Server、Oracle(甲骨文軟件公司),或者任何 ODBC 兼容數(shù)據(jù)庫(kù)內(nèi)的資料。熟練的軟件設(shè)

23、計(jì)師和資料分析師利用它來(lái)開(kāi)發(fā)應(yīng)用軟件,而一些不熟練的程序員和非程序員的"進(jìn)階用戶(hù)"則能使用它來(lái)開(kāi)發(fā)簡(jiǎn)單的應(yīng)用軟件。雖然它支援部分面向?qū)ο螅∣O)技術(shù),但是未能成為一種完整的面向?qū)ο箝_(kāi)發(fā)工具。1Access的優(yōu)點(diǎn)(1)存儲(chǔ)方式簡(jiǎn)單,易于維護(hù)管理,Access管理的對(duì)象有表、查詢(xún)、窗體、報(bào)表、頁(yè)、宏和模塊,以上對(duì)象都存放在后綴為(.mdb或.accdb)的數(shù)據(jù)庫(kù)文件中,便于用戶(hù)的操作和管理。(2)面向?qū)ο?,Access是一個(gè)面向?qū)ο蟮拈_(kāi)發(fā)工具,利用面向?qū)ο蟮姆绞綄?shù)據(jù)庫(kù)系統(tǒng)中的各種功能對(duì)象化,將數(shù)據(jù)庫(kù)管理的各種功能封裝在各類(lèi)對(duì)象中。它將一個(gè)應(yīng)用系統(tǒng)當(dāng)作是由一系列對(duì)象組成的,對(duì)每

24、個(gè)對(duì)象它都定義一組方法和屬性,以定義該對(duì)象的行為和外國(guó),用戶(hù)還可以按需要給對(duì)象擴(kuò)展方法和屬性。通過(guò)對(duì)象的方法、屬性完成數(shù)據(jù)庫(kù)的操作和管理,極大地簡(jiǎn)化了用戶(hù)的開(kāi)發(fā)工作。同時(shí),這種基于面向?qū)ο蟮拈_(kāi)發(fā)方式,使得開(kāi)發(fā)應(yīng)用程序更為簡(jiǎn)便。(3)界面友好、易操作,Access是一個(gè)可視化工具,是風(fēng)格與Windows完全一樣,用戶(hù)想要生成對(duì)象并應(yīng)用,只要使用鼠標(biāo)進(jìn)行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢(xún)生成器、報(bào)表設(shè)計(jì)器以及數(shù)據(jù)庫(kù)向?qū)?、表向?qū)А⒉樵?xún)向?qū)А⒋绑w向?qū)?、?bào)表向?qū)У裙ぞ?,使得操作?jiǎn)便,容易使用和掌握。(4)集成環(huán)境、處理多種數(shù)據(jù)信息,Access基于Windows操作系統(tǒng)下的集成開(kāi)發(fā)環(huán)境,

25、該環(huán)境集成了各種向?qū)Ш蜕善鞴ぞ?,極大地提高了開(kāi)發(fā)人員的工作效率,使得建立數(shù)據(jù)庫(kù)、創(chuàng)建表、設(shè)計(jì)用戶(hù)界面、設(shè)計(jì)數(shù)據(jù)查詢(xún)、報(bào)表打印等可以方便有序地進(jìn)行。(5)Access支持ODBC(開(kāi)發(fā)數(shù)據(jù)庫(kù)互連,Open Data Base Connectivity),利用Access強(qiáng)大的DDE(動(dòng)態(tài)數(shù)據(jù)交換)和OLE(對(duì)象的聯(lián)接和嵌入)特性,可以在一個(gè)數(shù)據(jù)表中嵌入位圖、聲音、Excel表格、Word文檔,還可以建立動(dòng)態(tài)的數(shù)據(jù)庫(kù)報(bào)表和窗體等。Access還可以將程序應(yīng)用于網(wǎng)絡(luò),并與網(wǎng)絡(luò)上的動(dòng)態(tài)數(shù)據(jù)相聯(lián)接。利用數(shù)據(jù)庫(kù)訪問(wèn)頁(yè)對(duì)象生成HTML文件,輕松構(gòu)建Internet/Intranet的應(yīng)用。(6)支持廣泛,

26、易于擴(kuò)展,彈性較大,能夠?qū)⑼ㄟ^(guò)鏈接表的方式來(lái)打開(kāi)EXCEL文件、格式化文本文件等,這樣就可以利用數(shù)據(jù)庫(kù)的高效率對(duì)其中的數(shù)據(jù)進(jìn)行查詢(xún)、處理。還可以通過(guò)以Access作為前臺(tái)客戶(hù)端,以SQL Server作為后臺(tái)數(shù)據(jù)庫(kù)的方式(如ADP)開(kāi)發(fā)大型數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。總之,Access是一個(gè)既可以只用來(lái)存放數(shù)據(jù)的數(shù)據(jù)庫(kù),也可以作為一個(gè)客戶(hù)端開(kāi)發(fā)工具來(lái)進(jìn)行數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā);即可以開(kāi)發(fā)方便易用的小型軟件,也可以用來(lái)開(kāi)發(fā)大型的應(yīng)用系統(tǒng)。2Access的缺點(diǎn)(1)數(shù)據(jù)庫(kù)過(guò)大,一般百M(fèi)以上(純數(shù)據(jù),不包括窗體、報(bào)表等客戶(hù)端對(duì)象)性能會(huì)變差。(2)雖然理論上支持255個(gè)并發(fā)用戶(hù),但實(shí)際上根本支持不了那么多,如果以只

27、讀方式訪問(wèn)大概在100個(gè)用戶(hù)左右,而如果是并發(fā)編輯,則大概在10-20個(gè)用戶(hù)。(3)記錄數(shù)過(guò)多,單表記錄數(shù)過(guò)百萬(wàn)性能就會(huì)變得較差,如果加上設(shè)計(jì)不良,這個(gè)限度還要降低。(4)不能編譯成可執(zhí)行文件(.exe),必須要安裝Access運(yùn)行環(huán)境才能使用。第2章 系統(tǒng)總體設(shè)計(jì)2.1 系統(tǒng)分析 本節(jié)針對(duì)計(jì)算機(jī)游戲防沉迷系統(tǒng)的設(shè)計(jì)任務(wù)進(jìn)行論述,對(duì)整個(gè)計(jì)算機(jī)游戲防沉迷系統(tǒng)進(jìn)行問(wèn)題分析,闡述一個(gè)比較好的游戲防沉迷系統(tǒng)主要具體的特征。需求分析,預(yù)期目標(biāo)及功能等。2.1.1 問(wèn)題分析在網(wǎng)絡(luò)游戲產(chǎn)業(yè)蓬勃發(fā)展的今天,未成年人沉迷網(wǎng)游已成為突出的社會(huì)問(wèn)題。越來(lái)越多的防沉迷系統(tǒng)開(kāi)始出現(xiàn),他們的核心內(nèi)容是控制游戲的收益即:未

28、成年人累計(jì)3小時(shí)以?xún)?nèi)的游戲時(shí)間為“健康”游戲時(shí)間,超過(guò)3小時(shí)后的2小時(shí)游戲時(shí)間為"疲勞"時(shí)間,在此時(shí)間段,玩家獲得的游戲收益將減半。如累計(jì)游戲時(shí)間超過(guò)5小時(shí)即為"不健康"游戲時(shí)間,玩家的收益降為0,以此迫使未成年人下線休息、學(xué)習(xí)。但是因?yàn)榍嗌倌觊L(zhǎng)期陷于游戲中,如果沒(méi)有一個(gè)過(guò)渡的過(guò)程,防沉迷的效果會(huì)微乎其微。所以一個(gè)以控制游戲運(yùn)行時(shí)間,并能根據(jù)實(shí)際的情況來(lái)實(shí)時(shí)調(diào)整監(jiān)控時(shí)間來(lái)防止青少年沉迷的系統(tǒng)就顯得必不可少,隨著這個(gè)問(wèn)題的出現(xiàn),一個(gè)比較好的防沉迷系統(tǒng)主要有以下幾個(gè)方面的特征:1) 防沉迷系統(tǒng)可以讓管理員根據(jù)被監(jiān)控者的沉迷程度隨時(shí)更改監(jiān)控的時(shí)間,系統(tǒng)會(huì)根據(jù)管

29、理員的要求,繪制出一個(gè)監(jiān)控者最近的游戲時(shí)間長(zhǎng)短的變化趨勢(shì);2) 防沉迷系統(tǒng)可以監(jiān)控運(yùn)行的游戲,當(dāng)游戲運(yùn)行到預(yù)定的時(shí)間時(shí),會(huì)限制用戶(hù)的操作,如屏蔽除存盤(pán)之外的其他操作;3) 防沉迷系統(tǒng)可以提供預(yù)監(jiān)控游戲的增加和刪除,并根據(jù)需要實(shí)時(shí)更新游戲信息;4) 防沉迷系統(tǒng)可以提供的權(quán)限管理機(jī)制,包括退出系統(tǒng)和修改信息時(shí)需要用戶(hù)驗(yàn)證,并提供修改用戶(hù)信息的功能;5) 防沉迷系統(tǒng)可以提供用戶(hù)查詢(xún)某個(gè)游戲,某段時(shí)間內(nèi)的運(yùn)行時(shí)間;6) 防沉迷系統(tǒng)從內(nèi)核層面提供進(jìn)程保護(hù)功能,不會(huì)通過(guò)任務(wù)管理器等正常手段關(guān)閉。目前的計(jì)算機(jī)游戲防沉迷系統(tǒng)存在一些普遍性問(wèn)題:1) 對(duì)游戲的運(yùn)行時(shí)間是一個(gè)既定的限制,沒(méi)有因人而異,不夠科學(xué);2

30、) 沒(méi)有針對(duì)所有的計(jì)算機(jī)游戲;3) 系統(tǒng)安全性問(wèn)題較大。綜上所述,計(jì)算機(jī)游戲防沉迷系統(tǒng)的的設(shè)計(jì)開(kāi)發(fā),對(duì)于促進(jìn)青少年投入學(xué)習(xí)、提高自身實(shí)力,提高青少年的社會(huì)責(zé)任感有十分重要的意義。一個(gè)優(yōu)秀的計(jì)算機(jī)游戲防沉迷系統(tǒng)應(yīng)能根據(jù)不同人,不同時(shí)間做出不同的監(jiān)控措施。2.1.2 需求分析計(jì)算機(jī)游戲防沉迷系統(tǒng)為了防止青少年沉迷在游戲當(dāng)中,會(huì)允許游戲者游戲一段時(shí)間的情況下,嚴(yán)格控制游戲時(shí)間來(lái)達(dá)到這個(gè)目的,系統(tǒng)將從操作系統(tǒng)底層來(lái)解決此問(wèn)題,會(huì)涉及到windows編程,故所有的動(dòng)態(tài)鏈接庫(kù)、鉤子函數(shù)都將采用windows的API函數(shù),對(duì)累計(jì)時(shí)間的存取將采用數(shù)據(jù)庫(kù)的形式,來(lái)預(yù)防當(dāng)系統(tǒng)退出時(shí)不能準(zhǔn)確的統(tǒng)計(jì)游戲的時(shí)間。系統(tǒng)通

31、過(guò)嚴(yán)格的限制游戲者的時(shí)間來(lái)達(dá)到防止沉迷的目的,系統(tǒng)運(yùn)行之后,如果被監(jiān)測(cè)的游戲運(yùn)行,則軟件應(yīng)該會(huì)監(jiān)測(cè)到其啟動(dòng),在監(jiān)視的列表中標(biāo)記其運(yùn)行狀態(tài),并實(shí)時(shí)更新監(jiān)測(cè)游戲的運(yùn)行時(shí)間,然后判斷是否超過(guò)規(guī)定的時(shí)間,如果超過(guò)預(yù)定的時(shí)間,則用已安裝在動(dòng)態(tài)鏈接庫(kù)的全局鉤子,屏蔽掉存盤(pán)(F2)之外的其他任何操作。軟件具有定點(diǎn)更新信息,到零點(diǎn)的時(shí)候判斷當(dāng)天的運(yùn)行的時(shí)間是否為零,如果不為零,則說(shuō)明該游戲當(dāng)天運(yùn)行過(guò),把今天運(yùn)行過(guò)的游戲的時(shí)間統(tǒng)計(jì)出來(lái),然后在游戲運(yùn)行時(shí)間表中創(chuàng)建一條新的記錄,管理員統(tǒng)計(jì),并作出具體的監(jiān)控措施。系統(tǒng)提供錄入游戲、編輯游戲和刪除游戲的功能。為了方便管理系統(tǒng)的權(quán)限,系統(tǒng)提供維護(hù)密碼的功能,普通用戶(hù)關(guān)閉

32、此系統(tǒng)之后將用托盤(pán)技術(shù),放在任務(wù)欄里,但不能強(qiáng)制將其關(guān)閉,管理員用密碼可退出軟件,系統(tǒng)為了解決應(yīng)用層強(qiáng)制關(guān)閉進(jìn)程的問(wèn)題,還應(yīng)該編寫(xiě)一個(gè)額外的驅(qū)動(dòng)文件,通過(guò)HOOK系統(tǒng)底層函數(shù)的方法,實(shí)現(xiàn)進(jìn)程保護(hù),在游戲運(yùn)行前加載這個(gè)驅(qū)動(dòng)文件,達(dá)到有效的監(jiān)測(cè)游戲的目的。系統(tǒng)具有維護(hù)游戲信息的功能,為了方便,對(duì)各個(gè)游戲進(jìn)行編號(hào),每個(gè)編號(hào)對(duì)應(yīng)一個(gè)游戲關(guān)于游戲監(jiān)控時(shí)間的描述。每條游戲運(yùn)行的時(shí)間記錄對(duì)應(yīng)一個(gè)編號(hào),方便系統(tǒng)統(tǒng)計(jì)游戲運(yùn)行時(shí)間和繪制游戲運(yùn)行時(shí)間的變化趨勢(shì)。軟件具有友好的界面,便于與用戶(hù)交互。2.1.3 預(yù)期實(shí)現(xiàn)目標(biāo)及功能系統(tǒng)為了方便監(jiān)控者對(duì)沉迷游戲者的游戲時(shí)間進(jìn)行有效的監(jiān)控,軟件具有友好的界面,便于與用戶(hù)交互

33、,首先監(jiān)控者增加被監(jiān)控的游戲并添加月、周、日的監(jiān)控時(shí)間,軟件由操作系統(tǒng)監(jiān)測(cè)游戲運(yùn)行的時(shí)間,當(dāng)游戲運(yùn)行的時(shí)間超過(guò)預(yù)定的時(shí)間,則強(qiáng)行中止除存盤(pán)退出之外的游戲響應(yīng)。系統(tǒng)自帶游戲運(yùn)行時(shí)間統(tǒng)計(jì)功能,并繪制出游戲時(shí)間的趨勢(shì),讓監(jiān)控者直觀的看出游戲時(shí)間的分布,并可根據(jù)具體的情況來(lái)修改允許游戲運(yùn)行時(shí)間的長(zhǎng)短。通過(guò)對(duì)用戶(hù)需求的分析,可以分析出系統(tǒng)可以實(shí)現(xiàn)監(jiān)控游戲的錄入、更新、刪除等,定點(diǎn)更新,實(shí)時(shí)監(jiān)控,屏蔽除存盤(pán)之外的其他操作, 游戲時(shí)間查詢(xún)模塊,游戲時(shí)間繪制模塊,登錄模塊。系統(tǒng)功能的模塊圖,如圖2-1所示:圖2-1 系統(tǒng)功能模塊圖1. 游戲管理模塊:管理員對(duì)需監(jiān)控游戲的進(jìn)行錄入、更新,需要設(shè)置是否需要監(jiān)控,以

34、及需監(jiān)控的月周日的時(shí)間,以及刪除游戲信息等;2. 游戲監(jiān)控模塊:定點(diǎn)更新,當(dāng)?shù)竭_(dá)零點(diǎn)之后,把當(dāng)天的游戲運(yùn)行時(shí)間清零、實(shí)時(shí)監(jiān)控游戲的運(yùn)行時(shí)間是否超過(guò)月周日的預(yù)定時(shí)間、記錄增加,判斷當(dāng)天游戲是否運(yùn)行,如果運(yùn)行創(chuàng)建一條保存運(yùn)行時(shí)間和日期的記錄;3. 時(shí)間繪制模塊:某個(gè)游戲某個(gè)時(shí)間段的游戲時(shí)間查詢(xún)、根據(jù)選擇的時(shí)間來(lái)繪制游戲運(yùn)行時(shí)間的變化趨勢(shì);4. 用戶(hù)管理模塊:密碼的修改、當(dāng)用戶(hù)欲修改游戲信息或退出時(shí)需要用戶(hù)的登錄;5. 驅(qū)動(dòng)模塊:需要先裝載驅(qū)動(dòng),然后啟動(dòng)驅(qū)動(dòng),驅(qū)動(dòng)控制時(shí)傳進(jìn)一個(gè)要保護(hù)進(jìn)程的ID開(kāi)始保護(hù),最后卸載驅(qū)動(dòng)。2.2數(shù)據(jù)庫(kù)設(shè)計(jì)在信息世界中,從周?chē)@得信息,然后將獲得的信息轉(zhuǎn)化為數(shù)據(jù),再將數(shù)據(jù)返

35、回到現(xiàn)實(shí)世界中。而軟件系統(tǒng)的開(kāi)發(fā)工作需要考慮系統(tǒng)開(kāi)發(fā)所需要的數(shù)據(jù),以及如何對(duì)這些數(shù)據(jù)進(jìn)行操作。這兩個(gè)問(wèn)題貫穿了整個(gè)軟件系統(tǒng)的開(kāi)發(fā)過(guò)程,這也就是數(shù)據(jù)庫(kù)的設(shè)計(jì)問(wèn)題,軟件設(shè)計(jì)的一個(gè)核心。2.2.1 概念結(jié)構(gòu)設(shè)計(jì)將需求分析得到的用戶(hù)需求抽象為信息結(jié)構(gòu)即概念模型的過(guò)程就是概念結(jié)構(gòu)設(shè)計(jì)。在系統(tǒng)中采用的是自底向上的概念結(jié)構(gòu)設(shè)計(jì)方法,通過(guò)“實(shí)體聯(lián)系模型”(E-R模型)來(lái)描述數(shù)據(jù)庫(kù)的結(jié)構(gòu)與語(yǔ)義,以對(duì)現(xiàn)實(shí)世界進(jìn)行第一次抽象。E-R模型直接從現(xiàn)實(shí)世界抽象出實(shí)體類(lèi)型及實(shí)體間聯(lián)系,然后用E-R圖來(lái)表示數(shù)據(jù)模型。2.2.2 邏輯結(jié)構(gòu)設(shè)計(jì)(1)數(shù)據(jù)庫(kù)設(shè)計(jì):1) 用戶(hù)數(shù)據(jù)表:包括用戶(hù)名(主要用于登陸),密碼;2) 游戲信息表

36、:此表用來(lái)保存游戲的ID,名字,每月、周、日運(yùn)行的時(shí)間,以及月、周、日限制的時(shí)間,以及游戲的監(jiān)控狀態(tài);3) 運(yùn)行時(shí)間表:此表用于保存游戲每天運(yùn)行的時(shí)間,主要包括ID,游戲名,游戲日期和運(yùn)行時(shí)間。(2)根據(jù)需求分析得到防沉迷系統(tǒng)的E-R圖,如圖2-2所示:圖2-2 游戲防沉迷系統(tǒng)的E-R圖(3)表設(shè)計(jì)1)用戶(hù)表Userinfo:用于存儲(chǔ)能夠登陸系統(tǒng)的用戶(hù)的信息。字段設(shè)置如表2-1所示:表2-1 用戶(hù)信息表中文名稱(chēng)英文名稱(chēng)數(shù)據(jù)類(lèi)型數(shù)據(jù)長(zhǎng)度其他說(shuō)明用戶(hù)名username文本20作為主鍵密碼password文本20不可以為空2) 游戲信息表Gameinfo:此表用來(lái)保存游戲的ID,名字,每月、周、日運(yùn)

37、行的時(shí)間,以及月、周、日限制的時(shí)間,以及游戲的監(jiān)控狀態(tài)。字段設(shè)置如表2-2示:表2-2 游戲信息表中文名稱(chēng)英文名稱(chēng)數(shù)據(jù)類(lèi)型數(shù)據(jù)長(zhǎng)度其他說(shuō)明信息IDgame id數(shù)字4作為主鍵游戲名稱(chēng)game name文本20不允許為空月運(yùn)行時(shí)間month run time文本20允許為空續(xù)表2-2中文名稱(chēng)英文名稱(chēng)數(shù)據(jù)類(lèi)型數(shù)據(jù)長(zhǎng)度其他說(shuō)明周運(yùn)行時(shí)間week run time文本20允許為空日運(yùn)行時(shí)間day run time文本20允許為空月限制時(shí)間monthlimittime文本20允許為空周限制時(shí)間week limit time文本20允許為空日限制時(shí)間day limit time文本20允許為空監(jiān)控狀態(tài)st

38、atus文本20不允許為空3) 運(yùn)行時(shí)間信息表Runtimeinfo:此表用于保存游戲每天運(yùn)行的時(shí)間,主要包括ID,游戲名,游戲日期和運(yùn)行時(shí)間。字段設(shè)置如表2-3所示:表2-3 運(yùn)行時(shí)間信息表中文名稱(chēng)英文名稱(chēng)數(shù)據(jù)類(lèi)型數(shù)據(jù)長(zhǎng)度其他說(shuō)明信息編號(hào)ID數(shù)字4作為主鍵游戲名稱(chēng)game name文本20不允許為空運(yùn)行日期run data文本20不可以為空運(yùn)行時(shí)間runtime文本20不可以為空第3章 系統(tǒng)詳細(xì)設(shè)計(jì)3.1 系統(tǒng)詳細(xì)設(shè)計(jì)概述 本章主要包括數(shù)據(jù)庫(kù)的設(shè)計(jì),系統(tǒng)詳細(xì)設(shè)計(jì)兩大部分。數(shù)據(jù)庫(kù)的設(shè)計(jì)主要概括闡述選擇Microsoft Access數(shù)據(jù)庫(kù)的原因,系統(tǒng)數(shù)據(jù)庫(kù)的設(shè)計(jì),以及在開(kāi)發(fā)的過(guò)程中使用數(shù)據(jù)庫(kù)的

39、方法。系統(tǒng)詳細(xì)設(shè)計(jì)主要包括各個(gè)模塊的設(shè)計(jì)方法,以及每個(gè)模塊包含的主要代碼。3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)的數(shù)據(jù)庫(kù)采用的是Microsoft Access,它既可適用于桌面系統(tǒng)的單用戶(hù)數(shù)據(jù)庫(kù),也可適用于小型企業(yè)的網(wǎng)絡(luò)數(shù)據(jù)庫(kù),甚至適用于專(zhuān)業(yè)的WEB站點(diǎn)數(shù)據(jù)庫(kù),具有很強(qiáng)的可伸縮性。并且具有很高的可靠性、可用性和可管理性。從經(jīng)濟(jì)和開(kāi)發(fā)效率上適合中小型網(wǎng)站。它和VC+6.0同屬于微軟公司開(kāi)發(fā),在開(kāi)發(fā)接口有一致性,能更好的協(xié)調(diào)工作。Access數(shù)據(jù)庫(kù)具有以下優(yōu)點(diǎn):存儲(chǔ)方式簡(jiǎn)單、易于維護(hù)管理,面向?qū)ο?、界面友好、易操作、集成環(huán)境,處理多種數(shù)據(jù)信息、Access支持ODBC、支持廣泛,易于擴(kuò)展,彈性較大。總之,Acc

40、ess是一個(gè)既可以只用來(lái)存放數(shù)據(jù)的數(shù)據(jù)庫(kù),也可以作為一個(gè)客戶(hù)端開(kāi)發(fā)工具來(lái)進(jìn)行數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)開(kāi)發(fā);即可以開(kāi)發(fā)方便易用的小型軟件,也可以用來(lái)開(kāi)發(fā)大型的應(yīng)用系統(tǒng),所以系統(tǒng)采用Access數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)信息。3.2.1 創(chuàng)建數(shù)據(jù)表在Access中創(chuàng)建數(shù)據(jù)表,過(guò)程如下:1. 進(jìn)入到主頁(yè)面,選擇表,并用鼠標(biāo)右擊使用設(shè)計(jì)表創(chuàng)建表,選擇設(shè)計(jì)視圖。2. 定義字段。創(chuàng)建數(shù)據(jù)表最重要的步驟,在字段名稱(chēng)里面輸入字段,然后在數(shù)據(jù)類(lèi)型里面定義類(lèi)型,并在常規(guī)表單里面設(shè)置相應(yīng)的屬性。3. 定義主鍵字段,關(guān)鍵字字段的值在表中是唯一的,并且不允許為NULL。4. 保存數(shù)據(jù)表。表的字段定義完成后,單擊的保存按鈕,輸入表名稱(chēng)后,完成保

41、存操作。11-145. 用同樣的方法創(chuàng)建需要的所有表格。具體表格如表3-1到表3-3所示:表 3-1 UserInfo列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空username1文本20password1文本20表3-2 GameInfo列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空gameid數(shù)字4gamename文本20monthruntime文本20weekruntime文本20daytuntime文本20weeklimittime文本20daylimittime文本20status文本20表3-3 RuntimeInfo列名數(shù)據(jù)類(lèi)型長(zhǎng)度允許空ID數(shù)字4gamename文本20rundata文本20runtime文本203.2.2

42、 數(shù)據(jù)庫(kù)鏈接與使用建完數(shù)據(jù)庫(kù)之后,接下來(lái)就是要進(jìn)行數(shù)據(jù)庫(kù)的連接。系統(tǒng)采用ADO鏈接數(shù)據(jù)庫(kù)的方式,在連接數(shù)據(jù)庫(kù)之前需要構(gòu)造一個(gè)合理的連接字符串。鏈接數(shù)據(jù)庫(kù)的代碼: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:創(chuàng)建一個(gè)ADO的實(shí)例db1.mdb:欲鏈接的數(shù)據(jù)庫(kù)的名稱(chēng)執(zhí)行查詢(xún)語(yǔ)句的代碼:if(m_pConnection=NULL) OnInitADOConn();m_pRecordset.CreateInstance(_uuidof(Recordset);m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);執(zhí)行增、刪、改語(yǔ)句的代碼:if(m_pConnection = NULL)OnInitADOConn(

44、);m_pConnection->Execute(bstrSQL,NULL,adCmdText);以上就是鏈接和使用數(shù)據(jù)庫(kù)時(shí)所用的代碼,以上所有的代碼都封裝在CADOConn類(lèi)里面,使用的時(shí)候直接調(diào)用類(lèi)里面的方法即可。3.3 系統(tǒng)詳細(xì)設(shè)計(jì)3.3.1 系統(tǒng)主窗體模塊系統(tǒng)主窗體由左右兩個(gè)視圖組合而成,左邊的視圖以樹(shù)控件負(fù)責(zé)視圖的切換,右邊主要由MonitorManage、RunInfoCount、UserManege三個(gè)視圖之間來(lái)回切換組成。該頁(yè)面中主要的技術(shù)是如何控制視圖之間的切換,主要是通過(guò)以下四部分代碼進(jìn)行實(shí)現(xiàn):7-9 15-20(1)在左邊視圖CLeftPaneView的OnInit

45、ialUpdate函數(shù)中創(chuàng)建一個(gè)樹(shù)控件,然后插入三個(gè)節(jié)點(diǎn)。CTreeCtrl& treeCtrl = GetTreeCtrl();treeCtrl.InsertItem("MonitorManage", 0, 0);treeCtrl.InsertItem("RunInfoCount", 1, 1);treeCtrl.InsertItem("UserManage", 2, 2);(2)在主框架CMainFrame類(lèi)的OnCreateClient函數(shù)中添加創(chuàng)建三個(gè)視圖。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函數(shù)中判斷選擇的節(jié)點(diǎn)對(duì)應(yīng)的是哪個(gè)視圖,然后調(diào)用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函數(shù)中,根據(jù)判斷傳進(jìn)來(lái)的nViewType參數(shù)是MONITORVIEW,USERVIEW,RUNINFOVIEW三種類(lèi)型來(lái)切換到不同視圖。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;當(dāng)系統(tǒng)運(yùn)行時(shí),默認(rèn)顯示的是監(jiān)控游戲視圖的界面,如圖3-1所示:圖3-1系統(tǒng)主窗體界面當(dāng)系統(tǒng)運(yùn)行時(shí),默認(rèn)的界面是監(jiān)控游戲的界面,當(dāng)被監(jiān)控的游戲運(yùn)行時(shí),游戲?qū)?yīng)的開(kāi)始時(shí)間那一欄顯示

51、系統(tǒng)的當(dāng)前時(shí)間,游戲運(yùn)行的時(shí)間隨著游戲時(shí)間的進(jìn)行實(shí)時(shí)的增加,當(dāng)天游戲還可以運(yùn)行的剩下時(shí)間則實(shí)時(shí)的減少,游戲的狀態(tài)變成正在運(yùn)行的狀態(tài)。一直到監(jiān)控的游戲停止游戲或者退出游戲時(shí),狀態(tài)變成了不運(yùn)行的狀態(tài)。默認(rèn)界面監(jiān)控游戲視圖中的Add、Edit、Delete三個(gè)按鈕分別用來(lái)對(duì)游戲的信息進(jìn)行增加、編輯、刪除操作,游戲的信息用一個(gè)結(jié)構(gòu)體來(lái)操縱,包括游戲的編號(hào),游戲的名稱(chēng),開(kāi)始的時(shí)間,已經(jīng)運(yùn)行的時(shí)間,剩下的時(shí)間,以及當(dāng)前的狀態(tài)。3.3.2 游戲管理模塊(1)游戲信息的添加:主要是添加監(jiān)控游戲的信息。如圖3-2所示:圖3-2 監(jiān)控游戲的添加 因?yàn)殡S著每年新型游戲不斷的出現(xiàn),需要對(duì)新的游戲進(jìn)行監(jiān)控,添加游戲的工

52、程中,可以拉動(dòng)游戲的圖標(biāo)到路徑編輯框中,如果是.exe格式的,系統(tǒng)將自動(dòng)識(shí)別游戲的名稱(chēng),減少用戶(hù)的輸入,可增加游戲每天、每周、每月限制的時(shí)間。根據(jù)路徑來(lái)獲得名字的代碼如下: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、游戲信息編輯:由于考慮到要實(shí)時(shí)的觀察被監(jiān)控者的沉迷程度來(lái)調(diào)整監(jiān)控的時(shí)間,所以每個(gè)時(shí)期游戲需要監(jiān)控的時(shí)間應(yīng)該是不同的,也就是說(shuō),如果如果被監(jiān)控者的沉迷程度如果沒(méi)有減輕,就可適當(dāng)?shù)臏p少游戲的運(yùn)行時(shí)間,乃至于禁止游戲運(yùn)行(只需把限制的時(shí)間設(shè)置為零即可),如圖3-3所示:圖3-3 游戲信息的編輯因?yàn)榭紤]到方便管理員的使用,所以編輯游戲時(shí)只須在列表框中選擇一個(gè)游戲,然后點(diǎn)編輯,系統(tǒng)就會(huì)自動(dòng)加載該游戲的數(shù)據(jù),方便管理員的使用,減少不必要的輸入,當(dāng)點(diǎn)擊列表框的時(shí)候獲得一個(gè)ID,然后點(diǎn)編輯按鈕,系統(tǒng)根據(jù)ID值上數(shù)據(jù)庫(kù)中查詢(xún),然后獲得游戲的各個(gè)屬性,加載顯示到對(duì)話框中,并顯示出來(lái)。當(dāng)管理員欲修改游戲的信息時(shí),需

54、要首先登陸系統(tǒng)獲得足夠的權(quán)限,然后才能根據(jù)實(shí)際的情況修改完游戲的信息,點(diǎn)擊提交按鈕,更新數(shù)據(jù)庫(kù),其實(shí)現(xiàn)的主要代碼如下: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 游戲時(shí)間繪制模塊(1)游戲運(yùn)行時(shí)間查詢(xún):游戲運(yùn)行時(shí)間查詢(xún)的頁(yè)面主要包括查詢(xún)和繪制兩個(gè)功能,如圖3-4所示:圖3-4 游戲運(yùn)行時(shí)間查詢(xún)因?yàn)槊總€(gè)時(shí)期的控制時(shí)間可能不一樣,所以獲得某個(gè)游戲一段時(shí)間內(nèi)的游戲時(shí)間就顯得非常重要,便于繪制游戲時(shí)間變化趨勢(shì)。點(diǎn)擊查詢(xún)按鈕的時(shí)候,首先獲得開(kāi)始時(shí)間和結(jié)束時(shí)間和輸入的游戲名字,然后上數(shù)據(jù)庫(kù)中查詢(xún),如果沒(méi)有記錄,彈出一個(gè)對(duì)話框,提示沒(méi)有記錄,如果有記錄則獲得各個(gè)記錄的字段值,

56、然后插入到列表框中。(2)游戲運(yùn)行時(shí)間的繪制因?yàn)橐鶕?jù)實(shí)際情況有效的控制游戲的運(yùn)行時(shí)間,所以統(tǒng)計(jì)分析某段時(shí)間內(nèi)游戲運(yùn)行的時(shí)間就顯得格外重要,而分析的最直接的手段是讓管理員任意時(shí)間,然后繪制游戲運(yùn)行時(shí)間的變化趨勢(shì),由此直觀的獲得監(jiān)控效果,以及為下一步的監(jiān)控調(diào)整做好準(zhǔn)備。如圖3-5所示:圖3-5 游戲運(yùn)行時(shí)間趨勢(shì)1)首先在CRunInfoView的OnDraw函數(shù)中獲得游戲的名字,然后判斷列表框中的選擇框是否被選擇,如果被選擇的項(xiàng)的ID保存在數(shù)組里面,如果選擇的項(xiàng)超過(guò)7個(gè),則提示用戶(hù)重新選擇,然后調(diào)用畫(huà)圖的對(duì)話框。2)CDrawDlg對(duì)話框類(lèi)得作用主要用來(lái)繪圖,在對(duì)話框的OnPaint函數(shù)中繪制坐標(biāo)軸曲線,先進(jìn)行坐標(biāo)轉(zhuǎn)換,然后畫(huà)橫縱坐標(biāo)軸,然后根據(jù)ID數(shù)組從數(shù)據(jù)庫(kù)中取出運(yùn)行時(shí)間和運(yùn)行日期字段分別保存在runtime和rundata數(shù)組中,并統(tǒng)計(jì)總的運(yùn)行時(shí)間,然后根據(jù)runtime和rundata的值在已經(jīng)轉(zhuǎn)換過(guò)的坐標(biāo)軸上畫(huà)出點(diǎn),并連成線描繪出變化的趨勢(shì)。代碼如下:void CDrawDlg:OnPaint() CPaintDC dc(t

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論