版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、用戶興趣事態(tài)數(shù)據(jù)管理系統(tǒng)引 言當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。尤其對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好用戶興趣的事態(tài)數(shù)據(jù)而設(shè)計(jì)的。數(shù)據(jù)庫管理系統(tǒng)(DBMS)是指數(shù)據(jù)庫系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。DBMS是數(shù)據(jù)庫系統(tǒng)的核心組成部分。對(duì)數(shù)據(jù)庫的一切操作,包括定義、更新及各種控制,都是通過DBMS進(jìn)行的。DBMS
2、總是基于某種數(shù)據(jù)模型,可以把DBMS看成是某種數(shù)據(jù)模型在計(jì)算機(jī)系統(tǒng)上的具體實(shí)現(xiàn)。根據(jù)數(shù)據(jù)模型的不同,DBMS可以分成層次型、網(wǎng)狀型、關(guān)系型、面向?qū)ο笮偷?。Microsoft Access 2000就是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。用戶興趣事態(tài)數(shù)據(jù)管理系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫。而對(duì)于后者則要求應(yīng)用程序功能完備,易使用等特點(diǎn)。本人結(jié)合用戶興趣事態(tài)數(shù)據(jù)管理系統(tǒng)的要求,對(duì)Microsoft Access 2000數(shù)據(jù)庫管理系統(tǒng)、SQL語言原理、VB應(yīng)用程序設(shè)計(jì),VB數(shù)據(jù)庫
3、技術(shù)進(jìn)行了較深入的學(xué)習(xí)和應(yīng)用,主要完成對(duì)用戶興趣事態(tài)數(shù)據(jù)管理系統(tǒng)的需求分析、功能模塊劃分、數(shù)據(jù)庫模式分析,并由此設(shè)計(jì)了數(shù)據(jù)庫結(jié)構(gòu)和開發(fā)了應(yīng)用程序。系統(tǒng)運(yùn)行結(jié)果證明,本文所設(shè)計(jì)的用戶興趣事態(tài)數(shù)據(jù)管理系統(tǒng)可以滿足用戶的需要。作者:日期:第一章 數(shù)據(jù)庫理論基礎(chǔ)一個(gè)成功的信息管理系統(tǒng),是建立在許多條件之上的,而數(shù)據(jù)庫是其中一個(gè)非常重要的條件和關(guān)鍵技術(shù)。本章分?jǐn)?shù)據(jù)庫設(shè)計(jì)、SQL基礎(chǔ)和SQL語句三節(jié)。第一節(jié) 數(shù)據(jù)庫設(shè)計(jì) 數(shù)據(jù)庫設(shè)計(jì)主要是進(jìn)行數(shù)據(jù)庫的邏輯設(shè)計(jì),即將數(shù)據(jù)按一定的分類、分組系統(tǒng)和邏輯層次組織起來,是面向用戶的。數(shù)據(jù)庫設(shè)計(jì)時(shí)需要綜合企業(yè)各個(gè)部門的存檔數(shù)據(jù)和數(shù)據(jù)需求,分析各個(gè)數(shù)據(jù)之間的關(guān)系,按照DB
4、MS提供的功能和描述工具,設(shè)計(jì)出規(guī)模適當(dāng)、正確反映數(shù)據(jù)關(guān)系、數(shù)據(jù)冗余少、存取效率高、能滿足多種查詢要求的數(shù)據(jù)模型。數(shù)據(jù)庫設(shè)計(jì)的步驟是:1、數(shù)據(jù)庫結(jié)構(gòu)定義:目前的數(shù)據(jù)庫管理系統(tǒng)(DBMS)有的是支持聯(lián)機(jī)事務(wù)處理CLTP(負(fù)責(zé)對(duì)事務(wù)數(shù)據(jù)進(jìn)行采集、處理、存儲(chǔ))的操作型DBMS,有的可支持?jǐn)?shù)據(jù)倉庫、有聯(lián)機(jī)分析處理CLAP(指為支持決策的制定對(duì)數(shù)據(jù)的一種加工操作)功能的大型DBMS,有的數(shù)據(jù)庫是關(guān)系型的、有的可支持面向?qū)ο髷?shù)據(jù)庫。針對(duì)選擇的DBMS,進(jìn)行數(shù)據(jù)庫結(jié)構(gòu)定義。2、數(shù)據(jù)表定義:數(shù)據(jù)表定義指定義數(shù)據(jù)庫中數(shù)據(jù)表的結(jié)構(gòu),數(shù)據(jù)表的邏輯結(jié)構(gòu)包括:屬性名稱、類型、表示形式、缺省值、校驗(yàn)規(guī)則、是否關(guān)鍵字、可否
5、為空等。關(guān)系型數(shù)據(jù)庫要盡量按關(guān)系規(guī)范化要求進(jìn)行數(shù)據(jù)庫設(shè)計(jì),但為使效率高,規(guī)范化程度應(yīng)根據(jù)應(yīng)用環(huán)境和條件來決定。數(shù)據(jù)表設(shè)計(jì)不僅要滿足數(shù)據(jù)存儲(chǔ)的要求,還要增加一些如反映有關(guān)信息、操作責(zé)任、中間數(shù)據(jù)的字段或臨時(shí)數(shù)據(jù)表。3、存儲(chǔ)設(shè)備和存儲(chǔ)空間組織:確定數(shù)據(jù)的存放地點(diǎn)、存儲(chǔ)路徑、存儲(chǔ)設(shè)備等,備份方案,對(duì)多版本如何保證一致性和數(shù)據(jù)的完整性。4、數(shù)據(jù)使用權(quán)限設(shè)置:針對(duì)用戶的不同使用要求,確定數(shù)據(jù)的用戶使用權(quán)限,確保數(shù)據(jù)安全。5、數(shù)據(jù)字典設(shè)計(jì):用數(shù)據(jù)字典描述數(shù)據(jù)庫的設(shè)計(jì),便于維護(hù)和修改。為了更好地組織數(shù)據(jù)和設(shè)計(jì)出實(shí)際應(yīng)用數(shù)據(jù)庫,應(yīng)該注意如下問題:規(guī)范化地重組數(shù)據(jù)結(jié)構(gòu):對(duì)數(shù)據(jù)進(jìn)行規(guī)范化表達(dá),這在后面將會(huì)具體討論
6、。關(guān)系數(shù)據(jù)結(jié)構(gòu)的建立:在進(jìn)行了數(shù)據(jù)基本結(jié)構(gòu)的規(guī)范化重組后,還必須建立整體數(shù)據(jù)的關(guān)系結(jié)構(gòu)。這一步設(shè)計(jì)完成后數(shù)據(jù)庫和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)工作基本完成,只待系統(tǒng)實(shí)現(xiàn)時(shí)將數(shù)據(jù)分析和數(shù)據(jù)字典的內(nèi)容代入到所設(shè)計(jì)的數(shù)據(jù)整體關(guān)系結(jié)構(gòu)中,一個(gè)規(guī)范化數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)就建立起來了。第二節(jié) SQL基礎(chǔ)SQL(Structured Query Language,結(jié)構(gòu)查詢語言)是一個(gè)功能強(qiáng)大的數(shù)據(jù)庫語言。SQL通常使用于數(shù)據(jù)庫的通訊。ANSI(美國國家標(biāo)準(zhǔn)學(xué)會(huì))聲稱,SQL是關(guān)系數(shù)據(jù)庫管理系統(tǒng)的標(biāo)準(zhǔn)語言。SQL語句通常用于完成一些數(shù)據(jù)庫的操作任務(wù),比如在數(shù)據(jù)庫中更新數(shù)據(jù),或者從數(shù)據(jù)庫中檢索數(shù)據(jù)。使用SQL的常見關(guān)系數(shù)據(jù)庫管理系統(tǒng)有
7、:Oracle、 Sybase、 Microsoft SQL Server、 Access等等。雖然絕大多數(shù)的數(shù)據(jù)庫系統(tǒng)使用SQL,但是它們同樣有它們自立另外的專有擴(kuò)展功能用于它們的系統(tǒng)。但是,標(biāo)準(zhǔn)的SQL命令,比如Select、 Insert、 Update、 Delete、 Create和 Drop常常被用于完成絕大多數(shù)數(shù)據(jù)庫的操作。SQL語言有著非常突出的優(yōu)點(diǎn),SQL語言是非過程化的語言、統(tǒng)一的語言、是所有關(guān)系數(shù)據(jù)庫的公共語言。非過程化語言:SQL是一個(gè)非過程化的語言,因?yàn)樗淮翁幚硪粋€(gè)記錄,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。SQL允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作,可操作記錄集,
8、所有SQL 語句接受集合作為輸入,返回集合作為輸出。SQL的集合特性允許一條SQL語句的結(jié)果作為另一條SQL語句的輸入。統(tǒng)一的語言:SQL可用于所有用戶的DB活動(dòng)模型,包括系統(tǒng)管理員、數(shù)據(jù)庫管理員、 應(yīng)用程序員、決策支持系統(tǒng)人員及許多其它類型的終端用戶。所有關(guān)系數(shù)據(jù)庫的公共語言:由于所有主要的關(guān)系數(shù)據(jù)庫管理系統(tǒng)都支持SQL語言,用戶可將使用SQL的技能從一個(gè)RDBMS(關(guān)系數(shù)據(jù)庫管理系統(tǒng))轉(zhuǎn)到另一個(gè),所有用SQL編寫的程序都是可以移植的。SQL為許多任務(wù)提供了命令,其中包括:查詢數(shù)據(jù)、在表中插入、修改和刪除記錄、建立、修改和刪除數(shù)據(jù)對(duì)象、控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取、保證數(shù)據(jù)庫一致性和完整性等。
9、以前的數(shù)據(jù)庫管理系統(tǒng)為上述各類操作提供單獨(dú)的語言,而SQL 將全部任務(wù)統(tǒng)一在一種語言中。第三節(jié) SQL語句SQL功能強(qiáng)大,是一種完備的數(shù)據(jù)處理語言,不僅用于數(shù)據(jù)庫查詢,而且用于數(shù)據(jù)庫中的數(shù)據(jù)修改和更新,概括起來,它可以分成以下幾組:DML(Data Manipulation Language,數(shù)據(jù)操作語言):用于檢索或者修改數(shù)據(jù);DDL(Data Definition Language,數(shù)據(jù)定義語言): 用于定義數(shù)據(jù)的結(jié)構(gòu),比如 創(chuàng)建、修改或者刪除數(shù)據(jù)庫對(duì)象;DCL(Data Control Language,數(shù)據(jù)控制語言):用于定義數(shù)據(jù)庫用戶的權(quán)限。DML組可以細(xì)分為以下的幾個(gè)語句:SELE
10、CT:用于檢索數(shù)據(jù);INSERT:用于增加數(shù)據(jù)到數(shù)據(jù)庫;UPDATE:用于從數(shù)據(jù)庫中修改現(xiàn)存的數(shù)據(jù);DELETE:用于從數(shù)據(jù)庫中刪除數(shù)據(jù)。DDL語句可以用于創(chuàng)建用戶和重建數(shù)據(jù)庫對(duì)象。下面是DDL命令:CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX,DROP INDEX。下面是一個(gè)簡(jiǎn)單SQL語句的例子:我們使用SQL語句來從user_info中檢索用戶ID為的用戶姓名:SELECT 姓名 FROM user_info WHERE用戶ID = 數(shù)據(jù)定義語言DDL:它是用來創(chuàng)建和修改數(shù)據(jù)庫結(jié)構(gòu)的一種語句,包括 Create、Alter和Drop 語句
11、。數(shù)據(jù)操作語言DML:包括數(shù)據(jù)查詢與數(shù)據(jù)更新。數(shù)據(jù)查詢主要是由Select語句完成,這一點(diǎn)不再贅述。而數(shù)據(jù)更新所造成的風(fēng)險(xiǎn)大大超過數(shù)據(jù)查詢。數(shù)據(jù)庫管理系統(tǒng)必須在更改期內(nèi)保護(hù)所存儲(chǔ)的數(shù)據(jù)的一致性,確保有效的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫,數(shù)據(jù)庫必須保持一致性,DBMS還必須協(xié)調(diào)多用戶的并行更新,以確保用戶和它們的更改不至于影響其它用戶的作業(yè)。用于修改數(shù)據(jù)庫內(nèi)容的 SQL 語句主要有以下三個(gè):(1) Insert,向一個(gè)表中加入新的數(shù)據(jù)行;(2) Update,更改數(shù)據(jù)庫中已經(jīng)存在的數(shù)據(jù);(3) Delete,從一個(gè)表中刪除數(shù)據(jù)行;Insert標(biāo)準(zhǔn)語法:INSERT INTO table_name (col1,
12、col2.) VALUES(value1, value2.)。Insert 語句還可以將多行數(shù)據(jù)添加到目標(biāo)表中去,在這種形式的 Insert 語句中,新行的數(shù)據(jù)值不是在語句正文中明確地指定的,而是語句中指定的一個(gè)數(shù)據(jù)庫查詢。添加的值來自數(shù)據(jù)庫自身的行,在某些特定的狀態(tài)下,這是非常有用的。多行 Insert 語句為拷貝數(shù)據(jù)提供了一種緊湊而高效的方法。Update語句用于更新單表中選定行的一列或多列的值。要更新的目標(biāo)表在語句中定義,Set子句則指定要更新哪些列并計(jì)算它們的值。Update語句總是包含Where語句,而且Update語句比較危險(xiǎn),所以您必須明確地認(rèn)識(shí)到Where語句的重要性,Wher
13、e語句被用來指定需要更新的行。標(biāo)準(zhǔn)語法:UPDATE table_nameSET columnname1 = value1 , columname2 = value2. WHERE search_conditionDelete 語句標(biāo)準(zhǔn)語法:DELETE FROM tablename WHERE condition在信息管理系統(tǒng)中,我們往往會(huì)遇到歸類、匯總、映射、索引、子查詢等復(fù)雜操作,相應(yīng)的支持與實(shí)現(xiàn)如下:GROUP BY方法:GROUP BY子句語法為:SELECT column1, SUM(column2)FROM list-of-tablesGROUP BY column-list;這
14、個(gè)GROUP BY子句將集中所有的行在一起,它包含了指定列的數(shù)據(jù)以及允許合計(jì)函數(shù)來計(jì)算一個(gè)或者多個(gè)列。組合條件和布爾運(yùn)算符:以下的SQL語句中就含有組合條件:SELECT column1, SUM(column2)FROM list-of-tablesWHERE condition1 AND condition2;UNION子句:有些時(shí)候,需要一起瀏覽多個(gè)查詢的結(jié)果、組合它們的輸出,我們可以使用UNION關(guān)鍵字。第二章 開發(fā)工具簡(jiǎn)介本系統(tǒng)所用的開發(fā)語言是Microsoft Visual Basic 6.0。Microsoft Visual Basic 6.0是微軟公司推出的可視化編程語言之一。
15、本章中主要介紹在本次開發(fā)中所用的Microsoft Visual Basic 6.0的主要技術(shù)知識(shí)。Microsoft Visual Basic 6.0的其他知識(shí)請(qǐng)參考相關(guān)文獻(xiàn)。第一節(jié) ADO ADO是Microsoft公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來逐漸演變成滿足所有數(shù)據(jù)訪問需要的完整解決辦法。ADO的對(duì)象模型是所有數(shù)據(jù)訪問接口對(duì)象模型中最簡(jiǎn)單的一種。Microsoft公司用來訪問ADO數(shù)據(jù)的應(yīng)用程序界面技術(shù)是OLE DB。OLE DB是一種底層編程接口,用來訪問許多不同類型的數(shù)據(jù)源,其中包括消息、文件系統(tǒng)以及其他一些非傳統(tǒng)的數(shù)據(jù)源。OLE DB是一個(gè)由Component Object
16、Model(COM)接口組成的集合,用來隱藏創(chuàng)建數(shù)據(jù)訪問服務(wù)過程中的細(xì)節(jié)。OLEDB提供了訪問任何數(shù)據(jù)資源的方法,包括相互關(guān)聯(lián)的數(shù)據(jù)庫和相互不關(guān)聯(lián)的數(shù)據(jù)庫、Email和文件系統(tǒng)、文本和圖形以及用戶定義的數(shù)據(jù)對(duì)象。以下是本程序中用到的對(duì)象:Connection對(duì)象:通過“連接”可從應(yīng)用程序訪問數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。對(duì)象模型使用Connection對(duì)象使連接概念得以具體。Recordset對(duì)象:表示的是來自基本表或命令執(zhí)行結(jié)果的記錄全集。Recordset 對(duì)象可支持兩類更新:立即更新和批更新。使用立即更新,一旦調(diào)用Update方法,對(duì)數(shù)據(jù)的所有更改將被立即寫入基本數(shù)據(jù)源。也可以使用
17、AddNew和Update方法將值的數(shù)組作為參數(shù)傳遞,同時(shí)更新記錄的若干字段。Field對(duì)象:代表使用普通數(shù)據(jù)類型的數(shù)據(jù)的列。Recordset對(duì)象含有由Field對(duì)象組成的Fields集合。每個(gè)Field對(duì)象對(duì)應(yīng)于Recordset中的一列。使用Field對(duì)象的Value屬性可設(shè)置或返回當(dāng)前記錄的數(shù)據(jù)。以下是本程序中用到的方法:AddNew方法:創(chuàng)建可更新Recordset對(duì)象的新記錄。MoveFirst、MoveLast、MoveNext 和MovePrevious方法:在指定 Recordset 對(duì)象中移動(dòng)到第一個(gè)、最后一個(gè)、下一個(gè)或前一個(gè)記錄并使該記錄成為當(dāng)前記錄。Open方法(ADO
18、 Connection):打開到數(shù)據(jù)源的連接。Open方法(ADO Recordset):打開記錄集。Close方法:關(guān)閉打開的對(duì)象及任何相關(guān)對(duì)象。Execute方法:執(zhí)行指定的查詢、SQL語句、存儲(chǔ)過程或特定提供者的文本等內(nèi)容。第二節(jié) 記錄列表控件本程序中使用的記錄列表控件為mshflexgrid。Mshflexgrid控件的一個(gè)主要特性是它能顯示層次結(jié)構(gòu)記錄集以層次結(jié)構(gòu)方式顯示的關(guān)系表。具有很好的靈活性。下面介紹mshflexgrid控件的常用的屬性和方法。常用屬性:DataSource屬性:返回/設(shè)置控件綁定的一個(gè)數(shù)據(jù)源。TextMatrix屬性:返回/設(shè)置一個(gè)任意單元的文本內(nèi)容。Row
19、s屬性:返回/設(shè)置總行數(shù)。Cols屬性:返回/設(shè)置總列數(shù)。Col、Row屬性:返回/設(shè)置活動(dòng)單元的坐標(biāo)。常用方法:AddItem方法:向網(wǎng)格中加入一新行。Clear方法:清除網(wǎng)格中的內(nèi)容。RemoveItem方法:從網(wǎng)格中清除一行。 以上屬性和方法的詳細(xì)用法請(qǐng)參考MSDN。第三章 系統(tǒng)設(shè)計(jì)第一節(jié) 需求分析本次實(shí)習(xí)要完成的主要內(nèi)容:1)能夠存儲(chǔ)用戶處理事件的歷史性信息;2)定義時(shí)間段(如現(xiàn)代、近代、古代)和時(shí)間跨度,實(shí)現(xiàn)數(shù)據(jù)在時(shí)間段之間的轉(zhuǎn)換和數(shù)據(jù)壓縮,如根據(jù)頻率等;3)實(shí)現(xiàn)數(shù)據(jù)庫系統(tǒng)中元事件的時(shí)態(tài)信息查詢:可以查詢?cè)录某霈F(xiàn)時(shí)間,或查看某時(shí)間段出現(xiàn)的元事件,或查看一些元事件的統(tǒng)計(jì)信息。根據(jù)完
20、成的內(nèi)容和用戶的要求,主要各功能如下:信息輸入從界面輸入,輸入的信息有元事件(上網(wǎng)、使用office、玩游戲等等)、起始時(shí)間、結(jié)束時(shí)間,存入時(shí)間記錄表。信息輸入完畢進(jìn)行檢測(cè)(可手動(dòng)也可設(shè)置時(shí)間自動(dòng)觸發(fā)),將時(shí)間記錄表中的所有時(shí)間與系統(tǒng)當(dāng)前時(shí)間進(jìn)行比較,當(dāng)時(shí)間記錄表的時(shí)間-系統(tǒng)當(dāng)前時(shí)間一天,將該記錄存入現(xiàn)代(一天)時(shí)間記錄表中,以此類推,將時(shí)間記錄表中的信息存入古代(一個(gè)月),近代(一個(gè)星期)時(shí)間記錄表中。信息查詢:1)按時(shí)間段查詢,輸入一個(gè)時(shí)間段(如2006-04-04-2006-04-26),能查詢到該時(shí)間段內(nèi)發(fā)生的元事件、次數(shù)、以及每一次的起始時(shí)間和結(jié)束時(shí)間。2)按事件查詢,當(dāng)點(diǎn)擊其中一個(gè)
21、事件,能查詢到該事件在古代、近代、現(xiàn)代發(fā)生的次數(shù),最早起始時(shí)間、最晚起始時(shí)間、以及每次的時(shí)間記錄。3)圖表顯示:將古代、近代、現(xiàn)代發(fā)生元事件的次數(shù)以圖表的形式顯示,目的是通過該圖表可以反映出用戶對(duì)那個(gè)事件感興趣,達(dá)到了課題所要求的用戶興趣的事態(tài)數(shù)據(jù)管理。第二節(jié) 系統(tǒng)總體功能設(shè)計(jì)系統(tǒng)總體功能設(shè)計(jì)是指在系統(tǒng)調(diào)查與分析的基礎(chǔ)上,對(duì)整個(gè)系統(tǒng)在結(jié)構(gòu)上的劃分,硬軟件環(huán)境的配置和確定子系統(tǒng)與模塊的處理流程。總體設(shè)計(jì)中最核心的問題是系統(tǒng)總體功能結(jié)構(gòu)的確定和子系統(tǒng)與模塊的劃分。本系統(tǒng)結(jié)構(gòu)化設(shè)計(jì)思想,結(jié)構(gòu)化系統(tǒng)設(shè)計(jì)的思想,就是自頂向下地將系統(tǒng)劃分為若干個(gè)子系統(tǒng),而子系統(tǒng)又劃分為模塊,模塊又劃分為子模塊,層層劃分,
22、直到每一個(gè)模塊能夠作為計(jì)算機(jī)可執(zhí)行的單獨(dú)程序?yàn)橹埂8鶕?jù)用戶興趣事態(tài)數(shù)據(jù)管理系統(tǒng)的需求分析,系統(tǒng)分為信息輸入、信息檢索、圖形顯示、系統(tǒng)關(guān)于、數(shù)據(jù)處理五個(gè)模塊。系統(tǒng)各模塊流程圖如下圖3-1:進(jìn)入系統(tǒng)信息輸入數(shù)據(jù)庫自動(dòng) 人工信息處理信息檢索記錄顯示圖形顯示圖 3-1 系統(tǒng)功能流程圖各模塊詳細(xì)的功能如下:信息輸入:手工輸入元事件的信息。信息處理:是對(duì)輸入的元事件進(jìn)行處理。分自動(dòng)和手動(dòng),自動(dòng)處理是系統(tǒng)每次啟動(dòng)的時(shí)候都要自動(dòng)進(jìn)行處理,手動(dòng)處理是人工處理,隨時(shí)處理元事件。信息檢索:對(duì)輸入的元事件、處理的元事件進(jìn)行檢索。系統(tǒng)關(guān)于:主要記錄元事件和元事件編號(hào)的信息及系統(tǒng)的一些信息。圖形顯示:主要是對(duì)處理的元事件
23、進(jìn)行直觀的統(tǒng)計(jì)后以圖形的方式顯示出來。第三節(jié) 數(shù)據(jù)庫的設(shè)計(jì)在概念設(shè)計(jì)階段中,設(shè)計(jì)人員從用戶的角度看待數(shù)據(jù)及處理要求和約束,產(chǎn)生一個(gè)反映用戶觀點(diǎn)的概念模式。然后再把概念模式轉(zhuǎn)換成邏輯模式。將概念設(shè)計(jì)從設(shè)計(jì)過程中獨(dú)立開來,使各階段的任務(wù)相對(duì)單一化,設(shè)計(jì)復(fù)雜程度大大降低,不受特定DBMS的限制。本系統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)的表有:時(shí)間記錄表、元事件古代時(shí)間記錄表、元事件近代時(shí)間記錄表、元事件現(xiàn)代時(shí)間記錄表、元事件信息表五個(gè)表。時(shí)間記錄表是記錄所有元事件發(fā)生的信息。古代時(shí)間記錄表是記錄發(fā)生在一個(gè)月以前的元事件信息。近代時(shí)間記錄表是記錄發(fā)生在一個(gè)月以內(nèi),一周以前的元事件信息?,F(xiàn)代時(shí)間記錄表是記錄發(fā)生在一周以內(nèi),一
24、天以前的元事件信息。元事件信息表是記錄所有的元事件和元事件編號(hào)的信息。各表的結(jié)構(gòu)如下:時(shí)間記錄表字段名類型ID自動(dòng)編號(hào)元事件編號(hào)char元事件char起始時(shí)間datetime結(jié)束時(shí)間datetime古代時(shí)間記錄表字段名類型元事件編號(hào)char元事件char最早起始時(shí)間datetime最晚起始時(shí)間datetime出現(xiàn)的次數(shù)int近代時(shí)間記錄表字段名類型元事件編號(hào)char元事件char最早起始時(shí)間datetime最晚起始時(shí)間datetime出現(xiàn)的次數(shù)int現(xiàn)代時(shí)間記錄表字段名類型元事件編號(hào)char元事件char最早起始時(shí)間datetime最晚起始時(shí)間datetime出現(xiàn)的次數(shù)int元事件信息表字段名
25、類型元事件編號(hào)char元事件char第四章 系統(tǒng)應(yīng)用程序的開發(fā)應(yīng)用程序是用VB開發(fā)的,界面設(shè)計(jì)的簡(jiǎn)單明了。根據(jù)需求分析和功能設(shè)計(jì),系統(tǒng)應(yīng)用程序分為五大模塊:信息輸入、數(shù)據(jù)處理、信息檢索、圖形顯示、系統(tǒng)關(guān)于五個(gè)模塊。第一節(jié) 界面開發(fā)系統(tǒng)界面非常簡(jiǎn)單明了,操作很實(shí)用。在界面上采用了四個(gè)按鈕把各功能分開。如圖4-1所示。圖4-1 系統(tǒng)界面四個(gè)按鈕分別對(duì)應(yīng)信息輸入、信息檢索、圖形顯示、關(guān)于系統(tǒng)(包括檢測(cè)處理)。系統(tǒng)連接數(shù)據(jù)庫采用ADO控件。引擎采用Microsoft.Jet.OLEDB.4.0連接數(shù)據(jù)庫(Access 2000)實(shí)現(xiàn)代碼如下:Dim CN As New ADODB.Connection
26、If CN.State Then CN.CloseCN.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & App.Path & database.mdb;Persist Security Info=FalseCN.Open詳細(xì)代碼實(shí)現(xiàn)請(qǐng)參考附錄程序源代碼。第二節(jié) 信息輸入模塊在系統(tǒng)界面上點(diǎn)信息輸入選項(xiàng)卡,進(jìn)入了信息輸入界面。輸入的信息有元事件(上網(wǎng)、使用office、玩游戲等等)、起始時(shí)間、結(jié)束時(shí)間,存入時(shí)間記錄表。如圖4-2 信息輸入。信息輸入模塊的設(shè)計(jì)采用了記錄列表來顯示所有的記錄。下邊有添加(修改)、刪除、保
27、存、退出按鈕。添加:是添加一新元事件信息到時(shí)間記錄表中。修改:是在記錄列表區(qū)中,選中記錄,在記錄輸入?yún)^(qū)修改數(shù)據(jù),保存。刪除:是在時(shí)間記錄表中,刪除選中的元事件記錄。保存:是在添加和修改了一條記錄時(shí),要保存入時(shí)間記錄表中。退出:是退出元事件管理系統(tǒng)。記錄輸入?yún)^(qū)記錄列表區(qū)圖4-2 信息輸入模塊信息輸入的設(shè)計(jì):ID記錄,系統(tǒng)自動(dòng)的編號(hào),用戶無法改。元事件編號(hào)和元事件,采用選擇式的輸入方法,只有在關(guān)于系統(tǒng)里輸入了元事件和元事件編號(hào)。在些才可以選擇。日期時(shí)間輸入,采用DTPicker控件,格式為yyyy-MM-dd HH:mm:ss,如2006-04-09 01:10:22。如圖4-3 所示。添加、刪除
28、、保存的代碼實(shí)現(xiàn)如下:圖4-3 日期時(shí)間選擇Private Sub cmdRegAdd_Click() 添加按鈕Dim i As IntegerFor i = 0 To txt.Count - 1 txt(i).Text = Next iEnd SubPrivate Sub cmdRegDel_Click() 刪除按鈕On Error GoTo ErrIf Trim(txt(0).Text) Then If MsgBox(真的刪除嗎?, vbInformation + vbYesNo, 提示) = vbYes Then CN.Execute delete from 時(shí)間記錄表 where ID
29、= & Trim(txt(0).Text) Dim rs1 As New ADODB.Recordset If rs1.State Then rs1.Close rs1.Open select * from 時(shí)間記錄表, CN, adOpenStatic, adLockOptimistic Set MSHFlexGrid1.DataSource = rs1 MsgBox 刪除成功!, vbInformation, 提示 End IfEnd IfExit SubErr:MsgBox Err.Description, , 提示End SubPrivate Sub cmdRegSave_Click(
30、) 保存按鈕Dim rs1 As New ADODB.RecordsetDim i As IntegerOn Error GoTo ErrIf txt(0).Text = Then 添加 If Trim(txt(1).Text) And Trim(txt(2).Text) And Trim(txt(3).Text) Then If rs1.State Then rs1.Close rs1.Open select * from 時(shí)間記錄表, CN, adOpenStatic, adLockOptimistic rs1.AddNew For i = 1 To txt.Count - 1 rs1.F
31、ields(i).Value = Trim(txt(i).Text) Next i rs1.Update Set MSHFlexGrid1.DataSource = rs1 MsgBox 添加成功!, , 提示 End IfElse 修改 If Trim(txt(1).Text) And Trim(txt(2).Text) And Trim(txt(3).Text) Then If rs1.State Then rs1.Close rs1.Open select * from 時(shí)間記錄表 where ID= & Trim(txt(0).Text), CN, adOpenStatic, adLo
32、ckOptimistic For i = 1 To txt.Count - 1 rs1.Fields(i).Value = Trim(txt(i).Text) Next i rs1.Update If rs1.State Then rs1.Close rs1.Open select * from 時(shí)間記錄表, CN, adOpenStatic, adLockOptimistic Set MSHFlexGrid1.DataSource = rs1 MsgBox 修改成功!, , 提示 End IfEnd IfExit SubErr:MsgBox Err.DescriptionEnd Sub第三節(jié)
33、 關(guān)于系統(tǒng)和檢測(cè)處理關(guān)于系統(tǒng)是分三部分,一部分是系統(tǒng)一些說明,另一部分是檢測(cè)處理,還有是元事件設(shè)置。如圖4-4所示。在代碼實(shí)現(xiàn)上主要是檢測(cè)處理和元事件設(shè)置。圖4-4 關(guān)于系統(tǒng)檢測(cè)處理是根據(jù)設(shè)計(jì)的要求對(duì)時(shí)間記錄表中的元事件進(jìn)行處理,分手功和自動(dòng)兩種。處理方法都是:將時(shí)間記錄表中的所有時(shí)間與系統(tǒng)當(dāng)前時(shí)間進(jìn)行比較,當(dāng)時(shí)間記錄表的時(shí)間-系統(tǒng)當(dāng)前時(shí)間一天,將該記錄存入現(xiàn)代(一天)時(shí)間記錄表中,以此類推,將時(shí)間記錄表中的信息存入古代(一個(gè)月),近代(一個(gè)星期)時(shí)間記錄表中。代碼實(shí)現(xiàn)如下:Public Sub AutoControl()On Error GoTo ErrfrmSplash.Show , fr
34、mmainfrmSplash.RefreshDim strDate As StringDim strSql As StringDim strDate1 As StringCN.Execute delete from 現(xiàn)代時(shí)間記錄表CN.Execute delete from 近代時(shí)間記錄表CN.Execute delete from 古代時(shí)間記錄表Dim rs1 As New ADODB.RecordsetDim rs2 As New ADODB.RecordsetDim rs3 As New ADODB.Recordset現(xiàn)代時(shí)間記錄表strDate = DateChange(DateSer
35、ial(Year(Date), Month(Date), Day(Date) - 1)strDate1 = DateChange(DateSerial(Year(Date), Month(Date), Day(Date) - 7)strSql = select distinct 元事件編號(hào),元事件 from 時(shí)間記錄表 where 起始時(shí)間 & strDate1 & If rs1.State Then rs1.Closers1.Open strSql, CN, adOpenStatic, adLockOptimisticIf rs2.State Then rs2.Closers2.Open s
36、elect * from 現(xiàn)代時(shí)間記錄表, CN, adOpenStatic, adLockOptimisticWhile Not rs1.EOF If Not IsNull(rs1.Fields(0) Then rs2.AddNew rs2.Fields(0).Value = Trim(rs1.Fields(0) rs2.Fields(1).Value = Trim(rs1.Fields(1) strSql = select count(*),max(起始時(shí)間),min(起始時(shí)間) from 時(shí)間記錄表 where 起始時(shí)間 & strDate1 & and 元事件編號(hào)= & Trim(rs
37、1.Fields(0) & If rs3.State Then rs3.Close rs3.Open strSql, CN, adOpenStatic, adLockOptimistic rs2.Fields(2).Value = Trim(rs3.Fields(2) rs2.Fields(3).Value = Trim(rs3.Fields(1) rs2.Fields(4).Value = rs3.Fields(0) rs2.Update End Ifrs1.MoveNextWend近代時(shí)間記錄表strDate = DateChange(DateSerial(Year(Date), Mont
38、h(Date), Day(Date) - 7)strDate1 = DateChange(DateSerial(Year(Date), Month(Date) - 1, Day(Date)strSql = select distinct 元事件編號(hào),元事件 from 時(shí)間記錄表 where 起始時(shí)間 & strDate1 & If rs1.State Then rs1.Closers1.Open strSql, CN, adOpenStatic, adLockOptimisticIf rs2.State Then rs2.Closers2.Open select * from 近代時(shí)間記錄表,
39、 CN, adOpenStatic, adLockOptimisticWhile Not rs1.EOF If Not IsNull(rs1.Fields(0) Then rs2.AddNew rs2.Fields(0).Value = Trim(rs1.Fields(0) rs2.Fields(1).Value = Trim(rs1.Fields(1) strSql = select count(*),max(起始時(shí)間),min(起始時(shí)間) from 時(shí)間記錄表 where 起始時(shí)間 & strDate1 & and 元事件編號(hào)= & Trim(rs1.Fields(0) & If rs3.
40、State Then rs3.Close rs3.Open strSql, CN, adOpenStatic, adLockOptimistic rs2.Fields(2).Value = Trim(rs3.Fields(2) rs2.Fields(3).Value = Trim(rs3.Fields(1) rs2.Fields(4).Value = rs3.Fields(0) rs2.Update End Ifrs1.MoveNextWend古代時(shí)間記錄表strDate = DateChange(DateSerial(Year(Date), Month(Date) - 1, Day(Date
41、)strSql = select distinct 元事件編號(hào),元事件 from 時(shí)間記錄表 where 起始時(shí)間= & strDate & If rs1.State Then rs1.Closers1.Open strSql, CN, adOpenStatic, adLockOptimisticIf rs2.State Then rs2.Closers2.Open select * from 古代時(shí)間記錄表, CN, adOpenStatic, adLockOptimisticWhile Not rs1.EOF If Not IsNull(rs1.Fields(0) Then rs2.Add
42、New rs2.Fields(0).Value = Trim(rs1.Fields(0) rs2.Fields(1).Value = Trim(rs1.Fields(1) strSql = select count(*),max(起始時(shí)間),min(起始時(shí)間) from 時(shí)間記錄表 where 起始時(shí)間= & strDate & and 元事件編號(hào)= & Trim(rs1.Fields(0) & If rs3.State Then rs3.Close rs3.Open strSql, CN, adOpenStatic, adLockOptimistic rs2.Fields(2).Value
43、= Trim(rs3.Fields(2) rs2.Fields(3).Value = Trim(rs3.Fields(1) rs2.Fields(4).Value = rs3.Fields(0) rs2.Update End Ifrs1.MoveNextWendSaveSetting 元事件管理系統(tǒng), Settings, AutoDate, DateChange(Date)Unload frmSplashExit SubErr:Unload frmSplashMsgBox Err.DescriptionEnd Sub元事件設(shè)置主要是為了保持系統(tǒng)元事件的唯一性來做的,只有在元事件設(shè)置完了的元事件
44、才能在信息輸入等模塊中使用。信息都存在元事件信息表中。可以添加,也可以刪除。如果要修改,只能刪除后再添加。添加代碼實(shí)現(xiàn)如下:Private Sub cmdAdd_Click() 添加元事件On Error GoTo ErrIf Trim(Combo1.Text) And Trim(Combo2.Text) Then Dim i As Integer For i = 0 To Combo2.ListCount - 1 If Trim(Combo2.Text) = Trim(Combo2.List(i) Then IsAdd = False MsgBox 元事件已經(jīng)存在!, vbInformati
45、on, 提示 Exit Sub End If Next i For i = 0 To Combo1.ListCount - 1 If Trim(Combo1.Text) = Trim(Combo1.List(i) Then isAdd1 = False MsgBox 元事件編號(hào)已經(jīng)存在!, vbInformation, 提示 Exit Sub End If Next i Dim rs1 As New ADODB.Recordset If rs1.State Then rs1.Close rs1.Open select * from 元事件信息表, CN, adOpenStatic, adLoc
46、kOptimistic rs1.AddNew rs1.Fields(0).Value = Trim(Combo1.Text) rs1.Fields(1).Value = Trim(Combo2.Text) rs1.Update Combo1.AddItem Trim(Combo1.Text) Combo2.AddItem Trim(Combo2.Text) Combo3.AddItem Trim(Combo1.Text) Combo4.AddItem Trim(Combo2.Text) Combo6.AddItem Trim(Combo2.Text) MsgBox 操作成功!, vbInfor
47、mation, 提示End IfExit SubErr:MsgBox Err.Description, , 提示End Sub刪除代碼實(shí)現(xiàn)如下:Private Sub cmdDelete_Click() 刪除元事件On Error GoTo ErrIf Trim(Combo1.Text) Then If MsgBox(真的刪除嗎?, vbInformation + vbYesNo, 提示) = vbYes Then CN.Execute delete from 元事件信息表 where 元事件編號(hào)= & Trim(Combo1.Text) & Combo2.RemoveItem ICombo
48、Combo1.RemoveItem ICombo Combo3.RemoveItem ICombo Combo4.RemoveItem ICombo MsgBox 刪除成功!, vbInformation, 提示 End IfEnd IfErr:End Sub第四節(jié) 信息檢索信息檢索是對(duì)輸入的元事件和處理后的元事件,進(jìn)行查尋。支持兩種方法:按時(shí)間、按事件。如圖4-5。圖4-5 信息檢索在檢索庫里有四個(gè)表:時(shí)間記錄表、元事件古代時(shí)間記錄表、元事件近代時(shí)間記錄表、元事件現(xiàn)代時(shí)間記錄表。在時(shí)間記錄表中可以檢索所有的元事件信息。另三個(gè)表是處理后的元事件信息。按時(shí)間檢索時(shí),檢索條件為一個(gè)日期時(shí)間段,為起
49、始日期時(shí)間(檢索),結(jié)束日期時(shí)間(檢索)。按事件檢索時(shí),檢索條件為事件名稱。設(shè)置完條件,點(diǎn)檢索,記錄列表里出現(xiàn)符合條件的記錄。代碼實(shí)現(xiàn)如下:Private Sub Command2_Click() 檢索信息Dim strSql As StringDim rs1 As New ADODB.RecordsetOn Error GoTo ErrIf Trim(Combo5.Text) = Then Exit SubIf Option1.Value = True Then 按時(shí)間檢索 If Trim(Combo5.Text) 時(shí)間記錄表 Then strSql = select * from & Tr
50、im(Combo5.Text) & where 最早起始時(shí)間= & DateChange(DTPicker3.Value) & and 最晚起始時(shí)間= & DateChange(DTPicker3.Value) & and 結(jié)束時(shí)間= & DateChange(DTPicker4.Value) & End IfElseIf Option2.Value = True Then 按事件檢索 strSql = select * from & Trim(Combo5.Text) & where 元事件= & Trim(Combo6.Text) & End IfIf rs1.State Then rs1
51、.Closers1.Open strSql, CN, adOpenStatic, adLockOptimisticSet MSHFlexGrid2.DataSource = rs1Text1.Text = MSHFlexGrid2.Rows - 1Exit SubErr:MsgBox Err.Description, , 提示End Sub第五節(jié) 圖形顯示圖形顯示主要是對(duì)處理的元事件進(jìn)行直觀的統(tǒng)計(jì)后以圖形的方式顯示出來。如圖4-6所示。圖形顯示采用MSChart控件。圖4-6 圖形顯示圖形顯示只能對(duì)處理后的元事件進(jìn)行顯示。在選擇庫中選擇數(shù)據(jù)表名(元事件古代時(shí)間記錄表、元事件近代時(shí)間記錄表、元事件現(xiàn)代時(shí)間記錄表)。下邊的圖形會(huì)根據(jù)不同的表,自動(dòng)改變。圖例為元事件名稱。實(shí)現(xiàn)代碼如下:Private Sub Combo7_Click() 數(shù)據(jù)表選擇圖形顯示On Error GoTo ErrDim rs1 As New ADODB.RecordsetIf Trim(Combo7.Text) Then Dim N As Integer If rs1.State Then rs1.Close rs1.Open select
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第2單元 社會(huì)主義制度的建立與社會(huì)主義建設(shè)的探索 測(cè)試卷-2021-2022學(xué)年部編版八年級(jí)歷史下冊(cè)
- 八年級(jí)下冊(cè)期末考試模擬卷03(答案及解析)
- 《客戶經(jīng)理分享》課件
- 婚慶行業(yè)前臺(tái)服務(wù)工作總結(jié)
- 七年級(jí)下《鶴群》語文版-課件
- 2024員工三級(jí)安全培訓(xùn)考試題及答案考試直接用
- 小學(xué)生演講稿(15篇)
- 《社會(huì)工作概論概述》課件
- 季度成績(jī)梳理
- 皮膚護(hù)理QC課題
- 2024午托承包合同-校園內(nèi)學(xué)生午休服務(wù)協(xié)議3篇
- 馬克思主義基本原理+2024秋+試題 答案 國開
- 蘇州大學(xué)《線性代數(shù)與解析幾何》2023-2024學(xué)年第一學(xué)期期末試卷
- 《地震災(zāi)害及其防治》課件
- 2024年版電商平臺(tái)入駐商家服務(wù)與銷售分成合同
- 蜜雪冰城合同范例
- 小紅書種草營銷師(初級(jí))認(rèn)證考試真題試題庫(含答案)
- LPG液化氣充裝站介質(zhì)分析操作規(guī)程 202412
- 養(yǎng)老院環(huán)境衛(wèi)生保潔方案
- 2024年WPS計(jì)算機(jī)二級(jí)考試題庫350題(含答案)
- 2024年5G網(wǎng)絡(luò)覆蓋工程分包合同
評(píng)論
0/150
提交評(píng)論