電 話:18937133779
網(wǎng) 址:http://www.gycxdjzzl.com
郵 箱:zboao@qq.com
1、要了解ER圖的核心要素:實(shí)體,屬性,關(guān)系,實(shí)體就是一個(gè)個(gè)對(duì)象,比如貓,屬性就是實(shí)體所有的某個(gè)屬性,比如貓的性別,關(guān)系就是實(shí)體和實(shí)體之間或者實(shí)體內(nèi)部之間的關(guān)系。
2、要了解ER圖中怎么表示1中描述的三個(gè)核心要素:在ER圖中矩形代表實(shí)體,橢圓代表屬性,菱形代表關(guān)系,各個(gè)形狀之間用線段連接。
3、以同樣的方式定義課程實(shí)體后建關(guān)系表,拖進(jìn)關(guān)系線段,連接兩個(gè)實(shí)體,注意兩頭都是紅色才是真正的連接起來了。會(huì)自動(dòng)在關(guān)系屬性里建立起連接。
擴(kuò)展資料:
圖書借閱管理系統(tǒng)注意事項(xiàng):
一個(gè)實(shí)體型轉(zhuǎn)換為一個(gè)關(guān)系模式。關(guān)系的屬性:實(shí)體型的屬性,關(guān)系的碼:實(shí)體型的碼。
一個(gè)1:1聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與任何一端對(duì)應(yīng)的關(guān)系模式合并。一個(gè)1:n聯(lián)系可以轉(zhuǎn)換為一個(gè)獨(dú)立的關(guān)系模式,也可以與n端對(duì)應(yīng)的關(guān)系模式合并。一個(gè)m:n聯(lián)系轉(zhuǎn)換為一個(gè)關(guān)系模式。
三個(gè)或三個(gè)以上實(shí)體間的一個(gè)多元聯(lián)系可以轉(zhuǎn)換為一個(gè)關(guān)系模式,具有相同碼的關(guān)系模式可合并,同一實(shí)體集的實(shí)體之間的聯(lián)系即自聯(lián)系,也可以按1:1,1:n和m:n三種情況分別處理。
參考資料來源:百度百科-圖書管理系統(tǒng)
各種類型數(shù)據(jù)的高等界面,后來逐漸演變成滿足所有數(shù)據(jù)訪問需要的完整解datamodule4.adoquery2.sql.add('SELECT借書證號(hào),密碼FROM[user]WHERE(借書證號(hào)=:tt)');
datamodule4.adoquery2.parameters[0].value:=username;
datamodule4.adoquery2.open;
在為TQuery或TADOquery部件設(shè)置SQL屬性時(shí)調(diào)用Close方法總是很安全的,如果TQuery或TADOquery部件已經(jīng)被關(guān)閉了,調(diào)用Close方法時(shí)不會(huì)產(chǎn)生任何影響。在應(yīng)用程序中為SQL屬性設(shè)置新的SQL命令語句時(shí),必須要調(diào)用Clear方法以清除SQL屬性中現(xiàn)存的SQL命令語句,如果不調(diào)用Clear方法,便調(diào)用Add方法向SQL屬性中設(shè)置SQL命令語句,那么新設(shè)置的SQL命令語句會(huì)追加在現(xiàn)存SQL命令語句后面,在程序運(yùn)行時(shí)常常會(huì)出現(xiàn)出乎意料的查詢結(jié)果甚至程序無法運(yùn)行下去。
在這里要特別注意的,一般情況下TQuery或TADOquery部件的SQL屬性只能包含一條完整的SQL語句,它不允許被設(shè)置成多條SQL語句。當(dāng)然有些數(shù)據(jù)庫服務(wù)器也支持在TQuery或TADOquery部件的SQL屬性中設(shè)置多條SQL語句,只要數(shù)據(jù)庫服務(wù)器允許這樣,我們?cè)诰幊虝r(shí)可以為SQL屬性設(shè)置多條SQL語句。
在為TQuery或TADOquery部件設(shè)置完SQL屬性的屬性值之后,也即編寫好適當(dāng)?shù)腟QL程序之后,可以有多種方式來執(zhí)行SQL程序。
在設(shè)計(jì)過程中,設(shè)置完TQuery或TADOquery部件的SQL屬性之后將其Active屬性的值置為True,這樣便可以執(zhí)行SQL屬性中的SQL程序,如果應(yīng)用中有與TQuery或TADOquery部件相連的數(shù)據(jù)瀏覽部件(如TDDGridTDBEdit等)那么在這些數(shù)據(jù)瀏覽部件中會(huì)顯示SQL程序的執(zhí)行結(jié)果。
在應(yīng)用程序運(yùn)行過程中,通過程序調(diào)用TQuery或TADOquery組件的Open方法或ExecSQL方法可以執(zhí)行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。Open方法只能用來執(zhí)行SQL語言的查詢語句(Select命令),并返回一個(gè)查詢結(jié)果集,而ExecSQL方法還可以用來執(zhí)行其它常用的SQL語句(如INSERT,UPDATE,DELETE等命令),例如:
Query1.Open(這樣會(huì)返回一個(gè)查詢結(jié)果集)
如果調(diào)用Open方法,而沒有查詢結(jié)果時(shí),會(huì)出錯(cuò)。此時(shí)應(yīng)該調(diào)用ExecSQL方法來代替Open方法。如:
Query1.ExecSQL(沒有返回結(jié)果)
當(dāng)然在設(shè)計(jì)應(yīng)用程序時(shí),程序設(shè)計(jì)人員是無法確定TQuery或TADOquery組件中的SQL語句是否會(huì)返回一個(gè)查詢結(jié)果的。對(duì)于這種情況應(yīng)當(dāng)用Try…Except模塊來設(shè)計(jì)程序。在Try部分調(diào)用Open方法,而在Except部分調(diào)用ExceSQL方法,這樣才能保證程序的正確運(yùn)行。
例如:
Try
Query1.Open
Except
Query1.ExecSQL
End
通過Tquery或TADOquery組件可以獲得兩種類型的數(shù)據(jù):
u“活動(dòng)”的數(shù)據(jù)
這種數(shù)據(jù)就跟通過TTable部件獲得的數(shù)據(jù)一樣,用戶可以通過數(shù)據(jù)瀏覽部件來編輯修改這些數(shù)據(jù),并且當(dāng)調(diào)用Post方法或當(dāng)焦點(diǎn)離開當(dāng)前的數(shù)據(jù)瀏覽部件時(shí),用戶對(duì)數(shù)據(jù)的修改自動(dòng)地被寫回到數(shù)據(jù)庫中。
u非活動(dòng)的數(shù)據(jù)(只讀數(shù)據(jù))
用戶通過數(shù)據(jù)瀏覽部件是不能修改其中的數(shù)據(jù)。在缺省情況下,通過TQuery部件獲得的查詢結(jié)果數(shù)據(jù)是只讀數(shù)據(jù),要想獲得“活動(dòng)”的數(shù)據(jù),在應(yīng)用程序中必須要設(shè)置Tquery或TADOquery組件的RequestLive屬性值為True,然而并不是在任何情況下(通過設(shè)置RequestLive的屬值True)都可以獲得“活動(dòng)”的數(shù)據(jù)的,要想獲得“活動(dòng)”的數(shù)據(jù),除了將TQuery部件的RequestLive屬性設(shè)置為True外,相應(yīng)的SQL命令還要滿足以下條件。
本地SQL語句查詢情況下,要得到可更新的數(shù)據(jù)集,SQL語句的限制為:
n查詢只能涉及到一個(gè)單獨(dú)的表
nSQL語句中不能包含ORDERBY命令
nSQL語句中不能含聚集運(yùn)算符SUM或AVG
n在Select后的字段列表中不能有計(jì)算字段
n在Select語句WHERE部分只能包含字段值與常量的比較運(yùn)算,這些比較運(yùn)算符是:Like,>,<,>=,<=。各比較運(yùn)算之間可以有并和交運(yùn)算:AND和OR
當(dāng)通過SQL語句查詢數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫表:
n查詢只能涉及到一個(gè)單獨(dú)的表
nSQL語句中不能包含ORDERBY命令
nSQL語句中不能含聚集運(yùn)算符SUM或AVG運(yùn)算
另外,如果是查詢Sybase數(shù)據(jù)庫中的表,那么被查詢的表中只能有一個(gè)索引。
如果在應(yīng)用程序中要求TQuery或TADOquery組件返回一個(gè)“活動(dòng)”的查詢結(jié)果數(shù)據(jù)集,但是SQL命令語句不滿足上述約束條件時(shí),對(duì)于本地?cái)?shù)據(jù)庫的SQL查詢,BDE只能返回只讀的數(shù)據(jù)集。對(duì)于數(shù)據(jù)庫服務(wù)器中的SQL查詢,只能返回錯(cuò)誤的代碼。當(dāng)Tquery或TADOquery組件返回一個(gè)“活動(dòng)”的查詢結(jié)果數(shù)據(jù)集時(shí),它的CanModIfy屬性的值會(huì)被設(shè)置成True。
§3.4MSSQLServer簡(jiǎn)述
SQLServer是一個(gè)后臺(tái)數(shù)據(jù)庫管理系統(tǒng),它功能強(qiáng)大操作簡(jiǎn)便,日益為廣大數(shù)據(jù)庫用戶所喜愛。越來越多的開發(fā)工具提供了與SQLServer的接口。SQLServer是一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發(fā)的。于1988年推出了第一個(gè)OS/2版本,在WindowsNT推出后,Microsoft與Sybase在SQLServer的開發(fā)上就分道揚(yáng)鑣了,Microsoft將SQLServer移植到WindowsNT系統(tǒng)上,專注于開發(fā)推廣SQLServer的WindowsNT版本。
SQLServer2000是Microsoft公司推出的SQLServer數(shù)據(jù)庫管理系統(tǒng)的最新版本,該版本繼承了SQLServer7.0版本的優(yōu)點(diǎn),同時(shí)又比它增加了許多更先進(jìn)的功能、具有使用方便、可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn)??煽缭綇倪\(yùn)行MicrosoftWindows98的膝上型電腦到運(yùn)行MicrosoftWindows2000的大型多處理器的服務(wù)器等多種平臺(tái)使用。MSSQLServer不但可以應(yīng)用于大中型數(shù)據(jù)庫管理中,建立分布式關(guān)系數(shù)據(jù)庫,并且也可以開發(fā)桌面數(shù)據(jù)庫。事實(shí)上,SQLServer數(shù)據(jù)庫處理的基本結(jié)構(gòu),采取關(guān)系型數(shù)據(jù)庫模式,盡管如此,相信大家都可以輕易的發(fā)現(xiàn),在SQLServer的數(shù)據(jù)庫處理方式,則是使用面向?qū)ο蟮牟僮鞣绞脚c精神,也就是說,SQLServer的所有功能,都可以基于系統(tǒng)已經(jīng)建立好的一些對(duì)象來達(dá)成,是相當(dāng)OO(面向?qū)ο螅┑囊粋€(gè)系統(tǒng)結(jié)構(gòu)。
SQLServer企業(yè)管理器是SQLServer的主要管理工具,它提供了一個(gè)遵從MMC標(biāo)準(zhǔn)的用戶界面,使用戶得以:
·定義SQLServer實(shí)例組。
·將個(gè)別服務(wù)器注冊(cè)到組中。
·為每個(gè)已注冊(cè)的服務(wù)器配置所有SQLServer選項(xiàng)。
·在每個(gè)已注冊(cè)的服務(wù)器中創(chuàng)建并管理所有SQLServer數(shù)據(jù)庫、對(duì)象、登錄、用戶和權(quán)限。
·在每個(gè)已注冊(cè)的服務(wù)器上定義并執(zhí)行所有SQLServer管理任務(wù)。
·通過喚醒調(diào)用SQL查詢分析器,交互地設(shè)計(jì)并測(cè)試SQL語句、批處理和腳本。
·喚醒調(diào)用為SQLServer定義的各種向?qū)А?br>·
第三章圖書管理系統(tǒng)設(shè)計(jì)分析
§4.1應(yīng)用需求分析
圖書管理系統(tǒng)需要滿足來自三方面的需求,這三個(gè)方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個(gè)人借閱情況及個(gè)人信息的修改;圖書館工作人員對(duì)圖書借閱者的借閱及還書要求進(jìn)行操作,同時(shí)形成借書或還書報(bào)表給借閱者查看確認(rèn);圖書館管理人員的功能最為復(fù)雜,包括對(duì)工作人員、圖書借閱者、圖書進(jìn)行管理和維護(hù),及系統(tǒng)狀態(tài)的查看、維護(hù)并生成催還圖書報(bào)表。
圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據(jù)本人借書證號(hào)和密碼登錄系統(tǒng),還可以進(jìn)行本人借書情況的查詢和維護(hù)部分個(gè)人信息。一般情況下,圖書借閱者只應(yīng)該查詢和維護(hù)本人的借書情況和個(gè)人信息,若查詢和維護(hù)其他借閱者的借書情況和個(gè)人信息,就要知道其他圖書借閱者的借書證號(hào)和密碼。這些是很難得到的,特別是密碼,所以不但滿足了圖書借閱者的要求,還保護(hù)了圖書借閱者的個(gè)人隱私。
圖書館工作人員有修改圖書借閱者借書和還書記錄的權(quán)限,所以需對(duì)工作人員登陸本模塊進(jìn)行更多的考慮。在此模塊中,圖書館工作人員可以為圖書借閱者加入借書記錄或是還書記錄,并打印生成相應(yīng)的報(bào)表給用戶查看和確認(rèn)。
圖書館管理人員功能的信息量大,數(shù)據(jù)安全性和保密性要求最高。本功能實(shí)現(xiàn)對(duì)圖書信息、借閱者信息、總體借閱情況信息的管理和統(tǒng)計(jì)、工作人員和管理人員信息查看及維護(hù)。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統(tǒng)計(jì)圖書的基本信息;瀏覽、查詢、統(tǒng)計(jì)、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統(tǒng)計(jì)圖書館的借閱信息,但不能添加、刪除和修改借閱信息,這部分功能應(yīng)該由圖書館工作人員執(zhí)行,但是,刪除某條圖書借閱者基本信息記錄時(shí),應(yīng)實(shí)現(xiàn)對(duì)該圖書借閱者借閱記錄的級(jí)聯(lián)刪除。并且還應(yīng)具有生成催還圖書報(bào)表,并打印輸出的功能。
在本系統(tǒng)中由于沒有打印機(jī)設(shè)備供試驗(yàn),所以預(yù)先把報(bào)表打印改成報(bào)表預(yù)覽。
設(shè)計(jì)不同用戶的操作權(quán)限和登陸方法
對(duì)所有用戶開放的圖書查詢
借閱者維護(hù)借閱者個(gè)人部分信息
借閱者查看個(gè)人借閱情況信息
維護(hù)借閱者個(gè)人密碼
根據(jù)借閱情況對(duì)數(shù)據(jù)庫進(jìn)行操作并生成報(bào)表
根據(jù)還書情況對(duì)數(shù)據(jù)庫進(jìn)行操作并生成報(bào)表
查詢及統(tǒng)計(jì)各種信息
維護(hù)圖書信息
維護(hù)工作人員和管理員信息
維護(hù)借閱者信息
處理信息的完整性
對(duì)借閱過期的圖書生成報(bào)表
圖4-2圖書管理系統(tǒng)數(shù)據(jù)庫應(yīng)用需求的總結(jié)
根據(jù)以上所做的需求分析,并略掉一些細(xì)節(jié)(如不考慮用戶的登錄;對(duì)記錄的維護(hù)),得出以下的三層數(shù)據(jù)流圖。
§4.2系統(tǒng)功能模塊劃分
系統(tǒng)功能框圖如圖4-10所示。
§4.3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)
4.3.1概念設(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的限制。
利用ER方法進(jìn)行數(shù)據(jù)庫的概念設(shè)計(jì),可分成三步進(jìn)行:首先設(shè)計(jì)局部ER模式,然后把各局部ER模式綜合成一個(gè)全局模式,最后對(duì)全局ER模式進(jìn)行優(yōu)化,得到最終的模式,即概念模式。
(1)設(shè)計(jì)局部ER模式
實(shí)體和屬性的定義:
圖書(圖書編號(hào),圖書名稱,作者,出版社,出版日期,備注,價(jià)格,數(shù)量,)
借閱者(借書證號(hào),姓名,性別,身份證,聯(lián)系電話,密碼)
身份(身份編號(hào),身份描述,最大借閱數(shù))
圖書類別(圖書類別編號(hào),類別描述)
ER模型的“聯(lián)系”用于刻畫實(shí)體之間的關(guān)聯(lián)。一種完整的方式是對(duì)局部結(jié)構(gòu)中任意兩個(gè)實(shí)體類型,依據(jù)需求分析的結(jié)果,考察局部結(jié)構(gòu)中任意兩個(gè)實(shí)體類型之間是否存在聯(lián)系。若有聯(lián)系,進(jìn)一步確定是1:N,M:N,還是1:1等。還要考察一個(gè)實(shí)體類型內(nèi)部是否存在聯(lián)系,兩個(gè)實(shí)體類型之間是否存在聯(lián)系,多個(gè)實(shí)體類型之間是否存在聯(lián)系,等等。聯(lián)系定義如圖4-5所示。解釋如下:
u一個(gè)借閱者(用戶)只能具有一種身份,而一種身份可被多個(gè)借閱者所具有;
u一本圖書只能屬于一種圖書類別(類別),而一種圖書類別可以包含多本圖書;
u一個(gè)用戶可以借閱多本不同的書,而一本書也可以被多個(gè)不同的用戶所借閱。
(2)設(shè)計(jì)全局ER模式
所有局部ER模式都設(shè)計(jì)好了后,接下來就是把它們綜合成單一的全局概念結(jié)構(gòu)。全局概念結(jié)構(gòu)不僅要支持所有局部ER模式,而且必須合理地表示一個(gè)完整、一致的數(shù)據(jù)庫概念結(jié)構(gòu)。
1)確定公共實(shí)體類型
為了給多個(gè)局部ER模式的合并提供開始合并的基礎(chǔ),首先要確定各局部結(jié)構(gòu)中的公共實(shí)體類型。在這一步中我們僅根據(jù)實(shí)體類型名和鍵來認(rèn)定公共實(shí)體類型。一般把同名實(shí)體類型作為公共實(shí)體類型的一類候選,把具有相同鍵的實(shí)體類型作為公共實(shí)體類型的另一類候眩
2)局部ER模式的合并
合并的原則是:首先進(jìn)行兩兩合并;先和合并那些現(xiàn)實(shí)世界中有聯(lián)系的局部結(jié)構(gòu);合并從公共實(shí)體類型開始,最后再加入獨(dú)立的局部結(jié)構(gòu)。
3)消除沖突
沖突分為三類:屬性沖突、結(jié)構(gòu)沖突、命名沖突。
設(shè)計(jì)全局ER模式的目的不在于把若干局部ER模式形式上合并為一個(gè)ER模式,而在于消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概念模型。
3)全局ER模式的優(yōu)化
在得到全局ER模式后,為了提高數(shù)據(jù)庫系統(tǒng)的效率,還應(yīng)進(jìn)一步依據(jù)處理需求對(duì)ER模式進(jìn)行優(yōu)化。一個(gè)好的全局ER模式,除能準(zhǔn)確、全面地反映用戶功能需求外,還應(yīng)滿足下列條件:實(shí)體類型的個(gè)數(shù)要盡可能的少;實(shí)體類型所含屬性個(gè)數(shù)盡可能少;實(shí)體類型間聯(lián)系無冗余。
綜上所述,“圖書管理系統(tǒng)”的全局ER模式如圖4-13所示。
4.3.2關(guān)系數(shù)據(jù)庫的邏輯設(shè)計(jì)
由于概念設(shè)計(jì)的結(jié)果是ER圖,DBMS一般采用關(guān)系型(本人所使用的MSSQLServer就是關(guān)系型的DBMS),因此數(shù)據(jù)庫的邏輯設(shè)計(jì)過程就是把ER圖轉(zhuǎn)化為關(guān)系模式的過程。由于關(guān)系模型所具有的優(yōu)點(diǎn),邏輯設(shè)計(jì)可以充分運(yùn)用關(guān)系數(shù)據(jù)庫規(guī)范化理論,使設(shè)計(jì)過程形式化地進(jìn)行。設(shè)計(jì)結(jié)果是一組關(guān)系模式的定義。
(1)導(dǎo)出初始關(guān)系模式
book(圖書編號(hào)#,圖書名稱,圖書類別#,作者,出版社,出版日期,備注,價(jià)格,數(shù)量)class(圖書類別#,類別名)user(借書證號(hào)#,姓名,性別,身份編號(hào)#,身份證,聯(lián)系電話,密碼)ID(身份編號(hào)#,身份描述,最大借閱數(shù))Owner(借書證號(hào)#,圖書編號(hào)#,借書日期)
圖4-14關(guān)系模式集
(2)產(chǎn)生子模式
子模式是用戶所用到的那部分?jǐn)?shù)據(jù)的描述。除了指出用戶用到的數(shù)據(jù)外,還應(yīng)指出數(shù)據(jù)與概念模式中相應(yīng)數(shù)據(jù)的聯(lián)系,即指出概念模式與子模式之間的對(duì)應(yīng)性。
借書子模式(借書證號(hào)#,姓名,圖書編號(hào)#,圖書名稱,借書日期)
圖4-15部分子模式
(3)根據(jù)設(shè)計(jì)中出現(xiàn)的問題本人在寫系統(tǒng)時(shí)還加入了兩個(gè)關(guān)系模式:
1、ownertemp:用于工作人員在處理借書、還書工作時(shí)臨時(shí)存儲(chǔ)借書、還書信息,以便打印報(bào)表時(shí)使用。
2、keyer:用于存儲(chǔ)工作人員和圖書館管理員的用戶名和密碼及權(quán)限,以便工作人員或圖書館管理員進(jìn)入相應(yīng)的功能模塊時(shí)進(jìn)行驗(yàn)證用戶的身份。
4.3.3數(shù)據(jù)庫的實(shí)現(xiàn)
我選用MicrosoftSQLServer2000(企業(yè)版)數(shù)據(jù)庫來進(jìn)行數(shù)據(jù)庫的邏輯設(shè)計(jì)。首先創(chuàng)建七個(gè)基本數(shù)據(jù)庫表如表4-1-4-7所示,然后根據(jù)全局ER圖,建立各個(gè)表之間的聯(lián)系,如圖4-8所示。
表4-1借閱者基本信息表的結(jié)構(gòu)(User)
表4-2圖書信息表的結(jié)構(gòu)(Book)
表4-3圖書類別信息表的結(jié)構(gòu)(Class)
表4-4借閱者身份信息表的結(jié)構(gòu)(ID)
表4-5借閱情況信息表的結(jié)構(gòu)(Owner)
表4-6借閱情況臨時(shí)存儲(chǔ)信息表的結(jié)構(gòu)(Ownertemp)
注:在owner表和ownertemp表中加入了索引字段,用來唯一標(biāo)識(shí)一條借書記錄,并且設(shè)置為標(biāo)識(shí),標(biāo)識(shí)種子為1。
表4-7工作人員和管理員信息表的結(jié)構(gòu)(Keyer)
圖4-8數(shù)據(jù)庫表間聯(lián)系圖
第五章圖書管理系統(tǒng)應(yīng)用程序設(shè)計(jì)
§5.1系統(tǒng)窗體模塊組成
§5.2數(shù)據(jù)模塊窗體的設(shè)置
在編寫數(shù)據(jù)庫應(yīng)用程序時(shí),經(jīng)常要遇到這樣的情況,即好多組件、窗體同時(shí)訪問相同的數(shù)據(jù)源,如果為每一個(gè)組件或者窗體都設(shè)置一個(gè)數(shù)據(jù)源將是十分耗時(shí)的工件,而且要保證這些數(shù)據(jù)源的確是相同的也需花一番功夫。那么,能不能將這些數(shù)據(jù)源集中管理,最好是做成一個(gè)統(tǒng)一的模塊,需要時(shí)就將該模塊引入而不必直接操作數(shù)據(jù)源本身呢?數(shù)據(jù)模塊(DataModule)是解決這個(gè)問題最好的答案。簡(jiǎn)單說來,數(shù)據(jù)模塊是用來集中管理數(shù)據(jù)源的一個(gè)窗體,該窗體可被需要的地方隨時(shí)引入。
但本人在開發(fā)這個(gè)系統(tǒng)時(shí),開始使用了一下數(shù)據(jù)模塊,但在使用過程中卻碰到了一些問題。并且考慮這個(gè)系統(tǒng)使用到的TADOQuery控件比較多,如果使用數(shù)據(jù)控件可能會(huì)帶來管理上的麻煩,如弄混各個(gè)數(shù)據(jù)控件的作用。還考慮到使用動(dòng)態(tài)生成ADOQuery可能會(huì)更節(jié)省資源。所以在本人的系統(tǒng)中,開始做的第一個(gè)模塊“借閱者個(gè)人模塊”中還稍微使用了一下數(shù)據(jù)模塊。但在后面做的兩個(gè)模塊中大多都是用動(dòng)態(tài)生成ADOQuery來實(shí)現(xiàn)的。并且由于SQL語句是動(dòng)態(tài)加入的所以datamodule中的控件也不會(huì)多。
§5.3啟動(dòng)畫面的實(shí)現(xiàn)
啟動(dòng)畫面是為了給用戶一個(gè)良好的印像,加深軟件的親和力,沒有實(shí)際的功能,在Form1窗體中加入了Image和Time組件。啟動(dòng)畫面的窗體略,主要的源代碼如下:
§5.4用戶登錄窗體的的實(shí)現(xiàn)
本窗體是為三種不同的用戶(一般用戶,工作人員,管理員)提供選擇以進(jìn)入不同的模塊,滿足不同用戶的需求。源代碼比較簡(jiǎn)單,略。
§5.5用戶密碼認(rèn)證窗體的的實(shí)現(xiàn)
本窗體是為了讓工作人員或圖書館管理員按照用戶名和密碼進(jìn)行登錄,并且跟據(jù)用戶名檢查Keyer表中的“權(quán)限”字段,以分辯進(jìn)入圖書館管理人員模塊還是進(jìn)入工作人員模塊。窗體界面、源代碼如下
§5.6借閱者服務(wù)模塊的實(shí)現(xiàn)
借閱者服務(wù)窗體的功能主要是圖書的查詢,個(gè)人借閱情況查看及個(gè)人部分信息的修改。界面圖如下:
5.6.1圖書查詢功能的實(shí)現(xiàn)
在本系統(tǒng)中,任何人都有權(quán)限使用查詢功能,不做任何限制。界面如下,
由于實(shí)現(xiàn)的查詢功能有多種,如按圖書編號(hào)、圖書名稱等字段進(jìn)行完全體配查找和部分體配的模糊查找,還有按多個(gè)條件進(jìn)行邏輯與或是邏輯或的多條件查找。其中實(shí)現(xiàn)的方法者差不多,所以只給出多條件查找的代碼,如下:
5.6.2借閱者登錄功能的實(shí)現(xiàn)
這個(gè)功能的實(shí)現(xiàn)與工作人員和管理人員登錄功能實(shí)現(xiàn)的方法大致一樣,并且還要簡(jiǎn)單。是從User表中查到到借閱證號(hào)與密碼,看與用戶輸入的是否一致。如果一致,那么用戶就可查看自已的借閱情況并維護(hù)自己的部分信息。源代碼與借閱者登錄界面都略。
5.6.3借閱者借閱情況功能的實(shí)現(xiàn)
當(dāng)借閱者正確登錄到系統(tǒng)后,此功能將被激活,使用戶能查看到自身的借閱情況。在此系統(tǒng)中,信息的顯示一般用ListView來實(shí)現(xiàn),只在較少的情況下用到了DBgrid,因?yàn)槲矣X得ListView更好實(shí)現(xiàn),并能使信息數(shù)據(jù)對(duì)用戶的完全分離。
在這里跟據(jù)借閱者的不同要求實(shí)現(xiàn)借閱情況的查詢,有檢查所有的借閱情部、某本書的借閱情況、和根據(jù)已借閱天數(shù)的來查詢。其中根椐借閱天數(shù)來查詢更有代表性,有方式一和方式二。以下給出此功能的源代碼
按借閱天數(shù)查詢方式一
按借閱天數(shù)查詢方式二
5.6.4借閱者個(gè)人資料維護(hù)功能的實(shí)現(xiàn)
此功能實(shí)現(xiàn)當(dāng)前借閱者部份資料的修改,但借書證號(hào)和身份類別這樣的信息不允許修改,這是圖書館管理員模塊的功能。在此界面中點(diǎn)擊修改按鈕將出現(xiàn)“修改”窗體(Form8),點(diǎn)擊修改密碼按鈕將出現(xiàn)groupbox8,在這里進(jìn)行密碼修改。關(guān)鍵源代碼如下。
這里給出個(gè)人部分信息修改的源代碼:
這里給出密碼修改的源代碼:
5.7工作人員-圖書借閱/歸還模塊的實(shí)現(xiàn)
5.7.1工作人員進(jìn)行圖書借閱功能實(shí)現(xiàn)
在這個(gè)功能中,工作人員輸入借閱者的借閱證號(hào)和所要借閱的圖書的圖書編號(hào),然后點(diǎn)擊借閱按鈕就可進(jìn)行圖書借閱??紤]到實(shí)際中可能會(huì)出現(xiàn)只知圖書名而不知圖書編號(hào)的情況,在此界面下方加入了一個(gè)轉(zhuǎn)換功能,可以把圖書名稱轉(zhuǎn)換成圖書編號(hào),再進(jìn)行圖書借閱。
在借閱完成后會(huì)生借閱報(bào)表以便借閱者檢查和確認(rèn),借閱報(bào)表的打印效果如下圖,實(shí)現(xiàn)比較簡(jiǎn)單,略去實(shí)現(xiàn)過程。
5.7.2工作人員進(jìn)行圖書歸還功能實(shí)現(xiàn)
在此功能中,工作人員根據(jù)借閱者的借書證號(hào)和歸還的圖書編號(hào)進(jìn)行圖書的歸還工作。并且根據(jù)現(xiàn)實(shí)中可能會(huì)出現(xiàn)的只知圖書名不知圖書編號(hào)的歸還情況,所以加入了按書籍名稱進(jìn)行歸還的功能。這個(gè)功能是圖書借閱功能中把圖書名稱轉(zhuǎn)換成圖書編號(hào)的一種改進(jìn)方法,這樣就不用如借閱功能中一樣要先轉(zhuǎn)換再借閱了。歸還完成后,同樣會(huì)打印出歸還報(bào)表以便用戶檢查和確認(rèn)。
5.8圖書館管理員模塊的實(shí)現(xiàn)
5.8.1圖書館管理員圖書管理功能的實(shí)現(xiàn)
在這個(gè)功能中可以在(*圖書編號(hào))中輸入圖書編號(hào),點(diǎn)查找按鈕后就會(huì)在各個(gè)相應(yīng)的組件中顯示出信息,或按圖書名稱模糊查找到所要的記錄,在各個(gè)相應(yīng)的組件中顯示第一條記錄的信息,也可在下端的ListView組件中點(diǎn)擊某一條記錄,在各個(gè)相應(yīng)的組件中也會(huì)顯示所選記錄的信息。在入庫功能中只要不是相同的圖書編號(hào)并且?guī)В?hào)提示的字段不為空就可插入新的圖書記錄。刪除則刪除那些Book表中的圖書記錄,如果借出還可依用戶要求連帶刪除owner表中的記錄。因?yàn)閳D書修改與圖書入庫的功能與工作人員記錄修改和工作人員記錄添加的實(shí)現(xiàn)過程一樣,所以下面僅給出刪除功能的源代碼,如下
5.8.2圖書館管理員工作人員和管理員管理功能的實(shí)現(xiàn)
在此功能中可以加入工作人員或是管理員,或是修改他們的密碼、權(quán)限。
在此功能中如果選中ListView中的記錄,則在右邊相應(yīng)的組件中顯示出信息,并且管理員還可對(duì)這些記錄進(jìn)行修改或加入新的記錄。并且也可以點(diǎn)刪除按鈕刪除選中的一條或多條記錄。刪除功能與圖書記錄的刪除一般,所以下面只給出添加與修改的實(shí)現(xiàn)過程。
5.8.3圖書館管理員修改圖書類別及統(tǒng)記功能的實(shí)現(xiàn)
在此窗體中能對(duì)圖書的類別進(jìn)行刪除,添加和修改,這模塊的功能的實(shí)現(xiàn)過程與圖書記錄的刪除,添加和修改一樣的,但是這個(gè)窗體還能跟據(jù)圖書類別進(jìn)行統(tǒng)計(jì),還可根據(jù)Book表和owner表統(tǒng)計(jì)出圖書總數(shù)目,庫存圖書數(shù)目,借出圖書數(shù)目及借閱過期的圖書數(shù)目。在這里給出統(tǒng)計(jì)圖書總數(shù)目,庫存圖書數(shù)目,借出圖書數(shù)目及借閱過期的圖書數(shù)目的實(shí)現(xiàn)過程中的幾個(gè)函數(shù)和過程
5.8.4圖書館管理員借閱者管理功能的實(shí)現(xiàn)
查詢借閱者可根據(jù)借閱者的借書證號(hào)或姓名或身份編號(hào)查找到借閱者的信息,也可以實(shí)行模糊查找,這個(gè)功能的實(shí)現(xiàn)與前面圖書查找的實(shí)現(xiàn)過程一般,就不再詳細(xì)說明。
5.8.5圖書館維護(hù)借閱者管理功能的實(shí)現(xiàn)
此功能能對(duì)借閱者信息進(jìn)行查看添加、刪除、修改。在這里給出刷新按鈕的實(shí)現(xiàn)過程
5.8.6圖書館身份維護(hù)功能的實(shí)現(xiàn)
這一部分是對(duì)借閱者身份進(jìn)行管理,能對(duì)身份進(jìn)行添加、刪除、修改。并且同樣的在listview中選中某條或多條記錄時(shí)會(huì)在相應(yīng)的右邊的組件中顯示出信息。此功能實(shí)現(xiàn)過程與前面所敘有雷同,略。
5.8.7圖書館借閱者統(tǒng)計(jì)功能的實(shí)現(xiàn)
此功能按借閱者身份進(jìn)行統(tǒng)計(jì),得出具有某種身份的借閱者總數(shù),此種身份的并借閱圖書的借閱者數(shù)和所借閱的圖書數(shù),在下面給出實(shí)現(xiàn)過程。
5.8.8圖書館統(tǒng)計(jì)借閱過期記錄功能的實(shí)現(xiàn)
打印出的借閱過期催還報(bào)表如下圖所示:
此報(bào)表能顯示按借書證號(hào)升序排列的借閱信息超過限定時(shí)限的信息,其中主要的SQL語句如下:
5.9系統(tǒng)信息顯示的實(shí)現(xiàn)
顯過本系統(tǒng)的信息,并且右邊的字向上滾動(dòng)顯示,主要實(shí)現(xiàn)如下:
我有本書上的資料,拍成照片,你照著改成你要的就行了
留個(gè)郵箱吧,我發(fā)給你
數(shù)據(jù)庫的er圖。
圖書管理系統(tǒng)是典型的信息管理系統(tǒng),其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。
圖書館管理系統(tǒng)的功能目標(biāo)分成三塊:讀者信息管理,圖書信息管理,圖書流通管理,其中圖書流通管理下設(shè)兩個(gè)分功能,即圖書借閱和圖書歸還。
哥們啥意思。
基于你的問題圖書管理系統(tǒng),
我們可以為你提供一份適用于初學(xué)者的代碼,
如果你有更多的要求也可以告訴我們,
給我留一個(gè)你的問題和Email,
有時(shí)間可以幫你,肯定救急,
使用百度_Hi給我留言,
此回復(fù)針對(duì)所有來訪者和需求者有效,
ES:\\29573C9312D4B6A1F3F2BEF787679782
(全國(guó)總部)河南省鄭州市金水區(qū)博雅廣場(chǎng)4號(hào)樓1104
+18937133779
zboao@qq.com
中博奧技術(shù)有限公司& 版權(quán)所有
工信部備案號(hào):豫ICP備11015869號(hào)-8