計算機本科生畢業(yè)論文---基于cs的圖書管理系統的設計與開發(fā)_第1頁
已閱讀1頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  基于C/S的圖書管理系統的設計與開發(fā)</p><p><b>  摘 要</b></p><p>  基于C/S的圖書管理系統的設計與開發(fā)摘要內容</p><p>  關鍵詞:圖書管理 管理信息系統 PowerBuilder</p><p>  本文介紹在PowerBuider環(huán)境下設計的一個

2、小型圖書管理系統。通過分析傳統的人工管理圖書館的不足,創(chuàng)建了一套行之有效的計算機管理圖書館的方案。文章詳細介紹圖書管理信息系統的系統分析部分,包括可行性分析、數據流程分析、數據字典等等;系統設計部分主要介紹系統功能設計;系統實現部分列出幾個主要的程序框圖,并附帶了一些主要的窗口和程序。</p><p>  本系統主要是對圖書的增減以及圖書借出歸還的管理,主要包括數據插入、刪除、查詢、掛失等功能。圖書管理信息系統能

3、夠有效、準確地完成這些功能,并達到界面友好、使用方便。</p><p><b>  目 錄</b></p><p><b>  一系統分析</b></p><p>  1.1系統初步調查………………………………………………………1</p><p>  1.2系統可行性研究…………………………………

4、………………1</p><p>  1.3 現行系統詳細調查………………………………………………2</p><p>  1.4系統邏輯模型………………………………………………………2</p><p><b>  二系統設計</b></p><p>  2.1總體設計……………………………………………………………3<

5、/p><p>  2.2系統總體物理結構…………………………………………………4</p><p>  2.3軟件開發(fā)平臺………………………………………………………5</p><p><b>  三系統詳細設計</b></p><p>  3.1 用戶界面設計……………………………………………………6</p>&

6、lt;p>  3.2 數據庫設計………………………………………………………6</p><p><b>  四系統實施</b></p><p>  4.1建立應用對象……………………………………………………10</p><p>  4.2登錄窗口…………………………………………………………12</p><p>  4

7、.3創(chuàng)建主窗口………………………………………………………13</p><p>  4.4借還圖書窗口……………………………………………………14</p><p>  4.5圖書檢索窗口……………………………………………………18</p><p>  五結論………………………………………………………………20</p><p>  參考文獻………

8、……………………………………………………………20</p><p>  附錄…………………………………………………………………23</p><p><b>  引 言</b></p><p>  圖書管理工作是學校管理工作的重要組成部分,圖書種類的增加以及學生借還的管理都給以往手工圖書管理提出了挑戰(zhàn)。以前學校的圖書管理一直采用手工的方法,這種

9、管理方式存在著許多缺點,如:效率低、工作量大、容易遺漏信息等。隨著計算機技術的發(fā)展,其強大的功能已為人們深刻認識,所以借此機會為我校的圖書管理設計一個比較符合我校情況的圖書管理系統。</p><p>  作為計算機應用的一部分,使用計算機對圖書進行管理,具有比手工管理無法比擬的優(yōu)點。例如:查詢方便、借還圖書效率提高、存儲量大、壽命長、可靠性高等。這些優(yōu)點能夠大大地提高圖書管理效率和質量,減少工作量,是學校為老師和

10、學生提供方便的必要條件,也是一個學校步入正規(guī)的標志。</p><p>  圖書管理工作主要是對圖書的增減以及圖書借出歸還的管理,主要包括數據插入、刪除、查詢、掛失等功能。圖書管理信息系統能夠有效、準確地完成這些功能,并達到界面友好、使用方便。所以,開發(fā)一種圖書管理軟件成為很有必要的事情。</p><p>  圖書館管理系統是典型的信息管理系統,其開發(fā)主要包括后臺數據庫的建立和維護以及前端的

11、應用程序的開發(fā)兩個方面。對于前者要求建立數據的一致性和完整性,對于后者則要求應用程序功能的完備,易用等的特點?;谏鲜隹紤]本系統主要利用PowerBuilder 9.0作前端的應用開發(fā)工具 ,利用Sybase SQL Anywhere8.0作為后臺的數據庫,利用WINDOWS作為系統平臺開發(fā)的圖書管理系統。</p><p><b>  一系統分析</b></p><p&g

12、t;<b>  1.1系統初步調查</b></p><p>  通過現場觀察、與單位相關人員面談和查閱相關文獻資料等方法進行了詳盡而完備的調查工作,發(fā)現采用手工管理圖書借閱登記效率低、工作量大、容易出錯、信息存儲時間短等問題。而現在計算機的廣泛使用能夠順利替代手工,使管理更為方便、實用。通過調查得出如下結論:即本系統的開發(fā)不僅是完全必要得的,而且在技術上也是完全有可能的。</p>

13、<p>  1.2系統可行性研究</p><p>  圖書管理信息系統的目標是:按照管理信息系統的原理和方法,采用信息技術和手段,支持圖書管理工作的過程,使學校的圖書管理工作系統化、規(guī)范化、自動化,從而達到提高學校圖書管理效率的目的,提高圖書管理工作的現代化水平。</p><p>  系統開發(fā)的總體任務是實現學校圖書管理的系統化、規(guī)范化和自動化。</p><

14、;p>  1.3 現行系統詳細調查</p><p>  對現行管理水平進行詳細調查研究是了解系統需求和進行系統分析與設計的重要基礎工作,因此要對學校圖書管理的各項管理工作進行全面、細致而充分的調查研究。</p><p><b>  1.4系統邏輯模型</b></p><p>  系統分析的主要成果是系統的邏輯模型,本系統的邏輯模型主要是以

15、系統的數據流圖和數據詞典為主要描述工具,在對圖書管理方式和業(yè)務流程進行認真分析和研究的基礎上,完全從業(yè)務管理和管理對象出發(fā),按信息系統中應有的數據流和數據結構來勾畫系統的概貌。</p><p>  1.4.1 數據流圖</p><p>  數據流圖是在對系統調研階段繪制的業(yè)務流程圖進行分析的基礎上,從系統的科學性,管理的合理性、實際運行的可行性角度出發(fā),將信息處理功能和彼此之間的聯系自頂向

16、下、從左到右、逐層分解,從邏輯上精確地描述系統應具有的數據輸入、數據輸出、存儲及數據來源和去向(外部項)。</p><p>  圖2-1圖書管理系統數據流圖</p><p>  數據流圖由4種成分組成:</p><p>  1、外部項(外部實體):外部項在數據中表示所描述系統的數據來源和去處的各種實體或工作環(huán)節(jié)。這些實體或環(huán)節(jié)向開發(fā)的系統發(fā)出或接收信息。系統開發(fā)不能

17、改變這些外部項本身的結構和固有屬性。</p><p>  2、數據加工:又稱數據邏輯,描述系統對信息進行處理的邏輯功能。在數據流圖上這種邏輯功能由一個或一個以上的輸入數據流轉換成一個或一個以上輸出數據流來表示。</p><p>  3、數據存儲:邏輯意義上的數據存儲環(huán)節(jié),即系統信息處理功能需要的、不考慮存儲物理介質和技術手段的數據存儲環(huán)節(jié)。</p><p>  4、

18、數據流:與所描述系統信息處理功能有關的各類信息的載體,是各加工環(huán)節(jié)進行處理和輸出的數據集合。在數據流圖中數據流用箭線表示,箭頭指處表示數據流的輸送處,箭尾連接處表示數據流的來源。</p><p>  1.4.2 數據詞典</p><p>  數據詞典是數據邏輯模型的重要組成部分。數據詞典應對數據流圖中的數據存儲、數據流、加工、外部項和數據項進行進一步的描述。</p><

19、p>  1、操作員信息。包括的數據項有編號、用戶名、密碼。</p><p>  2、會員信息。包括的數據項有會員編號、會員姓名、性別、年級、班級、家庭住址、是否鎖定。</p><p>  3、借書還書信息。包括的數據項有會員編號、圖書編號、借書日期、還書日期、備注等</p><p>  4、圖書信息。包括的數據項有圖書編號、書名、作者、出版社、出版日期、圖書價

20、格。</p><p>  由以上的分析可知該圖書管理系統從技術、經濟、時間都能夠滿足要求,系統開發(fā)切實可行。</p><p><b>  二系統設計</b></p><p><b>  2.1總體設計</b></p><p>  總體結構設計主要包括運行模式選擇、操作系統選擇、數據庫管理系統選擇、系

21、統功能結構設計等。</p><p>  運行模式選擇單機模式。</p><p>  開發(fā)工具選擇PowerBuilder9.0。</p><p>  數據庫管理系統(DBMS)選擇PowerBuilder自帶的Sybase SQL Anywhere8.0.</p><p>  2.1.1系統功能設計</p><p> 

22、 本系統開發(fā)的總體任務是實現圖書管理的簡單化、準確化、效率化。</p><p>  根據需求分析,圖書管理工作主要是針對借書人的管理和圖書的借、還、查找及庫存管理等。圖書管理系統需要完成的功能主要有:</p><p>  增加會員,包括編號、姓名、性別等</p><p><b>  會員卡掛失</b></p><p>&

23、lt;b>  會員卡的打印</b></p><p><b>  會員信息的輸出</b></p><p>  圖書入庫,包括圖書編號、書名、作者、出版社、定價等</p><p><b>  圖書查詢</b></p><p><b>  借書</b></p&

24、gt;<p><b>  還書</b></p><p>  2.1.2系統模塊設計</p><p>  對上述各項功能進行集中、分塊,按照結構化程序設計的要示,得到如圖所示的系統功能模塊圖: </p><p>  圖3-1系統模塊設計圖</p><p>  2.2 系統總體物理結構</p>

25、;<p>  從實際出發(fā),本系統最好利用計算機局部網絡作為系統的基本物理結構,這樣有利于以后圖書管理信息系統的開發(fā)。但是,從目前情況來看,由于本系統只涉及圖書管理信息,所以采用單機結構作為本系統的基本物理結構。其基本配置如下:</p><p>  硬盤:80GB以上 內存:256MB</p><p>  顯示器:SVGA 800×600 &l

26、t;/p><p>  打印機: EPSON-1600K(可選其它型號)</p><p>  操作系統:Windows2000/XP。</p><p>  軟件環(huán)境:PowerBuilder 9.0</p><p>  數據庫管理系統(DBMS)選擇了PowerBuilder自帶的SQL Anywhere 8.0</p><p&

27、gt;  2.3 軟件開發(fā)平臺</p><p>  隨著社會經濟的不斷發(fā)展以及計算機技術的日益完善,人們對各種軟件的需求也不斷提高,這就要求開發(fā)者可以提供功能更強、質量更高的軟件產品。為此幫助人們開發(fā)軟件的工具即軟件開發(fā)工具就由此應運而生。軟件開發(fā)工具的基本思想是致力于軟件開發(fā)的優(yōu)質與高效,是可以對軟件的開發(fā)全過程提供不同程度的支持與幫助。PowerBuilder就是其中一種應用較廣的軟件開發(fā)工具。</p&

28、gt;<p>  PowerBuilder(簡稱PB)是美國著名的數據庫應用開發(fā)工具生產廠商PowerSoft于1991年推出的成功產品。它是完全按照客戶/服務器(C/S)體系結構研制設計的,采用面向對象和可視化技術,提供有圖形化的應用開發(fā)環(huán)境,使得用戶使用PowerBuilder可以方便地開發(fā)基于后臺服務器中的數據庫應用系統。作為一種優(yōu)秀的開發(fā)工具,PowerBuilder具有以下功能和特點:</p>&l

29、t;p> ?。?)支持多種環(huán)境與跨平臺開發(fā) </p><p>  PB是專門用來設計、建立高性能的基于客戶/服務器(C/S)體系結構的應用程序,同時支持分布式計算和Web環(huán)境。另外PB還支持跨平臺的開發(fā)和分布。例如:在Windows下開發(fā)的應用程序可以分布到UNIX或其他平臺上運行。開發(fā)人員也可以組成開發(fā)小組,一些人員在Windows下開發(fā),同時另一些人員在UNIX進行另外一部分的開發(fā),并且他們可共享PB應

30、用程序中的對象。這樣程序不但有很好的移植性,使用環(huán)境廣,而且同時開發(fā),縮短了開發(fā)時間,節(jié)約了開發(fā)成本。</p><p> ?。?)功能強大的編程語言與函數</p><p>  PowerScript是PB的功能很強的第四代編程語言,用PowerScript語言編寫的程序通常稱為腳本(Script)。腳本往往是由PowerScript命令、函數和相應某一事件所要完成的處理過程的語言所組成。它

31、能使開發(fā)人員很容易地將簡單或復雜的事物邏輯與應用相配合。它有幾百個函數用以對操作對象、數字、文本和日期等信息,并且全面支持DDE和全文本I/O。</p><p>  (3)面向對象的編程</p><p>  在PB中創(chuàng)建的每一個菜單或窗口都是一個自含的模塊,稱為對象(Object)。PB應用程序基本的構建塊是用戶所創(chuàng)建的對象,每個對象都具有一些特定的特性和行為(屬性、事件、功能)。利用面向

32、對象的編程技術,可使程序具有可重用性、可擴展性和強有力的功能。面向對象的編程技術還可以使開發(fā)人員無需精通專用語言即可進行開發(fā)。PB應用由一系列對象組成,如窗口、菜單等。而對象又包含若干控件,如命令按鈕等。這些對象和控件都可以在許多應用中重復使用。因此,提高了編程效率和軟件質量,又極大地減少了開發(fā)時間。</p><p> ?。?)開放的數據庫連接系統</p><p>  PB最優(yōu)秀的開放系統

33、功能就是可以訪問任何一個常用的后臺數據庫系統。在應用程序開發(fā)時,開發(fā)人員不需要了解數據庫內部的細節(jié),PB提供了一個通用的前端用戶界面,后端數據庫的連接由PB來完成。對于大型數據庫系統,PB通過使用PowerSoft提供的專用接口直接與數據庫相連;對于小型數據庫系統,PB通過使用PowerSoft的ODBC接口與數據庫相連。另外,開發(fā)人員還可以利用PB內置的高性能數據庫引擎――Sybase SQL Anywhere,生成獨立應用或脫離服務

34、器在單機環(huán)境下運行。</p><p> ?。?)強大的調試和測試功能</p><p>  由于PB具有強大的編譯能力以及集成調試和測試功能,因此在開發(fā)時可以利用斷點跟蹤、單步調試等方法對應用程序進行查看、調試并根據需要進行程序修改。</p><p>  PB9.0是PowerSoft公司推出的又一版本,它除了繼承PB以上功能與特點外,還對原有性能進行了改進、優(yōu)化與增

35、強,從而使在用PB進行開發(fā)時工作更快、成本更低、質量更高、功能更強?;赑B的以上優(yōu)點,故在本系統采用PB9.0作為開發(fā)系統的軟件工具。</p><p><b>  三系統詳細設計</b></p><p>  3.1 用戶界面設計</p><p>  用戶運行該系統時,首先出現一個登錄窗口,提示用戶輸入用戶名和密碼,輸入正確進入系統主窗口。在主

36、窗口中主要是通過菜單進行操作,進而打開具體功能的窗口界面。本系統采用了基于菜單、工具按鈕、簡單回答等友好的手段及人機交互方式,使得操作方便,易于掌握。窗口示例見后面的系統實施部分。</p><p><b>  3.2 數據庫設計</b></p><p>  數據庫設計分為:數據庫概念設計和數據庫邏輯設計</p><p>  3.2.1數據庫概念

37、模型及E-R圖設計</p><p>  概念模型作為現實世界到機器世界的一個過渡性的中間層次,是對現實世界的抽象和概括。</p><p>  E-R圖是描述數據實體及其關系的一種直觀的描述工具,E-R圖的信息借助實體、屬性、聯系這三個基本概念表達。</p><p>  實體。用方框表示,方框內為實體的名稱。</p><p>  實體的各種屬性

38、。用橢圓表示,橢圓內為屬性名稱。使用線段將其和相應的實體連接起來。</p><p>  實體之間的聯系。用菱形表示,菱形內為聯系的名稱。</p><p>  在本系統中,我們把會員信息設為會員實體(見圖4-1), 圖書信息設為圖書實體(見圖4-2),借書還書信息設為借書還書實體(見圖4-3),操作員信息設為操作員實體(見圖4-4),各個實體之間的聯系(見圖4-5)。</p>

39、<p>  圖4-1 會員實體E-R圖</p><p>  圖4-2圖書實體E-R圖</p><p>  圖4-3借書還書實體E-R圖</p><p>  圖4-4操作員實體E-R圖</p><p>  圖4-5 實體之間E-R圖</p><p>  3.2.2數據庫邏輯結構設計</p><

40、;p>  根據E-R圖到關系模式的轉換規(guī)則,實體分別轉換成關系模式,如下圖(4-1至4-3)。 </p><p>  另外,為了保證系統的安全性,只有合法用戶才能登錄使用系統,為方便系統管理員對用戶的管理,需要設一表來存放合法用戶的用戶名、密碼等信息,如表4-4所示。 </p><p><b>  表4-1會員表</b></p><p>

41、<b>  表4-2圖書表</b></p><p><b>  表4-3借書還書表</b></p><p><b>  表4-4操作員表</b></p><p><b>  四系統實施.</b></p><p>  每個PowerBuilder應用程序都須

42、有一個、而且只能有一個應用程序對象,也可以說,應用程序對象代表了應用程序,程序從應用程序對象開始運行。除了作為應用程序的入口這一功能外,應用程序對象還定義了應用程序的系統級行為,例如,應用程序使用哪些應用庫(一種PowerBuilder定義的特殊格式的文件)來保存用到的各種對象、對象的默認字體、應用程序圖標等。</p><p>  PowerBuilder是面向對象的開發(fā)環(huán)境,用它開發(fā)的應用程序以對象和事件驅動為

43、基本特征。作為PowerBuilder的對象之一,應用程序對象也有一組事件,當用戶運行應用程序時,首先觸發(fā)應用程序對象的open事件,在這個事件的事件處理程序中可以設置應用的初始狀態(tài),裝入其對象、連接數據庫等。當用戶終止應用程序時,應用程序對象的close事件被觸發(fā),在這個事件的事件處理程序中完成必要的系統清理工作,例如斷開與數據庫的連接,清除用戶自定義對象等。當程序運行過程中發(fā)生嚴重錯誤時,應用程序對象的SystemError事件被觸

44、發(fā),這時可以報告錯誤類型和性質,以便及時排除錯誤。由此可見,應用程序對象對開發(fā)完美的PowerBuilder的應用程序至關重要。</p><p><b>  語言與函數</b></p><p>  用PowerScript語言編寫的程序通常稱為腳本(Script)。腳本是由PowerScriptT命令、函數和相應某一事件所要完成的處理過程的語句所組成。它能使開發(fā)人員很

45、容易地將簡單工作復雜的事務邏輯與應用相匹配。它有幾百個函數用于操作對象、數字、文字和日期等信息并全面支持DDE和全文本的I/O。</p><p>  例如為某個按鈕上的Clicked事件編寫的腳本可能進行的處理是從數據庫中檢索和顯示數據。</p><p>  事件本身也可以觸發(fā)其它事件,例如當一個按鈕上的Clicked事件要打開一個窗口時就觸發(fā)了一個窗口上的Open事件。</p>

46、;<p>  此外,用戶還可以定義自己的函數在應用程序中來執(zhí)行某種特定的處理過程。外部函數可以在PowerBuilder內說明和訪問,就如同內置的PowerBuilder的應用函數一樣。</p><p><b>  面向對象的編程</b></p><p>  PowerBuilder應用由一系列對象組成,包括有函數、菜單、結構和數據窗口、用戶對象、用戶事

47、件等,對象中又包含若干控件如命令按鈕、單行編輯器等這些對象和控件都可在許多應用中重復使用。</p><p><b>  4.1建立應用對象</b></p><p>  建立一個為book的應用對象,在其Open事件中加入如下腳本:</p><p>  // 設置數據庫連接參數</p><p>  SQLCA.DBMS =

48、 "ODBC"</p><p>  SQLCA.AutoCommit = False</p><p>  SQLCA.DBParm = "ConnectString='DSN=booksys;UID=dba;PWD=sql'"</p><p><b>  //連接數據庫</b></p

49、><p><b>  connect;</b></p><p><b>  //打開啟動窗口</b></p><p>  open(w_strat)</p><p><b>  sleep(3)</b></p><p><b>  //打開登陸窗口

50、</b></p><p>  open(login)</p><p>  在應用對象的Close事件中加入如下腳本</p><p><b>  //斷開數據庫連接</b></p><p>  DISCONNECT USING SQLCA;</p><p><b>  4.2登

51、錄窗口</b></p><p>  在登錄按鈕的Clicked事件中加入如下腳本:</p><p><b>  //定義兩個變量</b></p><p>  string pass_word,usename</p><p>  //檢索用戶名和密碼記錄</p><p>  SELECT

52、 操作員表.用戶名, </p><p><b>  操作員表.密碼 </b></p><p>  INTO :usename, </p><p>  :pass_word </p><p>  FROM 操作員表 </p><p>  WHERE 操作員表.用戶名 = :sle_1.

53、text ;</p><p>  //判斷用戶輸入的用戶名是否正確</p><p>  if sle_1.text="" or sle_2.text="" then</p><p>  messagebox("錯誤!","用戶名或密碼不能為空!")</p><

54、p>  disconnect; //斷開數據庫連接</p><p><b>  else</b></p><p>  if usename=sle_1.text and pass_word=sle_2.text then</p><p>  open(index)</p><p>  //打開圖書管理系統主界面&

55、lt;/p><p>  close(parent)</p><p><b>  //關閉登錄窗口</b></p><p><b>  else</b></p><p>  messagebox("錯誤!","用戶名或密碼錯誤,請重新輸入!")</p>

56、<p>  disconnect; //斷開數據庫連接</p><p><b>  end if</b></p><p><b>  end if</b></p><p>  在取消按鈕Clicked事件中加入如下腳本:</p><p>  close(parent)</p>

57、;<p><b>  //關閉登錄窗口</b></p><p>  圖5-1圖書管理系統登錄窗口</p><p><b>  4.3創(chuàng)建主窗口</b></p><p>  1.創(chuàng)建MDI主窗口</p><p>  該窗口的名稱為“天運學校圖書管理系統”類型為mdi。有一個菜單與之相連接

58、。窗口保存為index 。</p><p><b>  2.設置主窗口菜單</b></p><p>  在菜單畫面中設計應用程序主窗口所連接的菜單mainmenu,該菜單的結構如下圖所示。</p><p>  圖5-2圖書管理系統主窗口</p><p>  運行時可以通過單擊主窗口左上方的下拉菜單來調用不同功能的模塊,本

59、程序的菜單共設置5個主菜單,13個子菜單項目。還可以通過菜單欄下的工具欄圖標進行系統的操作。</p><p>  在菜單項的clicked事件中完成的操作就是打開某個固定窗口。因此在這里以一個為例介紹菜單項clicked事件的代碼,其它的類似。</p><p>  在“借還圖書”菜單項的clicked事件中加入如下代碼:</p><p>  open(jiehuan

60、book)</p><p>  用于打開“借還圖書”窗口。</p><p><b>  4.4借還圖書窗口</b></p><p>  在借還圖書窗口jiehuanbook中主要完成圖書的借閱和歸還操作。首先,建立三個數據窗口huiyuan、jiehuanbook、d_tushu,其數據源分別為會員表、借書還書表和圖書表。其次,在窗口中添加三個

61、數據控件,并將其分別與數據窗口對象huiyuan、jiehuanbook、d_tushu相關聯;兩個單行編輯框(用來輸入會員編號、圖書編號);兩個靜態(tài)文本邊框(用來提示輸入會員編號和圖書編號);四個按鈕(用來實現借書、還書、顯示信息和關閉)。</p><p>  圖5-3圖書管理系統借還圖書窗口</p><p>  在借還圖書窗口的借書按鈕的clicked事件中加入如下代碼:</p&

62、gt;<p>  //顯示特定會員和圖書的借閱記錄</p><p>  dw_1.settransobject(sqlca)</p><p>  dw_1.setfilter("會員編號='"+trim(sle_1.text)+"'")</p><p>  dw_1.retrieve()</

63、p><p>  dw_2.settransobject(sqlca)</p><p>  dw_2.setfilter("會員編號='"+trim(sle_1.text)+"' and 圖書編號='"+trim(sle_2.text)+"'")</p><p>  dw_2.re

64、trieve()</p><p>  dw_3.settransobject(sqlca)</p><p>  dw_3.setfilter("圖書編號='"+trim(sle_2.text)+"'" )</p><p>  dw_3.retrieve()</p><p>  //得到記

65、錄的總行書</p><p><b>  int m,n,i</b></p><p>  //得到借書記錄總行數和圖書當前行號</p><p>  if dw_1.retrieve()=1 and dw_3.retrieve()=1 then</p><p>  i=dw_1.getrow()</p>&

66、lt;p>  m=dw_2.rowcount()</p><p>  n=dw_3.getrow()</p><p>  if dw_3.object.庫存[n]>0 and dw_1.object.鎖定[i]="否" then</p><p><b>  //插入借書記錄</b></p><

67、p>  dw_2.insertrow(m+1)</p><p>  dw_2.scrolltorow(m+1)</p><p>  dw_2.object.會員編號[m+1]=sle_1.text</p><p>  dw_2.object.圖書編號[m+1]=sle_2.text</p><p>  dw_2.object.借書日期[

68、m+1]= string(today())</p><p>  dw_2.object.備注[m+1]= "未歸還"</p><p><b>  //庫存減1</b></p><p>  dw_3.object.庫存[n]=dw_3.object.庫存[n]-1</p><p><b>  

69、//更新數據庫</b></p><p>  if dw_2.update()=1 and dw_3.update()=1 then</p><p><b>  commit;</b></p><p>  messagebox("成功!","更新數據庫成功!")</p>&l

70、t;p><b>  else</b></p><p><b>  rollback;</b></p><p>  messagebox("失??!","更新數據庫失敗!")</p><p><b>  end if</b></p><p&

71、gt;<b>  else</b></p><p>  //提示用戶不能借書的原因</p><p>  messagebox("錯誤!","庫存不足或您的卡號被鎖定,會員或圖書不存在,無法借閱!",exclamation!,ok!,2)</p><p><b>  end if</b>

72、;</p><p><b>  end if</b></p><p>  在借還圖書窗口的還書按鈕的clicked事件中加入如下代碼:</p><p>  //顯示特定會員和圖書的借閱記錄</p><p>  dw_1.settransobject(sqlca)</p><p>  dw_1.se

73、tfilter("會員編號='"+trim(sle_1.text)+"'")</p><p>  dw_1.retrieve()</p><p>  dw_2.settransobject(sqlca)</p><p>  dw_2.setfilter("會員編號='"+trim(s

74、le_1.text)+"' and 圖書編號='"+trim(sle_2.text)+"' and 備注='未歸還'")</p><p>  dw_2.retrieve()</p><p>  dw_3.settransobject(sqlca)</p><p>  dw_3.setfi

75、lter("圖書編號='"+trim(sle_2.text)+"'" )</p><p>  dw_3.retrieve()</p><p>  //判斷哪一行為還書記錄</p><p><b>  int n</b></p><p>  n=dw_2.rowcou

76、nt()</p><p>  if dw_2.retrieve()=1 or n>1 then</p><p>  //找到還書記錄后修改記錄</p><p>  dw_2.object.還書日期[n]= string(today())</p><p>  dw_2.object.備注[n]= "已歸還"</p

77、><p>  //將會員還的書庫存加1</p><p><b>  int m</b></p><p>  m=dw_3.getrow()</p><p>  dw_3.object.庫存[m]=dw_3.object.庫存[m]+1</p><p>  //判斷會員是所借圖書是否超期超期</p

78、><p>  if int(daysafter(date(dw_2.object.借書日期[n]),date(dw_2.object.還書日期[n])))>30 then</p><p><b>  int q</b></p><p>  q=dw_1.getrow()</p><p>  dw_1.object.鎖定

79、[q]="是"</p><p>  messagebox("超期!","圖書已還,所借圖書已經超期,卡號被鎖定!",exclamation!,ok!,2)</p><p>  dw_2.object.備注[n]= "已歸還,超期"</p><p><b>  end if<

80、;/b></p><p><b>  //更新數據庫</b></p><p>  if dw_1.update()=1 and dw_2.update()=1 and dw_3.update()=1 then </p><p><b>  commit;</b></p><p>  mess

81、agebox("成功!","更新數據庫成功!")</p><p><b>  else</b></p><p><b>  rollback;</b></p><p>  messagebox("失?。?quot;,"更新數據庫失?。?quot;)</p&g

82、t;<p><b>  end if</b></p><p><b>  else</b></p><p>  messagebox("錯誤!","沒有借書記錄!",exclamation!,ok!,2)</p><p>  在借還圖書窗口的顯示信息按鈕的clicked

83、事件中加入如下代碼:</p><p>  //啟動數據窗體連接事務</p><p>  if sle_2.text="" then</p><p>  //顯示該會員的借書記錄</p><p>  dw_1.settransobject(sqlca)</p><p>  dw_1.setfilter

84、("會員編號='"+trim(sle_1.text)+"'")</p><p>  dw_1.retrieve()</p><p>  dw_2.settransobject(sqlca)</p><p>  dw_2.setfilter("會員編號='"+trim(sle_1.te

85、xt)+"'")</p><p>  dw_2.retrieve()</p><p>  dw_3.settransobject(sqlca)</p><p>  dw_3.setfilter("圖書編號='"+trim(sle_2.text)+"'" )</p>&l

86、t;p>  dw_3.retrieve()</p><p><b>  else </b></p><p>  if sle_1.text="" then</p><p>  //顯示該書的借閱記錄</p><p>  dw_1.settransobject(sqlca)</p>

87、<p>  dw_1.setfilter("會員編號='"+trim(sle_1.text)+"'")</p><p>  dw_1.retrieve()</p><p>  dw_2.settransobject(sqlca)</p><p>  dw_2.setfilter("圖書編號=

88、'"+trim(sle_2.text)+"'")</p><p>  dw_2.retrieve()</p><p>  dw_3.settransobject(sqlca)</p><p>  dw_3.setfilter("圖書編號='"+trim(sle_2.text)+"&#

89、39;" )</p><p>  dw_3.retrieve()</p><p><b>  else</b></p><p>  //顯示特定會員和圖書的借閱記錄</p><p>  dw_1.settransobject(sqlca)</p><p>  dw_1.setfilte

90、r("會員編號='"+trim(sle_1.text)+"'")</p><p>  dw_1.retrieve()</p><p>  dw_2.settransobject(sqlca)</p><p>  dw_2.setfilter("會員編號='"+trim(sle_1.t

91、ext)+"' and 圖書編號='"+trim(sle_2.text)+"'")</p><p>  dw_2.retrieve()</p><p>  dw_3.settransobject(sqlca)</p><p>  dw_3.setfilter("圖書編號='"

92、+trim(sle_2.text)+"'" )</p><p>  dw_3.retrieve()</p><p><b>  end if</b></p><p><b>  end if</b></p><p><b>  4.5圖書檢索窗口</b&g

93、t;</p><p>  圖書檢索窗口主要實現查詢數據窗口中滿足條件的記錄,可實現精確和模糊查找</p><p>  。圖5-4圖書管理系統查詢窗口</p><p>  在此窗口的檢索信息按鈕的clicked事件中加入如下代碼:</p><p>  dw_1.dataobject="d_tushubiao"</p&g

94、t;<p>  dw_1.settransobject(sqlca)</p><p>  //取消所有過濾條件</p><p>  dw_1.setfilter("")</p><p>  if rb_1.checked=true then</p><p>  //精確查詢模式程序</p>&l

95、t;p>  choose case ddlb_1.text </p><p>  case "圖書編號"</p><p>  dw_1.setfilter("圖書編號='"+sle_1.text+"'")</p><p><b>  case "書名"&

96、lt;/b></p><p>  dw_1.setfilter("書名='"+sle_1.text+"'")</p><p><b>  case "作者"</b></p><p>  dw_1.setfilter("作者='"+sle

97、_1.text+"'")</p><p>  case "出版社"</p><p>  dw_1.setfilter("出版社='"+sle_1.text+"'")</p><p>  end choose</p><p><b>

98、;  else</b></p><p>  //模糊查詢模式程序</p><p>  choose case ddlb_1.text</p><p>  case "圖書編號"</p><p>  dw_1.setfilter("圖書編號 like"+"'%"+s

99、le_1.text+"%'")</p><p><b>  case "書名"</b></p><p>  dw_1.setfilter("書名 like"+"'%"+sle_1.text+"%'")</p><p>&l

100、t;b>  case "作者"</b></p><p>  dw_1.setfilter("作者 like"+"'%"+sle_1.text+"%'")</p><p>  case "出版社"</p><p>  dw_1.set

101、filter("出版社 like"+"'%"+sle_1.text+"%'")</p><p>  end choose</p><p><b>  end if</b></p><p>  dw_1.retrieve() //檢索數據</p><

102、p>  會員信息查詢與圖書信息查詢類似,不再重復。另外完成這些功能后繼續(xù)完成用戶管理、圖書庫存查詢、錄入信息、打印等功能的創(chuàng)建,方法與前面兩個窗口類似,這里不詳述。</p><p><b>  五結論</b></p><p>  本系統實現了對圖書基本信息的登記,查詢及管理,為學校管理提供了服務。在開發(fā)過程中,為了提高用戶使用軟件的熱情,并刺激他們的積極性,本著

103、美觀、適用、方便用戶的原則,盡最大努力爭做到安全可靠、操作簡便、界面友好,但是,由于時間倉促和我現有知識的不足其中仍有一些不足之處。</p><p>  通過這一次的畢業(yè)設計,我積累了許多開發(fā)軟件方面的經驗。</p><p><b>  參考文獻</b></p><p>  [1] 袁 方 主編 郗亞輝、陳昊 編著.《數據庫應用系統設計——理

104、論與實踐教程》.(第二版),2005.3</p><p>  [2] 甘仞初 主編《信息系統開發(fā)》北京:經濟科學出版社,2000.6</p><p>  [3] 丁寶康 主編《數據庫原理》北京:經濟科學出版社,2000.3 </p><p>  [4] 陳禹、方美琪 主編.軟件開發(fā)工具. 北京:經濟出版社,2000.2</p><p>

105、  [5] 何旭洪、余建英 著.《PowerBuilder數據庫系統開發(fā)實例導航》.人民郵電出版社,2004</p><p>  [6] 羅超理、李萬紅 著.《管理信息系統原理與應用》清華大學出版社,2002</p><p>  [7] 艾德才 著.《計算機信息管理基礎》中國水利水電出版社,2001</p><p>  [8] Jeff Robin Mana

106、gement of Information System 機械工業(yè)出版社,2002</p><p>  [9] 薩師煊、王珊 著.《數據庫系統概論》高等教育出版社,2000</p><p>  [10] 徐松林、路斌、王冬春 著.《PowerBuilder數據庫應用開發(fā)教程》清華大學出版社,2003</p><p>  [11] 郭興成 著.《PowerBu

107、ilder教程》北京希望電子出版社,2002</p><p>  [12] 王志勇、阮堅、王鵬 著.《用PowerBuilder開發(fā)小型數據庫》人民郵電出版社,2002</p><p><b>  附 錄</b></p><p>  在借還圖書窗口的借書按鈕的clicked事件中加入如下代碼:</p><p>  /

108、/顯示特定會員和圖書的借閱記錄</p><p>  dw_1.settransobject(sqlca)</p><p>  dw_1.setfilter("會員編號='"+trim(sle_1.text)+"'")</p><p>  dw_1.retrieve()</p><p> 

109、 dw_2.settransobject(sqlca)</p><p>  dw_2.setfilter("會員編號='"+trim(sle_1.text)+"' and 圖書編號='"+trim(sle_2.text)+"'")</p><p>  dw_2.retrieve()</p>

110、;<p>  dw_3.settransobject(sqlca)</p><p>  dw_3.setfilter("圖書編號='"+trim(sle_2.text)+"'" )</p><p>  dw_3.retrieve()</p><p>  //得到記錄的總行書</p>

111、<p><b>  int m,n,i</b></p><p>  //得到借書記錄總行數和圖書當前行號</p><p>  if dw_1.retrieve()=1 and dw_3.retrieve()=1 then</p><p>  i=dw_1.getrow()</p><p>  m=dw_2.

112、rowcount()</p><p>  n=dw_3.getrow()</p><p>  if dw_3.object.庫存[n]>0 and dw_1.object.鎖定[i]="否" then</p><p><b>  //插入借書記錄</b></p><p>  dw_2.inser

113、trow(m+1)</p><p>  dw_2.scrolltorow(m+1)</p><p>  dw_2.object.會員編號[m+1]=sle_1.text</p><p>  dw_2.object.圖書編號[m+1]=sle_2.text</p><p>  dw_2.object.借書日期[m+1]= string(toda

114、y())</p><p>  dw_2.object.備注[m+1]= "未歸還"</p><p><b>  //庫存減1</b></p><p>  dw_3.object.庫存[n]=dw_3.object.庫存[n]-1</p><p><b>  //更新數據庫</b>

115、</p><p>  if dw_2.update()=1 and dw_3.update()=1 then</p><p><b>  commit;</b></p><p>  messagebox("成功!","更新數據庫成功!")</p><p><b> 

116、 else</b></p><p><b>  rollback;</b></p><p>  messagebox("失敗!","更新數據庫失敗!")</p><p><b>  end if</b></p><p><b>  els

117、e</b></p><p>  //提示用戶不能借書的原因</p><p>  messagebox("錯誤!","庫存不足或您的卡號被鎖定,會員或圖書不存在,無法借閱!",exclamation!,ok!,2)</p><p><b>  end if</b></p><

118、p><b>  end if</b></p><p>  在借還圖書窗口的還書按鈕的clicked事件中加入如下代碼:</p><p>  //顯示特定會員和圖書的借閱記錄</p><p>  dw_1.settransobject(sqlca)</p><p>  dw_1.setfilter("會員編

119、號='"+trim(sle_1.text)+"'")</p><p>  dw_1.retrieve()</p><p>  dw_2.settransobject(sqlca)</p><p>  dw_2.setfilter("會員編號='"+trim(sle_1.text)+"

120、' and 圖書編號='"+trim(sle_2.text)+"' and 備注='未歸還'")</p><p>  dw_2.retrieve()</p><p>  dw_3.settransobject(sqlca)</p><p>  dw_3.setfilter("圖書編號=&

121、#39;"+trim(sle_2.text)+"'" )</p><p>  dw_3.retrieve()</p><p>  //判斷哪一行為還書記錄</p><p><b>  int n</b></p><p>  n=dw_2.rowcount()</p>&

122、lt;p>  if dw_2.retrieve()=1 or n>1 then</p><p>  //找到還書記錄后修改記錄</p><p>  dw_2.object.還書日期[n]= string(today())</p><p>  dw_2.object.備注[n]= "已歸還"</p><p>  

123、//將會員還的書庫存加1</p><p><b>  int m</b></p><p>  m=dw_3.getrow()</p><p>  dw_3.object.庫存[m]=dw_3.object.庫存[m]+1</p><p>  //判斷會員是所借圖書是否超期超期</p><p>  

124、if int(daysafter(date(dw_2.object.借書日期[n]),date(dw_2.object.還書日期[n])))>30 then</p><p><b>  int q</b></p><p>  q=dw_1.getrow()</p><p>  dw_1.object.鎖定[q]="是"

125、</p><p>  messagebox("超期!","圖書已還,所借圖書已經超期,卡號被鎖定!",exclamation!,ok!,2)</p><p>  dw_2.object.備注[n]= "已歸還,超期"</p><p><b>  end if</b></p>

126、<p><b>  //更新數據庫</b></p><p>  if dw_1.update()=1 and dw_2.update()=1 and dw_3.update()=1 then </p><p><b>  commit;</b></p><p>  messagebox("成功!&

127、quot;,"更新數據庫成功!")</p><p><b>  else</b></p><p><b>  rollback;</b></p><p>  messagebox("失??!","更新數據庫失敗!")</p><p><

128、b>  end if</b></p><p><b>  else</b></p><p>  messagebox("錯誤!","沒有借書記錄!",exclamation!,ok!,2)</p><p>  在借還圖書窗口的顯示信息按鈕的clicked事件中加入如下代碼:</p&

129、gt;<p>  //啟動數據窗體連接事務</p><p>  if sle_2.text="" then</p><p>  //顯示該會員的借書記錄</p><p>  dw_1.settransobject(sqlca)</p><p>  dw_1.setfilter("會員編號='

130、"+trim(sle_1.text)+"'")</p><p>  dw_1.retrieve()</p><p>  dw_2.settransobject(sqlca)</p><p>  dw_2.setfilter("會員編號='"+trim(sle_1.text)+"'&q

131、uot;)</p><p>  dw_2.retrieve()</p><p>  dw_3.settransobject(sqlca)</p><p>  dw_3.setfilter("圖書編號='"+trim(sle_2.text)+"'" )</p><p>  dw_3.ret

溫馨提示

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

評論

0/150

提交評論