圖書管理系統(tǒng)論文_第1頁
圖書管理系統(tǒng)論文_第2頁
圖書管理系統(tǒng)論文_第3頁
圖書管理系統(tǒng)論文_第4頁
圖書管理系統(tǒng)論文_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、圖書管理系統(tǒng)的實現(xiàn)及應(yīng)用【摘要】本文介紹了數(shù)據(jù)庫管理系統(tǒng)的基本設(shè)計方法,詳細(xì)闡述了整個應(yīng)用系統(tǒng)的設(shè)計思路,并對各部分設(shè)計周期進(jìn)行了詳盡的分析,最終達(dá)成了一個完整的設(shè)計方案;在文章的最后,還根據(jù)數(shù)據(jù)庫系統(tǒng)的調(diào)試結(jié)果,提出了可以進(jìn)一步改進(jìn)的部分,以便在投入實際應(yīng)用后系統(tǒng)可以更加穩(wěn)定可靠的工作。 本文的數(shù)據(jù)庫系統(tǒng)是一個圖書管理系統(tǒng),包括管理員界面和借閱者界面,分別有添加、刪除、查閱等功能?!娟P(guān)鍵字】圖書管理系統(tǒng) 圖書管理系統(tǒng)的實現(xiàn) 數(shù)據(jù)庫系統(tǒng) 目 錄第一章、圖書管理系統(tǒng)設(shè)計概述.1.1統(tǒng)一開發(fā)的背景及設(shè)計目標(biāo).1.2系統(tǒng)設(shè)計原則第三章、圖書管理系統(tǒng)具體設(shè)計2.1 圖書管理系統(tǒng)總體規(guī)劃2.2 系統(tǒng)設(shè)計

2、.2.3需求分析.2.4概念設(shè)計.2.5邏輯設(shè)計.第二章、數(shù)據(jù)庫系統(tǒng)設(shè)計3.1數(shù)據(jù)庫設(shè)計概述3.2數(shù)據(jù)庫設(shè)計周期第四章、數(shù)據(jù)庫實現(xiàn)4.1數(shù)據(jù)庫的建立.4.2數(shù)據(jù)庫應(yīng)用程序的實現(xiàn)4.3圖書管理系統(tǒng)的調(diào)試4.4裝入圖書數(shù)據(jù)4.5圖書管理系統(tǒng)的實現(xiàn).4.6圖書管理系統(tǒng)的編譯和發(fā)行第五章、結(jié)束語參考文獻(xiàn)第一章、圖書管理系統(tǒng)設(shè)計概述1.1統(tǒng)一開發(fā)的背景及設(shè)計目標(biāo) 近年來,隨著圖書館規(guī)模的不斷擴大,圖書數(shù)量也相應(yīng)的增加,有關(guān)圖書的各種信息量也成倍增加,面對著龐大的信息量,傳統(tǒng)的人工方式管理會導(dǎo)致圖書館管理上的混亂,人力與物力過多浪費,圖書館管理費用的增加,從而使圖書館的負(fù)擔(dān)過重,影響整個圖書館的運作和控制

3、管理,因此,必須制定一套合理、有效,規(guī)范和實用的圖書管理系統(tǒng),對圖書資料進(jìn)行集中統(tǒng)一的管理。系統(tǒng)開發(fā)的總的設(shè)計目標(biāo)是實現(xiàn)圖書管理的系統(tǒng)化、規(guī)范化和自動化,實現(xiàn)對圖書資料的集中統(tǒng)一的管理。1.2系統(tǒng)設(shè)計原則1.2.1實用性原則:確保系統(tǒng)具有良好的系統(tǒng)性能,友好的用戶界面,較高的處理效率,便于使用和維護(hù),并采用成熟的技術(shù)。1.2.2先進(jìn)性原則:盡量采用先進(jìn)而且成熟的技術(shù),使系統(tǒng)具有較高的技術(shù)水平和較長的生命周期。1.2.3開放性、安全性、可靠性原則。1.2.4兼容性原則:對于所選硬件系統(tǒng)及平臺,能很好地適應(yīng)開發(fā)和使用的需要。第二章 圖書管理系統(tǒng)具體設(shè)計2.1圖書管理系統(tǒng)總體規(guī)劃圖書館在正常運營中總

4、是面對大量的讀書信息、書記信息以及兩者相互作用產(chǎn)生的借書信息、還書信息。因此需要對讀者資源、書籍資源、借書信息、還書信息進(jìn)行管理,及時了解各個環(huán)節(jié)中信息的變更,有利于提高管理效率。對于數(shù)據(jù)庫系統(tǒng),規(guī)劃工作是十分必要的。規(guī)劃的好壞將直接影響到整個圖書管理系統(tǒng)的成功與否,數(shù)據(jù)庫設(shè)計中的規(guī)劃階段的主要任務(wù)是建立數(shù)據(jù)庫的必要性及可行性分析,確定數(shù)據(jù)庫系統(tǒng)在整個圖書管理系統(tǒng)的地位。根據(jù)圖書管理數(shù)據(jù)庫對技術(shù)人員和管理人員的水平、數(shù)據(jù)采集和管理活動以及借閱者的計算機素質(zhì)的要求;數(shù)據(jù)庫技術(shù)對計算機系統(tǒng)的軟硬件的要求。決定把數(shù)據(jù)庫管理系統(tǒng)設(shè)計成為一個綜合的數(shù)據(jù)庫。此數(shù)據(jù)庫包括所有操作人員的所有活動功能。因為,此

5、圖書管理系統(tǒng)應(yīng)用界面較簡單、功能單一。所以,用一個綜合的數(shù)據(jù)庫就能滿足圖書管理要求,而且實現(xiàn)容易。因此,圖書管理系統(tǒng)可以按照用戶權(quán)限和實現(xiàn)功能的不同分為兩部分:外部學(xué)生對數(shù)據(jù)庫的查閱訪問和內(nèi)部管理人員對圖書記錄的管理維護(hù)。但是,這兩部分都調(diào)用的是同一數(shù)據(jù)庫,只不過內(nèi)部管理人員能實現(xiàn)所有管理功能,而外部學(xué)生訪問數(shù)據(jù)庫時,一些功能被屏蔽,只能進(jìn)行查閱。2.2系統(tǒng)設(shè)計系統(tǒng)開發(fā)的總體任務(wù)是實現(xiàn)各種信息的系統(tǒng)化、規(guī)范化和自動化。系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務(wù)的基礎(chǔ)上完成。該圖書管理信息系統(tǒng)需要完成功能主要有:l 有關(guān)讀者類別標(biāo)準(zhǔn)的制定、類別信息的輸入,包括類別編號、類別名稱、借書數(shù)量、借書期限、有效

6、期限、備注等。l 讀者類別信息的修改、查詢等。l 讀者基本信息的輸入,包括讀者編號、讀者姓名、讀者類別、讀者性別、工作單位、家庭住址、電話號碼、電子郵件地址、辦證日期、備注等。l 讀者基本信息的查詢、修改,包括讀者編號、讀者姓名、讀者類別、讀者性別、工作單位、家庭住址、電話號碼、電子郵件地址、辦證日期、備注等。l 圖書類別標(biāo)準(zhǔn)的制定、類別信息的輸入,包括類別編號、類別名稱、關(guān)鍵詞、備注信息等。l 圖書類別的查詢、修改,包括類別編號、類別名稱、關(guān)鍵詞、摘要等。l 圖書信息的輸入,包括圖書編號、圖書名稱、圖書類別、作者姓名、出版社名稱、出版日期、圖書頁數(shù)、關(guān)鍵詞、登記日期、備注信息等。l 圖書信息

7、的查詢、修改,包括圖書編號、圖書名稱、圖書類別、作者姓名、出版社名稱、出版日期、圖書頁數(shù)、關(guān)鍵詞、登記日期、摘要等。l 借書信息的輸入,包括借書信息編號、讀者編號、讀者姓名、圖書編號、圖書名稱、借書日期、摘要等。l 還書信息的輸入、查詢和修改,包括還書信息編號、讀者編號、讀者姓名、圖書編號、圖書名稱等。2.3 需求分析2.3.1需求描述與分析設(shè)計一個性能良好的數(shù)據(jù)庫系統(tǒng),明確應(yīng)用環(huán)境對系統(tǒng)的要求是首要的和最基本的。特別是數(shù)據(jù)應(yīng)用非常廣泛,非常復(fù)雜,要是事先沒有對信息進(jìn)行充分和細(xì)致的分析,這種設(shè)計就很難取得成功。通過需求分析階段對圖書管理系統(tǒng)的整個應(yīng)用情況作全面的、詳細(xì)的調(diào)查,確定圖書管理的目標(biāo)

8、,收集支持系統(tǒng)總的設(shè)計目標(biāo)的基礎(chǔ)數(shù)據(jù)和對這些數(shù)據(jù)的要求,確定用戶的需求,并把這些寫成用戶和數(shù)據(jù)庫設(shè)計者都能夠接受的文檔。事實上,需求分析是數(shù)據(jù)庫開發(fā)中最難的任務(wù)之一。因為,第一,系統(tǒng)本身是可變的,用戶的需求必須不斷調(diào)整,使之與這種變化相適應(yīng)。第二,用戶很難說清某部分工作的功能處理過程。所以,設(shè)計人員必須認(rèn)識到:在整個需求分析以及系統(tǒng)設(shè)計過程中,用戶參與的重要性,通過各種方法展開調(diào)查分析。2.3.2需求分析的步驟需求分析大致可分為三步來完成,即需求信息的收集、分析整理和評審?fù)ㄟ^。(1)需求信息的收集 需求信息的收集又稱為系統(tǒng)調(diào)查。為了充分地了解用戶可能提出的要求,在調(diào)查研究之前,要做好充分的準(zhǔn)備

9、工作,要了解調(diào)查的目的、調(diào)查的內(nèi)容和調(diào)查的方式。1) 調(diào)查的目的 首先,要了解組織的機構(gòu)設(shè)置,主要管理活動和職能。其次,要確定組織的目標(biāo),大致管理流程和任務(wù)范圍劃分。因此,圖書管理系統(tǒng)主要是通過對現(xiàn)有的圖書管理系統(tǒng)進(jìn)行考察、研究。并且通過和圖書管理人員、學(xué)生交流來完善管理功能。2) 調(diào)查的內(nèi)容外部要求:信息的性質(zhì),響應(yīng)的時間、頻度和如何發(fā)生的規(guī)則,以及圖書管理的要求,安全性及完整性要求。管理的現(xiàn)狀:即圖書管理信息的種類,信息流程,信息的處理方式,各種圖書服務(wù)工作過程。組織機構(gòu):了解圖書管理機構(gòu)的作用、現(xiàn)狀、存在的問題,及是否適應(yīng)計算機管理。3) 調(diào)查方式通過對圖書管理人員的訪問、交談可獲得圖書

10、管理高層的、內(nèi)部的管理需求,以及圖書管理的管理目標(biāo)、未來圖書管理發(fā)展變化趨勢和長遠(yuǎn)規(guī)劃的有關(guān)信息。并且,還可通過具體借閱活動,了解借閱的流程、借閱的控制方式、日常管理信息,對圖書管理系統(tǒng)有一個深刻得了解。(2)需求信息的分析整理要想把收集到的信息(如文件、圖表、票據(jù)、筆記)轉(zhuǎn)化為下一階段設(shè)計工作可用的形式信息,必須對需求信息做分析整理的工作。2.3.3數(shù)據(jù)庫需求分析用戶的需求具體體現(xiàn)在各種信息的提供、保存、更新和查詢,這就要求數(shù)據(jù)庫結(jié)構(gòu)能充分滿足各種信息的輸出和輸入。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)處理的流程,組成一份詳盡的數(shù)據(jù)字典,為后面的具體設(shè)計打下基礎(chǔ)。書籍信息返回書籍類別設(shè)置書籍信息管理

11、書籍登記信息管理基本信息錄入書籍類別信息管理基本信息錄入借閱信息管理讀者信息返回借閱信息錄入讀者信息管理讀者登記信息管理基本信息錄入讀者種類信息管理讀者種類設(shè)置基本信息錄入在詳細(xì)調(diào)查有關(guān)圖書管理信息需求的基礎(chǔ)上,得到如圖所示的本系統(tǒng)所處理的數(shù)據(jù)流程圖。針對一般圖書館管理信息系統(tǒng)的需求,通過對圖書管理工作過程的內(nèi)容和數(shù)據(jù)流程分析,設(shè)計入下所述的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu):l 讀者類別信息,包括的數(shù)據(jù)項有:類別編號、類別名稱、借書數(shù)量、借書期限、有效期限、備注等。l 讀者信息,包括的數(shù)據(jù)項有:讀者編號、讀者姓名、讀者類別、讀者性別、工作單位、家庭住址、電話號碼、電子郵件地址、辦證日期、備注等。l 書籍類別信

12、息,包括的數(shù)據(jù)項有:類別編號、類別名稱、關(guān)鍵詞、備注信息等。l 書籍信息,包括的數(shù)據(jù)項有:書籍編號、書記名稱、書籍類別、作者姓名、出版社名稱、出版日期、書籍頁數(shù)、關(guān)鍵詞、登記日期、備注信息等。l 借閱信息,包括的數(shù)據(jù)項有:借閱信息編號、讀者編號、讀者姓名、書籍編號、書籍名稱、借書日期、還書日期、備注信息等。有了上面的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)項和數(shù)據(jù)流程,我們就能進(jìn)行下面的數(shù)據(jù)庫設(shè)計。3.4 概念設(shè)計 得到上面的數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)以后,就可以設(shè)計出能夠滿足用戶需求的各種實體,以及它們之間的關(guān)系,為后面的邏輯結(jié)構(gòu)設(shè)計打下基礎(chǔ)。 本實例根據(jù)上面的設(shè)計規(guī)劃出的實體有:讀者類別信息實體、讀者信息實體、書籍類別信息實

13、體、書籍信息實體、借閱信息實體。 1 讀者類別信息實體E-R圖,如圖(1)所示,讀者信息實體E-R圖,如圖(2)所示。 讀者類別信息實體種類編號借書期限種類名稱借書數(shù)量 圖(1)讀者類別信息實體E-R圖書籍類別信息實體讀者編號讀者類別讀者名稱辦證日期 圖(2)讀者信息實體E-R圖2書籍類別信息實體E-R圖,如圖(3)所示,書籍信息實體E-R圖,如圖(4)所示。書籍類別信息實體類別編號關(guān)鍵詞類別名稱出版社 圖(3)書籍類別信息實體E-R圖書籍類別信息實體書脊編號書籍類別書脊名稱出版社 圖(4)書籍信息實體E-R圖3借閱信息實體E-R圖,如圖(5)所示。讀者類別信息實體借閱信息編號 借書日期讀者信

14、息書籍信息 圖(5)借閱信息實體E-R圖4實體之間相互關(guān)系的E-R圖,如圖(6)所示書籍信息管理書籍信息登記書籍類別信息借閱信息管理借閱書籍讀者信息管理讀者信息登記讀者類別信息圖(6)實體之間關(guān)系的E-R圖3.5邏輯設(shè)計圖書館管理系統(tǒng)數(shù)據(jù)庫中各個表的設(shè)計結(jié)果如下面各表所示。每個表格表示在數(shù)據(jù)庫中的一個表。表1-1為書籍基本信息表。表1-1 booklnfo 圖書類別信息表列名數(shù)據(jù)類型可否為空寬度說明BookidNumericNot null8圖書編號IsbnCharnull30書號TitleCharnull40名稱PublishdateDateNull出版日期AuthorcharNull30作

15、者wordsintegernull字?jǐn)?shù)(千字)publisheridNumericNull4出版社IDnumberIntegerNull印刷冊數(shù)priceMoneyNull定價KeywordsCharNull30關(guān)鍵字abstractvarcharnull400摘要表1-2為分類信息表。表1-2 bookclass分類信息表列名數(shù)據(jù)類型可否為空寬度說明classidnumric null8類別編號classnamecharNot null30類別名稱表1-3為出版社信息表。表1-3 publishlnfo 出版社信息表列名數(shù)據(jù)類型可否為空寬度說明PublisheridNumericNot nu

16、ll4出版社IDPublishercharnull30出版社名稱Addresscharnull50出版社地址TelcharNull16電話FaxcharNull16傳真PostcodeNumericNull6郵政編碼httpcharnull16網(wǎng)址表1-4為借閱信息表。表1-4 loam 借閱信息表列名數(shù)據(jù)類型可否為空寬度說明BookidNumericNot null8圖書編號Stud_idNumericNot null6學(xué)生IDLoandateDate null借書日期ReturnDate Null還書日期FineMoneyNull罰金delflagtinyintNull刪除標(biāo)志第三章 數(shù)據(jù)

17、庫系統(tǒng)設(shè)計3.1數(shù)據(jù)庫設(shè)計概述 計算機信息系統(tǒng)以數(shù)據(jù)庫為核心,在數(shù)據(jù)庫管理系統(tǒng)的支持下,進(jìn)行信息的收集、整理、存儲、檢索、更新、加工、統(tǒng)計和傳播等操作。 對于數(shù)據(jù)庫應(yīng)用開發(fā)人員來說,為使現(xiàn)實世界的信息流計算機話,并對計算機話的信息進(jìn)行各種操作,就是如何利用數(shù)據(jù)庫管理系統(tǒng)、系統(tǒng)軟件和相關(guān)硬件系統(tǒng),將用戶的要求轉(zhuǎn)化成有效的數(shù)據(jù)結(jié)構(gòu),并使數(shù)據(jù)庫結(jié)構(gòu)易于實現(xiàn)用戶新的要求的過程。 確切的說,數(shù)據(jù)庫設(shè)計是指對于一個給定的應(yīng)用環(huán)境,提供一個確定最優(yōu)數(shù)據(jù)模型與處理模式的邏輯設(shè)計,以及一個確定數(shù)據(jù)庫存儲結(jié)構(gòu)與存取方法的物理設(shè)計,建立起既能反映現(xiàn)實世界信息和信息聯(lián)系,滿足用戶數(shù)據(jù)要求和加工要求,有能被某個數(shù)據(jù)庫管

18、理系統(tǒng)所接受,同時能實現(xiàn)系統(tǒng)目標(biāo),并有效存取數(shù)據(jù)的數(shù)據(jù)庫。 3.2數(shù)據(jù)庫設(shè)計周期 根據(jù)軟件工程的思想,數(shù)據(jù)庫設(shè)計的周期可以劃分為六個階段:(1) 規(guī)劃階段確定開發(fā)的總目標(biāo),給出計劃開發(fā)的軟件系統(tǒng)的功能、性能、可靠性以及接等方面的設(shè)想。 (2) 需求分析階段認(rèn)真細(xì)致地了解用戶對數(shù)據(jù)的加工要求,確定系統(tǒng)的功能與邊界。本階段的最終結(jié)果,提供一個可作為設(shè)計基礎(chǔ)的系統(tǒng)說明書,包括對軟硬件環(huán)境的要求和一整套完善的數(shù)據(jù)流程圖。(3) 設(shè)計階段l 把需求分析階段所確定的功能細(xì)化,主要工作是概念設(shè)計階段、邏輯設(shè)計階段、物理設(shè)計階段,然后,對每個階段內(nèi)部設(shè)計詳細(xì)的流程。 (4) 程序編制階段以一種或幾種特定的程序

19、設(shè)計語言表達(dá)上一階段確定的各模塊控制流程。程序編制時應(yīng)遵循結(jié)構(gòu)化程序設(shè)計方法。(5) 調(diào)試階段對已編好的程序進(jìn)行單元調(diào)試(分調(diào)),整體調(diào)試(聯(lián)調(diào))和系統(tǒng)測試(驗收)。(6) 運行和維護(hù)階段這是整個設(shè)計周期最長的階段,其工作重點是收集和記錄系統(tǒng)實際運行的數(shù)據(jù)。在運行中,必須保持?jǐn)?shù)據(jù)庫的完整性,必須有效的處理數(shù)據(jù)故障和進(jìn)行數(shù)據(jù)庫恢復(fù)。同時解決開發(fā)過程的遺留問題,改正錯誤進(jìn)行功能完善。第四章、數(shù)據(jù)庫實現(xiàn)4.1數(shù)據(jù)庫的建立4.1.1工作空間和應(yīng)用的創(chuàng)建首先創(chuàng)建一個新的工作空間和應(yīng)用:(1) 單擊NEW圖標(biāo)按鈕,打開“NEW”對話框;(2) 選擇“WORKSPACE”頁;(3) 單擊“OK”按鈕,彈出保

20、存文件對話框,選擇路徑和輸入文件名,系統(tǒng)以PBW后綴名保存工作空間文件。建立新的“應(yīng)用”的方法:單擊工具欄上NEW圖標(biāo),彈出“新創(chuàng)建”NEW對話框,選擇“目標(biāo)文件”TARGET頁,選擇“應(yīng)用”或“應(yīng)用模板”,單擊“OK”按鈕,彈出對話框,設(shè)置“應(yīng)用”和“庫文件”名。4.1.2數(shù)據(jù)庫的創(chuàng)建創(chuàng)建Adaptive Server AnyWhere 數(shù)據(jù)庫:(1) 單擊工具欄上DATEBASE圖標(biāo)按鈕。(2) 在彈出的DATEBASE畫板中,打開OBJECTS,展開“ODB ODBC”項下的UTILITIES目錄。(3) 雙擊UTILITIES目錄下的“CREATE ASA DATABASE”項,彈出“

21、CREATE Adaptive Server AnyWhere”對話框。(4) 單擊“BROSWE”按鈕,彈出“CREATE DATABASE”對話框,在對話框中選擇 mypbex目錄,在文件名一欄中輸入數(shù)據(jù)庫名稱“mydatabase.db”,單擊“保存”按鈕,返回“CREATE Adaptive Server AnyWhere”對話框。(5) 使用默認(rèn)的用戶USERID項“dba”和默認(rèn)的口令password項“sql”,單擊“OK”按鈕,powerbuilder在03b80137孫* 目錄下創(chuàng)建一個SAS數(shù)據(jù)庫mydatabase.db,同時,自動為數(shù)據(jù)庫配置了ODBC和DB PROFI

22、LE,并且已經(jīng)連接到新建的數(shù)據(jù)庫。4.2數(shù)據(jù)庫應(yīng)用程序的實現(xiàn)4.2.1登錄窗口的創(chuàng)建啟動畫面是為了給用戶一個良好的印像,加深軟件的親和力,沒有實際的功能,在WINDOW窗體中加入了 靜態(tài)文本控件和按鈕控件。(1) 首先編寫一個連接數(shù)據(jù)庫的函數(shù),在腳本區(qū)的控件與對象下拉列表框中選擇functions,在腳本區(qū)的事件下拉列表框中選擇new function,這時要求對函數(shù)入口參數(shù)和出口參數(shù)進(jìn)行定義,定義函數(shù)名為wf_connect,類型public,返回integet值。入口參數(shù)有兩個,都是pass by為value,數(shù)據(jù)類型argument type為string,名稱為argument nam

23、e分別為 userid和password。在腳本編輯區(qū)中,輸入以下代碼:string ls_databaseuserid=trim(userid)password=trim(password)if password=then return 1ls_database=connectstring=dsn=mydb;sqlca.dbparm=ls_database+uid=+”userid+”;pwd=”+password”connect using sqlca;return sqlca.sqlcode(2) 單擊取消按鈕,然后單擊子選單中的script選單項,進(jìn)入取消按鈕的腳本區(qū),選擇cliked

24、事件,編寫cliked事件的響應(yīng)腳本如下:halt(3) 為確定按鈕編寫cliked事件響應(yīng)腳本:setpointer (hourglass!)if parent.wf_connect (sle_userid.text,sle_password.text)=-1 thenmessagebox(“連接數(shù)據(jù)庫錯誤!”,連接失敗sqlca.sqlerrtext)halt else close (parent)w_main.visible=true end if(4) 單擊工具欄上open對話框,在object type下拉列表框中選擇applications,在object列表框中選擇應(yīng)用book,

25、單擊ok按鈕,彈出應(yīng)用的script子窗口,選擇open事件,在腳本區(qū)中輸入如下代碼:sqlca.DBMS=ODBC”open (w_main)l 在應(yīng)用的close事件中編寫斷開與數(shù)據(jù)庫連接的腳本:disconnect using SQLCAl 為窗口w_main編寫腳本:在窗口中單擊右鍵,選擇彈出選單中script選單項,進(jìn)入窗口的腳本區(qū),選擇open事件,并編寫如下腳本:open(w_login)l 選擇圖片按鈕的clicked事件,輸入腳本:close(parent)4.2.2數(shù)據(jù)窗口對象的創(chuàng)建數(shù)據(jù)窗口對象是powerbuilder編程的精華所在,建立數(shù)據(jù)窗口對象是程序設(shè)計中極為重要的

26、一個部分針對不同的情況選擇不同類型的數(shù)據(jù)窗口對象,會使程序的實用性和直觀性大為增強在本應(yīng)用程序中,完全采用數(shù)據(jù)窗口來實現(xiàn)度曲數(shù)據(jù)庫中的數(shù)據(jù)、修改數(shù)據(jù)庫中的數(shù)據(jù)、排序等功能。下面詳細(xì)講述本系統(tǒng)中典型的兩個數(shù)據(jù)窗口對象,其他的數(shù)據(jù)窗口對象以后于方法類似,在這里不詳細(xì)介紹。(1) d_readertype_gird數(shù)據(jù)窗體的創(chuàng)建單擊新建圖標(biāo),打開“NEW”對話框,然后在data window標(biāo)簽頁選擇數(shù)據(jù)窗口對象的顯示風(fēng)格,在這里選擇GIRD(網(wǎng)絡(luò))顯示方式。單擊”ok”按鈕啟動數(shù)據(jù)窗口對象向?qū)?。選擇quick select數(shù)據(jù)源。這是定義數(shù)據(jù)源的追簡單的方法,然后單擊“next”按鈕,出現(xiàn)quic

27、k select窗口。在左上方的表格列表中雙擊要連接的表格readertype。選中該表格后,在列表框中列出了選中表readertype的各個列。單擊要選中的多個列,在該窗口下放顯示選中的列。單擊“ok”按鈕,出現(xiàn)“select color and border settings”對話框。在其中選擇數(shù)據(jù)窗口的餓背景顏色、文字顏色和邊框外觀。單擊“next”按鈕,出現(xiàn)“ready to create gird datawindow”對話框。在其中顯示當(dāng)前數(shù)據(jù)窗口對象的對象。單擊其上的“finish”按鈕,顯示數(shù)據(jù)窗口對象畫筆。在其中設(shè)置頁眉區(qū)和細(xì)節(jié)區(qū)的屬性。在數(shù)據(jù)庫表中各個列的列名是用英文表示的

28、,在列標(biāo)題顯示的時候我們將他們設(shè)置為中文。另外,為了能夠在該數(shù)據(jù)窗口對象中修改所顯示的記錄,需要設(shè)置allow updates屬性。單擊“rows”菜單下的“update porperties”菜單,出現(xiàn)設(shè)置窗口。將左上訪的allow updates屬性選種,選擇table to update為表readtype。在窗口左下放的update properties/delete中選擇key and updateable coloumns。單擊“ok”按紐確認(rèn)所作的修改。單擊“保存”圖標(biāo),在出現(xiàn)的保存對話框中輸入數(shù)據(jù)窗口對象的名稱,進(jìn)行保存。通過上面的操作步驟,一個完整gird風(fēng)格的數(shù)據(jù)窗口對象就

29、創(chuàng)建完畢。應(yīng)用程序窗口上的數(shù)據(jù)窗口控件可以連接和使用這個創(chuàng)建好的數(shù)據(jù)窗口對象。(2) d_readers數(shù)據(jù)窗體的創(chuàng)建該數(shù)據(jù)窗口對象的創(chuàng)建和上面d_readertype_gird數(shù)據(jù)窗口對象的方法類似,只不過在這里需要選擇數(shù)據(jù)窗口對象的風(fēng)格為freeform。單擊“ok”按鈕啟動數(shù)據(jù)窗口對象向?qū)?。選擇quick select數(shù)據(jù)源,這是定義數(shù)據(jù)源的最簡單的方法,然后單擊“next”按鈕,出現(xiàn)quick select窗口。選中該表格后,在列表框中列出了選中表readertype的各個列。單擊要選中的多個列,在該窗口下放顯示選中的列。單擊“ok”按鈕,出現(xiàn)“select color and bor

30、der settings”對話框。在其中選擇數(shù)據(jù)窗口的餓背景顏色、文字顏色和邊框外觀。單擊“next”按鈕,出現(xiàn)“ready to create gird datawindow”對話框。在其中顯示當(dāng)前數(shù)據(jù)窗口對象的對象。單擊其上的“finish”按鈕,顯示數(shù)據(jù)窗口對象畫筆。在其中設(shè)置頁眉區(qū)和細(xì)節(jié)區(qū)的屬性。在數(shù)據(jù)庫表中各個列的列名是用英文表示的,在列標(biāo)題顯示的時候我們將他們設(shè)置為中文。4.2.3圖書管理模塊的創(chuàng)建圖書館需要管理不同類別的讀者,并且不同讀者享受的服務(wù)不同,圖書管理模塊主要實現(xiàn)如下功能:l 新書入庫l 舊書銷毀l 出版社l 退出1 添加新書類別窗體的創(chuàng)建在窗口最上放置一個靜態(tài)文本框控

31、件,顯示窗口的用途“天家讀者類別信息”。在窗口的中間防止一個數(shù)據(jù)窗口控件dw_1,該控件連接的數(shù)據(jù)窗口對象是d_readertype。在窗口的最下面放置5個按鈕控件,在其click 事件中分別用來實現(xiàn)當(dāng)前顯示記錄的前一條、后一條、記錄的插入、保存以及窗口的退出功能。在窗口的open事件中輸入如下的程序代碼:dw_1.settransobject(sqlca)dw_1.retrieve()“前一條”按鈕控件的click事件用于記錄向前移動一條,也就是顯示前一條記錄,其程序代碼如下:integer row_currentrow_current=dw_1.scrollpriorrow()if row

32、_current=1 then messagebox(“警告”,“已經(jīng)是最前一條記錄”)end if“后一條”按鈕控件的click事件用于顯示當(dāng)前所顯示記錄的后一條記錄,程序代碼如下:integer row_countinteger row_currentrow_current=dw_1.scrollnextrow()row_count=dw_1.rowcount()if row_current=row_count then messagebox(“警告”,“已經(jīng)是最后一條記錄”)end if“添加”按鈕控件的click事件用于用戶輸入新的記錄,其程序代碼如下:g_rownumber=dw_1

33、.insertrow(0)dw_1.setfocus()dw_1.scrolltorow(g_rownumber)dw_1.setcolumn(1)“確定”按鈕控件的click事件用于提交和確認(rèn)對該數(shù)據(jù)庫表格中記錄所做的修改,包括插入和刪除,如果提交失敗,則取消失敗,則取消修改。程序代碼如下:if update(dw_1.true,false)=1 thendw_1.resetupdate()commit;else rollback; messagebox(“錯誤!”,“數(shù)據(jù)保存失敗”)end if“退出”按鈕控件的click事件用于關(guān)閉該輸入窗口。在關(guān)閉窗口之前,首先判斷用戶是否對數(shù)據(jù)窗口中

34、的記錄作了修改而沒有保存到數(shù)據(jù)庫中,如果有這樣的記錄,則出現(xiàn)對話恐詢問用戶是否保存所做的修改,程序代碼如下:int Mcountint updateornotMcount=w_readertype.dw_1.modifiedcount()If Mcount=0 then close(w_readertype)elseif Mcount0 then updateornot=messagebox(“保存修改”,“您修改了數(shù)據(jù)窗口中的數(shù)據(jù),現(xiàn)在是否保存?”,question!,yesnocancel!)if update(w_readertype.dw_1,true,false)=1 then w_

35、readertype.dw_1.resetupdate() commit;else rollback; messagebox(“錯誤!”,“數(shù)據(jù)保存失敗”)end ifclose(w_readertype)elseif updateornot=2 then rollback; close(w_readertype)end ifend if 函數(shù)執(zhí)行成功時返回用戶選擇的按鈕編號(例如1、2、3等),發(fā)生錯誤是返回-1。這種在應(yīng)用程序運行過程中需要一段簡短信息(比如出錯、警告等)時,沒有必要自己從頭創(chuàng)建窗口和安排控件,使用函數(shù)messagebox既簡單有方便。用戶只有響應(yīng)該窗口后,程序才能句許往下

36、運行。2 新書入庫窗體的創(chuàng)建創(chuàng)建一個新的窗體對象,作為新書入庫窗口。該窗口的標(biāo)題為“新書入庫”,拖動窗口邊框,調(diào)整窗口大小。保存窗口名為w_bookinfo。 向該窗體中添加兩個按鈕:確定和返回。代碼分別如下:確定: long ll_id,ll_i,ll_publisheriddate ld_datestring ls_title,ls_isbn,ls_author,ls_key,ls_price,ls_words,ls_numif sle_id.text=or isnull (sle_id.text) thenmessagebox(缺少數(shù)據(jù),請輸入圖書編號)sle_id.setfocus()

37、returnend ifif sle_isbn.text=or isnull (sle_isbn.text) then messagebox(缺少數(shù)據(jù),請輸入ISDN書號) sle_isbn.setfocus()returnend ifif sle_author.text=or isnull (sle_author.text) thenmessagebox(缺少數(shù)據(jù),請輸入書名)sle_author.setfocus()returnend ifif sle_title.text=or isnull (sle_title.text) thenmessagebox(缺少數(shù)據(jù),請輸入作者)sle_t

38、itle.setfocus()returnend ifif sle_words.text=or isnull (sle_words.text) thenmessagebox(缺少數(shù)據(jù),請輸字?jǐn)?shù))sle_words.setfocus()returnend ifif sle_publisherid.text=or isnull (sle_publisherid.text) thenmessagebox(缺少數(shù)據(jù),請輸出版設(shè)ID)sle_publisherid.setfocus()returnend ifif sle_price.text=or isnull ( sle_price.text) th

39、enmessagebox(缺少數(shù)據(jù),請輸定價) sle_price.setfocus()returnend ifif sle_date.textand not isnull(sle_date) thenif isdate(sle_date.text) thenld_date=date (sle_date.text) elsemessagebox(輸入數(shù)據(jù)錯誤,請使用“年-月-日”的日期格式)sle_date.setfocus()returnend ifend ifll_id=long(sle_id.text)select bookinfo.bookid into:ll_i from booki

40、nfo where bookinfo.bookid=:ll_id;if ll_i0 thenmessagebox(錯誤信息,圖書編號+string(ll_i)+號重號!請更正。)sle_id.setfocus()returnend ifls_title=trim(sle_title.text)ls_isbn=trim(sle_isbn.text)ls_author=trim(sle_author.text)ls_key=trim(sle_keywords.text)ls_price=trim(sle_price.text)ls_words=trim(sle_words.text)ls_num=

41、trim(sle_number.text)insert into bookinfo (bookid, isbn, title, publishdate, author, words, publisherid, number, price, keywords,abstract ) values (:ll_id, :ls_isbn, :ls_title, :ld_date, :ls_author, :ls_words, :ll_publisherid, :ls_num, :ls_price, :ls_key, :mle_abstract.text ); sle_id.text=sle_isbn.t

42、ext= sle_title.text=sle_date.text=sle_author.text=sle_words.text=sle_publisherid.text=sle_number.text=sle_price.text=sle_keywords.text=mle_abstract.text=sle_id.setfocus()取消: close(parent)w_firstmain.visible=true 3 舊書銷毀窗體的創(chuàng)建創(chuàng)建一個新的窗體,添加窗口對象(創(chuàng)建數(shù)據(jù)對象的方法,前面已經(jīng)交代,不再重復(fù))。4 出版社窗體的創(chuàng)建與“舊書銷毀窗體”類似,不同的是該數(shù)據(jù)對象在創(chuàng)建時,需加

43、如按鈕,具體方法如下: 單擊工具欄控件下拉列表圖標(biāo)按鈕圖,選擇“button”控件,然后在數(shù)據(jù)窗口的design子窗口中單擊,出現(xiàn)一個命令按鈕控件,拖動邊線調(diào)整為方形,將其中text屬性欄中的“none”刪除。在action下拉列表框中選擇“cancel(3)”,選種“action default picture”復(fù)選框。這是,新建按鈕中出現(xiàn)一個紅色的手形圖案;類似的,一共創(chuàng)建8個圖形按鈕,分別是action下拉列表框中的“cancel(3)”(取消)、“pagenext(4)”(下一條記錄)、“pageprior”(上一條記錄)、“pagefirst”(第一條記錄)、“pagelast”(最

44、后一條記錄)、“deleterow”(刪除當(dāng)前記錄)、“insertrow”(插入一條空記錄)、“update”(刷新數(shù)據(jù)庫表)。如果不選中“action default picture”復(fù)選框,可以在“picture file”欄中使用定位按鈕上的圖片文件。當(dāng)然也可以不使用圖片,直接在text欄中使用文字表述,實現(xiàn)一般按鈕的命令。4.2.4圖書檢索模塊的創(chuàng)建圖書檢索模塊主要實現(xiàn)如下功能:l 按作者名稱l 按出版社日期/某個階段l 按出版社日期/某個日期l 按出版社日期/某個日期之前l(fā) 按出版社日期/某個日期之后l 按出版社名稱l 按書名l 按關(guān)鍵字以上除按日期查詢外,均實現(xiàn)模糊查詢法。1 設(shè)

45、計“按作者”查詢選項的步驟:(1) 單擊new圖表按鈕,彈出“new”對話框。(2) 選擇datawindow選項頁,雙擊freeform圖標(biāo),彈出“choose data source for freeform datawindow”對話框。(3) 選擇“SQL select”數(shù)據(jù)源方式,單擊“new”按鈕,彈出“select table”對話框。(4) 在table列表框中選擇student表,單擊“open”按鈕,這時彈出select畫板。(5) 單擊選單design/retrieval arguments, 彈出“specify retrieval qrguments”對話框,在nam

46、e欄中輸入ls_name,在type下拉列表框中選擇string,單擊“ok”,對話框關(guān)閉。(6) 在select畫板將字段全部選中。(7) 在select畫板的where子窗口中單擊column欄,右邊出現(xiàn)一個“”符號,單擊“”按鈕,彈出該表的所有字段,選擇該表的“author”,在右邊的value欄中,按右鍵,選擇彈出選單中的“arguments.”,彈出“paste”按鈕,“:ls_name”就出現(xiàn)在value欄中。(8) 單擊“return”圖標(biāo)按鈕,彈出“select color and border settings”對話框,單擊“next”按鈕,彈出“ready to creat

47、e freeform datawindow”對話框,要求對檢索變量進(jìn)行賦植,以便對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)檢索,并將檢索結(jié)果放到preview子窗口中。編寫腳本。“查詢”按鈕的clicked事件腳本為:string ls_authordw_author.settransobject(sqlca)ls_author=trim(sle_author.text)if not ls_author= thenls_author=%+ls_author+%dw_author.retrieve (ls_author)elsemessagebox(數(shù)據(jù)不全!,請輸入待查詢作者!)end ifsle_author.set

48、focus()2 設(shè)計“按出版社日期/某個階段”查詢選項的步驟:按“出版社日期/某個階段”查詢的數(shù)據(jù)窗口對象采用的是限定日期范圍的雙條件查詢的數(shù)據(jù)窗口,它將在指定日期范圍之內(nèi)的所有記錄都檢索出來。(1)設(shè)計數(shù)據(jù)窗口對象。數(shù)據(jù)窗口對象的設(shè)計過程與前面“按姓名”查詢的數(shù)據(jù)窗口對象的設(shè)計十分相似,增加2個日類型的檢索參數(shù)retrieval arguments分別為ld_startdate和ld_enddate,在select畫板的where子窗口中設(shè)計的條件為: “student”.“birthday”=:ld_startdate and “student”.“birthday”=:ld_endda

49、te保存數(shù)據(jù)窗口對象名稱為d_querydate(2)在窗體中布置控件略。(3)編寫腳本。“查詢”按鈕的clicked事件腳本為: string ls_start,ls_enddate ld_startdate,ld_enddatedw_querydate-date.settransobject(sqlca)if isdate (sle_startdate.text) thenif isdate (sle_enddate.text) then ld_startdate=date(sle_startdate.text)ld_enddate=date(sle_enddate.text)dw_que

50、rydate-date.retrieve(ld_startdate,ld_enddate)elsemessagebox(數(shù)據(jù)錯誤,請重新輸入結(jié)束日期!)end ifelsemessagebox(數(shù)據(jù)錯誤,請重新輸入開始日期!)end ifsle_startdate.setfocus()3 設(shè)計“按出版社日期/某個日期”查詢選項的腳本: string ls_datedate ld_datedw_publishdate.settransobject(sqlca)if isdate(sle_date.text) thenld_date=date(sle_date.text)dw_publishdat

51、e.retrieve(ld_date)elsemessagebox(數(shù)據(jù)不全!,請重新輸入日期。)end ifsle_date.setfocus()4 設(shè)計“按出版社日期/某個日期之前”查詢選項的腳本:string ls_datedate ld_datedw_querybeforedate.settransobject(sqlca)if isdate(sle_date.text) thenld_date=date(sle_date.text)dw_querybeforedate.retrieve(ld_date)elsemessagebox(數(shù)據(jù)不全!,請重新輸入日期。)end ifsle_date.setfocus()5 設(shè)計“按出版社日期/某個日期之后”查詢選項的腳本:string ls_datedate ld_

溫馨提示

  • 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

提交評論