管理系統(tǒng)理科設(shè)計(jì)說(shuō)明_第1頁(yè)
管理系統(tǒng)理科設(shè)計(jì)說(shuō)明_第2頁(yè)
管理系統(tǒng)理科設(shè)計(jì)說(shuō)明_第3頁(yè)
管理系統(tǒng)理科設(shè)計(jì)說(shuō)明_第4頁(yè)
管理系統(tǒng)理科設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)(論文)論文題目:圖書(shū)館管理系統(tǒng)概括隨著信息技術(shù)在管理中的應(yīng)用越來(lái)越深入和廣泛,管理信息系統(tǒng)的實(shí)施在技術(shù)上也逐漸成熟。管理信息系統(tǒng)是一門(mén)不斷發(fā)展的新學(xué)科。企業(yè)要生存和發(fā)展,要高效、有機(jī)地組織企業(yè)活動(dòng),就必須加強(qiáng)企業(yè)管理,即加強(qiáng)對(duì)企業(yè)部門(mén)各種資源(人力、財(cái)力、物力)的管理。等)有效管理,建立適合自身特點(diǎn)的管理信息系統(tǒng)。PowerBuilder環(huán)境下采用“自上而下統(tǒng)籌、自下而上應(yīng)用開(kāi)發(fā)”的策略開(kāi)發(fā)管理信息系統(tǒng)的過(guò)程。通過(guò)分析傳統(tǒng)人工管理庫(kù)的不足,建立了一套行之有效的計(jì)算機(jī)管理庫(kù)程序。文章詳細(xì)介紹了圖書(shū)管理信息系統(tǒng)的系統(tǒng)分析部分,包括可行性分析、組織分析、管理功能分析、業(yè)務(wù)流程分析、數(shù)據(jù)流程

2、分析、數(shù)據(jù)字典、處理描述等。系統(tǒng)設(shè)計(jì)部分主要介紹了系統(tǒng)功能設(shè)計(jì)與數(shù)據(jù)庫(kù)設(shè)計(jì);系統(tǒng)實(shí)現(xiàn)部分列出了幾個(gè)主要的框圖,以及一些主要的窗口和程序。系統(tǒng)界面友好,操作簡(jiǎn)單,更實(shí)用。關(guān)鍵詞管理信息系統(tǒng)、圖書(shū)管理、 PowerBuilder應(yīng)用目錄 TOC o 1-3 h z u HYPERLINK l _Toc230353367 第 1 章 前言 PAGEREF _Toc230353367 h 1 HYPERLINK l _Toc230353368 第一節(jié)MIS系統(tǒng)開(kāi)發(fā)方法 PAGEREF _Toc230353368 h 一 HYPERLINK l _Toc230353369 第二節(jié)MIS系統(tǒng)開(kāi)發(fā)流程 PA

3、GEREF _Toc230353369 h 2 HYPERLINK l _Toc230353370 第二章系統(tǒng)需求分析 PAGEREF _Toc230353370 h 3 HYPERLINK l _Toc230353371 第 1 節(jié) 當(dāng)前業(yè)務(wù)描述 PAGEREF _Toc230353371 h 3 HYPERLINK l _Toc230353372 第二節(jié) 現(xiàn)行制度存在的問(wèn)題分析 PAGEREF _Toc230353372 h 4 HYPERLINK l _Toc230353373 第 3 節(jié) 解決方案 PAGEREF _Toc230353373 h 4 HYPERLINK l _Toc23

4、0353374 第三章 系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc230353374 h 6 HYPERLINK l _Toc230353375 第 1 節(jié) 系統(tǒng)目標(biāo)設(shè)計(jì) PAGEREF _Toc230353375 h 6 HYPERLINK l _Toc230353376 第二節(jié) 系統(tǒng)功能分析 PAGEREF _Toc230353376 h 6 HYPERLINK l _Toc230353377 第三節(jié) 系統(tǒng)各功能模塊設(shè)計(jì) PAGEREF _Toc230353377 h 7 HYPERLINK l _Toc230353378 第 4 節(jié) 數(shù)據(jù)流 圖 PAGEREF _Toc230353378

5、 h 7 HYPERLINK l _Toc230353379 第 4 章 數(shù)據(jù)庫(kù)設(shè)計(jì) PAGEREF _Toc230353379 h 11 HYPERLINK l _Toc230353380 第 1 節(jié) 數(shù)據(jù)庫(kù)需求分析 PAGEREF _Toc230353380 h 11 HYPERLINK l _Toc230353381 第二節(jié) 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì) PAGEREF _Toc230353381 h 12 HYPERLINK l _Toc230353382 第五章圖書(shū)館管理系統(tǒng)的具體實(shí)現(xiàn) PAGEREF _Toc230353382 h 16 HYPERLINK l _Toc230353383 第

6、 1 節(jié)PowerBuilder開(kāi)發(fā)工具介紹 PAGEREF _Toc230353383 h 16 HYPERLINK l _Toc230353384 第二節(jié)PowerBuilder 8應(yīng)用開(kāi)發(fā)的基本步驟 PAGEREF _Toc230353384 h 16 HYPERLINK l _Toc230353385 第三節(jié) 編碼規(guī)則 PAGEREF _Toc230353385 h 17 HYPERLINK l _Toc230353386 第 4 節(jié) 創(chuàng)建祖先窗口和全局函數(shù) PAGEREF _Toc230353386 h 17 HYPERLINK l _Toc230353387 第 5 節(jié) 應(yīng)用程序?qū)?/p>

7、象App_librarain PAGEREF _Toc230353387 h 19 HYPERLINK l _Toc230353388 第六節(jié) 特定窗口的實(shí)施 PAGEREF _Toc230353388 h 19 HYPERLINK l _Toc230353389 第七節(jié) 附注 PAGEREF _Toc230353389 h 38 HYPERLINK l _Toc230353390 結(jié)論 PAGEREF _Toc230353390 h 39 HYPERLINK l _Toc230353391 演講 PAGEREF _Toc230353391 h 40 HYPERLINK l _Toc23035

8、3392 參考文獻(xiàn) PAGEREF _Toc230353392 h 41第一章 前言隨著人類(lèi)社會(huì)的發(fā)展,人類(lèi)對(duì)知識(shí)的需求也在不斷增長(zhǎng)。在這種形勢(shì)下,書(shū)籍逐漸成為人們獲取和增長(zhǎng)知識(shí)的主要途徑,圖書(shū)館自然而然地在人們的生活中占據(jù)了一定的位置。如何科學(xué)地管理圖書(shū)館,不僅關(guān)系到讀者求知的方便程度,還關(guān)系到圖書(shū)館的發(fā)展。因此,開(kāi)發(fā)一套完整的圖書(shū)館管理系統(tǒng)至關(guān)重要。管理信息系統(tǒng)(MIS)是介于信息論、經(jīng)濟(jì)管理理論、統(tǒng)計(jì)學(xué)和運(yùn)籌學(xué)與計(jì)算機(jī)科學(xué)之間的一門(mén)邊緣性、綜合性和系統(tǒng)性的交叉學(xué)科。 ,計(jì)算機(jī)技術(shù)等的發(fā)展產(chǎn)生和發(fā)展。圖書(shū)館管理系統(tǒng)是典型的信息管理系統(tǒng),其開(kāi)發(fā)主要包括后臺(tái)數(shù)據(jù)庫(kù)的建立和維護(hù)以及前端應(yīng)用程序的

9、開(kāi)發(fā)。前者要求建立數(shù)據(jù)的一致性和完整性,后者要求應(yīng)用功能齊全、易于使用的特點(diǎn)?;谝陨峡紤],本系統(tǒng)主要使用PowerBuilder 8作為前端應(yīng)用開(kāi)發(fā)工具,使用Adaptive Server Anywhere 7作為后臺(tái)數(shù)據(jù)庫(kù),使用WINDOWS作為系統(tǒng)平臺(tái)開(kāi)發(fā)圖書(shū)管理系統(tǒng)。此外,圖書(shū)館管理系統(tǒng)采用軟件工程思想和方法,一般采用結(jié)構(gòu)化生命法進(jìn)行系統(tǒng)分析和設(shè)計(jì),而系統(tǒng)實(shí)現(xiàn)等步驟則采用原型法和面向?qū)ο蠓?。第一?jié) MIS系統(tǒng)開(kāi)發(fā)方法管理信息系統(tǒng)的開(kāi)發(fā)方法包括生命周期法、原型法和面向?qū)ο蟮拈_(kāi)發(fā)法:生命周期法是1960年代發(fā)展起來(lái)的一種應(yīng)用廣泛、比較成熟的管理系統(tǒng)開(kāi)發(fā)方法。其基本思想是將系統(tǒng)的開(kāi)發(fā)從開(kāi)始到

10、結(jié)束分為幾個(gè)階段。每個(gè)階段都有明確的任務(wù),系統(tǒng)開(kāi)發(fā)完成后,并不意味著生命周期的結(jié)束,而是根據(jù)組織的需要對(duì)系統(tǒng)進(jìn)行修改和重構(gòu)的開(kāi)始。Prototyping Method是1980年代為了改變生命周期法的缺點(diǎn)而發(fā)展起來(lái)的一種系統(tǒng)開(kāi)發(fā)方法。根據(jù)系統(tǒng)的基本要求和主要功能,利用系統(tǒng)快速生成工具建立系統(tǒng)模型,然后在此基礎(chǔ)上與用戶(hù)溝通,不斷補(bǔ)充、修改、完善模型等,直至兩者都用戶(hù)和開(kāi)發(fā)者都很滿意。從而形成了一個(gè)比較穩(wěn)定和理想的管理信息系統(tǒng)。( Object Oriented )的開(kāi)發(fā)方法在1980年代開(kāi)始興起,是一種基于問(wèn)題對(duì)象的自下而上的系統(tǒng)開(kāi)發(fā)方法,這種方法的特點(diǎn)是基于對(duì)象,對(duì)象是分析問(wèn)題和解決問(wèn)題的核心

11、.第二節(jié) MIS系統(tǒng)開(kāi)發(fā)流程MIS系統(tǒng)的開(kāi)發(fā)過(guò)程一般包括以下幾個(gè)步驟:(1)需求分析:需求分析主要是了解用戶(hù)的需求。要求越詳細(xì),程序的后期開(kāi)發(fā)和維護(hù)成本就越少。在一般的開(kāi)發(fā)團(tuán)隊(duì)中,需求分析是由資歷較高的系統(tǒng)分析師或項(xiàng)目經(jīng)理執(zhí)行的,可見(jiàn)其重要性。需求分析制定后,需要反復(fù)修改。最終結(jié)果交給用戶(hù)審批。確認(rèn)無(wú)誤后,系統(tǒng)分析師將完成需求分析文檔,然后開(kāi)始下一步。(2) 大綱設(shè)計(jì):大綱設(shè)計(jì)遵循需求分析。明確用戶(hù)需求后,對(duì)獲取的數(shù)據(jù)進(jìn)行分析,進(jìn)而構(gòu)建數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)。此時(shí)數(shù)據(jù)庫(kù)中的表還沒(méi)有形成,通過(guò)各種分析工具(如Power Designer等)繪制數(shù)據(jù)流圖,最終可以抽象出數(shù)據(jù)庫(kù)的具體表結(jié)構(gòu)。系統(tǒng)分析人員對(duì)

12、此進(jìn)行了反復(fù)審查。在確認(rèn)考慮了所有需求并且沒(méi)有遺漏任何內(nèi)容后,您就可以開(kāi)始開(kāi)發(fā)高級(jí)設(shè)計(jì)文檔了。大綱設(shè)計(jì)文檔形成后,整個(gè)程序的邏輯框架也就形成了。(3)詳細(xì)設(shè)計(jì):大綱設(shè)計(jì)完成后,根據(jù)設(shè)計(jì)中制定的業(yè)務(wù)模塊??梢赃M(jìn)行詳細(xì)的分析和設(shè)計(jì)。詳細(xì)設(shè)計(jì)是構(gòu)建每個(gè)業(yè)務(wù)模塊的所有窗口,每個(gè)窗口控件的處理代碼都用語(yǔ)言表達(dá)。所以詳細(xì)設(shè)計(jì)是整個(gè)系統(tǒng)中最繁瑣的環(huán)節(jié)。詳細(xì)設(shè)計(jì)完成后,確定了整個(gè)程序,然后程序員根據(jù)詳細(xì)設(shè)計(jì)文檔完成代碼。整個(gè)開(kāi)發(fā)工作告一段落。程序編碼:與其他環(huán)節(jié)相比,程序編碼相對(duì)簡(jiǎn)單。程序員只需要根據(jù)詳細(xì)的分析文檔編寫(xiě)程序代碼,保證代碼沒(méi)有錯(cuò)誤。程序編碼在整個(gè)程序編寫(xiě)中需要注意命名和編程風(fēng)格的標(biāo)準(zhǔn)化,這需要較

13、長(zhǎng)的時(shí)間來(lái)開(kāi)發(fā)。你需要在不斷的練習(xí)中形成自己獨(dú)特的風(fēng)格。一般來(lái)說(shuō),不要過(guò)于追求復(fù)雜的算法,因?yàn)檫@可能會(huì)導(dǎo)致維護(hù)困難,因?yàn)橐院蟮木S護(hù)人員無(wú)法閱讀您的代碼。(4)測(cè)試:程序編碼完成后,需要進(jìn)行測(cè)試。測(cè)試有幾種類(lèi)型,主要是測(cè)試代碼的邏輯錯(cuò)誤和加載數(shù)據(jù)環(huán)境中程序的穩(wěn)定性。測(cè)試工作中發(fā)現(xiàn)的錯(cuò)誤應(yīng)及時(shí)糾正,并記錄在測(cè)試文檔中。(5) 包裝:測(cè)試完成后,確認(rèn)無(wú)誤。該程序可以打包和分發(fā)。打包一般使用PWISE等工具。以上就是一個(gè)完整的MIS系統(tǒng)開(kāi)發(fā)流程。其實(shí)不僅是MIS系統(tǒng),其他類(lèi)型的程序開(kāi)發(fā)也基本相同。第二章系統(tǒng)需求分析在整個(gè)軟件生命周期中,開(kāi)發(fā)成本和時(shí)間都很少。后期維護(hù)工作一般占整個(gè)軟件生命周期的80%以

14、上。所以系統(tǒng)分析很重要,一個(gè)好的系統(tǒng)分析可以減少很多后期維護(hù)工作。第一節(jié) 當(dāng)前業(yè)務(wù)描述下面以某學(xué)校圖書(shū)館為例進(jìn)行分析,繪制圖書(shū)館組織結(jié)構(gòu)圖如下:館館 長(zhǎng)采編組書(shū)庫(kù)閱覽室工具書(shū)室目錄廳借閱室圖 2-1 圖書(shū)館組織結(jié)構(gòu)圖圖書(shū)館各部門(mén)的主要活動(dòng)如下:(一)收藏編纂組主要負(fù)責(zé)圖書(shū)的收藏編纂工作,包括購(gòu)置新書(shū)、印刷編目、增加圖書(shū)數(shù)量等。(2)目錄處主要負(fù)責(zé)讀者查詢(xún),包括現(xiàn)有圖書(shū)(按圖書(shū)類(lèi)別、書(shū)名或圖書(shū)作者查詢(xún));新書(shū)目錄(按書(shū)籍類(lèi)別和日期查詢(xún))。(3)借閱組主要負(fù)責(zé)圖書(shū)流通、查詢(xún)統(tǒng)計(jì)、借閱查詢(xún)等工作。(4)閱覽室和工具書(shū)室主要負(fù)責(zé)讀者的閱讀工作,包括:閱讀各種雜志、報(bào)紙,閱讀各種工具書(shū)。圖書(shū)館流通業(yè)務(wù)借

15、書(shū)流程圖如下:(一)讀者在目錄廳查閱索引卡;(二)讀者應(yīng)記下所借圖書(shū)的分類(lèi)號(hào)和類(lèi)別號(hào),交館員并出示借書(shū)證;(3)館員根據(jù)圖書(shū)的分類(lèi)號(hào)和類(lèi)別號(hào)在館內(nèi)查找圖書(shū);(4)將圖書(shū)交給讀者,讀者填寫(xiě)所借圖書(shū)的借書(shū)證。(5) 圖書(shū)館員應(yīng)將借書(shū)證與讀者借書(shū)證號(hào)碼放在口袋里。圖書(shū)館業(yè)務(wù)流程圖如下:圖2-2 圖書(shū)館業(yè)務(wù)流程圖第二節(jié)現(xiàn)行制度存在的問(wèn)題分析圖書(shū)館的大部分工作還是人工管理,工作效率很低。由于不可避免的人為因素,經(jīng)常會(huì)造成數(shù)據(jù)遺漏和誤報(bào)。計(jì)算機(jī)信息管理具有存儲(chǔ)信息量大、速度快等優(yōu)點(diǎn)。它為我們提供了快速及時(shí)的信息處理,也提高了我們員工的素質(zhì)。第 3 節(jié) 解決方案基于以上對(duì)問(wèn)題的分析,利用計(jì)算機(jī)為我們提供信息

16、,及時(shí)地調(diào)整學(xué)校圖書(shū)館圖書(shū)結(jié)構(gòu),對(duì)學(xué)生借閱過(guò)程形成一套動(dòng)態(tài)管理是非常必要的。圖書(shū)館信息系統(tǒng)的建立需要對(duì)用戶(hù)需求進(jìn)行調(diào)查分析,確定系統(tǒng)目標(biāo),提出具體的問(wèn)題解決方案,是系統(tǒng)建設(shè)的重要組成部分。與商業(yè)圖書(shū)館相比,學(xué)校圖書(shū)館的規(guī)模較小,但必須擁有完整的圖書(shū)信息、每本書(shū)的詳細(xì)記錄信息以及功能完備的系統(tǒng)。因此,用戶(hù)的需求可以分為四個(gè)方面:一方面,圖書(shū)館工作人員利用計(jì)算機(jī)對(duì)各類(lèi)圖書(shū)進(jìn)行管理,分類(lèi)編號(hào),調(diào)整圖書(shū)結(jié)構(gòu),增加圖書(shū)庫(kù)存,滿足學(xué)生的需求;使用電腦查詢(xún)和瀏覽圖書(shū)館的圖書(shū),確定自己需要的圖書(shū),準(zhǔn)備借閱;第三個(gè)方面是工作人員向?qū)W生發(fā)放圖書(shū)證;第四個(gè)方面也是圖書(shū)館的核心工作,圖書(shū)的借閱。管理。這四個(gè)方面構(gòu)成了

17、學(xué)校圖書(shū)館的一個(gè)整體工作,采用計(jì)算機(jī)自動(dòng)信息處理,可以方便快捷地共享信息、交換信息、高效協(xié)同工作。在軟硬件方面,系統(tǒng)要求,軟件要求簡(jiǎn)單易學(xué),界面友好,易于掌握,可以非常簡(jiǎn)單方便的管理各種圖書(shū)信息。硬件配置要求不要太高,才能很好的適應(yīng)現(xiàn)在的學(xué)校圖書(shū)館。對(duì)系統(tǒng)在開(kāi)發(fā)方式方面的需求,由于學(xué)校圖書(shū)館是非商業(yè)利益,系統(tǒng)設(shè)計(jì)開(kāi)發(fā)周期要短,在短時(shí)間內(nèi)完成,降低開(kāi)發(fā)成本,提高開(kāi)發(fā)效率,方便,簡(jiǎn)單和實(shí)用的系統(tǒng)開(kāi)發(fā)指南。第三章系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)如果你想完成一個(gè)完整的圖書(shū)館管理系統(tǒng),你需要大量的相關(guān)信息。由于各種條件的限制,考慮到開(kāi)發(fā)成本,本系統(tǒng)只實(shí)現(xiàn)了基本的管理功能。不完全滿足上面例子中描述的庫(kù),使用前需要重新開(kāi)發(fā)

18、。第一節(jié) 系統(tǒng)目標(biāo)設(shè)計(jì)系統(tǒng)開(kāi)發(fā)的總體目標(biāo)是實(shí)現(xiàn)圖書(shū)借閱管理的系統(tǒng)化、標(biāo)準(zhǔn)化、自動(dòng)化。它可以注冊(cè)圖書(shū),即提前將圖書(shū)的基本信息(如:書(shū)名、作者、價(jià)格等)存儲(chǔ)在數(shù)據(jù)庫(kù)中,以供日后檢索??梢宰?cè)借款人,包括記錄借款人地址等。提供便捷的查詢(xún)方式。如:書(shū)名、作者、出版時(shí)間(準(zhǔn)確時(shí)間、時(shí)間段、某段時(shí)間前、某段時(shí)間后)等用于圖書(shū)檢索的信息,并能反映圖書(shū)的借閱情況;搜索個(gè)人信息;按姓名查詢(xún)聯(lián)系信息。提供統(tǒng)計(jì)分析功能??梢燥@示圖書(shū)種類(lèi)的比例、庫(kù)存和貸款比率。提供舊書(shū)銷(xiāo)毀功能,對(duì)被淘汰、損壞或丟失的書(shū)目及時(shí)修改數(shù)據(jù)庫(kù)??梢詫?duì)使用管理系統(tǒng)的用戶(hù)進(jìn)行管理,根據(jù)不同的工作職能提供不同的功能授權(quán)。提供更完善的錯(cuò)誤控制和友好

19、的用戶(hù)界面,盡量避免誤操作。第二節(jié) 系統(tǒng)功能分析根據(jù)以上功能,圖書(shū)館管理系統(tǒng)的數(shù)據(jù)分為:數(shù)據(jù)錄入部分:主要包括圖書(shū)基本信息錄入、借書(shū)人基本信息錄入、用戶(hù)基本信息錄入。數(shù)據(jù)輸出部分:主要用于各種統(tǒng)計(jì)查詢(xún),包括:根據(jù)圖書(shū)信息(如書(shū)名、作者等)查找圖書(shū)及其借閱信息,統(tǒng)計(jì)輸出圖書(shū)類(lèi)型比例等。數(shù)據(jù)處理部分:主要涉及借入和歸還的處理。例如,圖書(shū)借出后,必須在數(shù)據(jù)庫(kù)中將該圖書(shū)標(biāo)記為已借出,以防止出現(xiàn)數(shù)據(jù)庫(kù)中有圖書(shū)而圖書(shū)館沒(méi)有圖書(shū)的情況; a 歸還書(shū)籍時(shí),同樣必須在數(shù)據(jù)庫(kù)中將其標(biāo)記為已歸還,以便再次借出。第三節(jié) 系統(tǒng)各功能模塊設(shè)計(jì)在系統(tǒng)功能分析的基礎(chǔ)上,考慮PowerBuilder編程的特點(diǎn),得到如圖所示的系

20、統(tǒng)功能模塊圖:圖書(shū)借閱管理系統(tǒng)圖書(shū)借閱管理系統(tǒng)數(shù)據(jù)輸入子系統(tǒng)數(shù)據(jù)輸出子系統(tǒng)數(shù)據(jù)管理子系統(tǒng)圖 3-1系統(tǒng)功能模塊圖第 4 節(jié) 數(shù)據(jù)流程圖(1) 登記/修改圖書(shū)基本信息圖書(shū)信息圖書(shū)信息信息庫(kù)圖書(shū)分類(lèi)信息庫(kù)信息分類(lèi)信息得到完整的圖書(shū)信息圖書(shū)信息庫(kù)圖 3-2 圖書(shū)基本信息的注冊(cè)/修改說(shuō)明:信息人工錄入后,存入信息庫(kù),方便日后錄入圖書(shū)信息和信息查詢(xún)。分類(lèi)信息由圖書(shū)館分類(lèi)定制,存儲(chǔ)在圖書(shū)分類(lèi)信息庫(kù)中,用于圖書(shū)分類(lèi)管理。注冊(cè)新書(shū)時(shí),在填寫(xiě)和分類(lèi)時(shí),只需要進(jìn)行相應(yīng)的選擇,并存入圖書(shū)信息庫(kù)即可。(二)借款人基本信息登記/修改借閱人基本信息借閱人基本信息借閱人信息庫(kù)圖3-3 借款人基本信息登記/修改注:輸入借款人

21、基本信息后,存入借款人信息庫(kù)。(3) 圖書(shū)查詢(xún)查詢(xún)條件查詢(xún)條件圖書(shū)信息庫(kù)信息查詢(xún)圖書(shū)查詢(xún)結(jié)果圖 3-4 圖書(shū)查詢(xún)說(shuō)明:輸入查詢(xún)條件后,會(huì)搜索庫(kù)并反映查詢(xún)結(jié)果。(4) 圖書(shū)查詢(xún)統(tǒng)計(jì)條件統(tǒng)計(jì)條件圖書(shū)分類(lèi)信息庫(kù)信息統(tǒng)計(jì)圖書(shū)統(tǒng)計(jì)結(jié)果圖書(shū)信息庫(kù)圖 3-5 圖書(shū)查詢(xún)說(shuō)明:根據(jù)選取的統(tǒng)計(jì)條件,搜索圖書(shū)分類(lèi)信息庫(kù)或圖書(shū)信息庫(kù),并反映統(tǒng)計(jì)結(jié)果。(5) 圖書(shū)借閱借閱人編號(hào)借閱人編號(hào)借閱人信息庫(kù)借閱人信息認(rèn)證圖書(shū)信息庫(kù)圖書(shū)借出處理圖書(shū)編號(hào)圖書(shū)信息認(rèn)證在借信息庫(kù)圖書(shū)在借狀態(tài)修改圖 3-6 借書(shū)說(shuō)明:輸入借款人編號(hào),通過(guò)查詢(xún)借款人信息庫(kù)驗(yàn)證借款人身份。輸入書(shū)號(hào),通過(guò)搜索圖書(shū)信息庫(kù),驗(yàn)證圖書(shū)信息。圖書(shū)借閱處理完成后,在圖

22、書(shū)借閱圖書(shū)館登記,借閱圖書(shū)的借閱標(biāo)志設(shè)置為“是”。(6) 還書(shū)在借圖書(shū)編號(hào)在借圖書(shū)編號(hào)圖書(shū)信息庫(kù)借閱人信息庫(kù)在借信息庫(kù)圖書(shū)歸還處理圖書(shū)在借狀態(tài)修改在借信息庫(kù)修改圖 3-7 還書(shū)說(shuō)明:輸入書(shū)號(hào),搜索借閱信息庫(kù),反映圖片和借閱情況。歸還操作后,修改借閱信息庫(kù)中的相關(guān)項(xiàng)目,同時(shí)修改圖書(shū)信息庫(kù)中相關(guān)圖書(shū)的借閱標(biāo)志為“No.第 4 章 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)是MIS系統(tǒng)的核心部分。設(shè)計(jì)數(shù)據(jù)庫(kù),首先要進(jìn)行需求分析,然后進(jìn)行數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫(kù)結(jié)構(gòu)實(shí)現(xiàn)等步驟。第一節(jié) 數(shù)據(jù)庫(kù)需求分析根據(jù)以上需求分析和數(shù)據(jù)組織,開(kāi)始設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),即根據(jù)需求繪制實(shí)體/關(guān)系圖(E/R)。從概念上講,E/R 圖表

23、示系統(tǒng)需要的數(shù)據(jù)以及這些數(shù)據(jù)之間的關(guān)系。實(shí)體/關(guān)系圖如圖:借閱人借閱人(Member)圖書(shū)基本信息(Book)圖書(shū)借閱登記(Book Loan)圖 4-1 實(shí)體關(guān)系圖從圖中可以看出,這個(gè)系統(tǒng)中實(shí)際存在的實(shí)體:書(shū)本和借書(shū)人,其中借書(shū)人與書(shū)本是多對(duì)多的關(guān)系。對(duì)于本系統(tǒng),通過(guò)對(duì)圖書(shū)借閱管理的內(nèi)容和數(shù)據(jù)流的分析,設(shè)計(jì)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)如下:(一)圖書(shū)基本信息,數(shù)據(jù)項(xiàng)包括書(shū)號(hào)、書(shū)名、作者等。(二)借款人基本信息,數(shù)據(jù)項(xiàng)包括借款人編號(hào)、借款人等。(3)圖書(shū)借閱登記,其數(shù)據(jù)項(xiàng)包括借閱序號(hào)、借閱書(shū)號(hào)、借閱人號(hào)等。為實(shí)現(xiàn)圖書(shū)信息錄入的便捷性和規(guī)律性及相關(guān)統(tǒng)計(jì)功能,還應(yīng)增加信息和圖書(shū)分類(lèi)信息:(四)信息,數(shù)據(jù)項(xiàng)包括

24、編號(hào)、姓名、地址等。(五)圖書(shū)分類(lèi)信息,數(shù)據(jù)項(xiàng)包括分類(lèi)號(hào)、分類(lèi)名稱(chēng)、同類(lèi)型圖書(shū)數(shù)量。同時(shí),根據(jù)本系統(tǒng)多用戶(hù)使用特點(diǎn),增加了用戶(hù)信息表:(6)用戶(hù)信息表,數(shù)據(jù)項(xiàng)包括用戶(hù)名、密碼、用戶(hù)權(quán)限。為實(shí)現(xiàn)借書(shū)逾期處罰制度,還應(yīng)增加處罰規(guī)則表:(7)懲罰規(guī)則表,數(shù)據(jù)項(xiàng)包括免費(fèi)使用天數(shù)、懲罰率、規(guī)則啟用開(kāi)關(guān)。第二節(jié) 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)有幾個(gè)公式。一般我們需要做的是第三個(gè)公式,即數(shù)據(jù)表中不存在冗余字段,使得與同表中的字段沒(méi)有函數(shù)依賴(lài)關(guān)系,并且冗余字段已經(jīng)保存在一個(gè)表中。該信息不應(yīng)存在于另一個(gè)表中。如果需要,可以通過(guò)表之間的關(guān)聯(lián)來(lái)獲得。函數(shù)依賴(lài)是指表中的字段之間不應(yīng)該有計(jì)算關(guān)系。比如一個(gè)表有單價(jià)字段,金

25、額字段,就不應(yīng)該有總金額字段。如果在程序運(yùn)行過(guò)程中需要總量,可以實(shí)時(shí)計(jì)算。但是在一些比較常用的表中,我們可以適當(dāng)預(yù)留冗余字段,這樣可以減少程序運(yùn)行過(guò)程中由于表之間相互關(guān)聯(lián)而導(dǎo)致使用速度變慢等問(wèn)題。這就是所謂的第四式。在設(shè)計(jì)數(shù)據(jù)表時(shí),最好不要將用戶(hù)輸入的信息作為主鍵。每個(gè)數(shù)據(jù)表自己定義一個(gè)主鍵,添加的信息由程序自動(dòng)添加,可以減少數(shù)據(jù)更新時(shí)的錯(cuò)誤。與表關(guān)聯(lián)的外鍵最好是程序自動(dòng)生成的主鍵,這樣數(shù)據(jù)庫(kù)就更有規(guī)律了。另外,數(shù)據(jù)表設(shè)計(jì)一般應(yīng)該有一些標(biāo)志字段,可以定義為CHAR(1)或BIT類(lèi)型。建議在實(shí)際應(yīng)用中定義一個(gè)CHAR(1)字段來(lái)存儲(chǔ)各種可能的狀態(tài)。在最初的設(shè)計(jì)中,可能會(huì)有一些我們沒(méi)有考慮到的情況

26、。在程序的后續(xù)開(kāi)發(fā)中,我們可以將flag字段設(shè)計(jì)成不同的值。解決了,以免修改數(shù)據(jù)庫(kù)結(jié)構(gòu)。在數(shù)據(jù)庫(kù)的初始設(shè)計(jì)中必須小心,考慮到所有可能的情況,即使當(dāng)時(shí)沒(méi)有使用,也應(yīng)該留在數(shù)據(jù)庫(kù)中作為備用字段,以備將來(lái)擴(kuò)展。一旦程序開(kāi)始編碼,您應(yīng)該盡量避免修改數(shù)據(jù)庫(kù)。因?yàn)槿绻麛?shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生變化,所有與修改數(shù)據(jù)表相關(guān)的業(yè)務(wù)都可能受到影響,而且有些影響很難看到,很容易形成惡性循環(huán)。錯(cuò)誤越多,修改越亂,最終的結(jié)果就是程序的失敗。 PB的數(shù)據(jù)窗口不同于其他語(yǔ)言的數(shù)據(jù)控件,它的很多東西都是預(yù)編譯的。即使你已經(jīng)調(diào)試了一個(gè)沒(méi)有錯(cuò)誤的模塊,只要數(shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生變化。必須重新修改相應(yīng)的模塊,否則會(huì)出現(xiàn)問(wèn)題。圖書(shū)借閱管理系統(tǒng)數(shù)據(jù)庫(kù)中各

27、表的設(shè)計(jì)結(jié)果如下表所示。每個(gè)表都表示為數(shù)據(jù)庫(kù)中的一個(gè)表。說(shuō)明:記錄借款人的基本信息,設(shè)置memberid為主鍵和索引。表 4-1 借款人基本情況列名數(shù)據(jù)類(lèi)型長(zhǎng)度可以為空筆記會(huì)員ID字符10不為空借款人編號(hào)成員名字字符10無(wú)效的借款人IDvarchar20無(wú)效的不添加字符50無(wú)效的電話字符20無(wú)效的連接Mobile字符20無(wú)效的移動(dòng)說(shuō)明:記錄系統(tǒng)用戶(hù)的用戶(hù)名、密碼和權(quán)限,name設(shè)置為主鍵。表4-2 用戶(hù)基本信息表people列名數(shù)據(jù)類(lèi)型長(zhǎng)度可以為空筆記姓名字符10不為空用戶(hù)名密碼字符10不為空密碼等級(jí)字符1不為空允許圖書(shū)基本信息表 bookinfo說(shuō)明:記錄書(shū)籍的基本信息,設(shè)置bookid為主

28、鍵和索引。表 4-3 圖書(shū)基本信息表 bookinfo列名數(shù)據(jù)類(lèi)型長(zhǎng)度可以為空筆記書(shū)號(hào)字符10不為空書(shū)號(hào)伊斯本字符30無(wú)效的圖書(shū) ISBN班級(jí)名稱(chēng)字符20無(wú)效的書(shū)籍類(lèi)型標(biāo)題字符40無(wú)效的書(shū)名發(fā)布日期日期-無(wú)效的發(fā)布日期作者字符20無(wú)效的作者字整數(shù)-無(wú)效的字?jǐn)?shù)(萬(wàn))酒館字符30無(wú)效的價(jià)格數(shù)字19.4無(wú)效的價(jià)格磁盤(pán)字符1無(wú)效的光盤(pán)關(guān)鍵詞字符30無(wú)效的關(guān)鍵詞數(shù)字整數(shù)-無(wú)效的商店代碼摘 要varchar100無(wú)效的概括書(shū)本貸款字符1無(wú)效的在貸款標(biāo)志的書(shū)(Y-借款 N-不借款)基本信息表publishinfo說(shuō)明:記錄信息,pubid設(shè)置為主鍵。表4-4 基本信息表publishinfo列名數(shù)據(jù)類(lèi)型長(zhǎng)度

29、可以為空筆記公開(kāi)字符4不為空編號(hào)酒館字符30無(wú)效的姓名添加字符50無(wú)效的壓縮字符6無(wú)效的郵政編碼電話字符16無(wú)效的連接傳真字符16無(wú)效的字符16無(wú)效的網(wǎng)址分類(lèi)信息表bookclass說(shuō)明:記錄自定義分類(lèi),classid設(shè)置為主鍵。表 4-5 分類(lèi)信息表 bookclass列名數(shù)據(jù)類(lèi)型長(zhǎng)度可以為空筆記班級(jí)號(hào)字符2不為空分類(lèi)號(hào)班級(jí)名稱(chēng)字符20無(wú)效的分類(lèi)名稱(chēng)數(shù)字整數(shù)-無(wú)效的數(shù)字貸款信息表說(shuō)明:對(duì)于借款的注冊(cè),將loanid設(shè)置為主鍵并自動(dòng)增加。表4-6 貸款信息表貸款列名數(shù)據(jù)類(lèi)型長(zhǎng)度可以為空筆記貸款人詮釋-不為空借用序列號(hào)書(shū)號(hào)字符10不為空書(shū)號(hào)會(huì)員ID字符10不為空借款人編號(hào)貸款日期日期-無(wú)效的借款

30、日期規(guī)則信息表常規(guī)說(shuō)明:記錄設(shè)置的借閱規(guī)則,days設(shè)置為主鍵。表4-7 規(guī)則信息表常規(guī)列名數(shù)據(jù)類(lèi)型長(zhǎng)度可以為空筆記天詮釋4不為空免費(fèi)貸款天數(shù)美好的十二月5.2無(wú)效的處罰標(biāo)準(zhǔn)旗幟字符1無(wú)效的規(guī)則切換(一)規(guī)劃有效指標(biāo)在組合表的列上創(chuàng)建索引,包括主鍵和外鍵所在的列。在列或類(lèi)組合上創(chuàng)建唯一索引可增強(qiáng)唯一性。瀏覽索引并卸載未使用的索引。索引需要一定的硬盤(pán)空間和時(shí)間來(lái)維護(hù)。數(shù)據(jù)插入操作頻率高的數(shù)據(jù)庫(kù)最好不要索引。讀取頻率較高的數(shù)據(jù)庫(kù)應(yīng)該有更多的索引。避免在聚集索引中包含不必要的列。在可能的情況下,使用較小的數(shù)據(jù)類(lèi)型,例如 varchar 而不是 char??紤]使用聚集索引來(lái)支持排序和環(huán)繞查詢(xún)。在優(yōu)化表

31、以進(jìn)行數(shù)據(jù)檢索時(shí),聚集索引必須支持?jǐn)?shù)據(jù)的分組索引。為集群鍵選擇一列或一組列,以經(jīng)常需要的順序?qū)?shù)據(jù)進(jìn)行排序,或?qū)⒈仨氁黄鹪L問(wèn)的記錄中的記錄分組。創(chuàng)建支持一般查詢(xún)的查找參數(shù)索引。具有高選擇性的列是索引的最佳候選者。高密度的列不適合索引。(2) 使用約束實(shí)現(xiàn)數(shù)據(jù)完整性PRIMARY KEY 約束定義表中的主鍵,它是行的唯一標(biāo)識(shí)符,它強(qiáng)制實(shí)體完整性。使用 PRIMARY KEY 約束時(shí)請(qǐng)考慮以下事實(shí):每個(gè)表只能有一個(gè) PRIMARY KEY 約束。鍵入的值必須是唯一的。不允許空值。PRIMARY KEY 約束在指定列上創(chuàng)建唯一索引,并且可以指定聚集索引和非聚集索引(如果之前不存在非聚集索引,則默認(rèn)使

32、用聚集索引)。UNIQUE 約束指定列中的任何兩行不能具有相同的值。此約束使用唯一索引來(lái)強(qiáng)制實(shí)體的完整性。 UNIQUE 約束在已經(jīng)存在主鍵(例如員工編號(hào))時(shí)很有用,但其他標(biāo)識(shí)符(例如員工的駕照編號(hào))也必須保證是唯一的。使用 UNIQUE 約束時(shí),請(qǐng)考慮以下事實(shí):允許空值??梢栽谝粋€(gè)表上設(shè)置多個(gè) UNIQUE 約束。UNIQUE 約束可以應(yīng)用于具有唯一值的單個(gè)或多個(gè)列,但不能應(yīng)用于表的主鍵??梢酝ㄟ^(guò)在指定列或列組上創(chuàng)建唯一索引來(lái)強(qiáng)制執(zhí)行索引。第五章圖書(shū)館管理系統(tǒng)的具體實(shí)現(xiàn)第一節(jié) PowerBuilder開(kāi)發(fā)工具介紹PowerBuilder是目前開(kāi)發(fā)Client/Server結(jié)構(gòu)應(yīng)用系統(tǒng)的主要工

33、具之一。 PowerBuilder 8.0在繼承和開(kāi)發(fā)之前版本優(yōu)秀功能的基礎(chǔ)上,將PowerBuilder在Enterprise Application Studio和Power Site中的功能進(jìn)行了整合,以滿足Web應(yīng)用的開(kāi)發(fā)需求。在傳統(tǒng)數(shù)據(jù)庫(kù)開(kāi)發(fā)的基礎(chǔ)上,Web 應(yīng)用程序更好地集成到 PowerBuilder 中。 PowerBuilder 完全支持面向?qū)ο蟮木幊?。它是一種功能強(qiáng)大且易于使用的第四代編程語(yǔ)言(4GL),它設(shè)置了包括數(shù)據(jù)窗口在內(nèi)的多種對(duì)象類(lèi),并且可以方便地訪問(wèn)數(shù)據(jù)庫(kù)。與其他應(yīng)用工具相比,PowerBuilder具有工作效率高、成本低、質(zhì)量高、功能強(qiáng)等特點(diǎn)。第二節(jié)PowerB

34、uilder 8應(yīng)用開(kāi)發(fā)的基本步驟當(dāng)我們要開(kāi)發(fā)一個(gè)應(yīng)用程序時(shí),我們必須首先對(duì)其進(jìn)行分析。無(wú)論是哪種應(yīng)用程序,都必須先創(chuàng)建一個(gè)應(yīng)用程序?qū)ο蟆O旅嫖覀兠枋鲆韵翽owerBuilder 8應(yīng)用程序開(kāi)發(fā)的基本步驟:(1)首先,必須建立應(yīng)用對(duì)象。(2) 創(chuàng)建一個(gè)窗口。在窗口中放置各種控件并編寫(xiě)事件響應(yīng)。(3) 創(chuàng)建菜單。窗口中的菜單可以包括菜單欄、下拉菜單、級(jí)聯(lián)菜單和彈出菜單。腳本事件響應(yīng)菜單。(4) 創(chuàng)建用戶(hù)對(duì)象。如果要重用控件的功能,可以將經(jīng)常放置在窗口中的控件定義為用戶(hù)對(duì)象。(5) 創(chuàng)建數(shù)據(jù)窗口。數(shù)據(jù)窗口可以檢索數(shù)據(jù)庫(kù)中的數(shù)據(jù),創(chuàng)建各種報(bào)表或統(tǒng)計(jì)表,修改數(shù)據(jù)庫(kù)。(6) 創(chuàng)建功能、結(jié)構(gòu)和事件。為了更

35、好地支持腳本,編寫(xiě)自定義函數(shù),定義結(jié)構(gòu)類(lèi)型變量,并為對(duì)象和控件定義自己的事件。(7)運(yùn)行調(diào)試。您可以在開(kāi)發(fā)環(huán)境中隨時(shí)運(yùn)行應(yīng)用程序,發(fā)現(xiàn)錯(cuò)誤后可以使用調(diào)試工具進(jìn)行調(diào)試。(8) 應(yīng)用程序開(kāi)發(fā)時(shí),可編譯成可執(zhí)行文件,方便用戶(hù)建立應(yīng)用系統(tǒng)的運(yùn)行環(huán)境。第三節(jié) 編碼規(guī)則為了減少軟件開(kāi)發(fā)過(guò)程中的錯(cuò)誤,在軟件開(kāi)發(fā)過(guò)程中應(yīng)該遵循一定的標(biāo)準(zhǔn)。命名對(duì)象必須有一定的規(guī)則。組件名稱(chēng)最長(zhǎng)可達(dá) 40 個(gè)字符。窗口的命名:W_function code_function description。數(shù)據(jù)窗口名稱(chēng):DW_function code_function description。菜單命名:M_function code_

36、function description。命名標(biāo)識(shí)符時(shí),標(biāo)識(shí)符應(yīng)具有一定的字面意義,有利于程序調(diào)試和腳本可讀性。本系統(tǒng)使用的命名約定為:變量作用域+變量類(lèi)型+ “ _ ” +具有一定字面意義的名稱(chēng)。例如:li_selectrow 體現(xiàn)含義: “l(fā)”代表局部變量,是local的縮寫(xiě), “ i ”代表整數(shù)類(lèi)型的變量,selectrow表示該變量是用于記錄行號(hào)的計(jì)數(shù)器。第 4 節(jié)創(chuàng)建祖先窗口和全局函數(shù)充分利用PB的面向?qū)ο筇匦?。在程序開(kāi)發(fā)過(guò)程中通常會(huì)創(chuàng)建幾個(gè)模板窗口。功能窗口上的一些常用功能都封裝在模板窗口中。然后將這些模板窗口用作祖先窗口。所有子窗口都可以通過(guò)繼承的方法生成。這減少了要編寫(xiě)的代碼量

37、。使整個(gè)程序界面整潔。修改祖先窗口時(shí),自動(dòng)修改所有子窗口。因此,祖先窗口的確定要非常小心。全局函數(shù)的工作方式與局部函數(shù)類(lèi)似。唯一的區(qū)別是全局函數(shù)的作用域是整個(gè)程序周期。它可以從任何模塊的代碼中調(diào)用。所以我們可以把一些常用的函數(shù)寫(xiě)成全局函數(shù)。在程序的其他地方反復(fù)調(diào)用。(1) 功能級(jí)別(字符級(jí)別)功能介紹:通過(guò)傳入的lev值,將部分菜單項(xiàng)設(shè)置為“禁用”,限制某些功能的使用。 Lev值是不同職責(zé)(系統(tǒng)管理1、賬簿管理2、借閱管理3、借閱操作員4)的權(quán)限,從people表的level字段中讀取。代碼分析:選擇案例列情況1”案例“2”m_main.m_borrower management.enable

38、d=falsem_main.m_book rental.enabled=falsem_main.m_system menu.m_user management.enabled=falsem_main.m_system menu.m_borrowing 規(guī)則 settings.enabled=falsem_main.m_system menu.m_book 信息 settings.enabled=false案例“3”m_main.m_book management.enabled=falsem_main.m_book rental.enabled=falsem_main.m_Book Query

39、.enabled=falsem_main.m_statistics.enabled=falsem_main.m_system menu.m_user management.enabled=falsem_main.m_system menu.m_borrowing 規(guī)則 settings.enabled=falsem_main.m_system menu.m_book 信息 settings.enabled=false案例“4”m_main.m_book management.enabled=falsem_main.m_borrower management.enabled=falsem_mai

40、n.m_system menu.m_user management.enabled=falsem_main.m_system menu.m_borrowing 規(guī)則 settings.enabled=falsem_main.m_system menu.m_book 信息 settings.enabled=false結(jié)束選擇(2) 函數(shù)countdaycountday(日期 date1,日期 date2)功能介紹:傳入date1(開(kāi)始日期)和date2(結(jié)束日期)的值,計(jì)算相差的天數(shù),返回值為整數(shù)。代碼分析:國(guó)際日日=(整數(shù)(年(日期2)-整數(shù)(年(日期1)*365 +&(整數(shù)(月(date2)

41、 - 整數(shù)(月(date1)*30 +&(整數(shù)(天(date2) - 整數(shù)(天(date1)*1返回日(3) 函數(shù)計(jì)數(shù)countfine (整數(shù)天,小數(shù)罰款,整數(shù) countday)功能介紹:根據(jù)免費(fèi)借書(shū)天數(shù)、罰款率罰款、已借天數(shù)(由countday函數(shù)計(jì)算)計(jì)算成本,返回值為小數(shù)類(lèi)型。代碼分析:十二月計(jì)數(shù)if countday=0 and countday=days then /免費(fèi)使用期罰款為 0計(jì)數(shù)=0別的countfine=(countday - days)*fine /根據(jù)期限計(jì)算罰金萬(wàn)一返回計(jì)數(shù)第 5 節(jié) 應(yīng)用程序?qū)ο?App_librarain功能介紹:PB程序以一個(gè)應(yīng)用程序啟動(dòng)

42、,即每個(gè)PB程序開(kāi)始運(yùn)行時(shí),首先執(zhí)行應(yīng)用程序?qū)ο蟮腛pen事件。在 Open 事件中連接到數(shù)據(jù)庫(kù)并打開(kāi)登錄窗口 w_login。代碼分析:/ 檔案館員SQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=圖書(shū)館員;UID=;PWD=使用 SQLCA 連接;/判斷數(shù)據(jù)庫(kù)連接是否成功如果 sqlca.sqlcode = 0 那么打開(kāi)(w_login)別的messagebox(系統(tǒng)提示, 連接數(shù)據(jù)庫(kù)失??!)萬(wàn)一第六節(jié) 特定窗口的實(shí)現(xiàn)(1) 登錄窗口 w_login圖 5-1 特定窗口的實(shí)現(xiàn)功能介紹:該窗口主

43、要是檢查操作員輸入的用戶(hù)名和密碼是否正確。如果正確,則允許登錄。如果有錯(cuò)誤,則會(huì)顯示錯(cuò)誤消息。操作方法:填寫(xiě)“用戶(hù)名”和“密碼”后,點(diǎn)擊“登錄”按鈕進(jìn)行驗(yàn)證,點(diǎn)擊“取消”退出。代碼分析:event: sle_1.setfocus() /“用戶(hù)名”輸入框獲得焦點(diǎn)this.width=923這個(gè).高度=588“登錄”按鈕:字符串名稱(chēng),密碼查列夫智力測(cè)驗(yàn)名稱(chēng)=sle_1.textpwd=sle_2.text/檢查用戶(hù)名和密碼是否匹配選擇級(jí)別進(jìn)入:列夫從人WHERE name=:name 和 password=:pwd;如果 lev 那么打開(kāi)(w_main)level(lev) /根據(jù)權(quán)限設(shè)置菜單狀態(tài)

44、別的sle_1.setfocus()test=messagebox(提示:,用戶(hù)名或密碼錯(cuò)誤!,感嘆號(hào)!,好的取消!, 2)end if /判斷是否重新登錄如果測(cè)試=1 那么返回 1別的關(guān)閉(父)萬(wàn)一(2) 主窗口 w_main功能介紹:該窗口充當(dāng)菜單和其他子窗口的容器。窗口設(shè)置;這個(gè)窗口是一個(gè)容器窗口,所以它的WindowType是mdihelp!,說(shuō)明這個(gè)窗口是一個(gè)多文檔界面,可以有菜單、工具欄和狀態(tài)欄。 WindowState is minimized!,表示窗口在運(yùn)行時(shí)最大化。 Menuname 屬性設(shè)置為 m_main,這是連接到該窗口的菜單的名稱(chēng)。(3) 菜單 m_main圖 5-

45、2 菜單 m_main功能介紹:打開(kāi)各個(gè)功能窗口操作方法:?jiǎn)螕舨藛雾?xiàng)或工具欄上的相應(yīng)按鈕,狀態(tài)欄可顯示幫助信息。代碼分析:每個(gè)對(duì)應(yīng)菜單項(xiàng)的點(diǎn)擊事件使用opensheet方法打開(kāi)對(duì)應(yīng)的功能窗口。例如“新書(shū)存儲(chǔ)”菜單項(xiàng)下點(diǎn)擊事件的處理代碼為: opensheet(w_newbook,w_newbook,parentwindow,0,cascaded!)(4) 新書(shū)存放窗口w newbook圖 5-3 新書(shū)存儲(chǔ)窗口功能介紹:新增、修改圖書(shū)信息。操作方法:a.添加圖書(shū)信息:點(diǎn)擊“添加”按鈕添加圖書(shū)信息,完成后點(diǎn)擊“保存”按鈕灣。修改圖書(shū)信息:通過(guò)“書(shū)號(hào)”檢索圖書(shū)信息,修改后點(diǎn)擊“保存”按鈕代碼分析:打

46、開(kāi)事件: dw_1.settransobject(sqlca) /指定數(shù)據(jù)窗口的事務(wù)對(duì)象dw_1.retrieve() /從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)用于數(shù)據(jù)窗口this.width=2926 /設(shè)置窗口的高寬這個(gè).高度=1572“檢索”按鈕:字符串 ls_bookid,ls_filterls_bookid=sle_bookid.textdw_1.setfilter(bookid=+ls_bookid+) /設(shè)置過(guò)濾條件dw_1.filter() /過(guò)濾數(shù)據(jù)“上一個(gè)”按鈕: dw_1.scrollpriorrow() /滾動(dòng)到上一行“下一步”按鈕: dw_1.scrollnextrow() /滾動(dòng)到下一

47、行“添加”按鈕:長(zhǎng) ll_rowll_row=dw_1.insertrow(0) /向數(shù)據(jù)窗口添加一行dw_1.scrolltorow(ll_row) /數(shù)據(jù)窗口滾動(dòng)到當(dāng)前行dw_1.setcolumn(2) /使第一列成為當(dāng)前列并獲得焦點(diǎn)dw_1.setfocus()“保存”按鈕:長(zhǎng) ll_rowdw_1.accepttext() /向主緩沖區(qū)寫(xiě)入數(shù)據(jù)if dw_1.modifiedcount()0 then /檢查數(shù)據(jù)是否被修改if dw_1.update()0 then /如果數(shù)據(jù)庫(kù)被修改則更新數(shù)據(jù)庫(kù)犯罪; / 提交事務(wù)cb_new.setfocus() /“添加”按鈕獲得焦點(diǎn)別的回滾;

48、 / 回滾事務(wù)messagebox(系統(tǒng)提示, 保存失??!請(qǐng)檢查數(shù)據(jù)正確性)dw_1.setcolumn(1) /數(shù)據(jù)窗口第一列獲得焦點(diǎn)dw_1.setfocus()萬(wàn)一別的cb_new.setfocus() /“添加”按鈕獲得焦點(diǎn)萬(wàn)一(5)舊書(shū)銷(xiāo)毀窗口w_delbook圖 5-4 舊書(shū)銷(xiāo)毀窗口功能介紹:刪除圖書(shū)信息。操作方法:首先通過(guò)書(shū)號(hào)檢索圖書(shū)信息,然后點(diǎn)擊“銷(xiāo)毀”按鈕取消該圖書(shū)。代碼分析:打開(kāi)事件:類(lèi)似于“新書(shū)存儲(chǔ)窗口w_newbook”“檢索”按鈕:字符串 ls_bookid,ls_filterls_bookid=sle_bookid.text /設(shè)置過(guò)濾條件dw_1.setfilte

49、r(bookid=+ls_bookid+) /過(guò)濾數(shù)據(jù)dw_1.filter() / 使“銷(xiāo)毀”按鈕可用cb_del.enabled=truesle_bookid.setfocus()“銷(xiāo)毀”按鈕: long li_rowli_row=dw_1.getrow() /獲取當(dāng)前行號(hào)if li_row0 then /判斷是否存在可以刪除的行if messagebox(刪除問(wèn)題, 你真的要取消這本書(shū)嗎?,question!,Yesno!,2)=1 thendw_1.deleterow(li_row) /刪除行if dw_1.update()0 then /更新數(shù)據(jù)庫(kù)犯罪;別的回滾;messagebox

50、(錯(cuò)誤信息,無(wú)法登出!)萬(wàn)一li_row=dw_1.getrow() /獲取當(dāng)前行if li_rowdw_1.rowcount() then /判斷是否至少有兩行dw_1.selectrow(0,false) /高亮當(dāng)前行dw_1.selectrow(li_row,true)萬(wàn)一萬(wàn)一別的messagebox(系統(tǒng)提示, 沒(méi)有數(shù)據(jù)要注銷(xiāo))萬(wàn)一cb_del.enabled=false /使“銷(xiāo)毀”按鈕回到不可用狀態(tài)(6) 注冊(cè)借用者窗口 w_newmember圖 5-5 Register Borrower 窗口功能介紹:新增、修改借款人信息操作方法:類(lèi)似“新書(shū)存儲(chǔ)窗口w_newbook”代碼分析:

51、打開(kāi)事件:類(lèi)似于“新書(shū)存儲(chǔ)窗口w_newbook”“搜索”按鈕:類(lèi)似于“新書(shū)存儲(chǔ)窗口 w_newbook”“添加”按鈕:類(lèi)似于“新書(shū)存儲(chǔ)窗口w_newbook”“保存”按鈕:類(lèi)似于“新書(shū)存儲(chǔ)窗口 w_newbook”(7) 取消借用窗口 w_delmember圖 5-6 注銷(xiāo)借閱者窗口功能介紹:刪除借款人信息操作方法:類(lèi)似“舊書(shū)銷(xiāo)毀窗口w_delbook”代碼分析:打開(kāi)事件:類(lèi)似于“舊書(shū)銷(xiāo)毀窗口w_delbook”“搜索”按鈕:類(lèi)似于“舊書(shū)銷(xiāo)毀窗口 w_delbook”“銷(xiāo)毀”按鈕:類(lèi)似于“舊書(shū)銷(xiāo)毀窗口 w_delbook”(8) 借款窗口 w_loan圖 5-7 借閱窗口功能介紹:借書(shū),操作

52、方法:輸入“借書(shū)人號(hào)”和“書(shū)號(hào)”后,會(huì)顯示借書(shū)人及書(shū)號(hào),然后點(diǎn)擊“借書(shū)”按鈕即可借書(shū)。代碼分析:打開(kāi)事件: this.width=1243這個(gè).height=1160“借款人號(hào)碼”輸入框修改事件:字符串 ls_memberid,ls_membernamels_memberid=trim(this.text)select membername /根據(jù)“借款人號(hào)”查詢(xún)“借款人”進(jìn)入:ls_membername來(lái)自會(huì)員信息其中 memberid=:ls_memberid;if sqlca.sqlcode0 then /判斷是否有“借款人”messagebox(系統(tǒng)提示, 沒(méi)有該借款人的信息!)sle

53、_memberid.setfocus() /“借款人ID”輸入框獲取焦點(diǎn)返回別的sle_bookid.setfocus() /“圖書(shū)ID”輸入框獲取焦點(diǎn)sle_membername.text=ls_membername /顯示“”借款人萬(wàn)一“書(shū)號(hào)”輸入框修改事件:字符串 ls_bookid, ls_titlels_bookid=trim(this.text)選擇標(biāo)題進(jìn)入:ls_title來(lái)自書(shū)信其中 bookid=:ls_bookid;如果 sqlca.sqlcode0 那么messagebox(系統(tǒng)提示,沒(méi)有這本書(shū)的信息!)sle_bookid.setfocus()返回別的sle_title

54、.text=ls_title萬(wàn)一“借”按鈕:字符串 ls_bookid,ls_memberid,ls_bookonloan日期 ldt_nowdateldt_nowdate=today()/獲取“當(dāng)前日期”ls_bookid=trim(sle_bookid.text)/獲取“借款人ID”ls_memberid=trim(sle_memberid.text)/獲取“書(shū)號(hào)”/強(qiáng)制輸入“借書(shū)人號(hào)”和“書(shū)號(hào)”如果 ls_memberid= 或 isnull(ls_memberid) 那么messagebox(系統(tǒng)提示,請(qǐng)輸入借款人號(hào)碼!)sle_memberid.setfocus()返回萬(wàn)一如果 ls

55、_bookid= 或 isnull(ls_bookid) 那么messagebox(系統(tǒng)提示,請(qǐng)輸入書(shū)號(hào)!)sle_bookid.setfocus()返回萬(wàn)一/根據(jù)“書(shū)號(hào)”檢查圖書(shū)是否借出選擇 bookonloan INTO:ls_bookonloan從 bookinfo WHERE bookid=:ls_bookid;如果 ls_bookonloan=y 那么messagebox(系統(tǒng)提示, 本書(shū)已借出!)sle_bookid.setfocus()返回別的/添加借書(shū)記錄插入貸款(bookid,memberid,loandate)值(:ls_bookid,:ls_memberid,:ldt_n

56、owdate);犯罪;/設(shè)置圖書(shū)為“出借”狀態(tài)更新 bookinfo 設(shè)置 bookonloan=y哪里 bookid=:ls_bookid;犯罪;萬(wàn)一/“借款人號(hào)”獲得焦點(diǎn),清空所有輸入框sle_memberid.setfocus()sle_bookid.text=sle_title.text=sle_memberid.text=sle_membername.text=“關(guān)閉”按鈕:關(guān)閉(父)(9) 還書(shū)窗口w_return圖 5-8 還書(shū)窗口功能介紹:還書(shū)操作方法:輸入“書(shū)號(hào)”,判斷后顯示書(shū)名、借書(shū)人編號(hào)、借書(shū)人。并根據(jù)是否啟用“罰款系統(tǒng)”(在“罰款規(guī)則窗口”中設(shè)置)決定是否計(jì)算罰款。代碼

57、分析:打開(kāi)事件: char lc_flag/查詢(xún)“規(guī)則”是否啟用并顯示選擇標(biāo)志進(jìn)入:lc_flag從常規(guī);如果 lc_flag=y 則 sle_fine.enabled=truethis.width=1285這個(gè).高度=1256“書(shū)號(hào)”輸入框修改事件:字符串 ls_bookid,ls_title,ls_memberid,ls_membername日期 ld_date1,ld_date2int li_daysdec ld_fine, ld_countfineld_date2=today()/獲取當(dāng)前日期ls_bookid=trim(this.text)/獲取“圖書(shū)ID”/根據(jù)“書(shū)號(hào)”查詢(xún)“借閱日

58、期”選擇貸款日期進(jìn)入:ld_date1從貸款哪里 bookid=:ls_bookid;/查詢(xún)“空閑天數(shù)”、“處罰規(guī)定”選擇天,很好INTO :li_days,:ld_fine從常規(guī);/計(jì)算懲罰ld_countfine=countfine(li_days,ld_fine,countday(ld_date1,ld_date2)/查詢(xún)“書(shū)名”選擇標(biāo)題進(jìn)入:ls_title來(lái)自書(shū)籍信息哪里 bookid=:ls_bookid;/查詢(xún)“借款人號(hào)碼”、“借款人”選擇會(huì)員ID,會(huì)員名INTO :ls_memberid,:ls_membername來(lái)自會(huì)員信息會(huì)員在哪里(選擇會(huì)員編號(hào)從貸款哪里 bookid=

59、:ls_bookid);如果 sqlca.sqlcode0 那么messagebox(系統(tǒng)提示,無(wú)貸款信息!)sle_bookid.setfocus()返回別的sle_title.text=ls_titlesle_memberid.text=ls_memberidsle_membername.text=ls_membername如果 sle_fine.enabled=true 那么 sle_fine.text=string(ld_countfine)萬(wàn)一“返回”按鈕:字符串 ls_bookid,ls_bookonloanls_bookid=sle_bookid.text如果 ls_bookid

60、= 或 isnull(ls_bookid) 那么messagebox(系統(tǒng)提示,請(qǐng)輸入書(shū)號(hào)!)sle_bookid.setfocus()返回別的選擇 bookonloan 進(jìn)入 :ls_bookonloan來(lái)自 bookinfo,其中 bookid=:ls_bookid;如果 ls_bookonloan=n 那么messagebox(系統(tǒng)提示, 本書(shū)已被退回!)別的刪除貸款 where bookid=:ls_bookid;更新 bookinfo set bookonloan=n where bookid=:ls_bookid;犯罪;萬(wàn)一萬(wàn)一sle_bookid.setfocus()sle_bo

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論