2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計報告書</b></p><p>  題 目 教學成績管理系統(tǒng)</p><p>  系 別 計算機工程系 </p><p>  專 業(yè) 計算機科學與技術(shù)</p><p>  班 級 計本1018班 </p><p>  

2、姓 名 </p><p>  指導教師 </p><p><b>  圖書管理系統(tǒng)</b></p><p><b>  內(nèi)容摘要</b></p><p>  圖書管理系統(tǒng)是采用Visual Basic6.0開發(fā)的一個數(shù)據(jù)庫管理系統(tǒng)。開發(fā)本系統(tǒng)的基本步

3、驟:需求分析、系統(tǒng)概念設(shè)計、系統(tǒng)邏輯和物理設(shè)計、系統(tǒng)實現(xiàn)和維護。在系統(tǒng)分析中先后用數(shù)據(jù)字典、數(shù)據(jù)流程、系統(tǒng)的功能結(jié)構(gòu)圖、ER圖分析了系統(tǒng)所需的各種數(shù)據(jù)。在系統(tǒng)的設(shè)計過程中,我們采用了模塊獨立設(shè)計法,比較詳細的展現(xiàn)了各個模塊的功能。在庫和表的設(shè)計當中, 我們力求層次清晰,設(shè)計簡單實用。在系統(tǒng)具體實行階段中,我們精心細致的畫出了各個窗體并給出了相應的事件和代碼,以實現(xiàn)各個窗體的作用。</p><p>  開發(fā)環(huán)境:為

4、方便系統(tǒng)開發(fā),減少開發(fā)過程的難度,本圖書管理開發(fā)系統(tǒng)是基于以下的軟件環(huán)境。</p><p>  ·以Windows XP為操作系統(tǒng)</p><p>  ·以Visual Basic6.0為開發(fā)工具</p><p>  ·以Access 2000作為后臺數(shù)據(jù)庫</p><p>  功能概述:該系統(tǒng)界面友好,操作簡便

5、,能完成添加圖書信息,修改圖書信息,查詢圖書信息,添加讀者類別,修改讀者類別,查詢讀者信息,修改讀者信息等一系列圖書管理功能,開發(fā)本系統(tǒng)的總體任務是實現(xiàn)圖書管理的系統(tǒng)化和自動化,幫助管理人員更好更高效地完成圖書管理工作。本著實用性和介紹性的原則,整個系統(tǒng)由四大模塊組成,每個大的模塊又包括三至四個小的模塊。</p><p>  一、  圖書管理部分:包括圖書信息管理和類別管理,其功能是實現(xiàn)對各部分數(shù)據(jù)內(nèi)容

6、進行添加、修改、查詢等操作。</p><p>  二、  讀者管理部分:包括讀者信息管理和讀者類別管理,其功能是實現(xiàn)對各部分數(shù)據(jù)內(nèi)容的添加和修改等操作。</p><p>  三、  借閱管理部分:包括借書管理和還書管理,其功能是實現(xiàn)對各部分數(shù)據(jù)內(nèi)容的添加和查詢等操作。</p><p>  四、  系統(tǒng)管理部分:包括修改系統(tǒng)用戶密碼和增加

7、新用戶兩項功能。 </p><p>  系統(tǒng)具有高效、易操作、易維護等特點,并且系統(tǒng)結(jié)構(gòu)清晰、界面友好,功能較為齊全,能有效地協(xié)助管理人員進行圖書管工作。如果想真正把它用到圖書館的圖書自動化管理中,還需要讀者對該系統(tǒng)進行一步的完善工作。</p><p><b>  需求分析</b></p><p>  需求分析階段確定的系統(tǒng)邏輯模型是以后設(shè)計和

8、實現(xiàn)目標系統(tǒng)的基礎(chǔ),因此必須準確完整地體現(xiàn)用戶的要求。</p><p>  2.1.系統(tǒng)的數(shù)據(jù)字典</p><p>  本系統(tǒng)的主要數(shù)據(jù)元素的數(shù)據(jù)字典卡片:</p><p>  2.2.  數(shù)據(jù)流程圖</p><p>  數(shù)據(jù)流程圖(Data Flow DFD)是描述實際業(yè)務管理系統(tǒng)工作流程的一種圖形表示法。它描繪系統(tǒng)的邏輯模型圖,

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

10、類別管理基本信息流程圖 </p><p>  流程圖分析:圖書類別基本信息的流動首先是以圖書類別的編號為依據(jù),來達到添加、修改、查詢圖書類別記錄。同時,也對數(shù)據(jù)庫中的圖書類別表的編號進行檢查。 </p><p>  2 圖書信息管理基本信息流程圖 </p><p>  流程圖分析:圖書基本信息的流動首先是以圖書編號為流動方向的依據(jù),來達到添加、修改、記錄、

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

12、如沒有則可進行添加。</p><p>  4 讀者信息管理基本信息流程圖</p><p>  流程圖分析:讀者基本信息的流動首先是以讀者的編號為依據(jù),來達到添加、修改、查詢、刪除讀者信息的記錄。同時,也對數(shù)據(jù)庫中的讀者信息表的編號進行檢查。 </p><p>  5借書管理基本信息流程圖</p><p>  流程圖分析:借書管理基本信息的流動

13、首先是以借閱編號為流動方向的依據(jù),來達到添加、查詢借書記錄。為了數(shù)據(jù)的一致性,進行這些操作的同時,也對數(shù)據(jù)庫中的記錄進行檢查,檢查是否有重復的記錄。如沒有則可進行添加。</p><p>  6 還書管理基本信息流程圖</p><p>  流程圖分析:借閱管理部分是實現(xiàn)對各部分數(shù)據(jù)內(nèi)容的添加和查詢操作,在借閱信息中包括借閱編號、讀者編號、讀者姓名、書籍名稱、出借日期和還書日期。并通過添加功能

14、來達到借閱信息表的數(shù)據(jù)的更新,通過查詢可使管理員很快地了解借閱信息,從而避免書籍的丟失現(xiàn)象產(chǎn)生。</p><p>  通過上面對各個模塊流程的分析,那么我們就不難對整個系統(tǒng)的大致流程有一個全面的認識。設(shè)計時采用了常用的自頂向下的瀑布式結(jié)構(gòu)化設(shè)計方法。各子系統(tǒng)具有獨立的數(shù)據(jù)庫結(jié)構(gòu),同時又具有相關(guān)的關(guān)鍵字,這樣系統(tǒng)做起來后就便于用戶操作。綜合上面各個模塊的流程分析,其總體流程圖如下:</p><p

15、>  2.3.系統(tǒng)的概念設(shè)計</p><p>  概念設(shè)計階段主要任務和目標是根據(jù)需求分析的結(jié)果,包括一般聯(lián)系實體,畫出對應的ER圖。對于復雜的系統(tǒng),通常首先要對它的各功能模進行分析,然后再把它的功能結(jié)構(gòu)圖畫出來,便是設(shè)計和優(yōu) 化。功能分析之后,再根據(jù)各個崗位、各個用戶對數(shù)據(jù)和使用權(quán)限的不同要求作出局部ER圖,然后再把各個局部ER圖綜合起來形成統(tǒng)一的整體ER圖。 </p><p

16、><b>  3.1模塊功能分析</b></p><p>  圖書管理部分:包括圖書信息管理和類別管理,其功能是實現(xiàn)對各部分數(shù)據(jù)內(nèi)容進行添加、修改、查詢等操作。各管理部分的明細如下:</p><p>  (1)圖書信息管理:包括圖書信息的添加、圖書信息的修改、圖書信息的查詢和圖書的信息刪除4部分。其中,圖書信息包括圖書編號、書名、圖書類別、作者、出版社、出版日期

17、、登記日期以及是否已被借出。</p><p> ?。?)圖書類別管理:包括圖書類別的添加、圖書類別的修改、圖書類別的刪除3部分功能。其中,圖書類別包括類別名稱和類別編號兩部分。</p><p>  借閱管理部分:包括借書管理和還書管理,其功能是實現(xiàn)對各部分數(shù)據(jù)內(nèi)容的添加和查詢等操作。各管理部分的明細如下:</p><p> ?。?)借書管理:包括添加借書信息和查詢借

18、書信息2部分功能。其中,借閱信息包括借閱編號、讀者編號、讀者姓名、圖書編號、圖書名稱、出借日期和還書日期。</p><p>  (2)還書管理:實現(xiàn)添加還書信息功能。其中,還書信息與借閱信息部分明細相同。</p><p>  讀者管理部分:包括讀者信息管理和讀者類別管理,其功能是實現(xiàn)對各部分數(shù)據(jù)內(nèi)容的添加和修改、刪除等操作。各管理部分的明細如下:</p><p> 

19、?。?)讀者信息管理:包括讀者信的添加、讀者信息的修改、讀者信息的查詢和讀者信息的刪除4部分功能。其中,讀者信息包括讀者姓名、讀者編號、性別、讀者類別、工作單位、家庭住址、電話號碼、登記日期和已借書數(shù)量。</p><p>  (2)讀者類別管理:包括讀者類別的添加、讀者類別的修改、讀者類別的刪除3部分功能。其中,讀者類別包括各種類名稱、借書期限和有效期限4部分。</p><p>  系統(tǒng)管

20、理部分:包括修改系統(tǒng)用戶密碼、增加新用戶和退出系統(tǒng)三項功能。系統(tǒng)初始設(shè)置一個超級用戶名和密碼,操作人員可以利用這個超級用戶名和密碼登錄,之后,可以設(shè)置其他的超級用戶名稱,也可以設(shè)置權(quán)限用戶,同時也設(shè)置了這個用戶可以使用的權(quán)限。  </p><p>  3.2系統(tǒng)功能結(jié)構(gòu)圖</p><p>  3.3系統(tǒng)ER圖的設(shè)計</p><p>  數(shù)據(jù)庫在一個信息管理

21、系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應用系統(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)時應該首先充分了解用戶各個方面的需求,包括現(xiàn)有的以及將來可能增加的需求。</p><p>  針對圖書管理系統(tǒng)的需求,通過對圖書管理系統(tǒng)流程分析,設(shè)計此系統(tǒng)需要如下面所示的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):</

22、p><p>  圖書信息:包括的數(shù)據(jù)項有:圖書編號、書名、圖書類別、作者出版社、出版日期、登記日期</p><p>  讀者信息:包括的數(shù)據(jù)項有:讀者姓名、編號、性別、讀者類別、工作單位、家庭住址、電話號碼、登記日期和已借書數(shù)量</p><p>  圖書借閱信息:包括的數(shù)據(jù)項有:借閱編號、讀者編號、讀者姓名、圖書編號、圖書名稱、出借日期和還書日期。</p>

23、<p>  在概念設(shè)計階段中,設(shè)計人員從用戶的角度看待數(shù)據(jù)及處理要求和約束,產(chǎn)生一個反映用戶觀點的概念模式。然后再把概念模式轉(zhuǎn)換成邏輯模式。將概念設(shè)計從設(shè)計過程中獨立開來,使各階段的任務相對單一化,設(shè)計復雜程度大大降低,不受特定DBMS的限制。</p><p>  利用ER方法進行數(shù)據(jù)庫的概念設(shè)計,可分成三步進行:首先設(shè)計局部ER模式,然后把各局部ER模式綜合成一個全局模式,最后對全局ER模式進行優(yōu)化

24、,得到最終的模式,即概念模式。 </p><p>  ER模型的“聯(lián)系”用于刻畫實體之間的關(guān)聯(lián)。一種完整的方式是對局部結(jié)構(gòu)中任意兩個實體類型,依據(jù)需求分析的結(jié)果,考察局部結(jié)構(gòu)中任意兩個實體類型之間是否存在聯(lián)系。若有聯(lián)系,進一步確定是1:N,M:N,還是1:1等。還要考察一個實體類型內(nèi)部是否存在聯(lián)系,兩個實體類型之間是否存在聯(lián)系,多個實體類型之間是否存在聯(lián)系,等等。</p><p>  

25、所有局部ER模式都設(shè)計好了后,接下來就是把它們綜合成單一的全局概念結(jié)構(gòu)。全局概念結(jié)構(gòu)不僅要支持所有局部ER模式,而且必須合理地表示一個完整、一致的數(shù)據(jù)庫概念結(jié)構(gòu)。1)確定公共實體類型    為了給多個局部ER模式的合并提供開始合并的基礎(chǔ),首先要確定各局部結(jié)構(gòu)中的公共實體類型。在這一步中我們僅根據(jù)實體類型名和鍵來認定公共實體類型。一般把同名實體類型作為公共實體類型的一類候選,把具有相同鍵的實體類型作為公共

26、實體類型的另一類候選。2)局部ER模式的合并    合并的原則是:首先進行兩兩合并;先和合并那些現(xiàn)實世界中有聯(lián)系的局部結(jié)構(gòu);合并從公共實體類型開始,最后再加入獨立的局部結(jié)構(gòu)。3)消除沖突    沖突分為三類:屬性沖突、結(jié)構(gòu)沖突、命名沖突。設(shè)計全局ER模式的目的不在于把若干局部ER模式形式上合并為一個ER模式,而在于消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概

27、念模型。3)全局ER模式的優(yōu)化    在得到全局ER模式后,為了提高數(shù)據(jù)庫系統(tǒng)的效率,還應進一步依據(jù)處理需求對ER模式進行優(yōu)化。一個好的全局ER模式,除能準確、全面地反映用戶功能需求外,還應滿足下列條件:實</p><p>  2.3. 系統(tǒng)邏輯和物理設(shè)計</p><p>  2.3.1數(shù)據(jù)庫的設(shè)計</p><p>  根據(jù)上面的數(shù)

28、據(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ù)庫中的一個表。</p><p><b>  1.圖書類別表</b></p><p

29、><b>  2.圖書信息表</b></p><p><b>  3.借閱信息表</b></p><p><b>  4.讀者信息表</b></p><p>  5.讀者類別表          

30、                                     

31、60;                                    &

32、#160;                              </p><p>  2.3.2數(shù)據(jù)庫的維護&

33、lt;/p><p>  由于應用環(huán)境不斷變化,數(shù)據(jù)庫運行過和中物理存儲也會不斷變化,對數(shù)據(jù)庫設(shè)計進行調(diào)整,修改等維護工作是設(shè)計工作的繼續(xù)和提高。對數(shù)據(jù)庫經(jīng)常性的維護工作主要包括:</p><p>  1.    數(shù)據(jù)庫的轉(zhuǎn)儲和恢復</p><p>  針對不同的應用要求制定不同的轉(zhuǎn)儲計劃,保證一旦發(fā)生故障能盡快將數(shù)據(jù)庫恢復到某種一致的狀態(tài),

34、盡可能減少對數(shù)據(jù)庫的破壞。</p><p>  2.    數(shù)據(jù)庫的安全性、完整性控制</p><p>  在數(shù)據(jù)庫運行過程中由于應用環(huán)境的變化,對安全性的要求也會發(fā)生變化,如原來機密的數(shù)據(jù)現(xiàn)在可以公開查詢了,新加入的數(shù)據(jù)又可能是機密的了。系統(tǒng)中用戶的密級改變。這都需要根據(jù)實際情況修改原有的安全性控制,可以設(shè)置數(shù)據(jù)庫密碼及用戶權(quán)限。同樣,數(shù)據(jù)庫的完整性的約束條

35、件也會變化,需要DBA不斷修正。</p><p>  3.    數(shù)據(jù)庫性能的監(jiān)督、分析和改造</p><p>  利用Microsoft SQL Server2000提供的檢測系統(tǒng)性能參數(shù)的工具,在數(shù)據(jù)庫運行過程中,監(jiān)督數(shù)據(jù)進行分析,找出改進系統(tǒng)性能的方法,并做適當調(diào)整。</p><p>  4.   

36、數(shù)據(jù)庫的重組及重構(gòu)造</p><p>  數(shù)據(jù)庫運行一段時間后,由于記錄不斷增、刪、改,增添、修改的數(shù)據(jù)不能為空,否則不能保存到數(shù)據(jù)庫中。使數(shù)據(jù)庫的物理存儲情況變壞,降低了數(shù)據(jù)的存取效率,數(shù)據(jù)庫性能下降,這時DBA要對數(shù)據(jù)庫進行重組織,或部分重組織(只對頻繁增、刪的表進行重組織),可以利用Microsoft SQL Server2000專門提供的數(shù)據(jù)重組織實用程序操作,按原設(shè)計要求重新安排存儲位置、回收垃圾、減少

37、指針鏈等,提高系統(tǒng)性能。</p><p>  有些情況,如由于數(shù)據(jù)庫應用環(huán)境發(fā)生變化,增加了新的應用或新的實體,取消了某些應用,有的實體與實體間的聯(lián)系發(fā)生變化,則需要調(diào)整數(shù)據(jù)庫的模式及內(nèi)模式。</p><p>  4.3功能模塊的實現(xiàn) </p><p><b>  數(shù)據(jù)庫設(shè)計</b></p><p>  這里的數(shù)據(jù)庫采用

38、Access,用ADO作為連接數(shù)據(jù)對象。</p><p>  1、建立Access 數(shù)據(jù)庫</p><p>  啟動Access,建立一個空的數(shù)據(jù)庫book.mdb,如圖3所示。</p><p>  使用程序設(shè)計器建立系統(tǒng)需要的表格如下。</p><p>  圖書登記表,如圖4所示?!    D3建立數(shù)據(jù)庫book.mdb

39、 圖4 圖書登記表  圖書借閱表,如圖5所示。   圖5 圖書借閱表  圖書資料表,如圖6所示。系統(tǒng)管理表,如圖7所示?!    D6 圖書資料表 </p><p>  圖7 系統(tǒng)管理表    ?!   ?、連接數(shù)據(jù)  在Visual Basic環(huán)境下,選擇“工程”→“引用”命令,在隨后出現(xiàn)的對話框中選擇“Microsoft ActiveX Data Objects 2.0 Libr

40、ary”,然后單擊“確定”按鈕,如圖8所示?!  D8用ADO連接數(shù)據(jù)庫  在程序設(shè)計的公共模塊中,先定義ADO連接對象。語句如下:  Public conn As New ADODB.Connection ’ 標記連接對象  然后在子程序中,用如下的語句即可打開數(shù)據(jù)庫:  Dim connectionstring As String  connectionstring = "provider=Microsoft

41、.Jet.oledb.4.0;" &_  "data source=book.mdb"  conn.Open connectionstring  3、設(shè)置ODBC  VB的ADO對象是通過ODBC來訪問數(shù)據(jù)庫,所以還要建立ODBC數(shù)據(jù)引擎接口。打開控制面板中的“管理工具”→“數(shù)據(jù)源”(ODBC),出現(xiàn)如圖9所示的對話框?!  D9D</p><p><b&g

42、t;  界面設(shè)計 </b></p><p>  設(shè)計好的界面(兩種界面選一)如圖12所示。</p><p>  圖12 圖書管理系統(tǒng)界面</p><p>  這是一個多文檔界面(MDI)應用程序,可以同時顯示多個文檔,每個文檔顯示在各自的窗體中。MDI 應用程序中常有包含子菜單的“窗體”選項,用于在窗體或文檔之間進行切換。</p><

43、p>  菜單應用程序中,有5個菜單選項,每個選項對應著E-R圖的一個子項目。</p><p>  1、創(chuàng)建主窗體  首先創(chuàng)建一個工程,命名為圖書管理系統(tǒng),選擇“工程”→“添加MDI窗體”命令,則在項目中添加了主窗體。該窗體的一些屬性如表1所示。</p><p><b>  表1 主窗體的屬性</b></p><p>  Windowsta

44、te的值為Maxsize,即程序啟動之后自動最大化。</p><p>  將“菜單”組件從“工具箱”拖到窗體上。創(chuàng)建一個 Text 屬性設(shè)置為“文件”的頂級菜單項,且?guī)в忻麨椤瓣P(guān)閉”的子菜單項。類似地創(chuàng)建一些菜單項,如表2所示。</p><p>  表2 菜 單 項 表</p><p><b>  2、創(chuàng)建各子窗體</b></p>

45、<p>  選擇“工程”→“添加窗體”命令,添加子窗體。</p><p>  在新建Visual Basic工程時自帶的窗體中,將其屬性MIDChild改成True,則這個窗體成為MID窗體的子窗體。</p><p>  在這個項目中,要創(chuàng)建的子窗體如表3所示。</p><p><b>  表3 所有子窗體</b></p>

46、;<p>  下面分別給出這些子窗體,以及它們所使用的控件。</p><p>  (1) 圖書登記子窗體控件如表4所示。</p><p>  表4 圖書登記子窗體控件</p><p>  圖書借閱和圖書賠償子窗體分別,因為它們的控件與圖書登記子窗體的雷同,在此不作介紹。(2) 增加用戶子窗體如圖13所示,其控件如表5所示。</p>&l

47、t;p>  圖13 增加用戶子窗體</p><p>  表5 增加用戶子窗體控件</p><p>  (3) 修改密碼子窗體如圖14所示。</p><p>  圖14 修改密碼子窗體</p><p> ?。?) 用戶登錄子窗體如圖15所示?!?lt;/p><p>  圖15 用戶登錄子窗體 </p>&

48、lt;p>  (5) 添加讀者類別如圖16,其控件如表9所示。    圖16</p><p><b>  建立公共模塊</b></p><p><b>  1、顯示目錄</b></p><p>  建立公共模塊可以提高代碼的效率,同時使得修改和維護代碼都很方便。</p><p>  創(chuàng)建公

49、共模塊的步驟如下:</p><p>  (1) 在菜單中選擇“工程”→“添加模塊”命令,則出現(xiàn)模塊對話框,如圖18所示。</p><p>  (2) 選擇模塊圖標后,單擊“打開”按鈕,則模塊已經(jīng)添加到項目中了。默認情況下名為Module1?!   D17 模塊對話框</p><p>  (3) 在模塊中定義整個項目的公共變量?! ublic conn As

50、New ADODB.Connection ’ 標記連接對象  Public userID As String ’ 標記當前用戶ID  Public userpow As String ’ 標記用戶權(quán)限  Public find As Boolean ’ 標記查詢  Public sqlfind As String ’ 查詢語句  Public rs_data1 As New ADODB.Recordset  Public f

51、indok As Boolean  Public frmdata As Boolean  Public Const keyenter = 13 ’ enter鍵的ASCII碼  在主窗體添加完菜單之后,就要為各個子菜單創(chuàng)建事件處理程序。</p><p><b>  主窗體代碼</b></p><p>  在本項目中,子菜單事件都是Click事件,這里先給出主窗體

52、部分的代碼。</p><p>  下面是響應“增加用戶”子菜單Click事件,調(diào)出增加用戶窗體代碼。</p><p>  Private Sub add_admin_Click()</p><p>  frmadduser.Show</p><p><b>  End Sub</b></p><p&g

53、t;  Private Sub add_back_book_Click()</p><p>  frmbackbookinfo.Show</p><p><b>  End Sub</b></p><p>  Private Sub add_book_info_Click()</p><p>  frmaddbookin

54、fo.Show</p><p><b>  End Sub</b></p><p>  Private Sub add_book_style_Click()</p><p>  frmaddbookstyle.Show</p><p><b>  End Sub</b></p><

55、;p>  Private Sub add_lend_book_Click()</p><p>  frmfindbook.Show</p><p><b>  End Sub</b></p><p>  Private Sub add_reader_info_Click()</p><p>  frmaddread

56、erinfo.Show</p><p><b>  End Sub</b></p><p>  Private Sub add_reader_style_Click()</p><p>  frmaddreaderstyle.Show</p><p><b>  End Sub</b></p&

57、gt;<p>  Private Sub change_pwd_Click()</p><p>  frmchangepwd.Show</p><p><b>  End Sub</b></p><p>  Private Sub del_book_info_Click()</p><p>  frmmod

58、ifybookinfo.Show</p><p><b>  End Sub</b></p><p>  Private Sub del_book_style_Click()</p><p>  frmmodifybookstyle.Show</p><p><b>  End Sub</b><

59、;/p><p>  Private Sub del_reader_info_Click()</p><p>  frmreaderinfo.Show</p><p><b>  End Sub</b></p><p>  Private Sub del_reader_style_Click()</p><

60、p>  frmmodifyreaderstyle.Show</p><p><b>  End Sub</b></p><p>  Private Sub exit_sys_Click()</p><p><b>  End</b></p><p><b>  End Sub<

61、/b></p><p>  Private Sub find_book_info_Click()</p><p>  frmfindbook.Show</p><p><b>  End Sub</b></p><p>  Private Sub find_lend_book_Click()</p>

62、<p>  frmfindborrowinfo.Show</p><p><b>  End Sub</b></p><p>  Private Sub find_reader_info_Click()</p><p>  frmfindreader.Show</p><p><b>  End Su

63、b</b></p><p>  Private Sub Form_Load()</p><p><b>  End Sub</b></p><p>  Private Sub modify_book_info_Click()</p><p>  frmmodifybookinfo.Show</p>

64、<p><b>  End Sub</b></p><p>  Private Sub modify_book_style_Click()</p><p>  frmmodifybookstyle.Show</p><p><b>  End Sub</b></p><p>  Pri

65、vate Sub modify_reader_info_Click()</p><p>  frmreaderinfo.Show</p><p><b>  End Sub</b></p><p>  Private Sub modify_reader_style_Click()</p><p>  frmmodifyr

66、eaderstyle.Show</p><p><b>  End Sub</b></p><p>  2、各子窗體的代碼    (1) 圖書登記子窗體代碼  本窗體用來填寫圖書登記的信息,用ADO來連接數(shù)據(jù)庫,是本窗體的重點。采用MDI的子程序,所以運行后,它出現(xiàn)在主程序的界面下,如圖18所示?!  D18 圖書登記子窗體  按鈕控件要求先填寫基本信息,然

67、后與數(shù)據(jù)庫信息比較?! ption Explicit</p><p>  Private Sub Command1_Click()</p><p>  Dim rs_addbook As New ADODB.Recordset</p><p>  Dim sql As String</p><p>  If Trim(Combo1.Tex

68、t) = "" Then</p><p>  MsgBox "請選擇圖書種類", vbOKOnly + vbExclamation, ""</p><p>  Combo1.SetFocus</p><p><b>  Exit Sub</b></p><p>

69、<b>  End If</b></p><p>  If Trim(Text1.Text) = "" Then</p><p>  MsgBox "圖書編號不能為空", vbOKOnly + vbExclamation, ""</p><p>  Text1.SetFocus<

70、/p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  If Trim(Text2.Text) = "" Then</p><p>  MsgBox "書名不能為空", vbOKOnly + vbE

71、xclamation, ""</p><p>  Text2.SetFocus</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  If Not IsDate(Text5.Text) Then</p&g

72、t;<p>  MsgBox "請按照yyyy-mm-dd格式輸入日期", vbOKOnly + vbExclamation, ""</p><p>  Text5.SetFocus</p><p><b>  Exit Sub</b></p><p><b>  End If&l

73、t;/b></p><p>  If Not IsDate(Text6.Text) Then</p><p>  MsgBox "請按照yyyy-mm-dd格式輸入日期", vbOKOnly + vbExclamation, ""</p><p>  Text6.SetFocus</p><p>

74、<b>  Exit Sub</b></p><p><b>  End If</b></p><p>  sql = "select * from 書籍信息 where 書籍編號='" & Text1.Text & "'"</p><p>  rs_

75、addbook.Open sql, conn, adOpenKeyset, adLockPessimistic</p><p>  If rs_addbook.EOF Then</p><p>  rs_addbook.AddNew</p><p>  rs_addbook.Fields(0) = Trim(Text1.Text)</p><p&

76、gt;  rs_addbook.Fields(1) = Trim(Text2.Text)</p><p>  rs_addbook.Fields(2) = Trim(Combo1.Text)</p><p>  rs_addbook.Fields(3) = Trim(Text3.Text)</p><p>  rs_addbook.Fields(4) = Trim(

77、Text4.Text)</p><p>  rs_addbook.Fields(5) = Trim(Text5.Text)</p><p>  rs_addbook.Fields(6) = Trim(Text6.Text)</p><p>  rs_addbook.Fields(7) = "否"</p><p>  rs_

78、addbook.Update</p><p>  MsgBox "添加書籍信息成功!", vbOKOnly, ""</p><p>  rs_addbook.Close</p><p><b>  Else</b></p><p>  MsgBox "圖書編號重復!&qu

79、ot;, vbOKOnly + vbExclamation, ""</p><p>  Text1.SetFocus</p><p>  Text1.Text = ""</p><p>  rs_addbook.Close</p><p><b>  Exit Sub</b><

80、;/p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  Private Sub Command2_Click()</p><p><b>  Unload Me</b></p><p><

81、;b>  End Sub</b></p><p>  Private Sub Form_Load()</p><p>  Dim rs_leibie As New ADODB.Recordset</p><p>  Dim sql As String</p><p>  sql = "select * from 圖

82、書類別"</p><p>  rs_leibie.Open sql, conn, adOpenKeyset, adLockPessimistic</p><p>  rs_leibie.MoveFirst</p><p>  Do While Not rs_leibie.EOF</p><p>  Combo1.AddItem rs

83、_leibie.Fields(0)</p><p>  rs_leibie.MoveNext</p><p><b>  Loop</b></p><p>  rs_leibie.Close</p><p><b>  End Sub</b></p><p>  Privat

84、e Sub Frame1_DragDrop(Source As Control, X As Single, Y As Single)</p><p>  End Sub  圖書借閱子窗體運行后如圖19所示,因為它們的代碼和圖書登記子窗體的代碼雷同,在此不做重復?!  D19 圖書借閱子窗體運行效果    (2) 增加用戶子窗體代碼  增加用戶子窗體是用來增加用戶的用戶名、密碼和權(quán)限的?! 螕簟按_定”按

85、鈕后,還要返回一個信息框,提示成功信息,如圖20所示?!   D20 增加用戶子窗體運行效果 </p><p>  信息框  窗體部分代碼的思路是,收集輸入的表中的字符串,然后與數(shù)據(jù)庫中的系統(tǒng)的用戶數(shù)據(jù)比較,如果不存在,則允許添加。  Private Sub Command1_Click()</p><p>  Dim sql

86、 As String</p><p>  Dim rs_add As New ADODB.Recordset</p><p>  If Trim(Text1.Text) = "" Then</p><p>  MsgBox "用戶名不能為空", vbOKOnly + vbExclamation, ""<

87、;/p><p><b>  Exit Sub</b></p><p>  Text1.SetFocus</p><p><b>  Else</b></p><p>  sql = "select * from 系統(tǒng)管理"</p><p>  rs_add.O

88、pen sql, conn, adOpenKeyset, adLockPessimistic</p><p>  While (rs_add.EOF = False)</p><p>  If Trim(rs_add.Fields(0)) = Trim(Text1.Text) Then</p><p>  MsgBox "已有這個用戶", vbO

89、KOnly + vbExclamation, ""</p><p>  Text1.SetFocus</p><p>  Text1.Text = ""</p><p>  Text2.Text = ""</p><p>  Text3.Text = ""<

90、/p><p>  Combo1.Text = ""</p><p><b>  Exit Sub</b></p><p><b>  Else</b></p><p>  rs_add.MoveNext</p><p><b>  End If<

91、;/b></p><p><b>  Wend</b></p><p>  If Trim(Text2.Text) <> Trim(Text3.Text) Then</p><p>  MsgBox "兩次密碼不一致", vbOKOnly + vbExclamation, ""</

92、p><p>  Text2.SetFocus</p><p>  Text2.Text = ""</p><p>  Text3.Text = ""</p><p><b>  Exit Sub</b></p><p>  ElseIf Trim(Combo1.

93、Text) <> "system" And Trim(Combo1.Text) <> "guest" Then</p><p>  MsgBox "請選擇正確的用戶權(quán)限", vbOKOnly + vbExclamation, ""</p><p>  Combo1.SetFocus<

94、;/p><p>  Combo1.Text = ""</p><p><b>  Exit Sub</b></p><p><b>  Else</b></p><p>  rs_add.AddNew</p><p>  rs_add.Fields(0) =

95、Text1.Text</p><p>  rs_add.Fields(1) = Text2.Text</p><p>  rs_add.Fields(2) = Combo1.Text</p><p>  rs_add.Update</p><p>  rs_add.Close</p><p>  MsgBox &quo

96、t;添加用戶成功", vbOKOnly + vbExclamation, ""</p><p><b>  Unload Me</b></p><p><b>  End If</b></p><p><b>  End If</b></p><p&g

97、t;<b>  End Sub</b></p><p>  Private Sub Command2_Click()</p><p><b>  Unload Me</b></p><p><b>  End Sub</b></p><p>  Private Sub Form

98、_Load()</p><p>  Combo1.AddItem "system"</p><p>  Combo1.AddItem "guest"</p><p><b>  End Sub</b></p><p>  (3) 修改密碼子窗體代碼  修改密碼子窗體是用來修改用戶

99、密碼的。   圖21修改密碼子窗體運行效果  在“確定”按鈕的Click事件中添加如下代碼:  Private Sub Command1_Click()  Dim rs_chang As New ADODB.Recordset  Dim sql As String  If Trim(Text1.Text) <> Trim(Text2.Text) Then  MsgBox "密碼不一致!",

100、 vbOKOnly + vbExclamation, ""  Text1.SetFocus  Text1.Text = ""  Text2.Text = ""  Else  sql = "select * from 系統(tǒng)管理 where 用戶名=’" & userID & "’"  rs_chang.Open

101、sql, conn, adOpenKeyset, adLockPessimistic  rs_chang.Fields(1) = Text1.Text  rs_chang.Update  rs_chan</p><p><b>  圖22</b></p><p>  在上述代碼中,首先比較兩個表中的數(shù)據(jù)是否一致,然后用rs_chang.Fields(1) = T

102、ext1.Text語句把代碼輸入到數(shù)據(jù)庫中。最后,用MsgBox "密碼修改成功", vbOKOnly + vbExclamation,""語句彈出一個信息框,告訴修改成功,如圖22所示?!   ?4) 查詢子窗體代碼  查詢子窗體是用來查詢庫房中圖書資料明細的。其運行效果如圖23所示?!  D23 查詢子窗體運行效果    Option Explicit</p><

103、;p>  Dim panduan As String</p><p>  Private Sub Command1_Click()</p><p>  Dim rs_findbook As New ADODB.Recordset</p><p>  Dim sql As String</p><p>  If Check1.Value

104、= vbChecked Then</p><p>  sql = "書名='" & Trim(Text1.Text & " ") & "'"</p><p><b>  End If</b></p><p>  If Check2.Value =

105、 vbChecked Then</p><p>  If Trim(sql) = "" Then</p><p>  sql = "類別='" & Trim(Combo1.Text & " ") & "'"</p><p><b>  E

106、lse</b></p><p>  sql = sql & "and 書名='" & Trim(Combo1.Text & " ") & "'"</p><p><b>  End If</b></p><p><b&g

107、t;  End If</b></p><p>  If Check3.Value = vbChecked Then</p><p>  If Trim(sql) = "" Then</p><p>  sql = "作者='" & Trim(Text2.Text & " "

108、;) & "'"</p><p><b>  Else</b></p><p>  sql = sql & "and 作者='" & Trim(Text2.Text & " ") & "'"</p><p

109、><b>  End If</b></p><p><b>  End If</b></p><p>  If Check4.Value = vbChecked Then</p><p>  If Trim(sql) = "" Then</p><p>  sql = &q

110、uot;出版社='" & Trim(Text3.Text & " ") & "'"</p><p><b>  Else</b></p><p>  sql = sql & "and 出版社='" & Trim(Text3.Text

111、& " ") & "'"</p><p><b>  End If</b></p><p><b>  End If</b></p><p>  If Check5.Value = vbChecked Then</p><p>  If

112、 Trim(sql) = "" Then</p><p>  sql = "書籍編號='" & Trim(Text4.Text & " ") & "'"</p><p><b>  Else</b></p><p>  sql

113、 = sql & "and 書籍編號='" & Trim(Text4.Text & " ") & "'"</p><p><b>  End If</b></p><p><b>  End If</b></p><p

114、>  If Trim(sql) = "" Then</p><p>  MsgBox "請選擇查詢方式!", vbOKOnly + vbExclamation</p><p><b>  Exit Sub</b></p><p><b>  End If</b></p&g

115、t;<p>  sql = "select * from 書籍信息 where " & sql</p><p>  rs_findbook.CursorLocation = adUseClient</p><p>  rs_findbook.Open sql, conn, adOpenKeyset, adLockPessimistic</p&

116、gt;<p>  DataGrid1.AllowAddNew = False</p><p>  DataGrid1.AllowDelete = False</p><p>  DataGrid1.AllowUpdate = False</p><p>  Set DataGrid1.DataSource = rs_findbook</p>

117、<p>  'rs_findbook.Close</p><p><b>  End Sub</b></p><p>  Private Sub Command2_Click()</p><p><b>  Unload Me</b></p><p><b>  En

118、d Sub</b></p><p>  Private Sub Command3_Click()</p><p>  If Trim(book_num) = "" Then</p><p>  MsgBox "請選擇要借閱的圖書!", vbOKOnly + vbExclamation</p><

119、p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  If panduan = "是" Then</p><p>  MsgBox "此書已被借出!", vbOKOnly + vbExclamation</p>

120、;<p><b>  Exit Sub</b></p><p><b>  End If</b></p><p>  frmborrowbook.Show</p><p><b>  End Sub</b></p><p>  Private Sub DataGr

121、id1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)</p><p>  book_num = DataGrid1.Columns(0).CellValue(DataGrid1.Bookmark)</p><p>  panduan = DataGrid1.Columns(7).CellValue(DataGrid1.

122、Bookmark)</p><p><b>  End Sub</b></p><p>  Private Sub Form_Load()</p><p>  Dim rs_find As New ADODB.Recordset</p><p>  Dim sql As String</p><p&g

123、t;  sql = "select * from 圖書類別"</p><p>  rs_find.Open sql, conn, adOpenKeyset, adLockPessimistic</p><p>  rs_find.MoveFirst</p><p>  If Not rs_find.EOF Then</p><

124、p>  Do While Not rs_find.EOF</p><p>  Combo1.AddItem rs_find.Fields(0)</p><p>  rs_find.MoveNext</p><p><b>  Loop</b></p><p>  Combo1.ListIndex = 0</p

125、><p><b>  End If</b></p><p>  rs_find.Close</p><p><b>  End Sub  </b></p><p>  查詢完畢后,輸出查詢結(jié)果,如圖24所示?!  ★@示目錄  (6) 用戶登錄子窗體代碼 在本項目中,用戶登錄子窗體是運行的第一個

126、界面,它的作用是檢查用戶名和密碼是否正確。由于用戶的資料是存放在數(shù)據(jù)庫中,所以在啟動該子窗體時,就已經(jīng)連接了數(shù)據(jù)庫。其代碼如下:  Private Sub Form_Load()  Dim connectionstring As String  connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _  "data source=b

127、ook.mdb"  conn.Open connectionstring  cnt = 0  End Sub  “確定”按鈕的作用是檢查輸入的數(shù)據(jù)是否與數(shù)據(jù)庫中的數(shù)據(jù)一致?! rivate Sub Command1_Click()  Dim sql As String  Dim rs_login As New ADODB.Recordset  If Trim(txtuser.Text) = "&qu

128、ot; Then ’ 判斷輸入的用戶名是否為空</p><p>  MsgBox "沒有這個用戶", vbOKOnly + vbExclamation, ""  txtuser.SetFocus  Else  sql = "select * from 系統(tǒng)管理 where 用戶名=’" & txtuser.Text & "

129、’"  rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic  If rs_login.EOF = True Then  MsgBox "沒有這個用戶", vbOKOnly + vbExclamation, ""  txtuser.SetFocus  Else ’ 檢驗密碼是否正確  用戶名和密碼通過后,要關(guān)閉本窗體

溫馨提示

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

評論

0/150

提交評論