圖書(shū)管理系統(tǒng)基于VB和Access設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
圖書(shū)管理系統(tǒng)基于VB和Access設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
圖書(shū)管理系統(tǒng)基于VB和Access設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
圖書(shū)管理系統(tǒng)基于VB和Access設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
圖書(shū)管理系統(tǒng)基于VB和Access設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、引言當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開(kāi)信息處理,這正是計(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)的開(kāi)發(fā)密切相關(guān),系統(tǒng)的開(kāi)發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好圖書(shū)館信息而設(shè)計(jì)的。圖書(shū)館作為一種信息資源的集散地,圖書(shū)和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書(shū)館都是初步開(kāi)始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。根據(jù)調(diào)查得知,他們以前對(duì)信息管理的主要方式是基于文本、表格

2、等紙介質(zhì)的手工處理,對(duì)于圖書(shū)借閱情況(如借書(shū)天數(shù)、超過(guò)限定借書(shū)時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對(duì)借書(shū)卡的人工檢查進(jìn)行,對(duì)借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找。總的來(lái)說(shuō),缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書(shū)館有計(jì)算機(jī),但是尚未用于信息管理,沒(méi)有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開(kāi)發(fā)的基本環(huán)境。數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改。圖書(shū)館采取手工方式對(duì)圖書(shū)借閱情況進(jìn)行人工管理,由于信息比較多,圖書(shū)借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書(shū)證上,圖書(shū)的數(shù)目和內(nèi)容

3、記錄在文件中,圖書(shū)館的工作人員和管理員也只是當(dāng)時(shí)對(duì)它比較清楚,時(shí)間一長(zhǎng),如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費(fèi)時(shí)、費(fèi)力。如要對(duì)很長(zhǎng)時(shí)間以前的圖書(shū)進(jìn)行更改就更加困難了。基于這些問(wèn)題,我認(rèn)為有必要建立一個(gè)圖書(shū)管理系統(tǒng),使圖書(shū)管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書(shū)管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改圖書(shū)情況??删庉? .系統(tǒng)需求分析與可行性分析1.1 現(xiàn)行業(yè)務(wù)描述通過(guò)調(diào)查,先畫(huà)出圖書(shū)館的組織結(jié)構(gòu)圖如下:目京:廳耒 編 一 I H U組館長(zhǎng)工具書(shū)室組織結(jié)構(gòu)圖下面繪制出圖書(shū)館流通業(yè)務(wù)中借書(shū)的流程圖。(1)讀者在目錄廳查閱索引卡;(2)讀者寫出所

4、借圖書(shū)的分類號(hào)、種次號(hào)、交給圖書(shū)管理員,并出示本人的借書(shū)證;(3)圖書(shū)管理員根據(jù)圖書(shū)的分類號(hào)、種次號(hào)到書(shū)庫(kù)找書(shū);(4)將圖書(shū)交給讀者,并由讀者填寫所借圖書(shū)的借書(shū)卡。(5)圖書(shū)管理員把借書(shū)卡保存到寫有該讀者借書(shū)證號(hào)的口袋里。得出該圖書(shū)館業(yè)務(wù)流程圖如下所示業(yè)務(wù)流程圖1.2 可行性分析可行性分析是在進(jìn)行初步調(diào)查后所進(jìn)行的對(duì)系統(tǒng)開(kāi)發(fā)必要性和可能性的研究,所以也稱為可行性研究。信息系統(tǒng)也應(yīng)從技術(shù)可行性,經(jīng)濟(jì)可行性和社會(huì)可行性三方面來(lái)論證。通過(guò)長(zhǎng)時(shí)間的觀察與實(shí)踐,我認(rèn)為圖書(shū)館管理系統(tǒng)的可行性分析如下:1.2.1 經(jīng)濟(jì)可行性分析作為圖書(shū)館這樣的商業(yè)性質(zhì)較小的場(chǎng)所,其經(jīng)濟(jì)成分比重相對(duì)較少,主要是支出的費(fèi)用:其

5、中包括設(shè)備購(gòu)置費(fèi)、軟件開(kāi)發(fā)費(fèi)用、管理和維護(hù)費(fèi)、人員工資和培訓(xùn)費(fèi)等。由于各個(gè)圖書(shū)館實(shí)行統(tǒng)一操作,系統(tǒng)共享,其設(shè)備購(gòu)置,人員工資,維護(hù)費(fèi)用相對(duì)較少,前期的資金投入主要集中于購(gòu)置圖書(shū)上。建立信息中心,可將來(lái)自各方面的信息集中管理,提高圖書(shū)管理的計(jì)劃性和預(yù)見(jiàn)性,快速地反饋市場(chǎng)信息。1.2.2 技術(shù)可行性分析技術(shù)上的可行性分析主要分析現(xiàn)有技術(shù)條件能否順利完成開(kāi)發(fā)工作,硬件、軟件配置能否滿足開(kāi)發(fā)者的需要,各類技術(shù)人員的數(shù)量,水平,來(lái)源等。圖書(shū)館管理系統(tǒng)的工作主要是在讀者和圖書(shū)館之間架起一座橋梁,能相互溝通信息和處理信息。這一特點(diǎn)非常適合計(jì)算機(jī)特點(diǎn),通過(guò)網(wǎng)絡(luò)internet技術(shù),發(fā)揮計(jì)算機(jī)的信息傳輸速度快、

6、準(zhǔn)確度高的優(yōu)勢(shì)。計(jì)算機(jī)硬件和軟件技術(shù)的飛速發(fā)展,為系統(tǒng)的建設(shè)提供了技術(shù)條件。1.2.3 社會(huì)可行性分析社會(huì)可行性有時(shí)也稱為操作可行性,主要論證新系統(tǒng)在企業(yè)或機(jī)構(gòu)開(kāi)發(fā)和運(yùn)行的可能性以及運(yùn)行后可能一起的對(duì)企業(yè)或機(jī)構(gòu)的影響,即組織內(nèi)外是否具備接受和使用新系統(tǒng)的條件。在當(dāng)前信息技術(shù)飛速發(fā)展的大環(huán)境下,計(jì)算機(jī)技術(shù)和軟件技術(shù)的更新是圖書(shū)館完全有可能也有能力采用這樣先進(jìn)的管理技術(shù)。它對(duì)圖書(shū)館帶來(lái)的影響可以看到:(a)對(duì)傳統(tǒng)管理理念的沖擊,可能引起管理層的變動(dòng)和人員的調(diào)整。(b)對(duì)圖書(shū)館工作人員的要求提高,使圖書(shū)館在一定的可能下進(jìn)行機(jī)構(gòu)精簡(jiǎn),迫使工作人員繼續(xù)學(xué)習(xí)新知識(shí),拓寬圖書(shū)館在市場(chǎng)環(huán)境下的生存空間。對(duì)圖書(shū)

7、館與讀者之間業(yè)務(wù)方式的轉(zhuǎn)變和擴(kuò)充。1.3 系統(tǒng)開(kāi)發(fā)具體研究分析要建立新的圖書(shū)管理系統(tǒng),就必須對(duì)現(xiàn)行的管理系統(tǒng)進(jìn)行全面、細(xì)致而充分的調(diào)查研究。具體采用直接面談和專門訪問(wèn)并參加業(yè)務(wù)實(shí)踐,與工作人員一起完成最基本的工作程序的方法。原來(lái)圖書(shū)管理處理中心進(jìn)行信息管理的主要方式是基于手工處理,最多是用計(jì)算機(jī)的文本系統(tǒng)打印一些清單,信息處理工作量大,容易出錯(cuò),缺乏系統(tǒng)、規(guī)范的信息管理手段。現(xiàn)某圖書(shū)館需要管理其各種人員和圖書(shū)信息,希望實(shí)現(xiàn)辦公的信息化,通過(guò)建立一個(gè)圖書(shū)管理系統(tǒng)來(lái)管理圖書(shū)。其完成的功能如下:(1) 可以實(shí)現(xiàn)圖書(shū)的登記、借閱和賠償?shù)墓芾怼?2) 可以實(shí)現(xiàn)對(duì)圖書(shū)的各種信息的查詢,包括逐個(gè)瀏覽,以及對(duì)

8、圖書(shū)信息的增加、刪除和編輯操作。另外,可以根據(jù)輸入的信息來(lái)檢索某個(gè)圖書(shū)的信息。(3) 可以實(shí)現(xiàn)對(duì)管理人員的投訴管理。(4) 可以實(shí)現(xiàn)對(duì)值班人員的管理。得出系統(tǒng)的功能模塊圖:圖書(shū)管理享沅圖 書(shū) 帕 佬E-R1.4 物理分析本實(shí)例根據(jù)上面的設(shè)計(jì)規(guī)劃出的實(shí)體有管理員信息實(shí)體、讀者信息實(shí)體圖、書(shū)籍類別信息實(shí)體、書(shū)籍信息實(shí)體、借閱信息實(shí)體、借閱信息實(shí)體。為了使E-R圖表示得更加清晰,現(xiàn)將E-R圖分成實(shí)體及其屬性圖和實(shí)體及其聯(lián)系圖。各個(gè)實(shí)體具體的描述E-R圖如下。圖書(shū)善定看書(shū)名圖書(shū)登記實(shí)體E-R圖圖書(shū)借閱實(shí)體E-R圖圖書(shū)賠償實(shí)體E-R圖投訴管理實(shí)體E-R圖1.5 系統(tǒng)開(kāi)發(fā)環(huán)境系統(tǒng)開(kāi)發(fā)環(huán)境包括硬件平臺(tái)和軟件

9、平臺(tái)兩種。硬件平臺(tái)是指開(kāi)發(fā)與運(yùn)行所需要的硬件環(huán)境,主要包括計(jì)算機(jī)機(jī)型及硬件配置。由于本系統(tǒng)是一個(gè)小型的MIS管理系統(tǒng),因此對(duì)計(jì)算機(jī)硬件的要求不高,比較經(jīng)濟(jì),只要配備有PIH處理器(或以上)、256M內(nèi)存(或以上)、20G硬盤(或以上)的普通微機(jī)即可順利運(yùn)行。軟件平臺(tái)是指系統(tǒng)開(kāi)發(fā)與運(yùn)行的軟件環(huán)境。本系統(tǒng)在開(kāi)發(fā)時(shí)選用了穩(wěn)定性較強(qiáng)的WindowsXP中文專業(yè)版和VisualBasic6.0作為開(kāi)發(fā)語(yǔ)言,同時(shí)選用了Access數(shù)據(jù)庫(kù),由于這些軟件產(chǎn)品都是Microsoft公司的產(chǎn)品,因此彼此之間的兼容性較好,開(kāi)發(fā)出的應(yīng)用系統(tǒng)穩(wěn)定性較高。VisualBasic6.0具有可視化的開(kāi)發(fā)環(huán)境,可以快速完成系統(tǒng)

10、的開(kāi)發(fā),內(nèi)部集成的數(shù)據(jù)庫(kù)訪問(wèn)通道,使得可以輕松方便的對(duì)數(shù)據(jù)庫(kù)管理。數(shù)據(jù)庫(kù)采用MicrosoftAccess,由于我們的系統(tǒng)要求,采用它完全可以適合我們的工作需求,并且它所支持的數(shù)據(jù)類型十分豐富,維護(hù)簡(jiǎn)便,費(fèi)用比較低,人員素質(zhì)要求不是很高,容易升級(jí)。本系統(tǒng)在單機(jī)上運(yùn)行。2 .系統(tǒng)概要設(shè)計(jì)2.1 初步調(diào)研對(duì)該圖書(shū)館進(jìn)行初步調(diào)研的具體內(nèi)容為:(1)圖書(shū)館的規(guī)模:現(xiàn)藏書(shū)冊(cè)數(shù)、種類;(2)圖書(shū)館的主要業(yè)務(wù);(3)圖書(shū)館下高幾個(gè)部門;(4)圖書(shū)館職工人數(shù);(5)職工受教育程度;(6)主要購(gòu)書(shū)單位;(7)圖書(shū)編碼方式;(8)現(xiàn)在多少讀者在此借書(shū);(9)讀者借書(shū)憑證;(10)讀者分類;(11)圖書(shū)館的上級(jí)領(lǐng)導(dǎo)

11、;(12)對(duì)開(kāi)發(fā)新系統(tǒng)的態(tài)度;(13)開(kāi)發(fā)新系統(tǒng)所需的時(shí)間(規(guī)定多長(zhǎng)時(shí)間開(kāi)發(fā)完成)。2.2 詳細(xì)調(diào)研2.2.1 組織結(jié)構(gòu)調(diào)研在對(duì)該圖書(shū)館的手工管理模式和業(yè)務(wù)流程進(jìn)行認(rèn)真分析和研究的基礎(chǔ)上,經(jīng)過(guò)與該圖書(shū)館的相關(guān)人員的反復(fù)協(xié)商、論證,最后確定了該圖書(shū)管理系統(tǒng)的邏輯模型。下面以數(shù)據(jù)流圖和數(shù)據(jù)字典的方式來(lái)描述新系統(tǒng)的邏輯功能。2.2.2 數(shù)據(jù)流圖借書(shū)業(yè)務(wù)借書(shū)信息,借書(shū)證號(hào).杳詢信息索引信息已審信節(jié)卡*已埴*借書(shū) 卡*借書(shū)信息+惜書(shū)證號(hào),讀者.靖第描書(shū)卡圖書(shū)營(yíng)理員借書(shū)信息P查詢結(jié)果1.1香詢圖書(shū)/吉一詢信息索引信息*借書(shū)情況,02+1索引卡,3 .系統(tǒng)整體設(shè)計(jì)3.1 軟件模塊結(jié)構(gòu)設(shè)計(jì)3.1.1 系統(tǒng)方案

12、確定通過(guò)對(duì)系統(tǒng)調(diào)研與分析,系統(tǒng)主要應(yīng)完成的功能如下:書(shū)庫(kù)信息管理、讀者檔案管理、借閱管理、還書(shū)管理、圖書(shū)檢索、系統(tǒng)維護(hù)。3.1.2 軟件結(jié)構(gòu)設(shè)計(jì)圖書(shū)館管理系統(tǒng)包含圖書(shū)采編、讀者管理、流通、查詢等功能。該系統(tǒng)執(zhí)行時(shí),先輸入數(shù)據(jù),然后根據(jù)輸入的數(shù)據(jù)選擇執(zhí)行路徑;購(gòu)入圖書(shū)進(jìn)行登記、編目調(diào)用圖書(shū)采編功能,借書(shū)、還書(shū)調(diào)用功能,查詢調(diào)用查詢功能。圖書(shū)館管理系統(tǒng)屬于事務(wù)型系統(tǒng),具系統(tǒng)示意圖如下圖所示:圖書(shū)館管理系統(tǒng)結(jié)構(gòu)圖系統(tǒng)功能圖如下:計(jì)算機(jī)管理系統(tǒng)圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)模式定義了數(shù)據(jù)庫(kù)的結(jié)構(gòu)、表、關(guān)系、域和業(yè)務(wù)規(guī)則。數(shù)據(jù)庫(kù)模式是一種設(shè)計(jì),數(shù)據(jù)庫(kù)和應(yīng)用正是建立在此基礎(chǔ)上的。域是一列可能擁有的值的集合。必須為每一

13、個(gè)表的每一列確定域。除了數(shù)據(jù)的物理必填字段外,還需要確定是否有些域?qū)Ρ韥?lái)說(shuō)是唯一的。計(jì)算機(jī)管理系統(tǒng)圖書(shū)管理系統(tǒng)數(shù)據(jù)庫(kù)模式的最后一個(gè)要素是業(yè)務(wù)規(guī)則,它是對(duì)需要反映在數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)應(yīng)用程序中的業(yè)務(wù)活動(dòng)的允許空字符串O業(yè)務(wù)規(guī)則是模式的一個(gè)重要部分,因?yàn)樗麄冎付藷o(wú)論什么數(shù)據(jù)變化到達(dá)DBMS引擎,允許的數(shù)據(jù)值必須滿足的允許空字符串。不管無(wú)效的數(shù)據(jù)變化請(qǐng)求是來(lái)自窗體的用戶、查詢/修改請(qǐng)求還是應(yīng)用程序DBMS都應(yīng)該拒絕。3.2.1利用DATA控件訪問(wèn)數(shù)據(jù)庫(kù)該軟件是利用ACCESS數(shù)據(jù)庫(kù),操作方便,簡(jiǎn)單。在ACCESS數(shù)據(jù)庫(kù)中不需要?jiǎng)?chuàng)建數(shù)據(jù)連接,因?yàn)樗荲B中默認(rèn)的數(shù)據(jù)庫(kù)形式。這里的數(shù)據(jù)庫(kù)采用Access,

14、用ADO作為連接數(shù)據(jù)對(duì)象。以歸納為以下幾步:1、建立Access數(shù)據(jù)庫(kù)啟動(dòng)Access,建立一個(gè)空的數(shù)據(jù)庫(kù)book.mdb,如圖所示。姓book :數(shù)據(jù)庫(kù)(Access 2000文件格式)使用程序設(shè)計(jì)器建立系統(tǒng)需要的表格如下期 日期市本日貨5手段名彝最長(zhǎng)可到64個(gè)字符他括空格)。技TL樓可查看有關(guān)字展名稱的幫助口圖書(shū)登記:表Cll'nllx宇炭名稱I數(shù)據(jù)空型I說(shuō)明文本字段屬性查閱手段大小耦入海碼標(biāo)題骯認(rèn)值有效性規(guī)則有效性文本必埴字段允許空字將串索引Umcode壓縮輸入法模式IFJE語(yǔ)句模式(快日文)智能標(biāo)記圖書(shū)登記表,圖書(shū)借閱表,圖書(shū)賠償表,圖書(shū)資料表,投訴管理表,值班管理表,系統(tǒng)管理

15、表,如圖:book:數(shù)據(jù)片(Access20(10文件格式)晶打開(kāi)®諛計(jì)電)口新建如IXI電)值使用設(shè)計(jì)器創(chuàng)建表使用向?qū)?chuàng)型表通過(guò)輸入數(shù)據(jù)創(chuàng)建表 投訴管理J圖書(shū)鷺記3圖書(shū)惜閱J圖書(shū)賠償2國(guó)稱資料系統(tǒng)營(yíng)理指班管理基本表舉例如:圖書(shū)借閱表字段字段大小必填字段允許空字符串書(shū)名文本50否是圖書(shū)編號(hào)文本12是否姓名文本50否是圖書(shū)證號(hào)數(shù)字長(zhǎng)整型是否借閱時(shí)間日期/時(shí)間自動(dòng)否無(wú)歸還時(shí)間日期/時(shí)間自動(dòng)否無(wú)備注備注否其余表省略2、連接數(shù)據(jù)在VisualBasic環(huán)境下,選擇“工程”一“引用”命令,在隨后出現(xiàn)的對(duì)話框”,然后單擊“確定”:中選擇“MicrosoftActiveXDataObjects2.

16、0Libraryffi,引用ADO連接數(shù)據(jù)庫(kù)在程序設(shè)計(jì)的公共模塊中,先定義 ADO連接對(duì)象。語(yǔ)句如下Public conn As New ADODB.Connection '標(biāo)記連接對(duì)象然后在子程序中,用如下的語(yǔ)句即可打開(kāi)數(shù)據(jù)庫(kù):Dim connectionstring As Stringconnectionstring = "provider=Microsoft.Jet.oledb.4.0;" &_"data source=book.mdb"conn.Open connectionstring3、設(shè)置ODBCVB的ADO對(duì)象是通過(guò)ODB

17、C來(lái)訪問(wèn)數(shù)據(jù)庫(kù),所以還要建立 接口。打開(kāi)控制面板中的“管理工具” 一 “數(shù)據(jù)源” 話框。ODBC數(shù)據(jù)引擎(ODBC),出現(xiàn)如圖所示的無(wú)ODBC對(duì)話框單擊“添加”按鈕,出現(xiàn)“創(chuàng)建新數(shù)據(jù)源”對(duì)話框,如圖所示“創(chuàng)建新數(shù)據(jù)源”對(duì)話框出現(xiàn)如圖19所選WMicrosoftAccessDriver(*mdb),單擊“完成”按鈕,示對(duì)話框。設(shè)置連接數(shù)據(jù)源在“數(shù)據(jù)源名”文本框中添加一個(gè)名字,單擊“確定”按鈕完成系統(tǒng)默認(rèn)連接設(shè)置。然后在ODBC對(duì)話框中單擊“確定”按鈕完成ODBC設(shè)置。I國(guó)書(shū)百事室會(huì)I用戶,幫 一- 一(把串良 r,I-圖書(shū)管理系統(tǒng)數(shù)據(jù)流程圖ADO中的數(shù)據(jù)對(duì)象通常保存的是查詢結(jié)果。RecordSe

18、t是ADO中最復(fù)雜的對(duì)象,有許多屬性和方法。RecordSet保存的是一行行的記錄,并標(biāo)有一個(gè)當(dāng)前記錄。以下是創(chuàng)建方法:可以直接利用DATA控件直接綁定,在DATA控件的屬性中的RECORDSOURCE對(duì)數(shù)據(jù)表進(jìn)行連接。SetRecordSet=DB.Openrecordset(sqtStr)這條語(yǔ)句創(chuàng)建并打開(kāi)了對(duì)象RecordSet,其中db是先前創(chuàng)建的鏈接對(duì)象,sqtStr是一個(gè)字用,代表一條標(biāo)準(zhǔn)的SQL語(yǔ)句。例如:sqlStr="SELECT*FROMtablel”SetRecordSet=DB.Openrecordset(sqtStr),執(zhí)行后,對(duì)象RecordSet中就保存

19、了表table1中的所有記錄。3.3計(jì)算機(jī)系統(tǒng)的配置方案3.3.1硬件環(huán)境:內(nèi)容最低配置建議配置P/200Pm266以上內(nèi)存256MB512MB以上硬盤20GB40GB以上顯示器VGA以上3.3.2軟件環(huán)境:操作系統(tǒng):Windows98中文版或WindowsXP中文版編程軟件和數(shù)據(jù)庫(kù):VisualBasic6.0中文版+Access2000中文版3.3.3系統(tǒng)的安全性和可靠性設(shè)計(jì)對(duì)所有登錄本系統(tǒng)的使用用戶進(jìn)行嚴(yán)格的用戶名和密碼的管理,如果不屬于系統(tǒng)事先設(shè)定好的合法用戶,則系統(tǒng)無(wú)法登錄,為了防止密碼外泄,本系統(tǒng)具備密碼修改功能。4 .系統(tǒng)詳細(xì)設(shè)計(jì)及實(shí)現(xiàn)4.1界面設(shè)計(jì)設(shè)計(jì)好的界面如圖所示圖書(shū)管理系

20、統(tǒng)界面這是一個(gè)多文檔界面(MDI)應(yīng)用程序,可以同時(shí)顯示多個(gè)文檔,每個(gè)文檔顯示在各自的窗體中。MDI應(yīng)用程序中常有包含子菜單的“窗體”選項(xiàng),用于在窗體或文檔之間進(jìn)行切換。菜單應(yīng)用程序中,有5個(gè)菜單選項(xiàng),每個(gè)選項(xiàng)對(duì)應(yīng)著E-R圖的一個(gè)子項(xiàng)目。4.1.1、創(chuàng)建主窗體首先創(chuàng)建一個(gè)工程,命名為圖書(shū)管理系統(tǒng),選擇“工程”-“添加MDI窗體”命令,則在項(xiàng)目中添加了主窗體。該窗體的一些屬性如表1所示。表1主窗體的屬性屬性值Caption圖書(shū)管理系統(tǒng)2011.05.22NameMainMenuWindowstateMainmenu1MaxsizeText 屬性 圖書(shū)管理 圖書(shū)登記圖書(shū)借閱圖書(shū)賠償圖書(shū)資料查詢輸出

21、值班管理投訴管理系統(tǒng)管理增加用戶修改密碼退出功能描述頂級(jí)菜單,包含子菜單調(diào)出圖書(shū)登記窗體調(diào)出圖書(shū)借閱窗體調(diào)出圖書(shū)賠償窗體頂級(jí)菜單,包含子菜單調(diào)出查詢輸出窗體頂級(jí)菜單,沒(méi)有子菜單頂級(jí)菜單,沒(méi)有子菜單頂級(jí)菜單,包含子菜單調(diào)出用戶窗體調(diào)出密碼窗體系統(tǒng)退出Windowstate的值為Maxsize,即程序啟動(dòng)之后自動(dòng)最大化。將“菜單”組件從“工具箱”拖到窗體上。創(chuàng)建一個(gè)Text屬性設(shè)置為“文件”的頂級(jí)菜單項(xiàng),且?guī)в忻麨椤瓣P(guān)閉”的子菜單項(xiàng)。類似地創(chuàng)建一些菜單項(xiàng),如表2所示。表2菜單項(xiàng)表菜單名稱MenuItem1MenuItem2MenuItem3MenuItem4MenuItem5MenuItem6Me

22、nuItem7MenuItem8MenuItem9MenuItem10MenuItem11MenuItem12主窗體如圖所示。圖21主窗體2、創(chuàng)建各子窗體選擇“工程”一“添加窗體”命令,添加子窗體。在新建VisualBasic工程時(shí)自帶的窗體中,將其屬性MIDChild改成True,則這個(gè)窗體成為MID窗體的子窗體。在這個(gè)項(xiàng)目中,要?jiǎng)?chuàng)建的子窗體如表3所示。表3所有子窗體子窗體名Text圖書(shū)登記frmdengji圖書(shū)借閱frmjieyue圖書(shū)賠償frmpeichang增加新用戶frmadduser查詢輸出frmfind登錄系統(tǒng)frmlogin修改密碼frmchangepwd下面分別給出這些子窗體

23、,以及它們所使用的控件。(1)圖書(shū)登記子窗體如所示,其控件如表4所示。立圖書(shū)登記圖書(shū)登記子窗體表4圖書(shū)登記子窗體控件控件類別控件Name控件TextLabell編號(hào)Label2書(shū)名LabelLabel3類型Label4購(gòu)買日期Label5定價(jià)Textl(空)Text2(空)TextBoxText3(空)Text4(空)Text5(空)Commandl增加記錄Command2刪除記錄Command3下一條CommandButtonCommand4上一條Command5第一條Command6最后一條Command7退出ADODataAdodc1(空)DataGridDataGrid1(空)圖書(shū)借閱

24、、圖書(shū)賠償子窗體分別如圖所示:部圖書(shū)借用圖書(shū)借閱子窗體圖書(shū)賠償子窗體(2)增加用戶子窗體如圖所示,其控件如表5所示增加用戶子窗體表5增加用戶子窗體控件控件類別控件Name控件TextLabell輸入用戶名LabelLabel2輸入密碼Label3確認(rèn)密碼TextBoxComboBoxCommandButton(3)修改密碼子窗體如圖所示Label4TextlText2Text3CombiCommandlCommand2選擇權(quán)限(空)(空)(空)(空) 確定 取消?修也定碼|fx新筆解重詢磕認(rèn)即建修改密碼子窗體(4)庫(kù)房管理子窗體如圖27所示。Cnlfx立扉房省理庫(kù)房管理子窗體其控件如表6所示。

25、表6庫(kù)房管理子窗體控件控件類別控件NameTextBoxTexti控件Text(空)ComboBoxComboiMSFlexGridMSFlexGridi(5)查詢子窗體如圖所示,其控件如表7所示查詢子窗體表7查詢子窗體控件控件類別控件Name控件TextOptionButtonOption1按編號(hào)查詢Option2按購(gòu)買日期查詢Label1從Label2到Label3從Label4年Label5月LabelLabel6日Label7到Label8年Label9月Label10日Combo(0)ComboBoxCombo1(空)Combo(1)ComboBoxCombo1(空)Comboy(0

26、)ComboBoxComboy(空)Comboy(1)ComboBoxComboy(空)Combom(0)ComboBoxCombom(空)Combom(1)ComboBoxCombom(空)Combod(0)ComboBoxCombod(空)Combod(1)ComboBoxCombod(空)Command1查詢CommandButtonCommand2取消(6)用戶登錄子窗體如圖29所示。用戶登錄子窗體(7)值班管理子窗體如圖所示,值班管理子窗體(8)投訴管理子窗體如圖31所示,投訴管理子窗體4.2 建立公共模塊建立公共模塊可以提高代碼的效率,同時(shí)使得修改和維護(hù)代碼都很方便。創(chuàng)建公共模塊的

27、步驟如下:(1)在菜單中選擇“工程”一“添加模塊”命令,則出現(xiàn)模塊對(duì)話框,如圖所示。(2)選擇模塊圖標(biāo)后,單擊“打開(kāi)”按鈕,則模塊已經(jīng)添加到項(xiàng)目中了。默認(rèn)情況下名為Modulel。標(biāo)記當(dāng)前用戶ID標(biāo)記用戶權(quán)限Public find As Boolean '標(biāo)記查詢模塊對(duì)話框(3)在模塊中定義整個(gè)項(xiàng)目的公共變量。PublicconnAsNewADODB.Connection'標(biāo)記連接對(duì)象PublicuserIDAsString'PublicuserpowAsString'查詢語(yǔ)句PublicsqlfindAsString'Publicrs_data1AsN

28、ewADODB.RecordsetPublicfindokAsBooleanPublicfrmdataAsBooleanPublicConstkeyenter=13'enter鍵白AASCII碼在主窗體添加完菜單之后,就要為各個(gè)子菜單創(chuàng)建事件處理程序4.3 、主窗體代碼在本項(xiàng)目中,子菜單事件都是Click事件,這里先給出主窗體部分的代碼下面是響應(yīng)“增加用戶”子菜單Click事件,調(diào)出增加用戶窗體代碼。PrivateSubadduser_Click()frmadduser.ShowEndSub下面是響應(yīng)“查詢輸出”子菜單Click事件,調(diào)出查詢輸出窗體代碼。PrivateSubchaxu

29、nshuchu_Click()frmfind.ShowEndSub下面是響應(yīng)“退出”子菜單Click事件,調(diào)出退出窗體代碼。PrivateSubexit_Click()UnloadMeEndSub下面是響應(yīng)“圖書(shū)登記”子菜單PrivateSubcheckin_Click()frmdengji.ShowEndSub下面是響應(yīng)“修改密碼”子菜單PrivateSubchangepwd_Click()frmchangepwd.ShowEndSub下面是響應(yīng)“圖書(shū)借閱”子菜單PrivateSubborrow_Click()frmjieyue.ShowEndSub下面是響應(yīng)“圖書(shū)賠償”子菜單Private

30、Subtushupeichang_Click()frmpeichang.Show1EndSubClick事件,調(diào)出圖書(shū)登記窗體代碼。Click事件,調(diào)出修改密碼窗體代碼。Click事件,調(diào)出圖書(shū)借閱窗體代碼。Click事件,調(diào)出圖書(shū)賠償窗體代碼。下面是響應(yīng)“值班管理”菜單Click事件,調(diào)出值班管理窗體代碼。PrivateSubzhibanguanli_Click()frmzhiban.Show1EndSub下面是響應(yīng)“投訴管理”子菜單Click事件,調(diào)出投訴管理窗體代碼。PrivateSubtousuguanli_Click()frmtousu.Show1EndSub4.4 、各子窗體的代碼

31、在各個(gè)子窗體建立好后,就可以根據(jù)各個(gè)子窗體的功能給它們添加相應(yīng)代碼了。4.4.1 、圖書(shū)登記子窗體代碼本窗體用來(lái)填寫圖書(shū)登記的信息,用ADO來(lái)連接數(shù)據(jù)庫(kù),是本窗體的重點(diǎn)。采用MDI的子程序,所以運(yùn)行后,它出現(xiàn)在主程序的界面下,如圖所示。圖書(shū)登記子窗體按鈕控件要求先填寫基本信息,然后與數(shù)據(jù)庫(kù)信息比較。PrivateSubCommand1_Click()OnErrorGoToadderrTextl.SetFocusAdodcI.Recordset.AddNewExitSubadderr:MsgBoxErr.DescriptionEndSubPrivateSubCommand2_Click()OnE

32、rrorGoTodeleteerrWithAdodc1.RecordsetIfNot.EOFAndNot.BOFThenIfMsgBox("刪除當(dāng)前記錄嗎?",vbYesNo+vbQuestion)=vbYesThen.Delete.MoveNextIf.EOFThen.MoveLastEndIfEndIfEndWithExitSubdeleteerr:MsgBoxErr.DescriptionEndSubPrivateSubCommand3_Click()Adodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenMsgBox&q

33、uot;這是最后一條記錄",vbOKCancel+vbQuestionAdodc1.Recordset.MoveLastEndIfEndSubPrivateSubCommand4_Click()Adodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThenMsgBox"這是第一條記錄",vbOKCancel+vbQuestionAdodc1.Recordset.MoveFirstEndIfEndSubPrivateSubCommand5_Click()IfAdodc1.Recordset.EOFThenMsgBox&

34、quot;記錄空",vbOKCancel+vbQuestionEndElseAdodc1.Recordset.MoveFirstExitSubEndSubPrivateSubCommand6_Click()IfAdodc1.Recordset.RecordCount=0ThenMsgBox"空記錄",vbOKCancel+vbQuestionEndElseAdodc1.Recordset.MoveLastEndIfEndSubPrivateSubCommand7_Click()MDIForm1.Showfrmdengji.HideEndSub圖書(shū)借閱和圖書(shū)賠償子窗

35、體運(yùn)行后如圖所示,因?yàn)樗鼈兊拇a和圖書(shū)登記子窗體的代碼雷同,在此不做重復(fù)。圖書(shū)借閱子窗體運(yùn)行效果圖書(shū)賠償子窗體運(yùn)行效果4.4.2 增加用戶子窗體代碼增加用戶子窗體是用來(lái)增加用戶的用戶名、密碼和權(quán)限的。具運(yùn)行效果如圖所示。單擊“確定”按鈕后,還要返回一個(gè)信息框,提示成功信息,如圖所示0期加薪用戶輸入用尸名國(guó)西-選擇權(quán)限pST 三輸入密碼確認(rèn)磨眄尸石 嘀U 電清增加用戶子窗體運(yùn)行效果成功信息框窗體部分代碼的思路是,收集輸入的表中的字符串,然后與數(shù)據(jù)庫(kù)中的系統(tǒng)的用戶數(shù)據(jù)比較,如果不存在,則允許添加。PrivateSubCommand1_Click()DimsqlAsStringDimrs_addAs

36、NewADODB.RecordsetIfTrim(Text1.Text)=""ThenMsgBox"用戶名不能為空",vbOKOnly+vbExclamation,""ExitSubText1.SetFocusElsesql="select*from系統(tǒng)管理"rs_add.Opensql,conn,adOpenKeyset,adLockPessimisticWhile(rs_add.EOF=False)IfTrim(rs_add.Fields(0)=Trim(Text1.Text)ThenMsgBox"已

37、有這個(gè)用戶",vbOKOnly+vbExclamation,""Textl.SetFocusTextl.Text=""Text2.Text=""Text3.Text=""Combol.Text=""ExitSubElsers_add.MoveNextEndIfWendIfTrim(Text2.Text)<>Trim(Text3.Text)ThenMsgBox"兩次密碼不一致",vbOKOnly+vbExclamation,""Text

38、2.SetFocusText2.Text=""Text3.Text=""ExitSubElseIfTrim(Combo1.Text)<>"system"AndTrim(Combo1.Text)<>"guest"ThenMsgBox"請(qǐng)選擇正確的用戶權(quán)限",vbOKOnly+vbExclamation,""Combol.SetFocusCombol.Text=""ExitSubElsers_add.AddNewrs_add.Field

39、s(0)=Textl.Textrs_add.Fields(1)=Text2.Textrs_add.Fields(2)=Combol.Textrs_add.Updaters_add.Close下面是返回成功信息對(duì)話框的代碼:MsgBox"添加用戶成功",vbOKOnly+vbExclamation,""UnloadMeEndIfEndIfEndSub4.4.3 修改密碼子窗體代碼修改密碼子窗體是用來(lái)修改用戶密碼的。具運(yùn)行效果如圖38所示新密碼叵赤把,碼確LL蹂*承第*確定取消部強(qiáng)改窕碼修改密碼子窗體運(yùn)行效果在“確定”按鈕的Click事件中添加如下代碼Pri

40、vateSubCommand1_Click()Dimrs_changAsNewADODB.RecordsetDimsqlAsStringIfTrim(Text1.Text)<>Trim(Text2.Text)ThenMsgBox”密碼不一致!",vbOKOnly+vbExclamation,""Text1.SetFocusText1.Text=""Text2.Text=""Elsesql="select*from系統(tǒng)管理where用戶名="'&userID&"

41、"'rs_chang.Opensql,conn,adOpenKeyset,adLockPessimisticrs_chang.Fields=Text1.Textrs_chang.Updaters_chang.CloseMsgBox"密碼修改成功",vbOKOnly+vbExclamation,""UnloadMeEndIfEndSub因工期提示修改成功在上述代碼中,首先比較兩個(gè)表中的數(shù)據(jù)是否一致,然后用rs_chang.Fields(1)=Textl.Text語(yǔ)句把代碼輸入到數(shù)據(jù)庫(kù)中。最后,用MsgBox”密碼修改成功",vb

42、OKOnly+vbExclamation,""語(yǔ)句彈出一個(gè)信息框,告訴修改成功,如上圖所示。4.4.4庫(kù)房管理子窗體代碼庫(kù)房管理子窗體是用來(lái)管理圖書(shū)資料的。具運(yùn)行效果如圖所示庫(kù)房管理子窗體實(shí)際上,設(shè)計(jì)庫(kù)房管理子窗體的程序代碼與增加用戶子窗體的代碼在思路上是完全相同的。就是在DataGrid的文本框中顯示圖書(shū)進(jìn)出的清單,最后把填寫的明細(xì)存儲(chǔ)到數(shù)據(jù)庫(kù)中。檢查代碼如下:OptionExplicitDimrs_data2AsNewADODB.RecordsetDimselect_rowAsStringDimshowgrid2AsBooleanDimrs_customAsNewADO

43、DB.RecordsetDimjinchuAsString'進(jìn)出庫(kù)標(biāo)志DimmodifyAsBoolean'修改狀態(tài)標(biāo)志PrivateSubcmdexit_Click()UnloadMeEndSubPrivateSubForm_Load()OnErrorGoToloaderrorDimsqlAsStringsql="select*from圖書(shū)資料"rs_custom.CursorLocation=adUseClientrs_custom.Opensql,conn,adOpenKeyset,adLockPessimisticWhileNotrs_custom.

44、EOFCombo1.AddItemrs_custom.Fields(0)rs_custom.MoveNextWendfindok=Truemodify=False'非修改狀態(tài)showgrid2=Falsedisplaygrid1'調(diào)用顯示Datagrid1子程序loaderror:IfErr.Number<>0ThenMsgBoxErr.DescriptionEndIfEndSub'顯示msflexgrid1子程序PublicSubdisplaygrid1()DimiAsIntegerOnErrorGoTodisplayerrorsetgridsetgrid

45、headMSFlexGrid1.Row=0IfNotrs_data1.EOFThenrs_data1.MoveFirstDoWhileNotrs_data1.EOFMSFlexGrid1.Row=MSFlexGrid1.Row+1MSFlexGrid1.Col=0IfNotIsNull(rs_data1.Fields(0)ThenMSFlexGrid1.TMSFlexGrid1.Text=""MSFlexGrid1.Col=1IfNotIsNull(rs_data1.Fields(1)ThenMSFlexGrid1.TMSFlexGrid1.Text=""

46、;MSFlexGrid1.Col=2IfNotIsNull(rs_data1.Fields(2)ThenMSFlexGrid1.TMSFlexGrid1.Text=""MSFlexGrid1.Col=3IfNotIsNull(rs_data1.Fields(3)ThenMSFlexGrid1.TMSFlexGrid1.Text=""MSFlexGrid1.Col=4IfNotIsNull(rs_data1.Fields(4)ThenMSFlexGrid1.TMSFlexGrid1.Text=""MSFlexGrid1.Col=5IfN

47、otIsNull(rs_data1.Fields(5)ThenMSFlexGrid1.TMSFlexGrid1.Text=""rs_data1.MoveNextLoopEndIfdisplayerror:IfErr.Number<>0ThenMsgBoxErr.DescriptionEndIfEndSubPublicSubsetgrid()DimiAsIntegerOnErrorGoToseterrorWithMSFlexGrid1.ScrollBars=flexScrollBarBoth.FixedCols=0.Rows=rs_data1.RecordCoun

48、t+1.Cols=6.SelectionMode=flexSelectionByRowFori=0To.Rows-1.RowHeight(i)=315ext=rs_data1.Fields(0)Elseext=rs_data1.Fields(1)Elseext=rs_data1.Fields(2)Elseext=rs_data1.Fields(3)Elseext=rs_data1.Fields(4)Elseext=rs_data1.Fields(5)ElseNextFori=0To.Cols-1.ColWidth(i)=1300NextiEndWithExitSubseterror:MsgBo

49、xErr.DescriptionEndSubPublicSubsetgridhead()OnErrorGoTosetheaderrorMSFlexGrid1.Row=0MSFlexGrid1.Col=0MSFlexGrid1.Text="編號(hào)"MSFlexGrid1.Col=1MSFlexGrid1.Text="購(gòu)買日期"MSFlexGrid1.Col=2MSFlexGrid1.Text="書(shū)名"MSFlexGrid1.Col=3MSFlexGrid1.Text="類型"MSFlexGrid1.Col=4MSFle

50、xGrid1.Text="定價(jià)"MSFlexGrid1.Col=5MSFlexGrid1.Text="備注"ExitSubsetheaderror:MsgBoxErr.DescriptionEndSubPrivateSubForm_Unload(CancelAsInteger)findok=Falsers_data1.Closers_custom.CloseEndSubPrivateSubMSFlexGrid1_Click()OnErrorGoTogriderrorDimgetrowAsLonggetrow=MSFlexGrid1.RowIfMSFlex

51、Grid1.Rows=1ThenMsgBox"無(wú)相關(guān)記錄",vbOKOnly+vbExclamation,""Elseselect_row=MSFlexGrid1.TextMatrix(getrow,0)EndIfgriderror:IfErr.Number<>0ThenMsgBoxErr.DescriptionEndIfEndSubPublicSubshowdata()WithMSFlexGrid2.Rows = rs_data2.RecordCount + 1.Row = 0If Not rs_data2.EOF Thenrs_data2

52、.MoveFirstDo While Not rs_data2.EOF.Row = .Row + 1.Col = 0If Not IsNull(rs_data2.Fields(0) Then .T.Col = 1If Not IsNull(rs_data2.Fields(1) Then .T.Col = 2If Not IsNull(rs_data2.Fields(2) Then .T.Col = 3If Not IsNull(rs_data2.Fields(3) Then .T.Col = 4ext = rs_data2.Fields(0) Else .Text = rs_data2.Fie

53、lds(1) Else .Text = rs_data2.Fields(2) Else .Text = rs_data2.Fields(3) Else .Text = ""ext = ""ext = ""ext = ""IfNotIsNull(rs_data2.Fields(4)AndCDbl(rs_data2.Fields(4)<0Then.Text=-CDbl(rs_data2.Fields(4)Else.Text=rs_data2.Fields(4)EndIf.Col=5ext = "&quo

54、t;ext = ""IfNotIsNull(rs_data2.Fields(5)Then.Text=rs_data2.Fields(5)Else.T.Col=6IfNotIsNull(rs_data2.Fields(6)Then.Text=rs_data2.Fields(6)Else.T.Col=7IfNotIsNull(rs_data2.Fields(7)AndCDbl(rs_data2.Fields(4)<0Then.Text=-CDbl(rs_data2.Fields(7)Else.Text=rs_data2.Fields(7)EndIf.Col=8IfNotI

55、sNull(rs_data2.Fields(8)Then.Text=rs_data2.Fields(8)Else.Text=""rs_data2.MoveNextLooprs_data2.MoveLastEndIfEndWithEndSub4.4.5 查詢子窗體代碼查詢子窗體是用來(lái)查詢庫(kù)房中圖書(shū)資料明細(xì)的。具運(yùn)行效果如圖所示。查詢子窗體運(yùn)行效果在列表框中給出編號(hào)或年月日后,“查詢”按鈕的Click事件將給出與數(shù)據(jù)庫(kù)查找比較的結(jié)。PrivateSubCommand1_Click()OnErrorGoTocmderrorDimfind_date1AsStringDimfind_date2AsStringIfOption1.Value=TrueThensqlfind="select*from圖書(shū)資料where編號(hào)between'"&_Combo1(0).Text&山&"and"

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論