小議DELPHI圖書管理信息制度論文
摘要:這篇論文主要講述關于圖書管理信息系統的信息。在本論文中講述的圖書管理信息系統擁有一個交互式的界面、邏輯的數據庫結構。許多涉及到圖書、圖書借閱者的信息的功能在本系統中都有實現。例如,你可以將新書的信息插入到數據庫的圖書基本情況表里;還可以對已經插入的關于圖書的信息進行修改;更重要的是,圖書借閱者可以從圖書館里借閱書籍。
關鍵詞:圖書、圖書借閱者、管理系統、Delphi7.0、SQLServer2000數據庫
一、前言
隨著人類社會的發展,人類對知識的需求也在不斷增長。雖然人們可以從互聯網上獲得知識,但書本閱讀起來更加方便,所以,在這種形勢下,書籍就漸漸地成為人們獲取并增長知識的主要途徑,而圖書館就理所當然的在人們的生活中占據了一定的位置,如何科學合理的管理圖書不僅關系到讀者求知的方便程度,也關系到圖書館的發展,面對龐大的信息量,就需要有圖書管理系統來提高圖書管理工作的效率。傳統手工的圖書管理,就是對圖書的編目、查詢及讀者信息的管理,核心是圖書的信息管理,包括圖書的采購、編目、下架、遺失等。圖書的管理是一個工作量大而且較為繁雜的工作,執行效率低并且易于出錯。通過開發這樣的系統,我們可以做到圖書規范管理和快速查詢,從而減少了管理方面的工作量;可以實現圖書管理的系統化和自動化,提高管理效率,降低管理成本。因此,開發一套完善的圖書管理系統,是必不可少的了。
本系統的開發不僅讓圖書合理規范的管理,同時也方便借閱者快速的查詢。對圖書信息進行圖書入庫、借閱登記、借閱查詢、過期提示等這些日常業務的管理。
(一)系統開發工具
本系統的開發工具是用面向對象的Delphi進行設計的。Delphi是著名的Borland公司開發的可視化軟件開發環境,是面向對象的可視化軟件開發平臺,它提供了大量VCL(可視化組件庫)組件,具有強大的數據庫開發和網絡編程能力,極大地提高了應用系統的開發速度,是目前最優秀的軟件開發工具之一。Delphi語言具有簡單、高效和功能強大等特點,具備豐富的環境、友好的界面、高速的編譯器、強大的數據庫支持,提供了方便、快捷的Windows應用程序開發工具。對于廣大的程序開發人員而言,使用Delphi開發應用軟件,無疑會大大提高編程效率。
Delphi最顯著的特點就是高效性和穩定性,主要體現在以下4個方面:
(1)可視化的開發環境的性能。
(2)編譯器的速度和已編譯代碼的效率。
(3)編程語言的功能及復雜性。
(4)豐富的VCL。
Delphi應用程序主要是圍繞著窗體和單元兩個部分進行,窗體(Form)是與用戶直接可見的對象,Delphi的應用程序由多個窗體(Form)組成,與之相對應的是單元,每個單元對應一個Form程序區段,包含事件處理程序、過程和函數。
(二)數據庫選擇
圖書管理信息系統是一個小型的數據庫系統。我選擇MicrosoftSQLServer2000數據庫進行開發。MicrosoftSQLServer是一種關系型數據庫管理系統,具有使用方便、學習簡單、易學易用、安全性高等特點。關系模型是當前最受歡迎的數據存儲和數據檢索模型。所有的數據處理都涉及存儲和檢索數據的操作,MicrosoftSQLServer是作為一個組織內部的全部數據的中心存儲器來設計的。組織中數據的關鍵特征強調了這一方法的重要性。MicrosoftSQLServer在其網絡組件的頂部添加了服務特有的中介組件:開放式數據庫連接(OpenDatabaseConnectivity,ODBC)能使不同客戶機進行相互連接,而不要求變更服務器及其他現存客戶應用程序。
二、數據庫應用系統開發基礎
在數據庫應用系統開發之前,對開發數據庫的基本概念應當了解,對數據庫的結構、開發數據庫應用程序的步驟、開發體系及方法都應當有相當清晰的了解和認識。數據庫應用系統開發的目標是建立一個滿足用戶長期需求的產品。開發的主要過程為:理解并分析用戶的需求,然后把它們轉變為有效的數據庫設計。把設計轉變為實際的數據庫,并且這些數據庫帶有功能完備、高效能的應用。
數據庫由DBMS(數據庫管理系統)處理,DBMS則由開發人員和用戶通過應用程序直接或間接地使用。它主要包括四個要素:用戶數據、元數據、索引和應用元數據。
(一)用戶數據
目前,大多數主流數據庫管理系統把用戶數據表示為關系。現在把關系看作數據表。表的列包含域或屬性,表的行包含對應業務環境中實體的記錄。并非所有的關系都同樣符合要求,有些關系比其它關系更結構化一些。
為了對比結構差的關系和結構好的關系之間的差別,以本圖書管理信息系統中的圖書和圖書借閱者關系為例來說明,假若設計關系R1(借書證號,姓名,性別,身份編號,身份證,聯系電話,圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數量);這個關系的問題出在它有關于兩個不同主題的數據,就是圖書借閱者和圖書。用這種方式構成的關系在進行修改時會出現問題。因為一個圖書借閱者可能借閱多本書,如果某個圖書借閱者的某個字段(如聯系電話)出現變更,它所借閱的圖書記錄(可能多個)也就必須變化,這是不好的。因此數據用兩個關系表示更好。現在如果某圖書借閱者改變了它的聯系電話,只有關系(表)user的對應行需要改變。當然要想產生一個顯示圖書名稱及其借閱者聯系電話的報表,就需要將這兩個表的行結合起來。結果表明將關系分別存儲,在生成報表的時候將它們結合起來,比把它們存儲在一個合成的表中更好。User和book表結構如下:
user(借書證號,姓名,性別,身份編號,身份證,聯系電話,)
book(圖書編號,圖書名稱,圖書類別,作者,出版社,出版日期,備注,價格,數量)
(二)元數據
數據庫是自描述的,這就意味著它自身包含了它的結構的描述,這種結構的描述稱作元數據。因為DBMS產品是用來存儲和操縱表的,所以大多數產品把元數據以表的形式存儲,有時稱作系統表。這些系統表存儲了數據庫中表的情況,指出每一個表中有多少列,那一列是主關鍵字,每一列的數據類型的描述,它也存儲索引、關鍵字、規則和數據庫結構的其他部分。
在表中存儲元數據不僅對DBMS是有效的,對用戶也是方便的,因為他們可以使用與查詢用戶數據同樣的查詢工具來查詢元數據。
(三)索引
第三種類型的數據改進了數據庫的性能和可訪問性,盡管有時也采用其他類型的數據結構,如鏈表,但主要還是索引。索引可以用來排序和快速訪問數據。下面以我所設計的圖書管理信息系統中的book表為例來說明。
假定數據在磁盤上是按“圖書編號”的遞增順序排列的,用戶想打印一個按“圖書名稱”排序的圖書數據報表。為此,所有的數據都需要從源表中提取出來并排序,除非表很小,否則這是一個很費時的過程。或者可以在“圖書名稱”字段上創建一個索引,該索引的條目按照“圖書名稱”排序,這樣該索引的條目可以讀出來,并用來按順序訪問book數據。
索引用于快速訪問數據。例如一個用戶只想訪問book表中‘圖書類別’值為“01”的那些圖書,如果沒有索引,則必須搜索整個源表;但有了索引之后,可以找到索引條目,并使用它來挑選所有合適的行。索引對排序和查找是有幫助的,但要付出代價。book表中的行每次改變時,索引也必須改變,這意味著索引并非隨意的,應該在真正需要時保存。
(四)應用元數據
存儲在數據庫中的第四種數據是應用元數據,它用來存儲用戶窗體、報表、查詢和其他形式的查詢組件。并非所有的DBMS都支持應用組件,支持組件的DBMS也不一定把全部組件的結構作為應用元數據存儲在數據庫中。然而大多數現代的DBMS產品存儲這種數據作為數據庫的一部分。一般來說,數據庫開發人員和用戶都不直接訪問應用元數據,想反,他們通過DBMS中的'工具來處理這些數據。
我所選用的MSSQLServer2000中就支持窗體、存儲過程等應用元數據。
三、圖書系統設計分析
(一)需求分析
圖書管理信息系統需要滿足來自三方面的需求,這三個方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個人借閱情況及個人信息的修改;圖書館工作人員對圖書借閱者的借閱及還書要求進行操作,同時形成借書或還書報表給借閱者查看確認;圖書館管理人員的功能最為復雜,包括對工作人員、圖書借閱者、圖書進行管理和維護,及系統狀態的查看、維護并生成催還圖書報表。
圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據本人借書證號和密碼登錄系統,還可以進行本人借書情況的查詢和維護部分個人信息,但是不能查詢和維護其他借閱者的借書情況和個人信息,這不但滿足了圖書借閱者的要求,還保護了圖書借閱者的個人隱私。
圖書館工作人員有修改圖書借閱者借書和還書記錄的權限,所以需對工作人員登陸本模塊進行更多的考慮。在此模塊中,圖書館工作人員可以為圖書借閱者加入借書記錄或還書記錄,并打印生成相應的報表給用戶查看和確認。
圖書館管理人員的功能信息量大,數據安全性和保密性要求高。本功能實現對圖書信息、借閱者信息、總體借閱情況信息的管理和統計、工作人員和管理人員信息查看及維護。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統計圖書的基本信息;瀏覽、查詢、統計、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統計圖書館的借閱信息,但不能添加、刪除和修改借閱信息,這部分功能應該由圖書館工作人員執行,但是刪除某條圖書借閱者基本信息記錄時,應實現對該圖書借閱者借閱記錄的級聯刪除。并且還應具有生成催還圖書報表,具有打印輸出的功能。
(二)系統數據庫的概念設計
在概念設計階段中,設計人員從用戶的角度看待數據及處理要求和約束,產生一個反映用戶觀點的概念模式。然后再把概念模式轉換成邏輯模式。將概念設計從設計過程中獨立開來,使各階段的任務相對單一化,設計復雜程度大大降低,不受特定DBMS的限制。
利用ER方法進行數據庫的概念設計,可分成三步進行:首先設計局部ER模式,然后把各局部ER模式綜合成一個全局模式,最后對全局ER模式進行優化,得到最終的模式,即概念模式。
1、設計局部ER模式
實體和屬性的定義:
圖書(圖書編號,圖書名稱,作者,出版社,出版日期,備注,價格,數量,)
借閱者(借書證號,姓名,性別,身份證,聯系電話,密碼)
身份(身份編號,身份描述,最大借閱數)
圖書類別(圖書類別編號,類別描述)
ER模型的“聯系”用于刻畫實體之間的關聯。一種完整的方式是對局部結構中任意兩個實體類型,依據需求分析的結果,考察局部結構中任意兩個實體類型之間是否存在聯系。若有聯系,進一步確定是1:N,M:N,還是1:1等。還要考察一個實體類型內部是否存在聯系,兩個實體類型之間是否存在聯系,多個實體類型之間是否存在聯系等等。分析如下:
1)一個借閱者(用戶)只能具有一種身份,而一種身份可被多個借閱者所具有;
2)一本圖書只能屬于一種圖書類別(類別),而一種圖書類別可以包含多本圖書;
3)一個用戶可以借閱多本不同的書,而一本書也可以被多個不同的用戶所借閱。
2、設計全局ER模式
所有局部ER模式都設計好了后,接下來就是把它們綜合成單一的全局概念結構。全局概念結構不僅要支持所有局部ER模式,而且必須合理地表示一個完整、一致的數據庫概念結構。
1)確定公共實體類型
為了給多個局部ER模式的合并提供開始合并的基礎,首先要確定各局部結構中的公共實體類型。在這一步中我們僅根據實體類型名和鍵來認定公共實體類型。一般把同名實體類型作為公共實體類型的一類候選,把具有相同鍵的實體類型作為公共實體類型的另一類候選。
2)局部ER模式的合并
合并的原則是:首先進行兩兩合并;先和合并那些現實世界中有聯系的局部結構;合并從公共實體類型開始,最后再加入獨立的局部結構。
3)消除沖突
沖突分為三類:屬性沖突、結構沖突、命名沖突。設計全局ER模式的目的不在于把若干局部ER模式形式上合并為一個ER模式,而在于消除沖突使之成為能夠被所有用戶共同理解和接受的同一概念模型。
3、全局ER模式的優化
在得到全局ER模式后,為了提高數據庫系統的效率,還應進一步依據處理需求對ER模式進行優化。一個好的全局ER模式,除能準確、全面地反映用戶功能需求外,還應滿足下列條件:實體類型的個數要盡可能的少;實體類型所含屬性個數盡可能少;實體類型間聯系無冗余。
(三)系統數據庫的邏輯設計
由于概念設計的結果是ER圖,DBMS一般采用關系型(MSSQLServer就是關系型的DBMS),因此數據庫的邏輯設計過程就是把ER圖轉化為關系模式的過程。由于關系模型所具有的優點,邏輯設計可以充分運用關系數據庫規范化理論,使設計過程形式化地進行。設計結果是一組關系模式的定義。
1、導出初始關系模式
book(圖書編號#,圖書名稱,圖書類別#,作者,出版社,出版日期,備注,價格,數量)class(圖書類別#,類別名)user(借書證號#,姓名,性別,身份編號#,身份證,聯系電話,密碼)ID(身份編號#,身份描述,最大借閱數)Owner(借書證號#,圖書編號#,借書日期)
2、產生子模式
子模式是用戶所用到的那部分數據的描述。除了指出用戶用到的數據外,還應指出數據與概念模式中相應數據的聯系,即指出概念模式與子模式之間的對應性。
借書子模式(借書證號#,姓名,圖書編號#,圖書名稱,借書日期)
3、特別的兩個關系模式:
ownertemp:用于工作人員在處理借書、還書工作時臨時存儲借書、還書信息以便打印報表時使用。
keyer:用于存儲工作人員和圖書館管理員的用戶名和密碼及權限,以便工作人員或圖書館管理員進入相應的功能模塊時進行驗證用戶的身份。
(四)系統數據庫的物理實現
我選用MicrosoftSQLServer2000數據庫來進行數據庫的物理實現。
四、圖書系統應用程序設計
程序的結構設計如圖所示,該程序由11個窗體組成,它們是數據模塊窗體,用戶登錄窗口的窗體,圖書館管理系統界面窗體,修改圖書記錄的窗體,修改供閱者記錄的窗體,修改密碼設置的窗體,生成預約圖書報表的窗體,生成催還圖書報表的窗體,圖書館服務系統界面窗體,查詢、借閱、預約圖書的窗體以及查詢個人借閱信息和歸還已借閱圖書的窗體。
(一)系統窗體模塊
(二)數據模塊窗體的設置
在編寫數據庫應用程序時,經常要遇到這樣的情況,即好多組件、窗體同時訪問相同的數據源,如果為每一個組件或者窗體都設置一個數據源將是十分耗時的工作,而且要保證這些數據源的確是相同的也需花一番功夫。那么能不能將這些數據源集中管理,最好是做成一個統一的模塊,需要時就將該模塊引入而不必直接操作數據源本身呢?數據模塊(DataModule)是解決這個問題最好的答案。簡單說來,數據模塊是用來集中管理數據源的一個窗體,該窗體可被需要的地方隨時引入。
但在開發這個系統時,在開始使用數據模塊過程中卻碰到了一些問題。并且考慮這個系統使用到的TADOQuery控件比較多,如果使用數據控件可能會帶來管理上的麻煩,如弄混各個數據控件的作用。還考慮到使用動態生成ADOQuery可能會更節省資源。所以在本系統中,開始做的第一個模塊“借閱者個人模塊”中還使用了數據模塊。但在后面做的兩個模塊中大多都是用動態生成ADOQuery來實現的。并且由于SQL語句是動態加入的所以datamodule中的控件也不會多。
(三)啟動畫面的實現
啟動畫面是為了給用戶一個良好的印像,加深軟件的親和力,在Form1窗體中加入了Image和Time組件。
(四)用戶登錄窗體的實現
本窗體是為三種不同的用戶(圖書借閱者、圖書館工作人員和圖書館管理人員)提供選擇以進入不同的模塊,滿足不同用戶的需求。
(五)用戶密碼論證窗體的實現
本窗體是為了讓工作人員或圖書館管理員按照用戶名和密碼進行登錄,并且跟據用戶名檢查Keyer表中的“權限”字段,以分辯進入圖書館管理人員模塊還是進入工作人員模塊。
以下為不同用戶功能模塊的實現。
(六)供閱者服務模塊的實現
借閱者服務窗體的功能主要是圖書的查詢,個人借閱情況查看及個人部分信息的修改。
1、圖書查詢功能的實現
在系統中任何人都有權限使用查詢功能,不做任何限制。由于實現的查詢功能有多種,如按圖書編號、圖書名稱等字段進行完全體配查找和部分體配的模糊查找,還有按多個條件進行邏輯與或是邏輯或的多條件查找。
2、供閱者登錄功能的實現
這個功能的實現與工作人員和管理人員登錄功能實現的方法大致一樣,是從User表中查到到借閱證號與密碼,看與用戶輸入的是否一致。如果一致用戶就可查看自已的借閱情況并維護自己的部分信息。
3、借閱者借閱情況功能的實現
當借閱者正確登錄到系統后,用戶能查看到自已的借閱情況。在此系統中,信息的顯示一般用ListView來實現,只在較少的情況下用到了DBgrid,因為ListView更好實現,并能使信息數據對用戶的完全分離。
借閱者對借閱情況的查詢有多種方式,但主要是根椐借閱天數來查詢。
4、供閱者個人資料維護功能的實現
此功能實現當前借閱者部份資料的修改,但借書證號和身份類別這樣的信息不允許修改,這是圖書館管理員模塊的功能。在此界面中點擊修改按鈕將出現“修改”窗體(Form),點擊修改密碼按鈕將出現groupbox8進行密碼修改。
(七)工作人員――圖書借閱/歸還模塊的實現
1、工作人員進行圖書借閱功能的實現
在此功能中,工作人員輸入借閱者的借閱證號和所要借閱圖書的圖書編號,然后點擊借閱按鈕就可進行圖書借閱。考慮到實際中可能會出現只知圖書名而不知圖書編號的情況,在此界面下方加入了一個搜索轉換功能,可以把圖書名稱轉換成圖書編號,再進行圖書借閱。
在借閱完成后會生借閱報表以便借閱者檢查和確認,實現過程比較簡單。
2、工作人員圖書歸還功能的實現
在此功能中,工作人員根據借閱者的借書證號和歸還的圖書編號進行圖書的歸還工作。并且根據現實中可能會出現的只知圖書名不知圖書編號的歸還情況,所以加入了按書籍名稱進行歸還的功能。這個功能是圖書借閱功能中把圖書名稱搜索轉換成圖書編號的一種改進方法。歸還完成后,同樣會打印出歸還報表以便用戶檢查和確認。
(八)圖書館管理員模塊和管理員圖書管理功能的實現
在這個功能模塊中可以在(圖書編號)中輸入圖書編號,點查找按鈕后就會在各個相應的組件中顯示出信息,或按圖書名稱模糊查找到所要的記錄,在各個相應的組件中顯示第一條記錄的信息,也可在下端的ListView組件中點擊某一條記錄,在各個相應的組件中也會顯示所選記錄的信息。在入庫功能中只要不是相同的圖書編號并且帶*號提示的字段不為空就可插入新的圖書記錄。刪除則刪除那些Book表中的圖書記錄,如果借出還可依用戶要求連帶刪除owner表中的記錄。因為圖書修改與圖書入庫的功能與工作人員記錄修改和工作人員記錄添加的實現過程一樣。
1、圖書館管理員管理功能的實現
在此功能中可以加入工作人員或是管理員,或是修改他們的密碼、權限。
如果選中ListView中的記錄,則在右邊相應的組件中顯示出信息,并且管理員還可對這些記錄進行修改或加入新的記錄。也可以點刪除按鈕刪除選中的一條或多條記錄。刪除功能與圖書記錄的刪除一般。
2、圖書館管理員修改圖書類別及統計功能的實現
在此窗體中能對圖書的類別進行刪除,添加和修改,此模塊功能的實現過程與圖書記錄的刪除,添加和修改一樣的,但是這個窗體還能跟據圖書類別進行統計,還可根據Book表和owner表統計出圖書總數目,庫存圖書數目,借出圖書數目及借閱過期的圖書數目。
3、圖書館管理員借閱者管理功能的實現
查詢借閱者可根據借閱者的借書證號或姓名或身份編號查找到借閱者的信息,也可以實行模糊查找,這個功能的實現與前面圖書查找的實現過程一樣。
4、圖書館維護借閱者管理功能的實現
此功能能對借閱者信息進行查看添加、刪除、修改。
5、圖書館身份維護功能的實現
這一部分是對借閱者身份進行管理,能對身份進行添加、刪除、修改。并且同樣的在listview中選中某條或多條記錄時會在相應的右邊的組件中顯示出信息。
6、圖書館借閱者統計功能的實現
此功能按借閱者身份進行統計,得出具有某種身份的借閱者總數。
7、圖書館統計借閱過期記錄功能的實現
此報表能顯示按借書證號升序排列的借閱信息超過限定時限的信息。
五、結論
通過本次畢業設計我學到了不少新的東西。在開發的過程中,很多看起來簡單的問題實際動手起來卻不是那么回事,往往有這樣或那樣的錯誤,需要我一步一步地去解決,我查閱了大量的資料,向老師請教,學到了不少課本上學不到的知識,也發現了大量的問題,有些在設計過程中已經解決,有些還有待今后慢慢學習。
最后,向在此次畢業設計寫作過程中給與我幫助的指導教師表示感謝,也感謝她給予我的這次機會,謝謝!
參考文獻:
[1]李炎清編著,畢業論文寫作與范例[M],廈門大學出版社,2007
[2]韓強編著,SQLSERVER2000程序員手冊,機械工業出版社,2000
[3]蔡宏編著,開發技術原理與實踐教程,電子工業出版社,2007
[4]薩師煊、王珊編著,數據庫系統概論,高等教育出版社,2000
[5]楊長春主編,DELPHI程序設計教程,清華大學出版社,2008
[6]李之明,高玉編著,Delphi7.0組件經典解析,中國鐵道出版社,2003
【小議DELPHI圖書管理信息制度論文】相關文章:
圖書管理信息化論文04-06
小議班級信息化管理12-05
小議社區圖書館室的建設論文05-11
怎樣做好圖書信息管理的論文01-14
小議醫院的績效管理流程論文12-02
小議信息技術對林業發展的作用論文02-09
小議醫院檢驗信息系統的設計論文04-20
淺談現代圖書館圖書信息管理優化策略的論文01-13
圖書館信息管理發展思路論文10-25