版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 基于C/S的圖書(shū)管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)</p><p><b> 摘 要</b></p><p> 基于C/S的圖書(shū)管理系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)摘要內(nèi)容</p><p> 關(guān)鍵詞:圖書(shū)管理 管理信息系統(tǒng) PowerBuilder</p><p> 本文介紹在PowerBuider環(huán)境下設(shè)計(jì)的一個(gè)
2、小型圖書(shū)管理系統(tǒng)。通過(guò)分析傳統(tǒng)的人工管理圖書(shū)館的不足,創(chuàng)建了一套行之有效的計(jì)算機(jī)管理圖書(shū)館的方案。文章詳細(xì)介紹圖書(shū)管理信息系統(tǒng)的系統(tǒng)分析部分,包括可行性分析、數(shù)據(jù)流程分析、數(shù)據(jù)字典等等;系統(tǒng)設(shè)計(jì)部分主要介紹系統(tǒng)功能設(shè)計(jì);系統(tǒng)實(shí)現(xiàn)部分列出幾個(gè)主要的程序框圖,并附帶了一些主要的窗口和程序。</p><p> 本系統(tǒng)主要是對(duì)圖書(shū)的增減以及圖書(shū)借出歸還的管理,主要包括數(shù)據(jù)插入、刪除、查詢、掛失等功能。圖書(shū)管理信息系統(tǒng)能
3、夠有效、準(zhǔn)確地完成這些功能,并達(dá)到界面友好、使用方便。</p><p><b> 目 錄</b></p><p><b> 一系統(tǒng)分析</b></p><p> 1.1系統(tǒng)初步調(diào)查………………………………………………………1</p><p> 1.2系統(tǒng)可行性研究…………………………………
4、………………1</p><p> 1.3 現(xiàn)行系統(tǒng)詳細(xì)調(diào)查………………………………………………2</p><p> 1.4系統(tǒng)邏輯模型………………………………………………………2</p><p><b> 二系統(tǒng)設(shè)計(jì)</b></p><p> 2.1總體設(shè)計(jì)……………………………………………………………3<
5、/p><p> 2.2系統(tǒng)總體物理結(jié)構(gòu)…………………………………………………4</p><p> 2.3軟件開(kāi)發(fā)平臺(tái)………………………………………………………5</p><p><b> 三系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p> 3.1 用戶界面設(shè)計(jì)……………………………………………………6</p>&
6、lt;p> 3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)………………………………………………………6</p><p><b> 四系統(tǒng)實(shí)施</b></p><p> 4.1建立應(yīng)用對(duì)象……………………………………………………10</p><p> 4.2登錄窗口…………………………………………………………12</p><p> 4
7、.3創(chuàng)建主窗口………………………………………………………13</p><p> 4.4借還圖書(shū)窗口……………………………………………………14</p><p> 4.5圖書(shū)檢索窗口……………………………………………………18</p><p> 五結(jié)論………………………………………………………………20</p><p> 參考文獻(xiàn)………
8、……………………………………………………………20</p><p> 附錄…………………………………………………………………23</p><p><b> 引 言</b></p><p> 圖書(shū)管理工作是學(xué)校管理工作的重要組成部分,圖書(shū)種類的增加以及學(xué)生借還的管理都給以往手工圖書(shū)管理提出了挑戰(zhàn)。以前學(xué)校的圖書(shū)管理一直采用手工的方法,這種
9、管理方式存在著許多缺點(diǎn),如:效率低、工作量大、容易遺漏信息等。隨著計(jì)算機(jī)技術(shù)的發(fā)展,其強(qiáng)大的功能已為人們深刻認(rèn)識(shí),所以借此機(jī)會(huì)為我校的圖書(shū)管理設(shè)計(jì)一個(gè)比較符合我校情況的圖書(shū)管理系統(tǒng)。</p><p> 作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)圖書(shū)進(jìn)行管理,具有比手工管理無(wú)法比擬的優(yōu)點(diǎn)。例如:查詢方便、借還圖書(shū)效率提高、存儲(chǔ)量大、壽命長(zhǎng)、可靠性高等。這些優(yōu)點(diǎn)能夠大大地提高圖書(shū)管理效率和質(zhì)量,減少工作量,是學(xué)校為老師和
10、學(xué)生提供方便的必要條件,也是一個(gè)學(xué)校步入正規(guī)的標(biāo)志。</p><p> 圖書(shū)管理工作主要是對(duì)圖書(shū)的增減以及圖書(shū)借出歸還的管理,主要包括數(shù)據(jù)插入、刪除、查詢、掛失等功能。圖書(shū)管理信息系統(tǒng)能夠有效、準(zhǔn)確地完成這些功能,并達(dá)到界面友好、使用方便。所以,開(kāi)發(fā)一種圖書(shū)管理軟件成為很有必要的事情。</p><p> 圖書(shū)館管理系統(tǒng)是典型的信息管理系統(tǒng),其開(kāi)發(fā)主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端的
11、應(yīng)用程序的開(kāi)發(fā)兩個(gè)方面。對(duì)于前者要求建立數(shù)據(jù)的一致性和完整性,對(duì)于后者則要求應(yīng)用程序功能的完備,易用等的特點(diǎn)?;谏鲜隹紤]本系統(tǒng)主要利用PowerBuilder 9.0作前端的應(yīng)用開(kāi)發(fā)工具 ,利用Sybase SQL Anywhere8.0作為后臺(tái)的數(shù)據(jù)庫(kù),利用WINDOWS作為系統(tǒng)平臺(tái)開(kāi)發(fā)的圖書(shū)管理系統(tǒng)。</p><p><b> 一系統(tǒng)分析</b></p><p&g
12、t;<b> 1.1系統(tǒng)初步調(diào)查</b></p><p> 通過(guò)現(xiàn)場(chǎng)觀察、與單位相關(guān)人員面談和查閱相關(guān)文獻(xiàn)資料等方法進(jìn)行了詳盡而完備的調(diào)查工作,發(fā)現(xiàn)采用手工管理圖書(shū)借閱登記效率低、工作量大、容易出錯(cuò)、信息存儲(chǔ)時(shí)間短等問(wèn)題。而現(xiàn)在計(jì)算機(jī)的廣泛使用能夠順利替代手工,使管理更為方便、實(shí)用。通過(guò)調(diào)查得出如下結(jié)論:即本系統(tǒng)的開(kāi)發(fā)不僅是完全必要得的,而且在技術(shù)上也是完全有可能的。</p>
13、<p> 1.2系統(tǒng)可行性研究</p><p> 圖書(shū)管理信息系統(tǒng)的目標(biāo)是:按照管理信息系統(tǒng)的原理和方法,采用信息技術(shù)和手段,支持圖書(shū)管理工作的過(guò)程,使學(xué)校的圖書(shū)管理工作系統(tǒng)化、規(guī)范化、自動(dòng)化,從而達(dá)到提高學(xué)校圖書(shū)管理效率的目的,提高圖書(shū)管理工作的現(xiàn)代化水平。</p><p> 系統(tǒng)開(kāi)發(fā)的總體任務(wù)是實(shí)現(xiàn)學(xué)校圖書(shū)管理的系統(tǒng)化、規(guī)范化和自動(dòng)化。</p><
14、;p> 1.3 現(xiàn)行系統(tǒng)詳細(xì)調(diào)查</p><p> 對(duì)現(xiàn)行管理水平進(jìn)行詳細(xì)調(diào)查研究是了解系統(tǒng)需求和進(jìn)行系統(tǒng)分析與設(shè)計(jì)的重要基礎(chǔ)工作,因此要對(duì)學(xué)校圖書(shū)管理的各項(xiàng)管理工作進(jìn)行全面、細(xì)致而充分的調(diào)查研究。</p><p><b> 1.4系統(tǒng)邏輯模型</b></p><p> 系統(tǒng)分析的主要成果是系統(tǒng)的邏輯模型,本系統(tǒng)的邏輯模型主要是以
15、系統(tǒng)的數(shù)據(jù)流圖和數(shù)據(jù)詞典為主要描述工具,在對(duì)圖書(shū)管理方式和業(yè)務(wù)流程進(jìn)行認(rèn)真分析和研究的基礎(chǔ)上,完全從業(yè)務(wù)管理和管理對(duì)象出發(fā),按信息系統(tǒng)中應(yīng)有的數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu)來(lái)勾畫系統(tǒng)的概貌。</p><p> 1.4.1 數(shù)據(jù)流圖</p><p> 數(shù)據(jù)流圖是在對(duì)系統(tǒng)調(diào)研階段繪制的業(yè)務(wù)流程圖進(jìn)行分析的基礎(chǔ)上,從系統(tǒng)的科學(xué)性,管理的合理性、實(shí)際運(yùn)行的可行性角度出發(fā),將信息處理功能和彼此之間的聯(lián)系自頂向
16、下、從左到右、逐層分解,從邏輯上精確地描述系統(tǒng)應(yīng)具有的數(shù)據(jù)輸入、數(shù)據(jù)輸出、存儲(chǔ)及數(shù)據(jù)來(lái)源和去向(外部項(xiàng))。</p><p> 圖2-1圖書(shū)管理系統(tǒng)數(shù)據(jù)流圖</p><p> 數(shù)據(jù)流圖由4種成分組成:</p><p> 1、外部項(xiàng)(外部實(shí)體):外部項(xiàng)在數(shù)據(jù)中表示所描述系統(tǒng)的數(shù)據(jù)來(lái)源和去處的各種實(shí)體或工作環(huán)節(jié)。這些實(shí)體或環(huán)節(jié)向開(kāi)發(fā)的系統(tǒng)發(fā)出或接收信息。系統(tǒng)開(kāi)發(fā)不能
17、改變這些外部項(xiàng)本身的結(jié)構(gòu)和固有屬性。</p><p> 2、數(shù)據(jù)加工:又稱數(shù)據(jù)邏輯,描述系統(tǒng)對(duì)信息進(jìn)行處理的邏輯功能。在數(shù)據(jù)流圖上這種邏輯功能由一個(gè)或一個(gè)以上的輸入數(shù)據(jù)流轉(zhuǎn)換成一個(gè)或一個(gè)以上輸出數(shù)據(jù)流來(lái)表示。</p><p> 3、數(shù)據(jù)存儲(chǔ):邏輯意義上的數(shù)據(jù)存儲(chǔ)環(huán)節(jié),即系統(tǒng)信息處理功能需要的、不考慮存儲(chǔ)物理介質(zhì)和技術(shù)手段的數(shù)據(jù)存儲(chǔ)環(huán)節(jié)。</p><p> 4、
18、數(shù)據(jù)流:與所描述系統(tǒng)信息處理功能有關(guān)的各類信息的載體,是各加工環(huán)節(jié)進(jìn)行處理和輸出的數(shù)據(jù)集合。在數(shù)據(jù)流圖中數(shù)據(jù)流用箭線表示,箭頭指處表示數(shù)據(jù)流的輸送處,箭尾連接處表示數(shù)據(jù)流的來(lái)源。</p><p> 1.4.2 數(shù)據(jù)詞典</p><p> 數(shù)據(jù)詞典是數(shù)據(jù)邏輯模型的重要組成部分。數(shù)據(jù)詞典應(yīng)對(duì)數(shù)據(jù)流圖中的數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)流、加工、外部項(xiàng)和數(shù)據(jù)項(xiàng)進(jìn)行進(jìn)一步的描述。</p><
19、p> 1、操作員信息。包括的數(shù)據(jù)項(xiàng)有編號(hào)、用戶名、密碼。</p><p> 2、會(huì)員信息。包括的數(shù)據(jù)項(xiàng)有會(huì)員編號(hào)、會(huì)員姓名、性別、年級(jí)、班級(jí)、家庭住址、是否鎖定。</p><p> 3、借書(shū)還書(shū)信息。包括的數(shù)據(jù)項(xiàng)有會(huì)員編號(hào)、圖書(shū)編號(hào)、借書(shū)日期、還書(shū)日期、備注等</p><p> 4、圖書(shū)信息。包括的數(shù)據(jù)項(xiàng)有圖書(shū)編號(hào)、書(shū)名、作者、出版社、出版日期、圖書(shū)價(jià)
20、格。</p><p> 由以上的分析可知該圖書(shū)管理系統(tǒng)從技術(shù)、經(jīng)濟(jì)、時(shí)間都能夠滿足要求,系統(tǒng)開(kāi)發(fā)切實(shí)可行。</p><p><b> 二系統(tǒng)設(shè)計(jì)</b></p><p><b> 2.1總體設(shè)計(jì)</b></p><p> 總體結(jié)構(gòu)設(shè)計(jì)主要包括運(yùn)行模式選擇、操作系統(tǒng)選擇、數(shù)據(jù)庫(kù)管理系統(tǒng)選擇、系
21、統(tǒng)功能結(jié)構(gòu)設(shè)計(jì)等。</p><p> 運(yùn)行模式選擇單機(jī)模式。</p><p> 開(kāi)發(fā)工具選擇PowerBuilder9.0。</p><p> 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)選擇PowerBuilder自帶的Sybase SQL Anywhere8.0.</p><p> 2.1.1系統(tǒng)功能設(shè)計(jì)</p><p>
22、 本系統(tǒng)開(kāi)發(fā)的總體任務(wù)是實(shí)現(xiàn)圖書(shū)管理的簡(jiǎn)單化、準(zhǔn)確化、效率化。</p><p> 根據(jù)需求分析,圖書(shū)管理工作主要是針對(duì)借書(shū)人的管理和圖書(shū)的借、還、查找及庫(kù)存管理等。圖書(shū)管理系統(tǒng)需要完成的功能主要有:</p><p> 增加會(huì)員,包括編號(hào)、姓名、性別等</p><p><b> 會(huì)員卡掛失</b></p><p>&
23、lt;b> 會(huì)員卡的打印</b></p><p><b> 會(huì)員信息的輸出</b></p><p> 圖書(shū)入庫(kù),包括圖書(shū)編號(hào)、書(shū)名、作者、出版社、定價(jià)等</p><p><b> 圖書(shū)查詢</b></p><p><b> 借書(shū)</b></p&
24、gt;<p><b> 還書(shū)</b></p><p> 2.1.2系統(tǒng)模塊設(shè)計(jì)</p><p> 對(duì)上述各項(xiàng)功能進(jìn)行集中、分塊,按照結(jié)構(gòu)化程序設(shè)計(jì)的要示,得到如圖所示的系統(tǒng)功能模塊圖: </p><p> 圖3-1系統(tǒng)模塊設(shè)計(jì)圖</p><p> 2.2 系統(tǒng)總體物理結(jié)構(gòu)</p>
25、;<p> 從實(shí)際出發(fā),本系統(tǒng)最好利用計(jì)算機(jī)局部網(wǎng)絡(luò)作為系統(tǒng)的基本物理結(jié)構(gòu),這樣有利于以后圖書(shū)管理信息系統(tǒng)的開(kāi)發(fā)。但是,從目前情況來(lái)看,由于本系統(tǒng)只涉及圖書(shū)管理信息,所以采用單機(jī)結(jié)構(gòu)作為本系統(tǒng)的基本物理結(jié)構(gòu)。其基本配置如下:</p><p> 硬盤:80GB以上 內(nèi)存:256MB</p><p> 顯示器:SVGA 800×600 &l
26、t;/p><p> 打印機(jī): EPSON-1600K(可選其它型號(hào))</p><p> 操作系統(tǒng):Windows2000/XP。</p><p> 軟件環(huán)境:PowerBuilder 9.0</p><p> 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)選擇了PowerBuilder自帶的SQL Anywhere 8.0</p><p&
27、gt; 2.3 軟件開(kāi)發(fā)平臺(tái)</p><p> 隨著社會(huì)經(jīng)濟(jì)的不斷發(fā)展以及計(jì)算機(jī)技術(shù)的日益完善,人們對(duì)各種軟件的需求也不斷提高,這就要求開(kāi)發(fā)者可以提供功能更強(qiáng)、質(zhì)量更高的軟件產(chǎn)品。為此幫助人們開(kāi)發(fā)軟件的工具即軟件開(kāi)發(fā)工具就由此應(yīng)運(yùn)而生。軟件開(kāi)發(fā)工具的基本思想是致力于軟件開(kāi)發(fā)的優(yōu)質(zhì)與高效,是可以對(duì)軟件的開(kāi)發(fā)全過(guò)程提供不同程度的支持與幫助。PowerBuilder就是其中一種應(yīng)用較廣的軟件開(kāi)發(fā)工具。</p&
28、gt;<p> PowerBuilder(簡(jiǎn)稱PB)是美國(guó)著名的數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)工具生產(chǎn)廠商PowerSoft于1991年推出的成功產(chǎn)品。它是完全按照客戶/服務(wù)器(C/S)體系結(jié)構(gòu)研制設(shè)計(jì)的,采用面向?qū)ο蠛涂梢暬夹g(shù),提供有圖形化的應(yīng)用開(kāi)發(fā)環(huán)境,使得用戶使用PowerBuilder可以方便地開(kāi)發(fā)基于后臺(tái)服務(wù)器中的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。作為一種優(yōu)秀的開(kāi)發(fā)工具,PowerBuilder具有以下功能和特點(diǎn):</p>&l
29、t;p> ?。?)支持多種環(huán)境與跨平臺(tái)開(kāi)發(fā) </p><p> PB是專門用來(lái)設(shè)計(jì)、建立高性能的基于客戶/服務(wù)器(C/S)體系結(jié)構(gòu)的應(yīng)用程序,同時(shí)支持分布式計(jì)算和Web環(huán)境。另外PB還支持跨平臺(tái)的開(kāi)發(fā)和分布。例如:在Windows下開(kāi)發(fā)的應(yīng)用程序可以分布到UNIX或其他平臺(tái)上運(yùn)行。開(kāi)發(fā)人員也可以組成開(kāi)發(fā)小組,一些人員在Windows下開(kāi)發(fā),同時(shí)另一些人員在UNIX進(jìn)行另外一部分的開(kāi)發(fā),并且他們可共享PB應(yīng)
30、用程序中的對(duì)象。這樣程序不但有很好的移植性,使用環(huán)境廣,而且同時(shí)開(kāi)發(fā),縮短了開(kāi)發(fā)時(shí)間,節(jié)約了開(kāi)發(fā)成本。</p><p> ?。?)功能強(qiáng)大的編程語(yǔ)言與函數(shù)</p><p> PowerScript是PB的功能很強(qiáng)的第四代編程語(yǔ)言,用PowerScript語(yǔ)言編寫的程序通常稱為腳本(Script)。腳本往往是由PowerScript命令、函數(shù)和相應(yīng)某一事件所要完成的處理過(guò)程的語(yǔ)言所組成。它
31、能使開(kāi)發(fā)人員很容易地將簡(jiǎn)單或復(fù)雜的事物邏輯與應(yīng)用相配合。它有幾百個(gè)函數(shù)用以對(duì)操作對(duì)象、數(shù)字、文本和日期等信息,并且全面支持DDE和全文本I/O。</p><p> ?。?)面向?qū)ο蟮木幊?lt;/p><p> 在PB中創(chuàng)建的每一個(gè)菜單或窗口都是一個(gè)自含的模塊,稱為對(duì)象(Object)。PB應(yīng)用程序基本的構(gòu)建塊是用戶所創(chuàng)建的對(duì)象,每個(gè)對(duì)象都具有一些特定的特性和行為(屬性、事件、功能)。利用面向
32、對(duì)象的編程技術(shù),可使程序具有可重用性、可擴(kuò)展性和強(qiáng)有力的功能。面向?qū)ο蟮木幊碳夹g(shù)還可以使開(kāi)發(fā)人員無(wú)需精通專用語(yǔ)言即可進(jìn)行開(kāi)發(fā)。PB應(yīng)用由一系列對(duì)象組成,如窗口、菜單等。而對(duì)象又包含若干控件,如命令按鈕等。這些對(duì)象和控件都可以在許多應(yīng)用中重復(fù)使用。因此,提高了編程效率和軟件質(zhì)量,又極大地減少了開(kāi)發(fā)時(shí)間。</p><p> ?。?)開(kāi)放的數(shù)據(jù)庫(kù)連接系統(tǒng)</p><p> PB最優(yōu)秀的開(kāi)放系統(tǒng)
33、功能就是可以訪問(wèn)任何一個(gè)常用的后臺(tái)數(shù)據(jù)庫(kù)系統(tǒng)。在應(yīng)用程序開(kāi)發(fā)時(shí),開(kāi)發(fā)人員不需要了解數(shù)據(jù)庫(kù)內(nèi)部的細(xì)節(jié),PB提供了一個(gè)通用的前端用戶界面,后端數(shù)據(jù)庫(kù)的連接由PB來(lái)完成。對(duì)于大型數(shù)據(jù)庫(kù)系統(tǒng),PB通過(guò)使用PowerSoft提供的專用接口直接與數(shù)據(jù)庫(kù)相連;對(duì)于小型數(shù)據(jù)庫(kù)系統(tǒng),PB通過(guò)使用PowerSoft的ODBC接口與數(shù)據(jù)庫(kù)相連。另外,開(kāi)發(fā)人員還可以利用PB內(nèi)置的高性能數(shù)據(jù)庫(kù)引擎――Sybase SQL Anywhere,生成獨(dú)立應(yīng)用或脫離服務(wù)
34、器在單機(jī)環(huán)境下運(yùn)行。</p><p> ?。?)強(qiáng)大的調(diào)試和測(cè)試功能</p><p> 由于PB具有強(qiáng)大的編譯能力以及集成調(diào)試和測(cè)試功能,因此在開(kāi)發(fā)時(shí)可以利用斷點(diǎn)跟蹤、單步調(diào)試等方法對(duì)應(yīng)用程序進(jìn)行查看、調(diào)試并根據(jù)需要進(jìn)行程序修改。</p><p> PB9.0是PowerSoft公司推出的又一版本,它除了繼承PB以上功能與特點(diǎn)外,還對(duì)原有性能進(jìn)行了改進(jìn)、優(yōu)化與增
35、強(qiáng),從而使在用PB進(jìn)行開(kāi)發(fā)時(shí)工作更快、成本更低、質(zhì)量更高、功能更強(qiáng)?;赑B的以上優(yōu)點(diǎn),故在本系統(tǒng)采用PB9.0作為開(kāi)發(fā)系統(tǒng)的軟件工具。</p><p><b> 三系統(tǒng)詳細(xì)設(shè)計(jì)</b></p><p> 3.1 用戶界面設(shè)計(jì)</p><p> 用戶運(yùn)行該系統(tǒng)時(shí),首先出現(xiàn)一個(gè)登錄窗口,提示用戶輸入用戶名和密碼,輸入正確進(jìn)入系統(tǒng)主窗口。在主
36、窗口中主要是通過(guò)菜單進(jìn)行操作,進(jìn)而打開(kāi)具體功能的窗口界面。本系統(tǒng)采用了基于菜單、工具按鈕、簡(jiǎn)單回答等友好的手段及人機(jī)交互方式,使得操作方便,易于掌握。窗口示例見(jiàn)后面的系統(tǒng)實(shí)施部分。</p><p><b> 3.2 數(shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p> 數(shù)據(jù)庫(kù)設(shè)計(jì)分為:數(shù)據(jù)庫(kù)概念設(shè)計(jì)和數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)</p><p> 3.2.1數(shù)據(jù)庫(kù)概念
37、模型及E-R圖設(shè)計(jì)</p><p> 概念模型作為現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)過(guò)渡性的中間層次,是對(duì)現(xiàn)實(shí)世界的抽象和概括。</p><p> E-R圖是描述數(shù)據(jù)實(shí)體及其關(guān)系的一種直觀的描述工具,E-R圖的信息借助實(shí)體、屬性、聯(lián)系這三個(gè)基本概念表達(dá)。</p><p> 實(shí)體。用方框表示,方框內(nèi)為實(shí)體的名稱。</p><p> 實(shí)體的各種屬性
38、。用橢圓表示,橢圓內(nèi)為屬性名稱。使用線段將其和相應(yīng)的實(shí)體連接起來(lái)。</p><p> 實(shí)體之間的聯(lián)系。用菱形表示,菱形內(nèi)為聯(lián)系的名稱。</p><p> 在本系統(tǒng)中,我們把會(huì)員信息設(shè)為會(huì)員實(shí)體(見(jiàn)圖4-1), 圖書(shū)信息設(shè)為圖書(shū)實(shí)體(見(jiàn)圖4-2),借書(shū)還書(shū)信息設(shè)為借書(shū)還書(shū)實(shí)體(見(jiàn)圖4-3),操作員信息設(shè)為操作員實(shí)體(見(jiàn)圖4-4),各個(gè)實(shí)體之間的聯(lián)系(見(jiàn)圖4-5)。</p>
39、<p> 圖4-1 會(huì)員實(shí)體E-R圖</p><p> 圖4-2圖書(shū)實(shí)體E-R圖</p><p> 圖4-3借書(shū)還書(shū)實(shí)體E-R圖</p><p> 圖4-4操作員實(shí)體E-R圖</p><p> 圖4-5 實(shí)體之間E-R圖</p><p> 3.2.2數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)</p><
40、;p> 根據(jù)E-R圖到關(guān)系模式的轉(zhuǎn)換規(guī)則,實(shí)體分別轉(zhuǎn)換成關(guān)系模式,如下圖(4-1至4-3)。 </p><p> 另外,為了保證系統(tǒng)的安全性,只有合法用戶才能登錄使用系統(tǒng),為方便系統(tǒng)管理員對(duì)用戶的管理,需要設(shè)一表來(lái)存放合法用戶的用戶名、密碼等信息,如表4-4所示。 </p><p><b> 表4-1會(huì)員表</b></p><p>
41、<b> 表4-2圖書(shū)表</b></p><p><b> 表4-3借書(shū)還書(shū)表</b></p><p><b> 表4-4操作員表</b></p><p><b> 四系統(tǒng)實(shí)施.</b></p><p> 每個(gè)PowerBuilder應(yīng)用程序都須
42、有一個(gè)、而且只能有一個(gè)應(yīng)用程序?qū)ο?,也可以說(shuō),應(yīng)用程序?qū)ο蟠砹藨?yīng)用程序,程序從應(yīng)用程序?qū)ο箝_(kāi)始運(yùn)行。除了作為應(yīng)用程序的入口這一功能外,應(yīng)用程序?qū)ο筮€定義了應(yīng)用程序的系統(tǒng)級(jí)行為,例如,應(yīng)用程序使用哪些應(yīng)用庫(kù)(一種PowerBuilder定義的特殊格式的文件)來(lái)保存用到的各種對(duì)象、對(duì)象的默認(rèn)字體、應(yīng)用程序圖標(biāo)等。</p><p> PowerBuilder是面向?qū)ο蟮拈_(kāi)發(fā)環(huán)境,用它開(kāi)發(fā)的應(yīng)用程序以對(duì)象和事件驅(qū)動(dòng)為
43、基本特征。作為PowerBuilder的對(duì)象之一,應(yīng)用程序?qū)ο笠灿幸唤M事件,當(dāng)用戶運(yùn)行應(yīng)用程序時(shí),首先觸發(fā)應(yīng)用程序?qū)ο蟮膐pen事件,在這個(gè)事件的事件處理程序中可以設(shè)置應(yīng)用的初始狀態(tài),裝入其對(duì)象、連接數(shù)據(jù)庫(kù)等。當(dāng)用戶終止應(yīng)用程序時(shí),應(yīng)用程序?qū)ο蟮腸lose事件被觸發(fā),在這個(gè)事件的事件處理程序中完成必要的系統(tǒng)清理工作,例如斷開(kāi)與數(shù)據(jù)庫(kù)的連接,清除用戶自定義對(duì)象等。當(dāng)程序運(yùn)行過(guò)程中發(fā)生嚴(yán)重錯(cuò)誤時(shí),應(yīng)用程序?qū)ο蟮腟ystemError事件被觸
44、發(fā),這時(shí)可以報(bào)告錯(cuò)誤類型和性質(zhì),以便及時(shí)排除錯(cuò)誤。由此可見(jiàn),應(yīng)用程序?qū)ο髮?duì)開(kāi)發(fā)完美的PowerBuilder的應(yīng)用程序至關(guān)重要。</p><p><b> 語(yǔ)言與函數(shù)</b></p><p> 用PowerScript語(yǔ)言編寫的程序通常稱為腳本(Script)。腳本是由PowerScriptT命令、函數(shù)和相應(yīng)某一事件所要完成的處理過(guò)程的語(yǔ)句所組成。它能使開(kāi)發(fā)人員很
45、容易地將簡(jiǎn)單工作復(fù)雜的事務(wù)邏輯與應(yīng)用相匹配。它有幾百個(gè)函數(shù)用于操作對(duì)象、數(shù)字、文字和日期等信息并全面支持DDE和全文本的I/O。</p><p> 例如為某個(gè)按鈕上的Clicked事件編寫的腳本可能進(jìn)行的處理是從數(shù)據(jù)庫(kù)中檢索和顯示數(shù)據(jù)。</p><p> 事件本身也可以觸發(fā)其它事件,例如當(dāng)一個(gè)按鈕上的Clicked事件要打開(kāi)一個(gè)窗口時(shí)就觸發(fā)了一個(gè)窗口上的Open事件。</p>
46、;<p> 此外,用戶還可以定義自己的函數(shù)在應(yīng)用程序中來(lái)執(zhí)行某種特定的處理過(guò)程。外部函數(shù)可以在PowerBuilder內(nèi)說(shuō)明和訪問(wèn),就如同內(nèi)置的PowerBuilder的應(yīng)用函數(shù)一樣。</p><p><b> 面向?qū)ο蟮木幊?lt;/b></p><p> PowerBuilder應(yīng)用由一系列對(duì)象組成,包括有函數(shù)、菜單、結(jié)構(gòu)和數(shù)據(jù)窗口、用戶對(duì)象、用戶事
47、件等,對(duì)象中又包含若干控件如命令按鈕、單行編輯器等這些對(duì)象和控件都可在許多應(yīng)用中重復(fù)使用。</p><p><b> 4.1建立應(yīng)用對(duì)象</b></p><p> 建立一個(gè)為book的應(yīng)用對(duì)象,在其Open事件中加入如下腳本:</p><p> // 設(shè)置數(shù)據(jù)庫(kù)連接參數(shù)</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> //連接數(shù)據(jù)庫(kù)</b></p
49、><p><b> connect;</b></p><p><b> //打開(kāi)啟動(dòng)窗口</b></p><p> open(w_strat)</p><p><b> sleep(3)</b></p><p><b> //打開(kāi)登陸窗口
50、</b></p><p> open(login)</p><p> 在應(yīng)用對(duì)象的Close事件中加入如下腳本</p><p><b> //斷開(kāi)數(shù)據(jù)庫(kù)連接</b></p><p> DISCONNECT USING SQLCA;</p><p><b> 4.2登
51、錄窗口</b></p><p> 在登錄按鈕的Clicked事件中加入如下腳本:</p><p><b> //定義兩個(gè)變量</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("錯(cuò)誤!","用戶名或密碼不能為空!")</p><
54、p> disconnect; //斷開(kāi)數(shù)據(jù)庫(kù)連接</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> //打開(kāi)圖書(shū)管理系統(tǒng)主界面&
55、lt;/p><p> close(parent)</p><p><b> //關(guān)閉登錄窗口</b></p><p><b> else</b></p><p> messagebox("錯(cuò)誤!","用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入!")</p>
56、<p> disconnect; //斷開(kāi)數(shù)據(jù)庫(kù)連接</p><p><b> end if</b></p><p><b> end if</b></p><p> 在取消按鈕Clicked事件中加入如下腳本:</p><p> close(parent)</p>
57、;<p><b> //關(guān)閉登錄窗口</b></p><p> 圖5-1圖書(shū)管理系統(tǒng)登錄窗口</p><p><b> 4.3創(chuàng)建主窗口</b></p><p> 1.創(chuàng)建MDI主窗口</p><p> 該窗口的名稱為“天運(yùn)學(xué)校圖書(shū)管理系統(tǒng)”類型為mdi。有一個(gè)菜單與之相連接
58、。窗口保存為index 。</p><p><b> 2.設(shè)置主窗口菜單</b></p><p> 在菜單畫面中設(shè)計(jì)應(yīng)用程序主窗口所連接的菜單mainmenu,該菜單的結(jié)構(gòu)如下圖所示。</p><p> 圖5-2圖書(shū)管理系統(tǒng)主窗口</p><p> 運(yùn)行時(shí)可以通過(guò)單擊主窗口左上方的下拉菜單來(lái)調(diào)用不同功能的模塊,本
59、程序的菜單共設(shè)置5個(gè)主菜單,13個(gè)子菜單項(xiàng)目。還可以通過(guò)菜單欄下的工具欄圖標(biāo)進(jìn)行系統(tǒng)的操作。</p><p> 在菜單項(xiàng)的clicked事件中完成的操作就是打開(kāi)某個(gè)固定窗口。因此在這里以一個(gè)為例介紹菜單項(xiàng)clicked事件的代碼,其它的類似。</p><p> 在“借還圖書(shū)”菜單項(xiàng)的clicked事件中加入如下代碼:</p><p> open(jiehuan
60、book)</p><p> 用于打開(kāi)“借還圖書(shū)”窗口。</p><p><b> 4.4借還圖書(shū)窗口</b></p><p> 在借還圖書(shū)窗口jiehuanbook中主要完成圖書(shū)的借閱和歸還操作。首先,建立三個(gè)數(shù)據(jù)窗口huiyuan、jiehuanbook、d_tushu,其數(shù)據(jù)源分別為會(huì)員表、借書(shū)還書(shū)表和圖書(shū)表。其次,在窗口中添加三個(gè)
61、數(shù)據(jù)控件,并將其分別與數(shù)據(jù)窗口對(duì)象huiyuan、jiehuanbook、d_tushu相關(guān)聯(lián);兩個(gè)單行編輯框(用來(lái)輸入會(huì)員編號(hào)、圖書(shū)編號(hào));兩個(gè)靜態(tài)文本邊框(用來(lái)提示輸入會(huì)員編號(hào)和圖書(shū)編號(hào));四個(gè)按鈕(用來(lái)實(shí)現(xiàn)借書(shū)、還書(shū)、顯示信息和關(guān)閉)。</p><p> 圖5-3圖書(shū)管理系統(tǒng)借還圖書(shū)窗口</p><p> 在借還圖書(shū)窗口的借書(shū)按鈕的clicked事件中加入如下代碼:</p&
62、gt;<p> //顯示特定會(huì)員和圖書(shū)的借閱記錄</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.setfilter("會(huì)員編號(hào)='"+trim(sle_1.text)+"'")</p><p> dw_1.retrieve()</
63、p><p> dw_2.settransobject(sqlca)</p><p> dw_2.setfilter("會(huì)員編號(hào)='"+trim(sle_1.text)+"' and 圖書(shū)編號(hào)='"+trim(sle_2.text)+"'")</p><p> dw_2.re
64、trieve()</p><p> dw_3.settransobject(sqlca)</p><p> dw_3.setfilter("圖書(shū)編號(hào)='"+trim(sle_2.text)+"'" )</p><p> dw_3.retrieve()</p><p> //得到記
65、錄的總行書(shū)</p><p><b> int m,n,i</b></p><p> //得到借書(shū)記錄總行數(shù)和圖書(shū)當(dāng)前行號(hào)</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.庫(kù)存[n]>0 and dw_1.object.鎖定[i]="否" then</p><p><b> //插入借書(shū)記錄</b></p><
67、p> dw_2.insertrow(m+1)</p><p> dw_2.scrolltorow(m+1)</p><p> dw_2.object.會(huì)員編號(hào)[m+1]=sle_1.text</p><p> dw_2.object.圖書(shū)編號(hào)[m+1]=sle_2.text</p><p> dw_2.object.借書(shū)日期[
68、m+1]= string(today())</p><p> dw_2.object.備注[m+1]= "未歸還"</p><p><b> //庫(kù)存減1</b></p><p> dw_3.object.庫(kù)存[n]=dw_3.object.庫(kù)存[n]-1</p><p><b>
69、//更新數(shù)據(jù)庫(kù)</b></p><p> if dw_2.update()=1 and dw_3.update()=1 then</p><p><b> commit;</b></p><p> messagebox("成功!","更新數(shù)據(jù)庫(kù)成功!")</p>&l
70、t;p><b> else</b></p><p><b> rollback;</b></p><p> messagebox("失??!","更新數(shù)據(jù)庫(kù)失??!")</p><p><b> end if</b></p><p&
71、gt;<b> else</b></p><p> //提示用戶不能借書(shū)的原因</p><p> messagebox("錯(cuò)誤!","庫(kù)存不足或您的卡號(hào)被鎖定,會(huì)員或圖書(shū)不存在,無(wú)法借閱!",exclamation!,ok!,2)</p><p><b> end if</b>
72、;</p><p><b> end if</b></p><p> 在借還圖書(shū)窗口的還書(shū)按鈕的clicked事件中加入如下代碼:</p><p> //顯示特定會(huì)員和圖書(shū)的借閱記錄</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.se
73、tfilter("會(huì)員編號(hào)='"+trim(sle_1.text)+"'")</p><p> dw_1.retrieve()</p><p> dw_2.settransobject(sqlca)</p><p> dw_2.setfilter("會(huì)員編號(hào)='"+trim(s
74、le_1.text)+"' and 圖書(shū)編號(hào)='"+trim(sle_2.text)+"' and 備注='未歸還'")</p><p> dw_2.retrieve()</p><p> dw_3.settransobject(sqlca)</p><p> dw_3.setfi
75、lter("圖書(shū)編號(hào)='"+trim(sle_2.text)+"'" )</p><p> dw_3.retrieve()</p><p> //判斷哪一行為還書(shū)記錄</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> //找到還書(shū)記錄后修改記錄</p><p> dw_2.object.還書(shū)日期[n]= string(today())</p><p> dw_2.object.備注[n]= "已歸還"</p
77、><p> //將會(huì)員還的書(shū)庫(kù)存加1</p><p><b> int m</b></p><p> m=dw_3.getrow()</p><p> dw_3.object.庫(kù)存[m]=dw_3.object.庫(kù)存[m]+1</p><p> //判斷會(huì)員是所借圖書(shū)是否超期超期</p
78、><p> if int(daysafter(date(dw_2.object.借書(shū)日期[n]),date(dw_2.object.還書(shū)日期[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("超期!","圖書(shū)已還,所借圖書(shū)已經(jīng)超期,卡號(hào)被鎖定!",exclamation!,ok!,2)</p><p> dw_2.object.備注[n]= "已歸還,超期"</p><p><b> end if<
80、;/b></p><p><b> //更新數(shù)據(jù)庫(kù)</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("成功!","更新數(shù)據(jù)庫(kù)成功!")</p><p><b> else</b></p><p><b> rollback;</b></p><p> messagebox("失??!","更新數(shù)據(jù)庫(kù)失??!")</p&g
82、t;<p><b> end if</b></p><p><b> else</b></p><p> messagebox("錯(cuò)誤!","沒(méi)有借書(shū)記錄!",exclamation!,ok!,2)</p><p> 在借還圖書(shū)窗口的顯示信息按鈕的clicked
83、事件中加入如下代碼:</p><p> //啟動(dòng)數(shù)據(jù)窗體連接事務(wù)</p><p> if sle_2.text="" then</p><p> //顯示該會(huì)員的借書(shū)記錄</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.setfilter
84、("會(huì)員編號(hào)='"+trim(sle_1.text)+"'")</p><p> dw_1.retrieve()</p><p> dw_2.settransobject(sqlca)</p><p> dw_2.setfilter("會(huì)員編號(hào)='"+trim(sle_1.te
85、xt)+"'")</p><p> dw_2.retrieve()</p><p> dw_3.settransobject(sqlca)</p><p> dw_3.setfilter("圖書(shū)編號(hào)='"+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> //顯示該書(shū)的借閱記錄</p><p> dw_1.settransobject(sqlca)</p>
87、<p> dw_1.setfilter("會(huì)員編號(hào)='"+trim(sle_1.text)+"'")</p><p> dw_1.retrieve()</p><p> dw_2.settransobject(sqlca)</p><p> dw_2.setfilter("圖書(shū)編號(hào)=
88、'"+trim(sle_2.text)+"'")</p><p> dw_2.retrieve()</p><p> dw_3.settransobject(sqlca)</p><p> dw_3.setfilter("圖書(shū)編號(hào)='"+trim(sle_2.text)+"
89、39;" )</p><p> dw_3.retrieve()</p><p><b> else</b></p><p> //顯示特定會(huì)員和圖書(shū)的借閱記錄</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.setfilte
90、r("會(huì)員編號(hào)='"+trim(sle_1.text)+"'")</p><p> dw_1.retrieve()</p><p> dw_2.settransobject(sqlca)</p><p> dw_2.setfilter("會(huì)員編號(hào)='"+trim(sle_1.t
91、ext)+"' and 圖書(shū)編號(hào)='"+trim(sle_2.text)+"'")</p><p> dw_2.retrieve()</p><p> dw_3.settransobject(sqlca)</p><p> dw_3.setfilter("圖書(shū)編號(hào)='"
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圖書(shū)檢索窗口</b&g
93、t;</p><p> 圖書(shū)檢索窗口主要實(shí)現(xiàn)查詢數(shù)據(jù)窗口中滿足條件的記錄,可實(shí)現(xiàn)精確和模糊查找</p><p> 。圖5-4圖書(shū)管理系統(tǒng)查詢窗口</p><p> 在此窗口的檢索信息按鈕的clicked事件中加入如下代碼:</p><p> dw_1.dataobject="d_tushubiao"</p&g
94、t;<p> dw_1.settransobject(sqlca)</p><p> //取消所有過(guò)濾條件</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 "圖書(shū)編號(hào)"</p><p> dw_1.setfilter("圖書(shū)編號(hào)='"+sle_1.text+"'")</p><p><b> case "書(shū)名"&
96、lt;/b></p><p> dw_1.setfilter("書(shū)名='"+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 "圖書(shū)編號(hào)"</p><p> dw_1.setfilter("圖書(shū)編號(hào) like"+"'%"+s
99、le_1.text+"%'")</p><p><b> case "書(shū)名"</b></p><p> dw_1.setfilter("書(shū)名 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() //檢索數(shù)據(jù)</p><
102、p> 會(huì)員信息查詢與圖書(shū)信息查詢類似,不再重復(fù)。另外完成這些功能后繼續(xù)完成用戶管理、圖書(shū)庫(kù)存查詢、錄入信息、打印等功能的創(chuàng)建,方法與前面兩個(gè)窗口類似,這里不詳述。</p><p><b> 五結(jié)論</b></p><p> 本系統(tǒng)實(shí)現(xiàn)了對(duì)圖書(shū)基本信息的登記,查詢及管理,為學(xué)校管理提供了服務(wù)。在開(kāi)發(fā)過(guò)程中,為了提高用戶使用軟件的熱情,并刺激他們的積極性,本著
103、美觀、適用、方便用戶的原則,盡最大努力爭(zhēng)做到安全可靠、操作簡(jiǎn)便、界面友好,但是,由于時(shí)間倉(cāng)促和我現(xiàn)有知識(shí)的不足其中仍有一些不足之處。</p><p> 通過(guò)這一次的畢業(yè)設(shè)計(jì),我積累了許多開(kāi)發(fā)軟件方面的經(jīng)驗(yàn)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 袁 方 主編 郗亞輝、陳昊 編著.《數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)設(shè)計(jì)——理
104、論與實(shí)踐教程》.(第二版),2005.3</p><p> [2] 甘仞初 主編《信息系統(tǒng)開(kāi)發(fā)》北京:經(jīng)濟(jì)科學(xué)出版社,2000.6</p><p> [3] 丁寶康 主編《數(shù)據(jù)庫(kù)原理》北京:經(jīng)濟(jì)科學(xué)出版社,2000.3 </p><p> [4] 陳禹、方美琪 主編.軟件開(kāi)發(fā)工具. 北京:經(jīng)濟(jì)出版社,2000.2</p><p>
105、 [5] 何旭洪、余建英 著.《PowerBuilder數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航》.人民郵電出版社,2004</p><p> [6] 羅超理、李萬(wàn)紅 著.《管理信息系統(tǒng)原理與應(yīng)用》清華大學(xué)出版社,2002</p><p> [7] 艾德才 著.《計(jì)算機(jī)信息管理基礎(chǔ)》中國(guó)水利水電出版社,2001</p><p> [8] Jeff Robin Mana
106、gement of Information System 機(jī)械工業(yè)出版社,2002</p><p> [9] 薩師煊、王珊 著.《數(shù)據(jù)庫(kù)系統(tǒng)概論》高等教育出版社,2000</p><p> [10] 徐松林、路斌、王冬春 著.《PowerBuilder數(shù)據(jù)庫(kù)應(yīng)用開(kāi)發(fā)教程》清華大學(xué)出版社,2003</p><p> [11] 郭興成 著.《PowerBu
107、ilder教程》北京希望電子出版社,2002</p><p> [12] 王志勇、阮堅(jiān)、王鵬 著.《用PowerBuilder開(kāi)發(fā)小型數(shù)據(jù)庫(kù)》人民郵電出版社,2002</p><p><b> 附 錄</b></p><p> 在借還圖書(shū)窗口的借書(shū)按鈕的clicked事件中加入如下代碼:</p><p> /
108、/顯示特定會(huì)員和圖書(shū)的借閱記錄</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.setfilter("會(huì)員編號(hào)='"+trim(sle_1.text)+"'")</p><p> dw_1.retrieve()</p><p>
109、 dw_2.settransobject(sqlca)</p><p> dw_2.setfilter("會(huì)員編號(hào)='"+trim(sle_1.text)+"' and 圖書(shū)編號(hào)='"+trim(sle_2.text)+"'")</p><p> dw_2.retrieve()</p>
110、;<p> dw_3.settransobject(sqlca)</p><p> dw_3.setfilter("圖書(shū)編號(hào)='"+trim(sle_2.text)+"'" )</p><p> dw_3.retrieve()</p><p> //得到記錄的總行書(shū)</p>
111、<p><b> int m,n,i</b></p><p> //得到借書(shū)記錄總行數(shù)和圖書(shū)當(dāng)前行號(hào)</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.庫(kù)存[n]>0 and dw_1.object.鎖定[i]="否" then</p><p><b> //插入借書(shū)記錄</b></p><p> dw_2.inser
113、trow(m+1)</p><p> dw_2.scrolltorow(m+1)</p><p> dw_2.object.會(huì)員編號(hào)[m+1]=sle_1.text</p><p> dw_2.object.圖書(shū)編號(hào)[m+1]=sle_2.text</p><p> dw_2.object.借書(shū)日期[m+1]= string(toda
114、y())</p><p> dw_2.object.備注[m+1]= "未歸還"</p><p><b> //庫(kù)存減1</b></p><p> dw_3.object.庫(kù)存[n]=dw_3.object.庫(kù)存[n]-1</p><p><b> //更新數(shù)據(jù)庫(kù)</b>
115、</p><p> if dw_2.update()=1 and dw_3.update()=1 then</p><p><b> commit;</b></p><p> messagebox("成功!","更新數(shù)據(jù)庫(kù)成功!")</p><p><b>
116、 else</b></p><p><b> rollback;</b></p><p> messagebox("失敗!","更新數(shù)據(jù)庫(kù)失??!")</p><p><b> end if</b></p><p><b> els
117、e</b></p><p> //提示用戶不能借書(shū)的原因</p><p> messagebox("錯(cuò)誤!","庫(kù)存不足或您的卡號(hào)被鎖定,會(huì)員或圖書(shū)不存在,無(wú)法借閱!",exclamation!,ok!,2)</p><p><b> end if</b></p><
118、p><b> end if</b></p><p> 在借還圖書(shū)窗口的還書(shū)按鈕的clicked事件中加入如下代碼:</p><p> //顯示特定會(huì)員和圖書(shū)的借閱記錄</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.setfilter("會(huì)員編
119、號(hào)='"+trim(sle_1.text)+"'")</p><p> dw_1.retrieve()</p><p> dw_2.settransobject(sqlca)</p><p> dw_2.setfilter("會(huì)員編號(hào)='"+trim(sle_1.text)+"
120、' and 圖書(shū)編號(hào)='"+trim(sle_2.text)+"' and 備注='未歸還'")</p><p> dw_2.retrieve()</p><p> dw_3.settransobject(sqlca)</p><p> dw_3.setfilter("圖書(shū)編號(hào)=&
121、#39;"+trim(sle_2.text)+"'" )</p><p> dw_3.retrieve()</p><p> //判斷哪一行為還書(shū)記錄</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> //找到還書(shū)記錄后修改記錄</p><p> dw_2.object.還書(shū)日期[n]= string(today())</p><p> dw_2.object.備注[n]= "已歸還"</p><p>
123、//將會(huì)員還的書(shū)庫(kù)存加1</p><p><b> int m</b></p><p> m=dw_3.getrow()</p><p> dw_3.object.庫(kù)存[m]=dw_3.object.庫(kù)存[m]+1</p><p> //判斷會(huì)員是所借圖書(shū)是否超期超期</p><p>
124、if int(daysafter(date(dw_2.object.借書(shū)日期[n]),date(dw_2.object.還書(shū)日期[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("超期!","圖書(shū)已還,所借圖書(shū)已經(jīng)超期,卡號(hào)被鎖定!",exclamation!,ok!,2)</p><p> dw_2.object.備注[n]= "已歸還,超期"</p><p><b> end if</b></p>
126、<p><b> //更新數(shù)據(jù)庫(kù)</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;,"更新數(shù)據(jù)庫(kù)成功!")</p><p><b> else</b></p><p><b> rollback;</b></p><p> messagebox("失??!","更新數(shù)據(jù)庫(kù)失??!")</p><p><
128、b> end if</b></p><p><b> else</b></p><p> messagebox("錯(cuò)誤!","沒(méi)有借書(shū)記錄!",exclamation!,ok!,2)</p><p> 在借還圖書(shū)窗口的顯示信息按鈕的clicked事件中加入如下代碼:</p&
129、gt;<p> //啟動(dòng)數(shù)據(jù)窗體連接事務(wù)</p><p> if sle_2.text="" then</p><p> //顯示該會(huì)員的借書(shū)記錄</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.setfilter("會(huì)員編號(hào)='
130、"+trim(sle_1.text)+"'")</p><p> dw_1.retrieve()</p><p> dw_2.settransobject(sqlca)</p><p> dw_2.setfilter("會(huì)員編號(hào)='"+trim(sle_1.text)+"'&q
131、uot;)</p><p> dw_2.retrieve()</p><p> dw_3.settransobject(sqlca)</p><p> dw_3.setfilter("圖書(shū)編號(hào)='"+trim(sle_2.text)+"'" )</p><p> dw_3.ret
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)圖書(shū)管理系統(tǒng)畢業(yè)論文
- 計(jì)算機(jī)圖書(shū)管理系統(tǒng)畢業(yè)論文
- 計(jì)算機(jī)圖書(shū)管理系統(tǒng)畢業(yè)論文
- 計(jì)算機(jī)圖書(shū)管理系統(tǒng)畢業(yè)論文
- 計(jì)算機(jī)圖書(shū)管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文——計(jì)算機(jī)圖書(shū)管理系統(tǒng)
- 計(jì)算機(jī)專業(yè)畢業(yè)論文---學(xué)校圖書(shū)管理系統(tǒng)的開(kāi)發(fā)
- 計(jì)算機(jī)專業(yè)畢業(yè)論文-圖書(shū)管理系統(tǒng)
- 計(jì)算機(jī)圖書(shū)管理系統(tǒng)畢業(yè)論文.doc
- 計(jì)算機(jī)專業(yè)畢業(yè)論文圖書(shū)管理系統(tǒng)
- 計(jì)算機(jī)專業(yè)畢業(yè)論文-圖書(shū)管理系統(tǒng)
- 計(jì)算機(jī)專業(yè)畢業(yè)論文---基于jsp的圖書(shū)管理系統(tǒng)
- 計(jì)算機(jī)專業(yè)畢業(yè)論文-圖書(shū)管理系統(tǒng)
- 計(jì)算機(jī)圖書(shū)管理系統(tǒng)畢業(yè)論文.doc
- 計(jì)算機(jī)專業(yè)畢業(yè)論文-圖書(shū)管理系統(tǒng)
- 畢業(yè)論文——計(jì)算機(jī)學(xué)院圖書(shū)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 計(jì)算機(jī)信息管理畢業(yè)論文---計(jì)算機(jī)圖書(shū)管理系統(tǒng)
- 計(jì)算機(jī)數(shù)據(jù)庫(kù)設(shè)計(jì)畢業(yè)論文--學(xué)校圖書(shū)管理系統(tǒng)的開(kāi)發(fā)
- 計(jì)算機(jī)java畢業(yè)論文---學(xué)校圖書(shū)管理系統(tǒng)
- 計(jì)算機(jī)畢業(yè)論文--網(wǎng)上圖書(shū)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論