圖書管理系統(tǒng)課程設(shè)計報告_第1頁
圖書管理系統(tǒng)課程設(shè)計報告_第2頁
圖書管理系統(tǒng)課程設(shè)計報告_第3頁
圖書管理系統(tǒng)課程設(shè)計報告_第4頁
圖書管理系統(tǒng)課程設(shè)計報告_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、山西大學(xué)工程學(xué)院課程設(shè)計報告書題 目 教學(xué)成績管理系統(tǒng)系 別 計算機工程系 專 業(yè) 計算機科學(xué)與技術(shù)班 級 計本1018班 姓 名 董昶君 指導(dǎo)教師 米曉萍 指 導(dǎo) 教 師 評 語成績評定: 指導(dǎo)教師簽字: 年 月 日圖書管理系統(tǒng)內(nèi)容摘要圖書管理系統(tǒng)是采用Visual Basic6.0開發(fā)的一個數(shù)據(jù)庫管理系統(tǒng)。開發(fā)本系統(tǒng)的基本步驟:需求分析、系統(tǒng)概念設(shè)計、系統(tǒng)邏輯和物理設(shè)計、系統(tǒng)實現(xiàn)和維護(hù)。在系統(tǒng)分析中先后用數(shù)據(jù)字典、數(shù)據(jù)流程、系統(tǒng)的功能結(jié)構(gòu)圖、ER圖分析了系統(tǒng)所需的各種數(shù)據(jù)。在系統(tǒng)的設(shè)計過程中,我們采用了模塊獨立設(shè)計法,比較詳細(xì)的展現(xiàn)了各個模塊的功能。在庫和表的設(shè)計當(dāng)中, 我們力求層次清晰,

2、設(shè)計簡單實用。在系統(tǒng)具體實行階段中,我們精心細(xì)致的畫出了各個窗體并給出了相應(yīng)的事件和代碼,以實現(xiàn)各個窗體的作用。開發(fā)環(huán)境:為方便系統(tǒng)開發(fā),減少開發(fā)過程的難度,本圖書管理開發(fā)系統(tǒng)是基于以下的軟件環(huán)境。·以Windows XP為操作系統(tǒng)·以Visual Basic6.0為開發(fā)工具·以Access 2000作為后臺數(shù)據(jù)庫功能概述:該系統(tǒng)界面友好,操作簡便,能完成添加圖書信息,修改圖書信息,查詢圖書信息,添加讀者類別,修改讀者類別,查詢讀者信息,修改讀者信息等一系列圖書管理功能,開發(fā)本系統(tǒng)的總體任務(wù)是實現(xiàn)圖書管理的系統(tǒng)化和自動化,幫助管理人員更好更高效地完成圖書管理工作。

3、本著實用性和介紹性的原則,整個系統(tǒng)由四大模塊組成,每個大的模塊又包括三至四個小的模塊。一、  圖書管理部分:包括圖書信息管理和類別管理,其功能是實現(xiàn)對各部分?jǐn)?shù)據(jù)內(nèi)容進(jìn)行添加、修改、查詢等操作。二、  讀者管理部分:包括讀者信息管理和讀者類別管理,其功能是實現(xiàn)對各部分?jǐn)?shù)據(jù)內(nèi)容的添加和修改等操作。三、  借閱管理部分:包括借書管理和還書管理,其功能是實現(xiàn)對各部分?jǐn)?shù)據(jù)內(nèi)容的添加和查詢等操作。四、  系統(tǒng)管理部分:包括修改系統(tǒng)用戶密碼和增加新用戶兩項功能。 系統(tǒng)具有高效、易操作、易維護(hù)等特點,并且系統(tǒng)結(jié)構(gòu)清晰、界面友好,功能較為齊全,能有效地協(xié)助管理人員進(jìn)行圖書

4、管工作。如果想真正把它用到圖書館的圖書自動化管理中,還需要讀者對該系統(tǒng)進(jìn)行一步的完善工作。需求分析需求分析階段確定的系統(tǒng)邏輯模型是以后設(shè)計和實現(xiàn)目標(biāo)系統(tǒng)的基礎(chǔ),因此必須準(zhǔn)確完整地體現(xiàn)用戶的要求。2.1系統(tǒng)的數(shù)據(jù)字典本系統(tǒng)的主要數(shù)據(jù)元素的數(shù)據(jù)字典卡片:名字:讀者信息查詢報表別名:讀者信息表描述:讀者基本情況查詢結(jié)果的信息表定義:讀者信息查詢報表讀者編號讀者姓名性別類別單位住址電話登記日期已借書數(shù)量位置:輸出到打印機名字:圖書信息查詢報表別名:圖書信息表描述:各種書籍查詢基本信息表定義:圖書信息查詢報表圖書編號書名類別作者出版社出版日期登記日期是否被借出位置:輸出到打印機2.2.  數(shù)據(jù)

5、流程圖數(shù)據(jù)流程圖(Data Flow DFD)是描述實際業(yè)務(wù)管理系統(tǒng)工作流程的一種圖形表示法。它描繪系統(tǒng)的邏輯模型圖,其中沒有任何具體的物理元素,只是描繪信息在系統(tǒng)中流動和處理的情況。因為數(shù)據(jù)流圖是邏輯系統(tǒng)的圖形表示,即使不是專業(yè)的計算機技術(shù)人員也容易理解,所以是極好的通信工具。此外,設(shè)計數(shù)據(jù)流圖只需考慮系統(tǒng)必須完成的基本邏輯功能,完全不需要考慮如何具體地實現(xiàn)這些功能,所以它也是軟件設(shè)計的很好的出發(fā)點。圖書管理系統(tǒng)主要是為了對圖書、讀者基本信息等進(jìn)行計算機管理。下面就是對各個功能模塊的流程分析:修改刪除添加1 圖書類別管理基本信息流程圖 圖書類別管理   

6、;                                                  

7、0;                    流程圖分析:圖書類別基本信息的流動首先是以圖書類別的編號為依據(jù),來達(dá)到添加、修改、查詢圖書類別記錄。同時,也對數(shù)據(jù)庫中的圖書類別表的編號進(jìn)行檢查。 2 圖書信息管理基本信息流程圖 圖書信息管理  添加修改刪除流程圖分析:圖書基本信息的流動首先是以圖書編號為流動方向的依據(jù),來達(dá)到添加、修改、記錄、刪除圖書記錄。為了數(shù)據(jù)的一致性,進(jìn)行這些操作的同時,也對數(shù)據(jù)

8、庫中的記錄進(jìn)行檢查,檢查是否有重復(fù)的記錄。如有則不能進(jìn)行添加。 3 讀者類別管理基本信息流程圖讀者類別管理  修改刪除添加流程圖分析:讀者類別基本信息的流動首先是以讀者類別編號為流動方向的依據(jù),來達(dá)到添加、修改、記錄讀者類別記錄。為了數(shù)據(jù)的一致性,進(jìn)行這些操作的同時,也對數(shù)據(jù)庫中的記錄進(jìn)行檢查,檢查是否有重復(fù)的記錄。如沒有則可進(jìn)行添加。 4 讀者信息管理基本信息流程圖查詢修改刪除添加讀者信息管理流程圖分析:讀者基本信息的流動首先是以讀者的編號為依據(jù),來達(dá)到添加、修改、查詢、刪除讀者信息的記錄。同時,也對數(shù)據(jù)庫中的讀者信息表的編號進(jìn)行檢查。 5借書管理基本

9、信息流程圖查詢刪除添加借書管理流程圖分析:借書管理基本信息的流動首先是以借閱編號為流動方向的依據(jù),來達(dá)到添加、查詢借書記錄。為了數(shù)據(jù)的一致性,進(jìn)行這些操作的同時,也對數(shù)據(jù)庫中的記錄進(jìn)行檢查,檢查是否有重復(fù)的記錄。如沒有則可進(jìn)行添加。6 還書管理基本信息流程圖查詢刪除添加還書管理流程圖分析:借閱管理部分是實現(xiàn)對各部分?jǐn)?shù)據(jù)內(nèi)容的添加和查詢操作,在借閱信息中包括借閱編號、讀者編號、讀者姓名、書籍名稱、出借日期和還書日期。并通過添加功能來達(dá)到借閱信息表的數(shù)據(jù)的更新,通過查詢可使管理員很快地了解借閱信息,從而避免書籍的丟失現(xiàn)象產(chǎn)生。通過上面對各個模塊流程的分析,那么我們就不難對整個系統(tǒng)的大致流程有一個全

10、面的認(rèn)識。設(shè)計時采用了常用的自頂向下的瀑布式結(jié)構(gòu)化設(shè)計方法。各子系統(tǒng)具有獨立的數(shù)據(jù)庫結(jié)構(gòu),同時又具有相關(guān)的關(guān)鍵字,這樣系統(tǒng)做起來后就便于用戶操作。綜合上面各個模塊的流程分析,其總體流程圖如下:圖書管理系統(tǒng)圖書管理讀者管理圖書借閱管理系統(tǒng)管理添加管理員修改密碼退出系統(tǒng)圖書類別管理圖書信息管理讀者信息管理讀者類別管理借書管理還書管理   2.3.系統(tǒng)的概念設(shè)計概念設(shè)計階段主要任務(wù)和目標(biāo)是根據(jù)需求分析的結(jié)果,包括一般聯(lián)系實體,畫出對應(yīng)的ER圖。對于復(fù)雜的系統(tǒng),通常首先要對它的各功能模進(jìn)行分析,然后再把它的功能結(jié)構(gòu)圖畫出來,便是設(shè)計和優(yōu) 化。功能分析之后,再根據(jù)

11、各個崗位、各個用戶對數(shù)據(jù)和使用權(quán)限的不同要求作出局部ER圖,然后再把各個局部ER圖綜合起來形成統(tǒng)一的整體ER圖。 3.1模塊功能分析圖書管理部分:包括圖書信息管理和類別管理,其功能是實現(xiàn)對各部分?jǐn)?shù)據(jù)內(nèi)容進(jìn)行添加、修改、查詢等操作。各管理部分的明細(xì)如下:(1)圖書信息管理:包括圖書信息的添加、圖書信息的修改、圖書信息的查詢和圖書的信息刪除4部分。其中,圖書信息包括圖書編號、書名、圖書類別、作者、出版社、出版日期、登記日期以及是否已被借出。(2)圖書類別管理:包括圖書類別的添加、圖書類別的修改、圖書類別的刪除3部分功能。其中,圖書類別包括類別名稱和類別編號兩部分。借閱管理部分:包括借書管理和還書管

12、理,其功能是實現(xiàn)對各部分?jǐn)?shù)據(jù)內(nèi)容的添加和查詢等操作。各管理部分的明細(xì)如下:(1)借書管理:包括添加借書信息和查詢借書信息2部分功能。其中,借閱信息包括借閱編號、讀者編號、讀者姓名、圖書編號、圖書名稱、出借日期和還書日期。(2)還書管理:實現(xiàn)添加還書信息功能。其中,還書信息與借閱信息部分明細(xì)相同。讀者管理部分:包括讀者信息管理和讀者類別管理,其功能是實現(xiàn)對各部分?jǐn)?shù)據(jù)內(nèi)容的添加和修改、刪除等操作。各管理部分的明細(xì)如下:(1)讀者信息管理:包括讀者信的添加、讀者信息的修改、讀者信息的查詢和讀者信息的刪除4部分功能。其中,讀者信息包括讀者姓名、讀者編號、性別、讀者類別、工作單位、家庭住址、電話號碼、登

13、記日期和已借書數(shù)量。(2)讀者類別管理:包括讀者類別的添加、讀者類別的修改、讀者類別的刪除3部分功能。其中,讀者類別包括各種類名稱、借書期限和有效期限4部分。系統(tǒng)管理部分:包括修改系統(tǒng)用戶密碼、增加新用戶和退出系統(tǒng)三項功能。系統(tǒng)初始設(shè)置一個超級用戶名和密碼,操作人員可以利用這個超級用戶名和密碼登錄,之后,可以設(shè)置其他的超級用戶名稱,也可以設(shè)置權(quán)限用戶,同時也設(shè)置了這個用戶可以使用的權(quán)限。  3.2系統(tǒng)功能結(jié)構(gòu)圖圖書管理系統(tǒng)圖書管理讀者管理圖書借閱管理系統(tǒng)管理添加管理員修改密碼退出系統(tǒng)圖書類別管理圖書信息管理讀者信息管理讀者類別管理借書管理還書管理   3.3系統(tǒng)E

14、R圖的設(shè)計數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應(yīng)用系統(tǒng)的效率以及實現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致。同時,合理的數(shù)據(jù)庫結(jié)構(gòu)也將有利于程序的實現(xiàn)。設(shè)計數(shù)據(jù)庫系統(tǒng)時應(yīng)該首先充分了解用戶各個方面的需求,包括現(xiàn)有的以及將來可能增加的需求。針對圖書管理系統(tǒng)的需求,通過對圖書管理系統(tǒng)流程分析,設(shè)計此系統(tǒng)需要如下面所示的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):圖書信息:包括的數(shù)據(jù)項有:圖書編號、書名、圖書類別、作者出版社、出版日期、登記日期讀者信息:包括的數(shù)據(jù)項有:讀者姓名、編號、性別、讀者類別、工作單位、家庭住址、電話號碼、登記日期和已借書

15、數(shù)量圖書借閱信息:包括的數(shù)據(jù)項有:借閱編號、讀者編號、讀者姓名、圖書編號、圖書名稱、出借日期和還書日期。在概念設(shè)計階段中,設(shè)計人員從用戶的角度看待數(shù)據(jù)及處理要求和約束,產(chǎn)生一個反映用戶觀點的概念模式。然后再把概念模式轉(zhuǎn)換成邏輯模式。將概念設(shè)計從設(shè)計過程中獨立開來,使各階段的任務(wù)相對單一化,設(shè)計復(fù)雜程度大大降低,不受特定DBMS的限制。利用ER方法進(jìn)行數(shù)據(jù)庫的概念設(shè)計,可分成三步進(jìn)行:首先設(shè)計局部ER模式,然后把各局部ER模式綜合成一個全局模式,最后對全局ER模式進(jìn)行優(yōu)化,得到最終的模式,即概念模式。 ER模型的“聯(lián)系”用于刻畫實體之間的關(guān)聯(lián)。一種完整的方式是對局部結(jié)構(gòu)中任意兩個實體類型,依據(jù)需

16、求分析的結(jié)果,考察局部結(jié)構(gòu)中任意兩個實體類型之間是否存在聯(lián)系。若有聯(lián)系,進(jìn)一步確定是1:N,M:N,還是1:1等。還要考察一個實體類型內(nèi)部是否存在聯(lián)系,兩個實體類型之間是否存在聯(lián)系,多個實體類型之間是否存在聯(lián)系,等等。所有局部ER模式都設(shè)計好了后,接下來就是把它們綜合成單一的全局概念結(jié)構(gòu)。全局概念結(jié)構(gòu)不僅要支持所有局部ER模式,而且必須合理地表示一個完整、一致的數(shù)據(jù)庫概念結(jié)構(gòu)。1)確定公共實體類型    為了給多個局部ER模式的合并提供開始合并的基礎(chǔ),首先要確定各局部結(jié)構(gòu)中的公共實體類型。在這一步中我們僅根據(jù)實體類型名和鍵來認(rèn)定公共實體類型。一般把同名實體類型作為

17、公共實體類型的一類候選,把具有相同鍵的實體類型作為公共實體類型的另一類候選。2)局部ER模式的合并    合并的原則是:首先進(jìn)行兩兩合并;先和合并那些現(xiàn)實世界中有聯(lián)系的局部結(jié)構(gòu);合并從公共實體類型開始,最后再加入獨立的局部結(jié)構(gòu)。3)消除沖突    沖突分為三類:屬性沖突、結(jié)構(gòu)沖突、命名沖突。設(shè)計全局ER模式的目的不在于把若干局部ER模式形式上合并為一個ER模式,而在于消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概念模型。3)全局ER模式的優(yōu)化    在得到全局ER模式后,為了提高數(shù)據(jù)庫系統(tǒng)的效率

18、,還應(yīng)進(jìn)一步依據(jù)處理需求對ER模式進(jìn)行優(yōu)化。一個好的全局ER模式,除能準(zhǔn)確、全面地反映用戶功能需求外,還應(yīng)滿足下列條件:實體類型的個數(shù)要盡可能的少;實體類型所含屬性個數(shù)盡可能少;實體類型間聯(lián)系無冗余。 2.3. 系統(tǒng)邏輯和物理設(shè)計2.3.1數(shù)據(jù)庫的設(shè)計根據(jù)上面的數(shù)據(jù)庫ER圖,現(xiàn)在需要將上面的數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為SQL Server2000數(shù)據(jù)庫系統(tǒng)所支持的實際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)。在上面的實體以及實體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的表格以及各個表格之間的關(guān)系。圖書管理信息系統(tǒng)數(shù)據(jù)庫中各個表格的設(shè)計結(jié)果如下面的幾個表格所示。每個表格表示在數(shù)據(jù)庫中的一個表。1.圖書類別表字段

19、名數(shù)據(jù)類型說明類別名稱文本必添字段“是”,允許空字符為“否”類別編號文本必添字段“是”,允許空字符為“否”  2.圖書信息表字段名數(shù)據(jù)類型說明圖書編號文本必添字段“是”,允許空字符為“否”書名文本必添字段“是”,允許空字符為“否”類別文本字段大小50作者文本字段大小50出版社文本字段大小50出版日期日期/時間無登記日期日期/時間無是否借出文本字段大小2 3.借閱信息表字段名數(shù)據(jù)類型說明借閱編號自動編號無讀者編號文本字段大小50讀者姓名文本字段大小50圖書編號文本字段大小50圖書名稱文本字段大小50出借日期日期/時間無 4.讀者信息表字段名數(shù)據(jù)類型說明讀者

20、姓名文本必添字段“是”,允許空字符為“否”讀者編號文本必添字段“是”,允許空字符為“否”性別文本字段大小2讀者類別文本字段大小50工作單位文本字段大小50家庭住址文本字段大小50電話號碼文本字段大小50登記日期日期/時間無已借數(shù)量數(shù)字無 5.讀者類別表                             

21、                                                  

22、                                    字段名數(shù)據(jù)類型說明種類名稱文本必添字段“是”,允許空字符為“否”借書數(shù)量數(shù)字無借書期限數(shù)字無有限期限數(shù)字無 2.3.2數(shù)據(jù)庫的維護(hù)  由于應(yīng)用環(huán)境不

23、斷變化,數(shù)據(jù)庫運行過和中物理存儲也會不斷變化,對數(shù)據(jù)庫設(shè)計進(jìn)行調(diào)整,修改等維護(hù)工作是設(shè)計工作的繼續(xù)和提高。對數(shù)據(jù)庫經(jīng)常性的維護(hù)工作主要包括:1.    數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)針對不同的應(yīng)用要求制定不同的轉(zhuǎn)儲計劃,保證一旦發(fā)生故障能盡快將數(shù)據(jù)庫恢復(fù)到某種一致的狀態(tài),盡可能減少對數(shù)據(jù)庫的破壞。2.    數(shù)據(jù)庫的安全性、完整性控制在數(shù)據(jù)庫運行過程中由于應(yīng)用環(huán)境的變化,對安全性的要求也會發(fā)生變化,如原來機密的數(shù)據(jù)現(xiàn)在可以公開查詢了,新加入的數(shù)據(jù)又可能是機密的了。系統(tǒng)中用戶的密級改變。這都需要根據(jù)實際情況修改原有的安全性控制,可以設(shè)置數(shù)據(jù)庫密碼及

24、用戶權(quán)限。同樣,數(shù)據(jù)庫的完整性的約束條件也會變化,需要DBA不斷修正。3.    數(shù)據(jù)庫性能的監(jiān)督、分析和改造利用Microsoft SQL Server2000提供的檢測系統(tǒng)性能參數(shù)的工具,在數(shù)據(jù)庫運行過程中,監(jiān)督數(shù)據(jù)進(jìn)行分析,找出改進(jìn)系統(tǒng)性能的方法,并做適當(dāng)調(diào)整。4.    數(shù)據(jù)庫的重組及重構(gòu)造數(shù)據(jù)庫運行一段時間后,由于記錄不斷增、刪、改,增添、修改的數(shù)據(jù)不能為空,否則不能保存到數(shù)據(jù)庫中。使數(shù)據(jù)庫的物理存儲情況變壞,降低了數(shù)據(jù)的存取效率,數(shù)據(jù)庫性能下降,這時DBA要對數(shù)據(jù)庫進(jìn)行重組織,或部分重組織(只對頻繁增、刪的表進(jìn)行重組織),

25、可以利用Microsoft SQL Server2000專門提供的數(shù)據(jù)重組織實用程序操作,按原設(shè)計要求重新安排存儲位置、回收垃圾、減少指針鏈等,提高系統(tǒng)性能。有些情況,如由于數(shù)據(jù)庫應(yīng)用環(huán)境發(fā)生變化,增加了新的應(yīng)用或新的實體,取消了某些應(yīng)用,有的實體與實體間的聯(lián)系發(fā)生變化,則需要調(diào)整數(shù)據(jù)庫的模式及內(nèi)模式。4.3功能模塊的實現(xiàn)數(shù)據(jù)庫設(shè)計這里的數(shù)據(jù)庫采用Access,用ADO作為連接數(shù)據(jù)對象。1、建立Access 數(shù)據(jù)庫啟動Access,建立一個空的數(shù)據(jù)庫book.mdb,如圖3所示。使用程序設(shè)計器建立系統(tǒng)需要的表格如下。圖書登記表,如圖4所示。圖3建立數(shù)據(jù)庫book.mdb 圖4 圖書登記表圖書借

26、閱表,如圖5所示。圖5 圖書借閱表圖書資料表,如圖6所示。系統(tǒng)管理表,如圖7所示。圖6 圖書資料表 圖7 系統(tǒng)管理表。2、連接數(shù)據(jù)在Visual Basic環(huán)境下,選擇“工程”“引用”命令,在隨后出現(xiàn)的對話框中選擇“Microsoft ActiveX Data Objects 2.0 Library”,然后單擊“確定”按鈕,如圖8所示。圖8用ADO連接數(shù)據(jù)庫在程序設(shè)計的公共模塊中,先定義ADO連接對象。語句如下:Public conn As New ADODB.Connection 標(biāo)記連接對象然后在子程序中,用如下的語句即可打開數(shù)據(jù)庫:Dim connectionstring As Stri

27、ngconnectionstring = "provider=Microsoft.Jet.oledb.4.0;" &_"data source=book.mdb"conn.Open connectionstring3、設(shè)置ODBCVB的ADO對象是通過ODBC來訪問數(shù)據(jù)庫,所以還要建立ODBC數(shù)據(jù)引擎接口。打開控制面板中的“管理工具”“數(shù)據(jù)源”(ODBC),出現(xiàn)如圖9所示的對話框。圖9DBC對話框單擊“添加”按鈕,出現(xiàn)“創(chuàng)建新數(shù)據(jù)源”對話框,如圖10。圖10創(chuàng)建新數(shù)據(jù)源”對話框選擇Microsoft Access Driver(*.mdb),單擊

28、“完成”按鈕,出現(xiàn)如圖11對話框。圖11置連接數(shù)據(jù)源在“數(shù)據(jù)源名”文本框中添加一個名字,單擊“確定”按鈕完成系統(tǒng)默認(rèn)連接設(shè)置。然后在ODBC對話框中單擊“確定”按鈕完成ODBC設(shè)置。界面設(shè)計設(shè)計好的界面(兩種界面選一)如圖12所示。圖12 圖書管理系統(tǒng)界面這是一個多文檔界面(MDI)應(yīng)用程序,可以同時顯示多個文檔,每個文檔顯示在各自的窗體中。MDI 應(yīng)用程序中常有包含子菜單的“窗體”選項,用于在窗體或文檔之間進(jìn)行切換。菜單應(yīng)用程序中,有5個菜單選項,每個選項對應(yīng)著E-R圖的一個子項目。1、創(chuàng)建主窗體首先創(chuàng)建一個工程,命名為圖書管理系統(tǒng),選擇“工程”“添加MDI窗體”命令,則在項目中添加了主窗體

29、。該窗體的一些屬性如表1所示。表1 主窗體的屬性屬 性值Caption圖書管理系統(tǒng)NameMainMenuMainmenu1WindowstateMaxsizeWindowstate的值為Maxsize,即程序啟動之后自動最大化。將“菜單”組件從“工具箱”拖到窗體上。創(chuàng)建一個 Text 屬性設(shè)置為“文件”的頂級菜單項,且?guī)в忻麨椤瓣P(guān)閉”的子菜單項。類似地創(chuàng)建一些菜單項,如表2所示。表2 菜 單 項 表菜 單 名 稱Text屬性功 能 描 述MenuItem1圖書管理頂級菜單,包含子菜單MenuItem2圖書類別調(diào)出圖書登記窗體MenuItem3圖書信息調(diào)出圖書借閱窗體MenuItem4圖書資料

30、頂級菜單,包含子菜單MenuItem5查詢輸出調(diào)出查詢輸出窗體MenuItem6系統(tǒng)管理頂級菜單,包含子菜單MenuItem7增加用戶調(diào)出用戶窗體MenuItem8修改密碼調(diào)出密碼窗體MenuItem9退出系統(tǒng)退出2、創(chuàng)建各子窗體選擇“工程”“添加窗體”命令,添加子窗體。在新建Visual Basic工程時自帶的窗體中,將其屬性MIDChild改成True,則這個窗體成為MID窗體的子窗體。在這個項目中,要創(chuàng)建的子窗體如表3所示。表3 所有子窗體子 窗 體 名Text圖書登記frmdengji圖書借閱frmjieyue增加新用戶frmadduser查詢輸出frmfind登錄系統(tǒng)frmlogin

31、修改密碼frmchangepwd下面分別給出這些子窗體,以及它們所使用的控件。(1) 圖書登記子窗體控件如表4所示。表4 圖書登記子窗體控件控 件 類 別控件Name控件TextLabelLabel1編號Label2書名Label3類型Label4購買日期Label5TextBoxText1(空)Text2(空)Text3(空)Text4(空)Text5(空)CommandButtonCommand1Command2ADO DataAdodc1(空)DataGridDataGrid1(空)圖書借閱和圖書賠償子窗體分別,因為它們的控件與圖書登記子窗體的雷同,在此不作介紹。(2) 增加用戶子窗體如

32、圖13所示,其控件如表5所示。圖13 增加用戶子窗體表5 增加用戶子窗體控件控 件 類 別控件Name控件TextLabelLabel1輸入用戶名Label2輸入密碼Label3確認(rèn)密碼TextBoxText1(空)Text2(空)Text3(空)ComboBoxComb1選擇權(quán)限CommandButtonCommandl確定Command2取消(3) 修改密碼子窗體如圖14所示。圖14 修改密碼子窗體(4) 用戶登錄子窗體如圖15所示。圖15 用戶登錄子窗體 (5) 添加讀者類別如圖16,其控件如表9所示。圖16建立公共模塊1、顯示目錄建立公共模塊可以提高代碼的效率,同時使得修改和維護(hù)代碼都

33、很方便。創(chuàng)建公共模塊的步驟如下:(1) 在菜單中選擇“工程”“添加模塊”命令,則出現(xiàn)模塊對話框,如圖18所示。(2) 選擇模塊圖標(biāo)后,單擊“打開”按鈕,則模塊已經(jīng)添加到項目中了。默認(rèn)情況下名為Module1。圖17 模塊對話框(3) 在模塊中定義整個項目的公共變量。Public conn As New ADODB.Connection 標(biāo)記連接對象Public userID As String 標(biāo)記當(dāng)前用戶IDPublic userpow As String 標(biāo)記用戶權(quán)限Public find As Boolean 標(biāo)記查詢Public sqlfind As String 查詢語句Public

34、 rs_data1 As New ADODB.RecordsetPublic findok As BooleanPublic frmdata As BooleanPublic Const keyenter = 13 enter鍵的ASCII碼在主窗體添加完菜單之后,就要為各個子菜單創(chuàng)建事件處理程序。主窗體代碼在本項目中,子菜單事件都是Click事件,這里先給出主窗體部分的代碼。下面是響應(yīng)“增加用戶”子菜單Click事件,調(diào)出增加用戶窗體代碼。Private Sub add_admin_Click()frmadduser.ShowEnd SubPrivate Sub add_back_book_

35、Click()frmbackbookinfo.ShowEnd SubPrivate Sub add_book_info_Click()frmaddbookinfo.ShowEnd SubPrivate Sub add_book_style_Click()frmaddbookstyle.ShowEnd SubPrivate Sub add_lend_book_Click()frmfindbook.ShowEnd SubPrivate Sub add_reader_info_Click()frmaddreaderinfo.ShowEnd SubPrivate Sub add_reader_styl

36、e_Click()frmaddreaderstyle.ShowEnd SubPrivate Sub change_pwd_Click()frmchangepwd.ShowEnd SubPrivate Sub del_book_info_Click()frmmodifybookinfo.ShowEnd SubPrivate Sub del_book_style_Click()frmmodifybookstyle.ShowEnd SubPrivate Sub del_reader_info_Click()frmreaderinfo.ShowEnd SubPrivate Sub del_reader

37、_style_Click()frmmodifyreaderstyle.ShowEnd SubPrivate Sub exit_sys_Click()EndEnd SubPrivate Sub find_book_info_Click()frmfindbook.ShowEnd SubPrivate Sub find_lend_book_Click()frmfindborrowinfo.ShowEnd SubPrivate Sub find_reader_info_Click()frmfindreader.ShowEnd SubPrivate Sub Form_Load()End SubPriva

38、te Sub modify_book_info_Click()frmmodifybookinfo.ShowEnd SubPrivate Sub modify_book_style_Click()frmmodifybookstyle.ShowEnd SubPrivate Sub modify_reader_info_Click()frmreaderinfo.ShowEnd SubPrivate Sub modify_reader_style_Click()frmmodifyreaderstyle.ShowEnd Sub2、各子窗體的代碼(1) 圖書登記子窗體代碼本窗體用來填寫圖書登記的信息,用A

39、DO來連接數(shù)據(jù)庫,是本窗體的重點。采用MDI的子程序,所以運行后,它出現(xiàn)在主程序的界面下,如圖18所示。圖18 圖書登記子窗體按鈕控件要求先填寫基本信息,然后與數(shù)據(jù)庫信息比較。Option ExplicitPrivate Sub Command1_Click()Dim rs_addbook As New ADODB.RecordsetDim sql As StringIf Trim(Combo1.Text) = "" Then MsgBox "請選擇圖書種類", vbOKOnly + vbExclamation, "" Combo1.

40、SetFocus Exit SubEnd IfIf Trim(Text1.Text) = "" Then MsgBox "圖書編號不能為空", vbOKOnly + vbExclamation, "" Text1.SetFocus Exit SubEnd IfIf Trim(Text2.Text) = "" Then MsgBox "書名不能為空", vbOKOnly + vbExclamation, "" Text2.SetFocus Exit SubEnd If If N

41、ot IsDate(Text5.Text) Then MsgBox "請按照yyyy-mm-dd格式輸入日期", vbOKOnly + vbExclamation, "" Text5.SetFocus Exit Sub End If If Not IsDate(Text6.Text) Then MsgBox "請按照yyyy-mm-dd格式輸入日期", vbOKOnly + vbExclamation, "" Text6.SetFocus Exit Sub End Ifsql = "select * fr

42、om 書籍信息 where 書籍編號='" & Text1.Text & "'"rs_addbook.Open sql, conn, adOpenKeyset, adLockPessimisticIf rs_addbook.EOF Then rs_addbook.AddNew rs_addbook.Fields(0) = Trim(Text1.Text) rs_addbook.Fields(1) = Trim(Text2.Text) rs_addbook.Fields(2) = Trim(Combo1.Text) rs_addboo

43、k.Fields(3) = Trim(Text3.Text) rs_addbook.Fields(4) = Trim(Text4.Text) rs_addbook.Fields(5) = Trim(Text5.Text) rs_addbook.Fields(6) = Trim(Text6.Text) rs_addbook.Fields(7) = "否" rs_addbook.Update MsgBox "添加書籍信息成功!", vbOKOnly, "" rs_addbook.CloseElse MsgBox "圖書編號重復(fù)!

44、", vbOKOnly + vbExclamation, "" Text1.SetFocus Text1.Text = "" rs_addbook.Close Exit SubEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Dim rs_leibie As New ADODB.RecordsetDim sql As Stringsql = "select * from 圖書類別"rs_leibie.Open sql

45、, conn, adOpenKeyset, adLockPessimisticrs_leibie.MoveFirstDo While Not rs_leibie.EOF Combo1.AddItem rs_leibie.Fields(0) rs_leibie.MoveNextLooprs_leibie.CloseEnd SubPrivate Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)End Sub圖書借閱子窗體運行后如圖19所示,因為它們的代碼和圖書登記子窗體的代碼雷同,在此不做重復(fù)。圖19 圖書借閱子窗體運

46、行效果 (2) 增加用戶子窗體代碼增加用戶子窗體是用來增加用戶的用戶名、密碼和權(quán)限的。單擊“確定”按鈕后,還要返回一個信息框,提示成功信息,如圖20所示。圖20 增加用戶子窗體運行效果 信息框窗體部分代碼的思路是,收集輸入的表中的字符串,然后與數(shù)據(jù)庫中的系統(tǒng)的用戶數(shù)據(jù)比較,如果不存在,則允許添加。Private Sub Command1_Click()Dim sql As StringDim rs_add As New ADODB.RecordsetIf Trim(Text1.Text) = "" Then MsgBox "用戶名不能為空", vbOKO

47、nly + vbExclamation, "" Exit Sub Text1.SetFocusElse sql = "select * from 系統(tǒng)管理" rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic While (rs_add.EOF = False) If Trim(rs_add.Fields(0) = Trim(Text1.Text) Then MsgBox "已有這個用戶", vbOKOnly + vbExclamation, "" Text

48、1.SetFocus Text1.Text = "" Text2.Text = "" Text3.Text = "" Combo1.Text = "" Exit Sub Else rs_add.MoveNext End If Wend If Trim(Text2.Text) <> Trim(Text3.Text) Then MsgBox "兩次密碼不一致", vbOKOnly + vbExclamation, "" Text2.SetFocus Text2.Tex

49、t = "" Text3.Text = "" Exit Sub ElseIf Trim(Combo1.Text) <> "system" And Trim(Combo1.Text) <> "guest" Then MsgBox "請選擇正確的用戶權(quán)限", vbOKOnly + vbExclamation, "" Combo1.SetFocus Combo1.Text = "" Exit Sub Else rs_add.AddNew

50、rs_add.Fields(0) = Text1.Text rs_add.Fields(1) = Text2.Text rs_add.Fields(2) = Combo1.Text rs_add.Update rs_add.Close MsgBox "添加用戶成功", vbOKOnly + vbExclamation, "" Unload Me End IfEnd IfEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Form_Load()Combo1.AddItem "

51、;system"Combo1.AddItem "guest"End Sub(3) 修改密碼子窗體代碼修改密碼子窗體是用來修改用戶密碼的。圖21修改密碼子窗體運行效果在“確定”按鈕的Click事件中添加如下代碼:Private Sub Command1_Click()Dim rs_chang As New ADODB.RecordsetDim sql As StringIf Trim(Text1.Text) <> Trim(Text2.Text) ThenMsgBox "密碼不一致!", vbOKOnly + vbExclamatio

52、n, ""Text1.SetFocusText1.Text = ""Text2.Text = ""Elsesql = "select * from 系統(tǒng)管理 where 用戶名=" & userID & ""rs_chang.Open sql, conn, adOpenKeyset, adLockPessimisticrs_chang.Fields(1) = Text1.Textrs_chang.Updaters_chang.CloseMsgBox "密碼修改成功&qu

53、ot;, vbOKOnly + vbExclamation, ""Unload MeEnd IfEnd Sub圖22在上述代碼中,首先比較兩個表中的數(shù)據(jù)是否一致,然后用rs_chang.Fields(1) = Text1.Text語句把代碼輸入到數(shù)據(jù)庫中。最后,用MsgBox "密碼修改成功", vbOKOnly + vbExclamation,""語句彈出一個信息框,告訴修改成功,如圖22所示。(4) 查詢子窗體代碼查詢子窗體是用來查詢庫房中圖書資料明細(xì)的。其運行效果如圖23所示。圖23 查詢子窗體運行效果Option Explic

54、itDim panduan As StringPrivate Sub Command1_Click()Dim rs_findbook As New ADODB.RecordsetDim sql As StringIf Check1.Value = vbChecked Then sql = "書名='" & Trim(Text1.Text & " ") & "'"End IfIf Check2.Value = vbChecked Then If Trim(sql) = "" T

55、hen sql = "類別='" & Trim(Combo1.Text & " ") & "'" Else sql = sql & "and 書名='" & Trim(Combo1.Text & " ") & "'" End IfEnd IfIf Check3.Value = vbChecked Then If Trim(sql) = "" Then sql = &qu

56、ot;作者='" & Trim(Text2.Text & " ") & "'" Else sql = sql & "and 作者='" & Trim(Text2.Text & " ") & "'" End IfEnd IfIf Check4.Value = vbChecked Then If Trim(sql) = "" Then sql = "出版社='&qu

57、ot; & Trim(Text3.Text & " ") & "'" Else sql = sql & "and 出版社='" & Trim(Text3.Text & " ") & "'" End IfEnd IfIf Check5.Value = vbChecked Then If Trim(sql) = "" Thensql = "書籍編號='" & Tri

58、m(Text4.Text & " ") & "'" Else sql = sql & "and 書籍編號='" & Trim(Text4.Text & " ") & "'" End IfEnd IfIf Trim(sql) = "" Then MsgBox "請選擇查詢方式!", vbOKOnly + vbExclamation Exit SubEnd Ifsql = "se

59、lect * from 書籍信息 where " & sqlrs_findbook.CursorLocation = adUseClientrs_findbook.Open sql, conn, adOpenKeyset, adLockPessimisticDataGrid1.AllowAddNew = FalseDataGrid1.AllowDelete = FalseDataGrid1.AllowUpdate = FalseSet DataGrid1.DataSource = rs_findbook'rs_findbook.CloseEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate

溫馨提示

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

評論

0/150

提交評論