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

下載本文檔

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

文檔簡介

1、圖書管理系統(tǒng)摘要圖書管理系統(tǒng)是以SQL Servers 2000作為后臺數(shù)據(jù)庫,采用Visual Basic6.0開發(fā)的一個數(shù)據(jù)庫管理系統(tǒng)。開發(fā)本系統(tǒng)的基本步驟:需求分析、系統(tǒng)概念設(shè)計、系統(tǒng)邏輯和物理設(shè)計、系統(tǒng)實(shí)現(xiàn)和維護(hù)。在系統(tǒng)分析中先后用數(shù)據(jù)字典、數(shù)據(jù)流圖、E-R圖分析了系統(tǒng)所需的各種數(shù)據(jù)。在系統(tǒng)的設(shè)計過程中,我主要采用了部件進(jìn)行前臺和后臺的連接,還采用模塊獨(dú)立設(shè)計法,比較詳細(xì)的展現(xiàn)了各個部件的功能。在后臺數(shù)據(jù)庫的設(shè)計當(dāng)中, 我又力求層次清晰,設(shè)計簡單實(shí)用。在系統(tǒng)具體實(shí)行階段中,我較細(xì)致的畫出了各個窗體并給出了相應(yīng)的事件和代碼,以實(shí)現(xiàn)各個窗體的作用。功能概述:該系統(tǒng)界面友好,操作簡便,能完成

2、圖書的分類查詢,讀者借書數(shù)量的查詢,圖書信息的添加修改刪除,讀者信息的添加修改刪除,同時還能實(shí)現(xiàn)借閱功能和還書功能等一系列圖書管理功能,開發(fā)本系統(tǒng)的總體任務(wù)是實(shí)現(xiàn)圖書管理的系統(tǒng)化和自動化,幫助管理人員更高效地完成圖書管理工作。本著實(shí)用性的原則,整個系統(tǒng)由四大功能組成,每個功能又能保持?jǐn)?shù)據(jù)的同步更新。一、 圖書查詢部分:包括按書名查詢,按作者查詢,按圖書類別查詢,讀者已借書數(shù)查詢等功能。二、 讀者借閱部分:包括讀者對想借圖書是否被借的查詢,登記借閱信息等功能。三、 讀者還書部分:包括登記還書信息等功能。四、 更新圖書和讀者信息部分:包括圖書信息的添加修改刪除,讀者信息的添加修改刪除,同時,在添加

3、讀者信息時,系統(tǒng)自動將其借書證號作為ID,密碼默認(rèn)為添加到用戶表中,方便讀者登錄本系統(tǒng)。 本系統(tǒng)具有高效、易操作、易維護(hù)等特點(diǎn),并且系統(tǒng)結(jié)構(gòu)清晰、界面友好,功能較為齊全,能有效地協(xié)助管理人員進(jìn)行圖書管理工作。1.需求分析需求分析階段必須準(zhǔn)確了解與分析用戶需求(包括數(shù)據(jù)與處理),需求分析是整個設(shè)計過程的基礎(chǔ)。需求分析階段確定的系統(tǒng)邏輯模型是以后設(shè)計和實(shí)現(xiàn)目標(biāo)系統(tǒng)的基礎(chǔ)。1.1系統(tǒng)的數(shù)據(jù)字典本系統(tǒng)主要數(shù)據(jù)元素的數(shù)據(jù)字典卡片為:名字:圖書信息報表別名:圖書信息表描述:圖書基本信息表定義:圖書信息報表書號書名作者類別登記日期是否被借+出版社+年份+價格+數(shù)量名字: 讀者信息報表別名: 讀者信息表描述:

4、 讀者基本信息表定義: 讀者信息報表姓名借書證號所在單位職業(yè)電話號碼登記日期已借書數(shù)名字: 借閱信息報表別名: 借閱信息表描述: 登記讀者借書和還書的表定義: 借閱信息報表姓名借書證號書號+書名+借書日期+還書日期+罰款名字: 用戶報表別名: 用戶表表描述: 存儲用戶IDPassword和權(quán)限的表定義: 用戶報表IDPassword權(quán)限2.數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計將需求分析得到的用戶需求抽象為信息結(jié)構(gòu)即概念模型的過程就是概念結(jié)構(gòu)設(shè)計。它是整個數(shù)據(jù)庫設(shè)計的關(guān)鍵。概念設(shè)計階段主要任務(wù)和目標(biāo)是根據(jù)需求分析的結(jié)果,包括一般聯(lián)系實(shí)體,畫出對應(yīng)的E-R圖。對于復(fù)雜的系統(tǒng),通常首先要對它的各功能模進(jìn)行分析,然后再

5、把它的功能結(jié)構(gòu)圖畫出來,功能分析之后,再根據(jù)不同用戶對數(shù)據(jù)和使用權(quán)限的不同要求分析局部E-R模式,然后再把各個局部E-R模式綜合起來形成統(tǒng)一的整體E-R圖。 2.1圖書管理系統(tǒng)功能分析圖書管理系統(tǒng)包括查詢、借閱、還書、更新圖書和讀者信息。(1)圖書查詢管理:包括按書名查詢,按作者查詢,按圖書類別查詢,讀者已借書數(shù)查詢4部分。其中,圖書信息包括圖書編號、書名、圖書類別、作者、出版社、剩余數(shù)量、登記日期、價格、出版日期以及是否已被借出。(2)圖書借閱管理:包括者對想借圖書是否被借的查詢,登記借閱信息2部分功能。其中,登記借閱信息包括借書證號、姓名、圖書編號、書名和借書日期。另外,還要求每人最多只能

6、借5本書。(3)圖書還書管理:實(shí)現(xiàn)登記還書信息功能。其中,還書信息與借閱信息的區(qū)別是存儲還書日期和罰款。(4)圖書和讀者信息管理:包括圖書信息和讀者信息都包括查詢、添加、修改和刪除4部分功能。其中,讀者信息包括姓名、借書證號、所在單位、職業(yè)、電話號碼、登記日期、已借書數(shù)。同時,在添加讀者信息時,系統(tǒng)自動將其借書證號作為ID,密碼默認(rèn)為添加到用戶表中,方便讀者登錄本系統(tǒng)。圖書信息同上。2.2 E-R圖的設(shè)計數(shù)據(jù)庫在一個信息管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計的好壞將直接對應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響。合理的數(shù)據(jù)庫結(jié)構(gòu)設(shè)計可以提高數(shù)據(jù)存儲的效率,保證數(shù)據(jù)的完整和一致。同時,合理的數(shù)

7、據(jù)庫結(jié)構(gòu)也將有利于程序的實(shí)現(xiàn)。設(shè)計數(shù)據(jù)庫系統(tǒng)時應(yīng)該首先充分了解用戶各個方面的需求,包括現(xiàn)有的以及將來可能增加的需求。針對圖書管理系統(tǒng)的需求,通過對圖書管理系統(tǒng)流程分析,設(shè)計此系統(tǒng)需要的E-R圖。利用E-R圖進(jìn)行數(shù)據(jù)庫的概念設(shè)計,可分成三步進(jìn)行:首先設(shè)計局部ER模式,然后把各局部E-R模式綜合成一個全局模式,最后對全局ER模式進(jìn)行優(yōu)化,得到最終的模式,即概念模式。 E-R模型的“聯(lián)系”用于刻畫實(shí)體之間的關(guān)聯(lián)。一種完整的方式是對局部結(jié)構(gòu)中任意兩個實(shí)體類型,依據(jù)需求分析的結(jié)果,考察局部結(jié)構(gòu)中任意兩個實(shí)體類型之間是否存在聯(lián)系。若有聯(lián)系,進(jìn)一步確定是1:N,M:N,還是1:1等。還要考察一個實(shí)體類型內(nèi)部

8、是否存在聯(lián)系,兩個實(shí)體類型之間是否存在聯(lián)系,多個實(shí)體類型之間是否存在聯(lián)系,等等。所有局部E-R模式都設(shè)計好了后,接下來就是把它們綜合成單一的全局概念結(jié)構(gòu)。全局概念結(jié)構(gòu)不僅要支持所有局部E-R模式,而且必須合理地表示一個完整、一致的數(shù)據(jù)庫概念結(jié)構(gòu)。1) 確定公共實(shí)體類型為了給多個局部E-R模式的合并提供開始合并的基礎(chǔ),首先要確定各局部結(jié)構(gòu)中的公共實(shí)體類型。在這一步中我們僅根據(jù)實(shí)體類型名和鍵來認(rèn)定公共實(shí)體類型。一般把同名實(shí)體類型作為公共實(shí)體類型的一類候選,把具有相同鍵的實(shí)體類型作為公共實(shí)體類型的另一類候選。2) 局部E-R模式的合并合并的原則是:首先進(jìn)行兩兩合并;先和合并那些現(xiàn)實(shí)世界中有聯(lián)系的局部

9、結(jié)構(gòu);合并從公共實(shí)體類型開始,最后再加入獨(dú)立的局部結(jié)構(gòu)。3) 消除沖突沖突分為三類:屬性沖突、結(jié)構(gòu)沖突、命名沖突。設(shè)計全局E-R模式的目的不在于把若干局部E-R模式形式上合并為一個E-R模式,而在于消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概念模型。4) 全局E-R模式的優(yōu)化在得到全局E-R模式后,為了提高數(shù)據(jù)庫系統(tǒng)的效率,還應(yīng)進(jìn)一步依據(jù)處理需求對E-R模式進(jìn)行優(yōu)化。一個好的全局E-R模式,除能準(zhǔn)確、全面地反映用戶功能需求外,還應(yīng)滿足下列條件:實(shí)體類型的個數(shù)要盡可能的少;實(shí)體類型所含屬性個數(shù)盡可能少;實(shí)體類型間聯(lián)系無冗余。根據(jù)上述所示得出本系統(tǒng)的全局ER圖如下:借閱書讀者姓名借書證

10、號書號書名書號出版社登記日期類別作者姓名借書證號職業(yè)所在單位年份價格是否被借還書日期借書日期書名登記日期已借書數(shù)mn3.數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(E-R圖向關(guān)系模型轉(zhuǎn)換)數(shù)據(jù)的概念結(jié)構(gòu)設(shè)計完畢后, 邏輯結(jié)構(gòu)設(shè)計的任務(wù)就是把概念結(jié)構(gòu)設(shè)計階段設(shè)計好的基本E-R圖轉(zhuǎn)換為與邏輯結(jié)構(gòu)。根據(jù)上面的E-R圖,現(xiàn)在將數(shù)據(jù)庫概念結(jié)構(gòu)轉(zhuǎn)化為SQL Server2000數(shù)據(jù)庫系統(tǒng)所支持的實(shí)際數(shù)據(jù)模型,也就是數(shù)據(jù)庫的邏輯結(jié)構(gòu)。E-R圖轉(zhuǎn)換的關(guān)系模型為:圖書信息表(書號、書名、圖書類別、作者、出版社、是否被借、登記日期、價格、年份)讀者信息表(借書證號、姓名、所在單位、職業(yè)、電話號碼、登記日期、已借書數(shù))圖書借閱信息表(借書

11、證號、書號、姓名、書名和借書日期、還書日期)用戶表(ID、Password、權(quán)限)在上面的實(shí)體以及實(shí)體之間關(guān)系的基礎(chǔ)上,形成數(shù)據(jù)庫中的表以及各個表之間的關(guān)系。SQL Server2000數(shù)據(jù)庫中各個表的設(shè)計代碼如下:定義圖書信息表:Create book(sno char(10) primary key,Sname char(20),Swriter char(15),Sfy char( 10),登記日期 datetime,是否被借 char(2),價格 money,出版社 char(20),年份 datetime數(shù)量 smallint)定義讀者信息表:Create reader(借書證號 ch

12、ar(10) primary key,姓名 char(8),所在單位 char(20),職業(yè) char(10),電話號碼 char(15),登記日期 datetime,已借書數(shù) smallint)定義借閱信息表:Create 借閱信息(借書證號 char(10),Sno char(10),姓名 char(8),Sname char(20),借出日期 datetime,還書日期 datetime,罰款 money,Primary key(借書證號,sno),Foreign key(借書證號) references reader(借書證號),Foreign key(sno) references

13、book(sno)定義用戶表:Create 用戶(ID char(10) Primary key,Password char(10),權(quán)限 char(10)關(guān)系模型的邏輯結(jié)構(gòu)是一組關(guān)系模式的集合,關(guān)系模型要求關(guān)系必須是規(guī)范化的,即要求關(guān)系必須滿足一定的規(guī)范條件,這些規(guī)范條件中最基本的一條就是,關(guān)系訂單每一個分量必須是一個不可分的數(shù)據(jù)項。關(guān)系模型可以具有更高的數(shù)據(jù)獨(dú)立性、更好的安全保密性。4.物理設(shè)計(數(shù)據(jù)庫的維護(hù))由于應(yīng)用環(huán)境不斷變化,數(shù)據(jù)庫運(yùn)行過程中物理存儲也會不斷變化,對數(shù)據(jù)庫設(shè)計進(jìn)行調(diào)整修改等維護(hù)工作是設(shè)計工作的繼續(xù)和提高。對數(shù)據(jù)庫經(jīng)常性的維護(hù)工作主要包括:(1)數(shù)據(jù)庫的轉(zhuǎn)儲和恢復(fù)針對不

14、同的應(yīng)用要求制定不同的轉(zhuǎn)儲計劃,保證一旦發(fā)生故障能盡快將數(shù)據(jù)庫恢復(fù)到某種一致的狀態(tài),盡可能減少對數(shù)據(jù)庫的破壞。(2)數(shù)據(jù)庫的安全性、完整性控制在數(shù)據(jù)庫運(yùn)行過程中由于應(yīng)用環(huán)境的變化,對安全性的要求也會發(fā)生變化,如原來機(jī)密的數(shù)據(jù)現(xiàn)在可以公開查詢了,新加入的數(shù)據(jù)又可能是機(jī)密的了。系統(tǒng)中用戶的密級改變。這都需要根據(jù)實(shí)際情況修改原有的安全性控制,可以設(shè)置數(shù)據(jù)庫密碼及用戶權(quán)限。同樣,數(shù)據(jù)庫的完整性的約束條件也會變化,需要DBA不斷修正。(2)數(shù)據(jù)庫性能的監(jiān)督、分析和改造利用Microsoft SQL Server2000提供的檢測系統(tǒng)性能參數(shù)的工具,在數(shù)據(jù)庫運(yùn)行過程中,監(jiān)督數(shù)據(jù)進(jìn)行分析,找出改進(jìn)系統(tǒng)性能的

15、方法,并做適當(dāng)調(diào)整。(4)數(shù)據(jù)庫的重組及重構(gòu)造數(shù)據(jù)庫運(yùn)行一段時間后,由于記錄不斷增、刪、改,增添、修改的數(shù)據(jù)不能為空,否則不能保存到數(shù)據(jù)庫中。使數(shù)據(jù)庫的物理存儲情況變壞,降低了數(shù)據(jù)的存取效率,數(shù)據(jù)庫性能下降,這時DBA要對數(shù)據(jù)庫進(jìn)行重組織,或部分重組織(只對頻繁增、刪的表進(jìn)行重組織),可以利用Microsoft SQL Server2000專門提供的數(shù)據(jù)重組織實(shí)用程序操作,按原設(shè)計要求重新安排存儲位置、回收垃圾、減少指針鏈等,提高系統(tǒng)性能。有些情況,如由于數(shù)據(jù)庫應(yīng)用環(huán)境發(fā)生變化,增加了新的應(yīng)用或新的實(shí)體,取消了某些應(yīng)用,有的實(shí)體與實(shí)體間的聯(lián)系發(fā)生變化,則需要調(diào)整數(shù)據(jù)庫的模式及內(nèi)模式。5.系統(tǒng)功

16、能結(jié)構(gòu)框圖6.程序原代碼及其說明。用SQL對所建表實(shí)現(xiàn)下列查詢1 求總藏書量、藏書總金額,總庫存冊數(shù)、最高價、最低價。select sum(數(shù)量) /*從圖書表中選出總藏書量*/from bookselect sum(價格) /*從圖書表中選出藏書總金額*/from bookselect count(distinct sname) /*從圖書表中選出總庫存冊書*/from bookselect max(價格) /*從圖書表中選出價格最高的圖書*/from bookselect min(價格) /*從圖書表中選出價格最低的圖書*/from book2 列出藏書在3本以上的書(書名、作者、出版社、

17、年份)。select *from bookwhere sname=any(select sname /*選出圖書表中3本以上書名相同的書*/from bookgroup by(sname)having count(*)=3) and出版社=any /*選出圖書表中3本以上書名相同并且出版社也相同的書*/(select 出版社from bookgroup by(出版社)having count(*)=3) 3 哪些出版社的藏書種類數(shù)超過5種。select 出版社 /*選出藏書種類數(shù)超過5中的出版社*/from bookgroup by(出版社)having count(sname)54 目前實(shí)際

18、已借出多少冊書?select count(*) /*選出實(shí)際已借冊數(shù)*/from bookwhere 是否被借=是5 年份最久遠(yuǎn)的書。select * /*選出年份最久遠(yuǎn)的書*/from bookwhere 年份=any(select min(年份)from book)6 “數(shù)據(jù)庫系統(tǒng)原理教程,王珊編,清華大學(xué)出版社,1998年出版”還有幾本?select count(*)from bookwhere sname=數(shù)據(jù)庫系統(tǒng)原理教程and swriter=王珊and 出版社=清華大學(xué)出版社and 是否被借=否and 年份 like%1998%7 哪一年的圖書最多?select 登記日期 /*選

19、出哪一年的圖書最多*/from bookgroup by(登記日期)having count(sno)=all(select count(sno)from bookgroup by 登記日期)8 哪本借書證未歸還的圖書最多?select 借書證號,姓名 /*選出哪本借書證未歸還的圖書最多*/from readerwhere 已借書數(shù)=(select max(已借書數(shù))from reader)9平均每本借書證的借書冊數(shù)。select avg(已借書數(shù)) /*選出平均每本借書證的借書冊數(shù)*/from reader 10哪個單位平均借書冊數(shù)最多?select 所在單位 /*選出哪個單位平均借書冊數(shù)*

20、/from readergroup by(所在單位)having avg(已借書數(shù))=all(select avg(已借書數(shù))from readergroup by(所在單位)11 最近兩個月都未被借過的書。select * /*選出最近兩個月都未被借過的書*/from bookwhere sno not in(select snofrom 借閱信息where month(借出日期)in (11,12)12 列出那些借了圖書逾期未歸還的借書證號和圖書名。select 借書證號,sname/*選出借了圖書逾期未歸還的借書證號和圖書名*/from 借閱信息where 還書日期 is null an

21、d (2010-year(借出日期)*365+(1-month(借出日期)*30+(12-day(借出日期)3013這個月未借過書的借書證.select 借書證號,姓名 /*選出這個月未借過書的借書證號和姓名*/from readerwhere 借書證號 not in(select 借書證號from 借閱信息where month(借出日期)=12)14 這兩個月哪種書出借最多?select sname /*選出這兩個月哪種書借出最多*/from 借閱信息group by(sname)having count(sname)=all(select count(sname)from 借閱信息7.收

22、獲及體會通過這次課程設(shè)計,我掌握了Accesss數(shù)據(jù)庫的編程方法,掌握了Visual Basic中文版視化面向?qū)ο蟮木幊陶Z言的使用方法。對目前流行的軟件開發(fā)方法和手段,有了一定的認(rèn)識,豐富了軟件開發(fā)的經(jīng)驗(yàn),提高了編制程序的水平,加深理解了許多課程中、書本上學(xué)到的知識和理論。同時通過編寫畢業(yè)設(shè)計論文,我還掌握了軟件文檔的書寫方法和書寫格式。因?yàn)槌醮伍_發(fā)一個系統(tǒng),所以此系統(tǒng)還有許多不完善的地方。由于時間有限,和我的編程水平和經(jīng)驗(yàn)不足,有些功能并沒有完全實(shí)現(xiàn),有些功能實(shí)現(xiàn)的并不理想。在已經(jīng)完成的程序中,也存在許多不盡人意的算法和數(shù)據(jù)結(jié)構(gòu)。而這也讓我充分認(rèn)識到了軟件編制的困難程度。對軟件的編制速度,復(fù)

23、雜程度有了充分的認(rèn)識。整個庫存管理系統(tǒng)已經(jīng)開發(fā)完畢。在開發(fā)的過程中,確實(shí)遇到了不少的困難和阻礙,首先,由于第一次接觸這樣的系統(tǒng)開發(fā),當(dāng)時上手時一片迷茫,根本不知道要做些什么事情,從何做起,怎么做,其次,書本上的理論知識終究不同于實(shí)際的操作,真正讓我把項目設(shè)置的整個流程反映在系統(tǒng)中著實(shí)還是有一定的困難的。因?yàn)楫吘箾]有真正地實(shí)踐過,對于整個流程還只是停留在書本上看到的,老師上課講到的。不過,經(jīng)過一段時間的調(diào)查和研究,翻閱大量的資料以及導(dǎo)師的細(xì)心指導(dǎo),由此開始慢慢地上了軌道,也漸漸地理清了思路,了解了自己應(yīng)該如何開始,于是為自己制訂了一份進(jìn)度安排,一步步地按照這個進(jìn)度施行計劃。同時,指導(dǎo)老師也讓我們

24、先做一份系統(tǒng)分析,那么在真正的設(shè)計時就可以有個導(dǎo)向,以此達(dá)到事半功倍的效果。確實(shí),事實(shí)證明,這是非常需要的。在后期的程序設(shè)計中,這份系統(tǒng)分析起到了舉足輕重的份量,使我們在具體設(shè)計中有了更為清晰的目標(biāo)。但是,在此過程中,也并不是一帆風(fēng)順的,特別是在編程方面,遇到了很多的困難,以前雖說沒學(xué)過VB,但是真要使用這個開發(fā)工具開發(fā)一個系統(tǒng)并不是易事,有時候,有些在系統(tǒng)中的功能我們構(gòu)想的很好,很完美,但在實(shí)際的操作中,并不能完全實(shí)現(xiàn),很多時候,雖然把程序編寫出來了,但在執(zhí)行的時候卻不斷地報錯,往往是這個功能可以實(shí)現(xiàn)了,那段程序卻又出現(xiàn)了錯誤,所以,在這段過程中,需要經(jīng)過無數(shù)次的修改,不斷地學(xué)習(xí),反反復(fù)復(fù)的

25、實(shí)踐,最終才完成了這個系統(tǒng)的開發(fā)。在這次課程設(shè)計中,我要特別感謝鄭教師,在您的大力幫助下不僅僅是完成了此系統(tǒng)的開發(fā)而且學(xué)會了一門編程語言,使我的能力得到了提高。7.系統(tǒng)的實(shí)現(xiàn)及運(yùn)行結(jié)果分析7.1 用戶登錄界面通過該界面登錄圖書管理系統(tǒng)和進(jìn)行密碼修改。(1)在您選擇修改密碼時,將進(jìn)入如下界面:在單擊“確定”按鈕后,如果兩次新密碼輸入一致,將返回一個信息框,提示密碼修改成功。如果不一致,也將返回一個信息框提示兩次輸入的新密碼不一致。 (2)在您選擇登錄時,將根據(jù)用戶權(quán)限提供相應(yīng)操作。如果登錄的用戶是普通用戶,進(jìn)入主界面將不能進(jìn)行圖書信息和讀者信息的修改。如下圖。如果登錄的用戶是管理員,進(jìn)入主界面可

26、以進(jìn)行所有操作,如下圖: 7.2 查詢界面進(jìn)入主界面后,在您選擇查詢時,將來到查詢界面。在這里,您可以選擇查詢方式,如果您選擇按書名查詢,并輸入書名后點(diǎn)擊“確定”,將查到如下結(jié)果:當(dāng)然您也可以選擇其他查詢,如按作者查詢,按分類查詢,查詢已借書數(shù)等。查詢完畢后,您可以選擇“返回”,重新回到主界面,也可以選擇“退出”,退出本系統(tǒng)。7.3 借閱界面在主界面, 您也可以選擇借閱,來到借閱界面。在這里,您可以查詢要借的圖書是否被別人借走。如被借走,您將不能借閱,同時“添加”按鈕顯示灰色,不能點(diǎn)擊。如果沒被借走,您可以點(diǎn)擊“添加”借閱此書。點(diǎn)擊“添加”后,進(jìn)入如下界面,登記借閱信息:在單擊“確定”按鈕后,

27、如果輸入正確,將返回一個信息框,提示借閱信息已成功登記,如下圖。如果該讀者已借5本書,點(diǎn)擊“確定”按鈕后,將返回信息框,提示 借閱完畢后,您可以選擇“返回”,重新回到主界面,也可以選擇“退出”,退出本系統(tǒng)。7.4 還書界面在主界面, 您也可以選擇還書,來到還書界面。在這里,您可以輸入借書證號,所還書號點(diǎn)擊“確定”,找到要還的圖書。來到如下界面,登記還書信息。輸入還書日期后,點(diǎn)擊“確定” ,如果您借書時間超過一個月,系統(tǒng)將返回一個信息框,提示您需要繳納罰款。最后系統(tǒng)提示還書信息已成功登記。 還書完畢后,您可以選擇“返回”,重新回到主界面,也可以選擇“退出”,退出本系統(tǒng)。7.5 更新圖書和讀者信息

28、界面如果您是管理員在主界面,還可以選擇更新圖書和讀者信息,來到如下界面。在這里,您可以選擇更新圖書信息和讀者信息。(1)如果您要更新圖書信息,點(diǎn)擊后,來到如下界面:在這里您可以點(diǎn)擊“添加”,通過如下界面,錄入新的圖書信息。您也可以在設(shè)置條件里確切的找到圖書,對其進(jìn)行修改和刪除,點(diǎn)擊“修改”后,進(jìn)入如下界面,修改后點(diǎn)擊“確定”。同時,您也可以點(diǎn)擊“刪除”,刪除圖書信息。點(diǎn)擊后,返回一個信息框,提示是否要刪除,如果您點(diǎn)擊“是”,就將該圖書信息刪除了。最后還可以點(diǎn)擊“返回”,回到圖 。(2)如果您要更新讀者信息,點(diǎn)擊后,來到如下界面:同樣在這里您可以點(diǎn)擊“添加”,通過如下界面,錄入新的讀者信息。在錄

29、入新的讀者信息時,系統(tǒng)自動將其借書證號作為ID,密碼默認(rèn)為添加到用戶表中,方便讀者登錄本系統(tǒng)。 您還可以在設(shè)置條件里確切的找到讀者信息,對其進(jìn)行修改和刪除,點(diǎn)擊“修改”后,進(jìn)入如下界面,修改后點(diǎn)擊“確定”。同時,您也可以點(diǎn)擊“刪除”,刪除讀者信息。點(diǎn)擊后,返回一個信息框,提示是否要刪除,如果您點(diǎn)擊“是”,就將該讀者信息刪除了。最后點(diǎn)擊“返回”,回到圖 。9.附錄(代碼)9.1 附錄一(登錄界面)Private Sub Command3_Click()Form6.ShowUnload MeEnd SubPrivate Sub Form_Activate()yhdl3 = 0End SubPriv

30、ate Sub Command1_Click()yhdl3 = yhdl3 + 1Adodc1.RecordSource = select Password from 用戶 where ID = + Text1.Text + AND Password = + Text2.Text + Adodc1.Refreshyhdl2 = Adodc1.Recordset.RecordCountIf yhdl2 = 0 ThenMsgBox 用戶名或密碼錯誤,請重新輸入, , 提示If yhdl3 2 ThenMsgBox 您已輸錯3次,已無法登陸!, , 提示Unload MeEnd IfExit Su

31、bElseAdodc2.RecordSource = select 權(quán)限 from 用戶 where ID = + Text1.Text + Adodc2.RefreshSet DataGrid1.DataSource = Adodc2DataGrid1.Refreshyhdl = DataGrid1.TextIf yhdl = 普通用戶 ThenForm2.ShowForm2.Command1.Enabled = FalseForm1.HideElseForm2.ShowForm1.HideEnd IfEnd IfEnd SubPrivate Sub Command2_Click()Unlo

32、ad MeEnd SubPrivate Sub 登錄_Click()yhdl3 = yhdl3 + 1Adodc1.RecordSource = select Password from 用戶 where ID = + Text1.Text + AND Password = + Text2.Text + Adodc1.Refreshyhdl2 = Adodc1.Recordset.RecordCountIf yhdl2 = 0 ThenMsgBox 用戶名或密碼錯誤,請重新輸入, , 提示If yhdl3 2 ThenMsgBox 您已輸錯3次,已無法登陸!, , 提示Unload MeEnd

33、 IfExit SubElseAdodc2.RecordSource = select 權(quán)限 from 用戶 where ID = + Text1.Text + Adodc2.RefreshSet DataGrid1.DataSource = Adodc2DataGrid1.Refreshyhdl = DataGrid1.TextIf yhdl = 普通用戶 ThenForm2.ShowForm2.Command1.Enabled = FalseForm1.HideElseForm2.ShowForm1.HideEnd IfEnd IfEnd SubPrivate Sub 退出_Click()

34、Unload MeEnd SubPrivate Sub 修改密碼_Click()Form6.ShowUnload MeEnd Sub9.2 附錄二(查詢界面)Private Sub Command1_Click()Text2.Text = Text3.Text = Adodc2.RecordSource = select sno as 書號,sname as 書名,swriter as 作者,sfy as 分類,登記日期 as 登記日期,是否被借 as 是否被借,價格 as 價格,出版社 as 出版社,年份 as 年份 from book where sname= + Text1.Text +

35、 Adodc2.RefreshSet DataGrid1.DataSource = Adodc2DataGrid1.RefreshEnd SubPrivate Sub Command2_Click()Text1.Text = Text2.Text = Adodc2.RecordSource = select sno as 書號,sname as 書名,swriter as 作者,sfy as 分類,登記日期 as 登記日期,是否被借 as 是否被借,價格 as 價格,出版社 as 出版社,年份 as 年份 from book where sfy= + Text3.Text + Adodc2.R

36、efreshSet DataGrid1.DataSource = Adodc2DataGrid1.RefreshEnd SubPrivate Sub Command3_Click()Text1.Text = Text3.Text = Adodc2.RecordSource = select sno as 書號,sname as 書名,swriter as 作者,sfy as 分類,登記日期 as 登記日期,是否被借 as 是否被借,價格 as 價格,出版社 as 出版社,年份 as 年份 from book where swriter= + Text2.Text + Adodc2.Refres

37、hSet DataGrid1.DataSource = Adodc2DataGrid1.RefreshEnd SubPrivate Sub Command4_Click()Unload MeForm2.ShowEnd SubPrivate Sub Command5_Click()Unload MeEnd SubPrivate Sub Command6_Click()Adodc6.RecordSource = select 已借書數(shù) as 已借書數(shù) from reader where 借書證號= + Text4.Text + Adodc6.RefreshSet DataGrid2.DataSou

38、rce = Adodc6DataGrid2.RefreshText5.Text = DataGrid2.TextEnd Sub9.3 附錄三(借閱模塊)Private Sub Command1_Click()Unload MeForm2.ShowEnd SuPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Command3_Click()Adodc3.RecordSource = select 是否被借 from book where sno= + Text1.Text + Adodc3.RefreshSet DataGrid2.D

39、ataSource = Adodc3DataGrid2.Refreshjl = DataGrid2.TextIf jl = 是 ThenComm1.Enabled = FalseMsgBox 您所查詢的圖書已被借走!, vbOKOnly, 信息提示ElseComm1.Enabled = TrueEnd IfEnd SubPrivate Sub Form_Load()recs = Adodc1.Recordset.RecordCountText2.Text = recsIf recs 0 ThenAdodc1.Recordset.MoveLastAdodc1.Recordset.MoveFirs

40、tEnd IfEnd SubPrivate Sub Comm1_Click()flag = 1Form11.Show vbModalText2.Text = recsEnd SubPrivate Sub retComm_Click()Unload MeForm1.ShowEnd SubPrivate Sub Form_Activate()Text1(0) = : Text1(1) = Text1(2) = : Text1(3) = Text1(4) = : Text1(5) = End SubPrivate Sub Comm1_Click()If Trim(Text1(0).Text) = T

41、henMsgBox 數(shù)據(jù)不能為空,請正確輸入, vbOKOnly, 信息提示Text1(0).SetFocusExit SubEnd IfIf Trim(Text1(1).Text) = ThenMsgBox 數(shù)據(jù)不能為空,請正確輸入, vbOKOnly, 信息提示Text1(1).SetFocusExit SubEnd IfIf Trim(Text1(2).Text) = ThenMsgBox 數(shù)據(jù)不能為空,請正確輸入, vbOKOnly, 信息提示Text1(2).SetFocusExit SubEnd IfIf Trim(Text1(3).Text) = ThenMsgBox 數(shù)據(jù)不能為

42、空,請正確輸入, vbOKOnly, 信息提示Text1(3).SetFocusExit SubEnd IfIf Trim(Text1(4).Text) = ThenMsgBox 數(shù)據(jù)不能為空,請正確輸入, vbOKOnly, 信息提示Text1(4).SetFocusExit SubEnd IfAdodc1.RecordSource = select 已借書數(shù) from reader where 借書證號= + Text1(0).Text + Adodc1.RefreshSet DataGrid1.DataSource = Adodc1DataGrid1.Refreshyjss = Data

43、Grid1.Textyjss = yjss + 1Adodc2.RecordSource = select * from book where sno= + Text1(1).Text + Adodc2.RefreshSet DataGrid2.DataSource = Adodc2 DataGrid2.Refreshsfbj = DataGrid2.TextIf sfbj = 是 ThenMsgBox 對不起!您所借的圖書已被借走!, vbOKOnly, 信息提示ElseIf yjss 5 ThenMsgBox 對不起!您所借的書數(shù)已超過5本,請及時歸還!, vbOKOnly, 信息提示El

44、sesfbj = 是recs = recs + 1Form5.Adodc1.Recordset.AddNewForm5.Adodc1.Recordset.Fields(借書證號) = Trim(Text1(0).Text)Form5.Adodc1.Recordset.Fields(姓名) = Trim(Text1(2).Text)Form5.Adodc1.Recordset.Fields(sno) = Trim(Text1(1).Text)Form5.Adodc1.Recordset.Fields(sname) = Trim(Text1(3).Text)Form5.Adodc1.Records

45、et.Fields(借出日期) = Trim(Text1(4).Text)Adodc1.Recordset.Fields(已借書數(shù)) = Trim(yjss)Adodc2.Recordset.Fields(是否被借) = Trim(sfbj)If Trim(Text1(5).Text) ThenForm5.Adodc1.Recordset.Fields(還書日期) = Trim(Text1(5).Text)End IfForm5.Adodc1.Recordset.UpdateAdodc1.Recordset.UpdateAdodc2.Recordset.UpdateMsgBox 借閱信息已成功

46、登記!, vbOKOnly, 信息提示End IfEnd IfUnload MeEnd SubPrivate Sub Comm2_Click()Unload MeEnd Sub9.4 附錄四(還書模塊)Private Sub Form_Load()recs = Adodc1.Recordset.RecordCountText2.Text = recsIf recs 0 ThenAdodc1.Recordset.MoveLastAdodc1.Recordset.MoveFirstEnd IfEnd SubPrivate Sub Form_Activate()DataGrid1.SetFocusC

47、all encommEnd SubPrivate Sub Command1_Click()Unload MeForm2.ShowEnd SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub Command3_Click()flag = 2Form13.Show vbModalText2.Text = recsEnd SubPrivate Sub selCmd1_Click()condstr = If Trim(Text1.Text) And Trim(Text3.Text) ThenIf condstr = Thencondstr

48、 = 借書證號 = + Trim(Text1.Text) + + AND sno = + Trim(Text3.Text) + End IfEnd IfIf condstr ThenAdodc1.RecordSource = select * from 借閱信息 where + condstr + order by 借出日期 descAdodc1.RefreshElseAdodc1.RecordSource = select * from 借閱信息Adodc1.RefreshEnd Ifrecs = Adodc1.Recordset.RecordCountText2.Text = recsIf

49、 recs = 0 ThenMsgBox 沒有任何滿足條件的記錄, vbOKOnly, 信息提示End IfCall encommflag = 2Form13.Show vbModalText2.Text = recsEnd SubPrivate Sub selCmd2_Click()Text1.Text = : Text3.Text = End SubPrivate Sub retComm_Click()Unload MeForm1.ShowEnd SubPrivate Sub encomm()If recs = 0 ThenCommand2.Enabled = FalseElseComma

50、nd2.Enabled = TrueEnd IfEnd SubPrivate Sub Form_Activate()jl1 = 0If flag = 2 ThenText1(0).Text = Trim(Form12.Adodc1.Recordset.Fields(借書證號) & Text1(2).Text = Trim(Form12.Adodc1.Recordset.Fields(姓名) & Text1(1).Text = Trim(Form12.Adodc1.Recordset.Fields(sno) & Text1(3).Text = Trim(Form12.Adodc1.Records

51、et.Fields(sname) & Text1(4).Text = Trim(Form12.Adodc1.Recordset.Fields(借出日期) & Text1(5).Text = Trim(Form12.Adodc1.Recordset.Fields(還書日期) & Text3.Text = Trim(Form12.Adodc1.Recordset.Fields(罰款) & ElseText1(0) = : Text1(1) = Text1(2) = : Text1(3) = Text1(4) = : Text1(5) = : Text3 = 0End IfEnd SubPrivat

52、e Sub Comm1_Click()jl1 = jl1 + 1If jl1 1 ThenMsgBox 還書信息已成功登記!, vbOKOnly, 信息提示Unload MeEnd IfIf Trim(Text1(5).Text) = ThenMsgBox 數(shù)據(jù)不能為空,請正確輸入, vbOKOnly, 信息提示Text1(5).SetFocusExit SubEnd IfAdodc1.RecordSource = select * from reader where 借書證號= + Text1(0).Text + Adodc1.RefreshAdodc2.RecordSource = sel

53、ect * from book where sno= + Text1(1).Text + Adodc2.RefreshText2.Text = Trim(Adodc1.Recordset.Fields(已借書數(shù)) & yjss1 = Text2.TextText4.Text = 否yjss1 = yjss1 - 1Form12.Adodc1.Recordset.Fields(借書證號) = Trim(Text1(0).Text)Form12.Adodc1.Recordset.Fields(姓名) = Trim(Text1(2).Text)Form12.Adodc1.Recordset.Fields(sno) = Trim(Text1(1).Text)Form12.Adodc1.Recordset.Fields(sname) = Trim(Text1(3).Tex

溫馨提示

  • 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

提交評論