delphi 圖書館管理系統(tǒng) 軟件課程設(shè)計(jì)報(bào)告_第1頁
delphi 圖書館管理系統(tǒng) 軟件課程設(shè)計(jì)報(bào)告_第2頁
delphi 圖書館管理系統(tǒng) 軟件課程設(shè)計(jì)報(bào)告_第3頁
delphi 圖書館管理系統(tǒng) 軟件課程設(shè)計(jì)報(bào)告_第4頁
delphi 圖書館管理系統(tǒng) 軟件課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

./南京理工大學(xué)課程設(shè)計(jì)說明書趙軍旺__0906840442黃岳0906840419學(xué)院<系>:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)題 目:Delphi軟件課程設(shè)計(jì)——圖書館管理系統(tǒng)20xx9月目錄一、概述·················································3二、需求分析··············································4三、系統(tǒng)設(shè)計(jì)···············································5四、系統(tǒng)實(shí)施···············································8五、系統(tǒng)測(cè)試···············································8六、收獲和體會(huì)············································8七、附錄··················································9八、參考文獻(xiàn)·············································9概述項(xiàng)目背景:隨著知識(shí)經(jīng)濟(jì)時(shí)代的迅速發(fā)展,由于以前廣泛使用的管理書籍的方法都將慢慢淘汰。而如今積累的書籍越來越多,若是不對(duì)其進(jìn)行有效地管理,對(duì)信息的查詢就如大海撈針不得其所。本系統(tǒng)就是針對(duì)圖書管理的要求而開發(fā)的。編寫目的:現(xiàn)代化的圖書館也應(yīng)該有現(xiàn)代化的管理系統(tǒng)。隨著計(jì)算機(jī)與性能的不斷提高,計(jì)算機(jī)已經(jīng)在教學(xué)、科研、管理等方面得到越來越廣泛的應(yīng)用。同樣,圖書館管理系統(tǒng)有效地管理也離不開計(jì)算機(jī)。一個(gè)良好的圖書館管理系統(tǒng),不但可以方便管理人員實(shí)現(xiàn)圖書館的日常管理工作,更重要的是可以提高圖書館資源的利用效率,體現(xiàn)出圖書館的價(jià)值。軟件定義:開發(fā)圖書館管理系統(tǒng)需要用到Delphi7,SQLServer2008.Delphi,是Windows平臺(tái)下著名的快速應(yīng)用程序開發(fā)工具<RapidApplicationDevelopment,簡(jiǎn)稱RAD>。它的前身,即是DOS時(shí)代盛行一時(shí)的"BorlandTurboPascal",最早的版本由美國(guó)Borland〔寶蘭〕公司于1995年開發(fā)。主創(chuàng)者為AndersHejlsberg。經(jīng)過數(shù)年的發(fā)展,此產(chǎn)品也轉(zhuǎn)移至Embarcadero公司旗下。Delphi是一個(gè)集成開發(fā)環(huán)境〔IDE〕,使用的核心是由傳統(tǒng)Pascal語言發(fā)展而來的ObjectPascal,以圖形用戶界面為開發(fā)環(huán)境,透過IDE、VCL工具與編譯器,配合連結(jié)數(shù)據(jù)庫的功能,構(gòu)成一個(gè)以面向?qū)ο蟪绦蛟O(shè)計(jì)為中心的應(yīng)用程序開發(fā)工具。SQLServer2008是一個(gè)重大的產(chǎn)品版本,它推出了許多新的特性和關(guān)鍵的改進(jìn),使得它成為至今為止的最強(qiáng)大和最全面的SQLServer版本。這篇文章詳細(xì)介紹了MicrosoftSQLServer2008中的新的特性、優(yōu)點(diǎn)和功能……在現(xiàn)今數(shù)據(jù)的世界里,公司要獲得成功和不斷發(fā)展,他們需要定位主要的數(shù)據(jù)趨勢(shì)的愿景。微軟的這個(gè)數(shù)據(jù)平臺(tái)愿景幫助公司滿足這些數(shù)據(jù)爆炸和下一代數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序的需求。微軟將繼續(xù)投入和發(fā)展以下的關(guān)鍵領(lǐng)域來支持他們的數(shù)據(jù)平臺(tái)愿景:關(guān)鍵任務(wù)企業(yè)數(shù)據(jù)平臺(tái)、動(dòng)態(tài)開發(fā)、關(guān)系數(shù)據(jù)和商業(yè)智能。開發(fā)環(huán)境:Delphi菜單、Delphi快捷工具欄、Delphi組件面板、對(duì)象樹狀查看器、對(duì)象查看器、有豐富的第三方控件。需求分析問題的提出:隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對(duì)圖書信息進(jìn)行管理,具有手工管理所無法比擬的優(yōu)點(diǎn)。圖書管理系統(tǒng)的開發(fā)是一個(gè)老生常談的問題,以其作為數(shù)據(jù)庫開發(fā)的示例不僅是因?yàn)樗拈_放性,而且還因?yàn)樗且粋€(gè)開放的系統(tǒng),比較成熟,通過實(shí)踐,對(duì)學(xué)生的軟件開發(fā)能力有很大幫助。本系統(tǒng)主要實(shí)現(xiàn)對(duì)圖書館信息的管理,主要可以分為兩大塊:圖書信息的服務(wù)系統(tǒng)和圖書的綜合管理系統(tǒng)。圖書的使用對(duì)象是借閱者,例如學(xué)生,教師;管理者是圖書館的管理員。因此根據(jù)這些信息,本系統(tǒng)的主要功能就是:實(shí)現(xiàn)圖書館圖書信息的管理和維護(hù),如用戶信息管理,圖書館規(guī)則維護(hù),新書入庫,整理圖書,修改圖書信息和進(jìn)行查詢等;以與服務(wù)系統(tǒng)的圖書信息查詢,圖書的借出和歸還等功能;圖書信息管理系統(tǒng)能夠?yàn)橛脩籼峁┏渥愕男畔⒑涂旖莸牟樵兪侄?例如:檢索迅速、查找方便、可靠性高、存儲(chǔ)量大、XX性好、壽命長(zhǎng)、成本低等。這些優(yōu)點(diǎn)能夠極大地提高圖書信息管理的效率,也是圖書管理的科學(xué)化、數(shù)字化、正規(guī)化管理,與世界接軌的重要條件。用計(jì)算機(jī)制作的圖書信息管理系統(tǒng)還可以通過功能強(qiáng)大的Internet網(wǎng)與時(shí)的向讀者發(fā)布圖書的最新動(dòng)態(tài),因此,開發(fā)這樣一套管理軟件成為很有必要的事情。綜上,本系統(tǒng)主要著力于解決三個(gè)問題,一是服務(wù)功能,包括查詢,借閱等等;二是管理功能,包括管理員對(duì)數(shù)目和讀者的管理;三是讀書的采購功能,包括訂單和入庫等。如何使用delphi有效地實(shí)現(xiàn),將是一個(gè)值得思考的問題。系統(tǒng)的業(yè)務(wù)功能分析:密碼錯(cuò)誤!密碼錯(cuò)誤!開始主頁用戶登錄讀者1.我的圖書館2.檢索3.分類瀏覽管理員修改讀者、管理員信息查詢書目借閱還書增加訂單錄入書目罰款設(shè)置圖書信息需完成的功能:管理員管理1. 增減員工,設(shè)置員工權(quán)限2. 添加采購員3. 管理讀者信息,設(shè)置權(quán)限4. 管理圖書5. 修改密碼采購員訂單添加,管理普通員工審核訂單與購進(jìn)數(shù)管理圖書管理圖書借閱,歸還和罰款圖書下架讀者管理系統(tǒng)1. 借閱2. 查詢3. 修改密碼數(shù)據(jù)流圖:圖書館管理系統(tǒng)頂層數(shù)據(jù)流圖讀者信息讀者信息管理員情況用戶身份讀者情況借還書要求圖書信息圖書情況圖書圖書P1內(nèi)部管理D1圖書記錄P2借書管理D3借書記錄讀者讀者P3安全管理管理員D4用戶記錄D1圖書記錄圖1圖書館管理系統(tǒng)頂層數(shù)據(jù)流圖在圖書館管理系統(tǒng)頂層數(shù)據(jù)流圖中,"P1內(nèi)部管理"和"P2借書管理"兩個(gè)處理框所表示的功能都太復(fù)雜,對(duì)它們進(jìn)一步細(xì)化后得出第二層數(shù)據(jù)流圖。見圖2和圖3。實(shí)際上"P1.1圖書管理"還可以細(xì)化,分為圖書記錄維護(hù)、訂單增加和新書入庫三個(gè)下級(jí)處理框,而"P1.2讀者管理"也可以細(xì)化為新讀者入戶和讀者記錄維護(hù)兩個(gè)下級(jí)處理框。圖書進(jìn)貨、入庫圖書進(jìn)貨、入庫讀者情況圖書P1.1圖書管理D1圖書記錄P1.2讀者管理D1讀者記錄讀者圖2"內(nèi)部管理"的細(xì)化數(shù)據(jù)流圖還書請(qǐng)求還書請(qǐng)求圖書情況圖書信息借書請(qǐng)求讀者P2.1查看書目D1圖書記錄P2.2借書處理D3借書記錄P2.3還書處理讀者圖書D2讀者記錄圖3"借書管理"的細(xì)化數(shù)據(jù)流圖經(jīng)過整理后得出細(xì)化后的系統(tǒng)數(shù)據(jù)流圖,如圖4圖書進(jìn)貨、入庫圖書進(jìn)貨、入庫還書請(qǐng)求圖書情況借書請(qǐng)求用戶身份圖書信息用戶身份管理員情況用戶身份讀者情況圖書P1.1圖書管理D1圖書記錄P1.2讀者管理D4用戶記錄讀者P3安全管理管理員D3借書記錄P2.3還書處理P2.2借書處理P2.1查看書目讀者圖書讀者D1圖書記錄D2讀者記錄D2讀者記錄圖4細(xì)化后的圖書館管理系統(tǒng)數(shù)據(jù)流圖數(shù)據(jù)字典:圖書館管理系統(tǒng)數(shù)據(jù)流圖中,數(shù)據(jù)信息和處理過程需要通過數(shù)據(jù)字典才能描述清楚。下面主要對(duì)數(shù)據(jù)流圖中的數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)和處理過程進(jìn)行說明。主要的數(shù)據(jù)流定義數(shù)據(jù)流名稱:圖書情況位置:圖書->P1.1,圖書->P2.3定義:圖書情況=索書號(hào)+書名+作者++出版日期+數(shù)量+可借數(shù)+借閱次數(shù) 數(shù)據(jù)流量:平均流量為每月傳輸1000次,高峰期流量每天傳輸100次。說明:圖書入庫時(shí),根據(jù)圖書情況建立圖書記錄;讀者還書時(shí)要核實(shí)圖書基本信息是否與圖書記錄相符,要檢查圖書是否完好。數(shù)據(jù)流名稱:用戶身份位置:P3->{P1.1,P1.2,P2.1,P2.3}定義:用戶身份=[非法用戶|管理員|讀者]數(shù)據(jù)流量:平均流量為每月傳輸2000次,高峰期流量每天傳輸100次。說明:不同的用戶身份進(jìn)入的處理過程不同。主要數(shù)據(jù)存儲(chǔ)定義數(shù)據(jù)存儲(chǔ)編號(hào):D3數(shù)據(jù)存儲(chǔ)名稱:借書記錄輸入:P2.2輸出:P2.2,P2.3數(shù)據(jù)結(jié)構(gòu):借書記錄=索書號(hào)+讀者編號(hào)+借閱日期+歸還日期數(shù)據(jù)量和存取頻度:數(shù)據(jù)量為5000條,存取頻度為每天100次。存取方式:聯(lián)機(jī)處理,以更新操作為主,隨機(jī)檢索。說明:讀者借閱了一本書,就生成一條借閱記錄。借閱日期為添加記錄的當(dāng)天日期。數(shù)據(jù)存儲(chǔ)編號(hào):D4數(shù)據(jù)存儲(chǔ)名稱:用戶記錄輸入:P3輸出:P3數(shù)據(jù)量和存取頻度:數(shù)據(jù)量為1000條,存取頻度為每天100次。存取方式:聯(lián)機(jī)處理,以檢索為主,順序檢索。數(shù)據(jù)結(jié)構(gòu):用戶+密碼+級(jí)別說明:級(jí)別是"管理員"或"讀者"。主要處理過程處理過程編號(hào):P2.1處理過程名:查看書目輸入:借書請(qǐng)求,D1,用戶身份輸出:借書請(qǐng)求,圖書信息處理說明:實(shí)現(xiàn)根據(jù)圖書類別查詢圖書、根據(jù)書名模糊查詢圖書的功能。處理過程編號(hào):P3處理過程名:安全管理輸入:管理員情況,D4輸出:用戶身份,D4,管理員情況處理說明:通過用戶名和口令,確認(rèn)用戶身份,保證系統(tǒng)的安全性。系統(tǒng)設(shè)計(jì)數(shù)據(jù)表ER圖:LevelLevelBookNumBorrowdateReturndatemanageManagerManagerIDPasswordNameLevelPresentPositionPlevelPnameBorrowedReaderNameSexBirthdayUserIDPasswordDeadlineLevelhasReaderKindMaxSumaddOrderOrderIDOrderdateorderStaffIDBookNameBookPressofStockstockIDorderIDenterStaffIDofBookIndexNumIsbnBookIDNameAuthorPressPriceBookstatePriceAuthorIsbnrealNumenterstockclassBookClassClassIDClassNameMemoBorrowIDFine_ticketEmailPhoneKindNamePhoneEmailSexBirthday關(guān)系模式:Book<BookId,Index,ISBN,BookName,Press,Author,ClassID,Memo,State>Bookclass<classid,Bookclass,classID>Borrowed<BorrowedId,ReaderId,BookId,Borrow_Date,DeadLine,Return_date,Fine_ticket>FineKind<FineKind,Describe,Num>\Reader<ReaderId,Password,ReaderLevel,Name,Sex,Email,Phone,Birthday,Expiry_Time>ReaderKind<ReaderLevel,Kind_Name,Max_borrow_num>Manager<ManagerId,Password,Name,Level,Phone,Email,,Birthday,Sex>ManagerKind<ManagerLevel,Level_Name>Order<OrderId,BookName,Press,Order_num,OrderDate,OrderStaffId>Stock<StockId,OrderId,StockStaffId,Author,ISBN,Price,RealNum,StockDate>表的物理設(shè)計(jì)Book〔圖書表〕BookClass〔圖書分類表〕Borrowed〔借閱表〕FineKind〔罰款設(shè)置表〕Manager〔管理員表〕ManagerKind〔管理員類別表〕Order〔訂單表〕Reader〔用戶表〕ReaderKind〔用戶類別表〕Stock〔圖書入庫表〕視圖,索引,數(shù)據(jù)庫權(quán)限: 存儲(chǔ)過程:增加員工:ALTERPROCEDURE[dbo].[Proc_addAdm]managerIdvarchar<20>,passwordvarchar<20>='888888',Namevarchar<20>=null,Levelint,Phonevarchar<20>=null,Emailvarchar<30>=null,Birthdaydate=null,sexvarchar<10>=null,ableintoutputASBEGINifexists<select*fromManagerwheresManagerId=managerId>setable=0elsebegininsertintoManagervalues<managerId,password,Name,Level,Phone,Email,Birthday,sex>setable=1endENDiferror<>0orrowcount=0rollbacktransaction;增加用戶:ALTERPROCEDURE[dbo].[Proc_addReader]readeridvarchar<50>,spasswordvarchar<20>='888888',readerlevelint=2,Namevarchar<20>=null,sexvarchar<10>=null,Emailvarchar<30>=null,Phonevarchar<20>=null,Birthdaydate=null,lend_ableint=1,ableintoutputASBEGINifexists<select*fromReaderwheresReaderId=readerid>setable=0elsebegininsertintoReadervalues<readerid,spassword,readerlevel,Name,sex,Email,Phone,Birthday,lend_able,null>setable=1endENDiferror<>0orrowcount=0rollbacktransaction;借閱書籍:ALTERPROCEDURE[dbo].[Proc_Borrow]ReaderIdvarchar<50>,BookIdvarchar<50>,stateintoutputASBEGINif<selectbalancefromReaderwheresReaderId=ReaderId><0setstate=0 --有欠款,不可借elsebegindeclareBorrowIdvarchar<50>setBorrowId=ReaderId+'-'+BookId+cast<GETDATE<>asvarchar<10>>insertinto[dbo].Borrowedvalues<BorrowId,ReaderId,BookId,GETDATE<>,GETDATE<>+30,null,0>updateBooksetiState=0wheresBookId=BookIdsetstate=1endENDiferror<>0orrowcount=0rollbacktransaction;用戶是否能借閱:ALTERPROCEDURE[dbo].[Proc_Canborrow]userIdvarchar<30>,can_borrowintoutputASBEGINdeclaretmp_num1int--已借書目declaretmp_num2int--可借書目declaretmpintselecttmp_num1=count<*>fromborrowedwheresReaderId=userIdandreturn_date=nullselecttmp_num2=Max_borrow_numfromReaderKindwhereiReaderLevel=<selectireaderLevelfromReaderwheresReaderId=userId>selecttmp=Lend_ablefromReaderwheresReaderId=userIdiftmp_num1<=tmp_num2andtmp=1setcan_borrow=1elsesetcan_borrow=0ENDiferror<>0orrowcount=0rollbacktransaction;檢查書目狀態(tài):ALTERPROCEDURE[dbo].[Proc_Checkbook]bookIdvarchar<50>,bookStateint,pagesint=nullASBEGINifbookState=2 --缺頁beginupdateBorrowedsetFine_ticket=Fine_ticket+<selectfnumfromFineKindwhereiFineKind=2>*pageswheresBookId=<selecttop<1>sBookIdfromBorrowedwheresBookId=bookIdorderbyReturn_Datedesc>updateBooksetiState=1wheresBookId=bookIdendelseifbookState=4 --遺失beginupdateBorrowedsetFine_ticket=Fine_ticket+<selectfnumfromFineKindwhereiFineKind=4>*<selectfPricefromBookwheresBookId=bookId>wheresBookId=<selecttop<1>sBookIdfromBorrowedwheresBookId=bookIdorderbyReturn_Datedesc>updateBooksetiState=4wheresBookId=bookIdendENDiferror<>0orrowcount=0rollbacktransaction;圖書入庫:ALTERPROCEDURE[dbo].[Proc_EnterStock]orderIdvarchar<30>,stockstaffIdvarchar<30>,Authorvarchar<30>=null,Isbnvarchar<15>=null,Pricefloat=0,RealNumintASBEGINdeclareStockIdvarchar<30>setStockId=orderId+'日期'+cast<GETDATE<>asvarchar<10>>insertintoStockvalues<StockId,orderId,Isbn,price,RealNum,GETDATE<>,Author,stockstaffId,1>ENDiferror<>0orrowcount=0rollbacktransaction;登錄:ALTERPROCEDURE[dbo].[Proc_LogIn]idvarchar<50>,passwordvarchar<50>,posintoutput,namevarchar<50>outputAS--BEGINIFpos=0BEGINifexists<select*fromReaderwheresReaderId=idandsPassword=passwordandLend_able=1>selectname=NamefromReaderwheresReaderId=idandsPassword=passwordelsesetpos=-1ENDELSEBEGINifexists<select*fromManagerwheresManagerId=idandsPassword=password>selectpos=iLevel,name=NamefromManagerwheresManagerId=idandsPassword=password/*設(shè)置pos的值,當(dāng)顯示管理員界面時(shí)根據(jù)級(jí)別不同而設(shè)置管理員可進(jìn)行的操作*/elsesetpos=-1END--ENDelsesetpos=-1END--ENDiferror<>0orrowcount=0rollbacktransaction;丟失書目:ALTERPROCEDURE[dbo].[Proc_lose]bookIdvarchar<50>,readerIdvarchar<50>ASBEGINupdateBorrowedsetFine_ticket=<selectfnumfromFineKindwhereiFineKind=3>*<selectfpricefromBookwheresBookId=bookId>wheresBookId=<selecttop<1>sBookIdfromBorrowedwheresBookId=bookIdorderbyDeadLinedesc>updateBooksetiState=4wheresBookId=bookIdENDiferror<>0orrowcount=0rollbacktransaction;下訂單:ALTERPROCEDURE[dbo].[Proc_MakeOrder]booknamevarchar<30>,pressvarchar<20>=null,order_numint,orderstaffIdvarchar<20>,stateint=nulloutputASBEGINdeclareorderidvarchar<30>setorderid=bookname+'日期'+cast<GETDATE<>asvarchar<10>>ifexists<select*from[order]wheresOrderId=orderid>setstate=0elsebegininsertinto[dbo].[Order]values<orderid,bookname,press,order_num,GETDATE<>,orderstaffId>setstate=1endENDiferror<>0orrowcount=0rollbacktransaction;修改密碼:ALTERPROCEDURE[dbo].[Proc_Password_change]old_pasvarchar<20>,new_pasvarchar<20>,userIdvarchar<30>,user_kindint,stateintoutputASBEGINIFuser_kind=1 --managerbeginifExists<select*fromManagerwheresManagerId=userIdandsPassword=old_pas>beginupdateManagersetsPassword=new_paswheresManagerId=userIdsetstate=1endelsesetstate=0endELSEifuser_kind=2 --readerbeginifExists<select*fromReaderwheresReaderId=userIdandsPassword=old_pas>beginupdateReadersetsPassword=new_paswheresReaderId=userIdsetstate=1endelsesetstate=0endENDiferror<>0orrowcount=0rollbacktransaction;充值:ALTERPROCEDURE[dbo].[Proc_paydebt]sReaderIdvarchar<30>,moneyfloatASBEGINdeclaretmpfloatselecttmp=balancefromReaderwheresReaderId=sReaderIdiftmpisnullupdateReadersetbalance=moneywheresReaderId=sReaderIdelseupdateReadersetbalance=balance+moneywheresReaderId=sReaderIdENDiferror<>0orrowcount=0rollbacktransaction;超期:ALTERPROCEDURE[dbo].[Proc_readerborrow]sReaderIdvarchar<30>ASBEGINselect*fromBorrowed,BookwheresReaderId=sReaderIdandBook.sBookId=Borrowed.sBookIdandReturn_DateisnullENDiferror<>0orrowcount=0rollbacktransaction;還書:ALTERPROCEDURE[dbo].[Proc_Return]bookIdvarchar<50>ASBEGINdeclarebalancefloatifGETDATE<>><selectDeadLinefromBorrowedwheresBookId=bookIdandReturn_Date=null>begindeclaretmpfloatdeclaredeadlinedateselectdeadline=deadlinefromBorrowedwheresBookId=bookIdandReturn_Date=null--該書的應(yīng)還日期selecttmp=fNumfromFineKindwhereiFineKind=1settmp=tmp*CAST<<GETDATE<>-deadline>asint>updateBorrowedsetFine_ticket=tmpwheresBookId=bookIdupdateReadersetbalance=balance-tmpwheresReaderId=<selecttop<1>sReaderIdfromBorrowedwheresBookId=bookIdorderbyDeadLinedesc>endupdateBorrowedsetReturn_date=GETDATE<>wheresBookId=bookId--設(shè)置還書日期 updateBooksetiState=1wheresBookId=bookIdENDiferror<>0orrowcount=0rollbacktransaction;搜索書籍:ALTERPROCEDURE[dbo].[Proc_Select]stringvarchar<200>,strvarchar<20>,ableint=0ASBEGINdeclarepreintdeclarelasintdeclaretepstrvarchar<20>declaresqlvarchar<500>setsql='select sbookIdas圖書編號(hào), sBookNameas圖書名稱, sAuthoras作者, sISBNasISBN, sPressas, sIndexas索引號(hào), fpriceas價(jià)格, istateas是否可借, smemoas備注fromBookwheresindexlike''%'+str+'%'''setpre=0setlas=1while<las<>0>beginsetpre=pre+1setlas=CharIndex<'',string,pre>if<las<>0>beginsettepstr=LTRIM<substring<string,pre,las-pre>>if<tepstr<>''>setsql=sql+'and<sBookNamelike''%'+tepstr+'%''orsAuthorlike''%'+tepstr+'%''orsmemolike''%'+tepstr+'%''orsPresslike''%'+tepstr+'%''>';setpre=lasendendsettepstr=substring<string,pre,len<string>+1-pre>setsql=sql+'and<sBookNamelike''%'+tepstr+'%''orsAuthorlike''%'+tepstr+'%''orsmemolike''%'+tepstr+'%''orsPresslike''%'+tepstr+'%''>';ifable=1setsql=sql+'andistate=1'exec<sql>ENDiferror<>0orrowcount=0rollbacktransaction;搜索借閱數(shù)為前n的書ALTERPROCEDURE[dbo].[Proc_selectbylendtimes]numintASBEGINselecttop<num>*,COUNT<*>lendtimesfrom<selectsBookName,sAuthor,sIndex,sISBN,sPress,sClassIdfromBook,BorrowedwhereBook.sBookId=Borrowed.sBookId>view1groupbysIndex,sBookName,sAuthor,sISBN,sPress,sClassIdorderbylendtimesdescENDiferror<>0orrowcount=0rollbacktransaction;搜索借閱次數(shù)排名在m到n之間的書ALTERPROCEDURE[dbo].[Proc_selectbylendtimes2]num1int,num2intASBEGINselect*from<selecttop<num2-num1+1>*from<selecttop<num2>*,COUNT<*>lendtimesfrom<selectsBookName,sAuthor,sIndex,sISBN,sPress,sClassIdfromBook,BorrowedwhereBook.sBookId=Borrowed.sBookId>view1groupbysIndex,sBookName,sAuthor,sISBN,sPress,sClassIdorderbylendtimesdesc>aorderbylendtimes>borderbylendtimesdescENDiferror<>0orrowcount=0rollbacktransaction;圖書上架:ALTERPROCEDURE[dbo].[Proc_Shelve]Isbnvarchar<15>,sBookNamevarchar<50>,spressvarchar<30>,Authorvarchar<30>,classIdvarchar<20>,sMemovarchar<50>,stateint=1,stockIdvarchar<30>,fpricefloatASBEGINdeclareiintdeclarenumintdeclarebookIdvarchar<50>declareIndexvarchar<50>seti=0setIndex=classId+'.'+Isbn--設(shè)置索書號(hào)selectnum=RealNumfromStockwhereStockId=stockIdbeginwhilei<numbeginsetbookId=Index+'.'+cast<iasvarchar<5>>--設(shè)置圖書號(hào)insertintoBookvalues<bookId,Index,Isbn,sBookName,spress,Author,classId,sMemo,state,fprice>seti=i+1 endupdate[dbo].Stocksetstockstate=0whereStockId=stockIdendENDiferror<>0orrowcount=0rollbacktransaction;更新員工:ALTERPROCEDURE[dbo].[Proc_UpdateReader]--讀者自行修改的信息ReaderIdvarchar<50>,Namevarchar<20>=null,sexvarchar<10>=null,Emailvarchar<30>=null,Phonevarchar<20>=null,Birthdaydate=nullASBEGINupdate[dbo].ReadersetName=Name,Sex=sex,Email=Email,Phone=Phone,Birthday=BirthdaywheresReaderId=ReaderIdENDiferror<>0orrowcount=0rollbacktransaction;視圖:軟件功能設(shè)計(jì)系統(tǒng)的結(jié)構(gòu)圖圖書館管理系統(tǒng)圖書館管理系統(tǒng)圖書館消息登錄普通用戶管理員我的圖書館瀏覽書目借閱書目查看書目書目檢索分類瀏覽借閱書目普通員工采購員管理用戶修改密碼查詢信息罰款新書入庫借閱信息修改信息修改訂單管理功能表 讀者:我的圖書館:查看個(gè)人信息,修改密碼瀏覽書目借閱書目管理員:管理用戶:添加,修改,刪除修改密碼普通員工:信息修改信息查詢:查詢用戶和書本的信息罰款:對(duì)書本丟失,損壞,超期的讀者進(jìn)行罰款新書入庫借閱采購員:信息修改訂單管理系統(tǒng)實(shí)施系統(tǒng)的界面設(shè)計(jì)本圖書館管理系統(tǒng)分為16個(gè)界面,介紹如下:界面1:Homepage〔主頁〕窗體描述: 窗體名稱:Form_home_page 單元文件名:home_page主要代碼:procedureTForm_home_page.Label1Click<Sender:TObject>;beginForm_version_annoucement.ShowModal;//版本公告界面end;procedureTForm_home_page.log_inClick<Sender:TObject>;beginForm_login.ShowModal;//登陸界面end;procedureTForm_home_page.log_outClick<Sender:TObject>;beginlog_out.Visible:=false;log_in.Visible:=true;end;procedureTForm_home_page.Label6Click<Sender:TObject>;beginForm_max_borrow.ShowModal;//最大借閱量界面end;procedureTForm_home_page.Label_mylibraryClick<Sender:TObject>;beginifnotlog_in.VisiblethenbeginForm_my_library.ShowModal;//如果已登錄,則可進(jìn)入‘我的圖書館’,否則提示先登錄endelsebeginShowmessage<'請(qǐng)先登錄!'>;end;end;界面2:version_annoucement〔公告〕窗體描述: 窗體名稱:Form_version_annoucement 單元文件名:version_annoucement界面3:max_borrow〔借閱數(shù)量與期限〕窗體描述: 窗體名稱:Form_max_borrow 單元文件名:max_borrow界面4:special〔特色資源〕窗體描述: 窗體名稱:Form_special 單元文件名:special界面5:search〔書目檢索〕窗體描述: 窗體名稱:Form_search 單元文件名:search主要代碼:procedureTForm_search.FormShow<Sender:TObject>;varroot,sub,personnode,matenode,classnode:TtreeNode;i,j,k,s:integer;qrysub,qrymaster,qrymate,qryclass:tadoquery;p:pchar;s1:string;beginbitBtn_borrow.Visible:=false;Edit_search.Clear;Edit_search.SetFocus;qrymaster:=tadoquery.Create<self>;qrymate:=tadoquery.Create<self>;qryclass:=tadoquery.Create<self>;root:=TreeView1.items.add<nil,'圖書分類'>;qrymaster.Close;qrymaster.Connection:=DM.ADOConnection1;qrymate.Connection:=DM.ADOConnection1;qryclass.Connection:=DM.ADOConnection1;qrysub:=TADOQuery.Create<self>;qrysub.Connection:=DM.ADOConnection1;qrymaster.SQL.Add<'select*fromBookClasswherelen<sclassId>=1'>;qrymaster.Open;qrymaster.First;fori:=0toqrymaster.RecordCount-1do//searchbookclassbeginsub:=TreeView1.Items.AddChild<root,qrymaster.FieldByName<'sbookclass'>.AsString>;s1:=qrymaster.fieldByName<'sclassid'>.AsString;GetMem<p,255>;StrCopy<p,pchar<s1>>;sub.Data:=p;qrysub.Close;qrysub.SQL.Clear;qrysub.SQL.Text:='select*frombookclasswherelen<sclassId>=2andleft<sclassid,1>='''+qrymaster.FieldByName<'sclassId'>.AsString+'''';qrysub.Open;qrysub.First;forj:=0toqrysub.RecordCount-1dobeginpersonnode:=TreeView1.Items.AddChild<sub,qrysub.fieldByName<'sbookclass'>.AsString>;s1:=qrysub.fieldByName<'sclassId'>.AsString;getmem<p,255>;strcopy<p,pchar<s1>>;personnode.Data:=p;withqrymatedobeginclose;sql.Clear;sql.Text:='select*frombookClasswherelen<sclassId>=3andleft<sclassid,2>='''+qrysub.fieldByName<'sclassid'>.AsString+'''';open;end;fork:=0toqrymate.RecordCount-1dobeginmatenode:=TreeView1.Items.AddChild<personnode,qrymate.fieldbyName<'sbookclass'>.AsString>;s1:=qrymate.fieldByName<'sclassId'>.AsString;GetMem<p,255>;StrCopy<p,pchar<s1>>;matenode.Data:=p;withqryclassdobeginclose;sql.Clear;sql.Text:='select*frombookclasswherelen<sclassid>=4andleft<sclassId,3>='''+qrymate.fieldByname<'sclassid'>.AsString+'''';open;end;fors:=0toqryclass.RecordCount-1dobeginclassnode:=TreeView1.Items.AddChild<matenode,qryclass.fieldByname<'sbookclass'>.AsString>;s1:=qryclass.fieldByName<'sclassId'>.AsString;getmem<p,255>;strcopy<p,pchar<s1>>;classnode.Data:=p;qryclass.Next;end;qrymate.Next;end;qrysub.Next;end;qrymaster.Next;end;end;procedureTForm_search.BitBtn_borrowClick<Sender:TObject>;varcan_borrow:integer;s1:string;state:integer;adoqry:TADOQuery;lend_able:integer;beginifForm_home_page.log_in.VisiblethenbeginShowMessage<'請(qǐng)先登錄'>;exit;end;ADOStoredProc2.Close;ADOStoredProc2.Parameters.Refresh;ADOStoredProc2.Parameters.ParamByName<'userId'>.Value:=Trim<Form_login.Edit_userId.Text>;ADOStoredProc2.Parameters.ParamByName<'can_borrow'>.Value:=0;ADOStoredProc2.ExecProc;can_borrow:=ADOStoredProc2.Parameters.ParamByName<'can_borrow'>.Value;ifcan_borrow=1thenbegins1:=ADOStoredProc1.Fields.Fields[0].text;//bookIdadoqry:=Tadoquery.Create<self>;adoqry.Connection:=DM.ADOConnection1;Showmessage<s1>;withadoqrydobeginclose;sql.Clear;sql.Text:='selectistatefrombookwheresbookId='+''''+s1+'''';open;end;lend_able:=strtoint<adoqry.Fields.Fields[0].text>;iflend_able=1thenbeginwithADOStoredProc3dobeginclose;parameters.Refresh;parameters.ParamByName<'ReaderId'>.Value:=Trim<Form_login.Edit_userId.Text>;parameters.ParamByName<'bookId'>.Value:=Trim<s1>;parameters.ParamByName<'state'>.Value:=1;ExecProc;end;state:=ADOStoredProc3.Parameters.parambyname<'state'>.Value;ifstate=1thenshowMessage<'借閱成功!'+#13+'請(qǐng)10分鐘后到前臺(tái)取書'>elseshowMessage<'您有欠款未還!'+#13+'請(qǐng)繳費(fèi)!'>;endelseshowMessage<'該書已借出!'>;endelseshowMessage<'您已借滿!'>;ADOStoredProc1.Close;ADOStoredProc1.Open;end;procedureTForm_search.BitBtn_searchClick<Sender:TObject>;beginbitbtn_borrow.Visible:=true;adostoredproc1.Close;adostoredproc1.Parameters.Refresh;adostoredproc1.Parameters.ParamByName<'string'>.Value:=trim<Edit_search.Text>;adostoredproc1.Parameters.ParamByName<'str'>.Value:=Edit_class.Text;adostoredproc1.Open;DBGrid1.Columns[0].Width:=100;DBGrid1.Columns[1].Width:=150;DBGrid1.Columns[2].Width:=100;DBGrid1.Columns[3].Width:=100;DBGrid1.Columns[5].Width:=100;end;procedureTForm_search.TreeView1Click<Sender:TObject>;beginedit_class.Text:=trim<string<TreeView1.Selected.Data>>;end;procedureTForm_search.Label3MouseEnter<Sender:TObject>;beginLabel3.Font.Color:=clWhite;end;procedureTForm_search.Label3MouseLeave<Sender:TObject>;beginLabel3.Font.Color:=clBlack;end;procedureTForm_search.Label3Click<Sender:TObject>;beginclose;end;procedureTForm_search.Button1Click<Sender:TObject>;beginadostoredproc1.Close;adostoredproc1.Parameters.Refresh;adostoredproc1.Parameters.ParamByName<'string'>.Value:=trim<Edit_search.Text>;adostoredproc1.Parameters.ParamByName<'str'>.Value:=Edit_class.Text;adostoredproc1.Parameters.ParamByName<'able'>.Value:=1;adostoredproc1.Open;DBGrid1.Columns[0].Width:=100;DBGrid1.Columns[1].Width:=150;DBGrid1.Columns[2].Width:=100;DBGrid1.Columns[3].Width:=100;DBGrid1.Columns[5].Width:=100;bitbtn_borrow.Visible:=true;end;界面6:Log_in〔登陸界面〕窗體描述: 窗體名稱:Form_Log_in 單元文件名:Log_in主要代碼:procedureTForm_login.submitClick<Sender:TObject>;begintip_userId.Visible:=false;tip_password.Visible:=false;Label1.Visible:=false;Label2.Visible:=false;Bitbtn1.Visible:=false;ifEdit_userId.Text=''then//判斷用戶XX輸入是否為空begintip_userId.Visible:=true;exit;end;ifEdit_password.Text=''then//判斷用戶密碼輸入是否為空begintip_password.Visible:=true;exit;end;ifRadioButton_user.Checked=truethen//讀者登錄pos:=0elsepos:=1;trywithADOStoredProc1dobeginParameters.ParamByName<'id'>.Value:=Trim<Edit_userId.Text>;Parameters.ParamByName<'password'>.Value:=Trim<Edit_password.Text>;Parameters.ParamByName<'pos'>.Value:=pos;Parameters.ParamByName<'name'>.Value:=null;Parameters.parambyname<'name'>.Value:=name;ExecProc;end;pos:=ADOstoredProc1.Parameters.parambyName<'pos'>.Value;name:=string<ADOStoredProc1.Parameters.parambyname<'name'>.Value>;ifpos=-1thenbeginShowMessage<'用戶名或密碼錯(cuò)誤,請(qǐng)重新填寫'>;Edit_userId.Clear;Edit_password.Clear;Edit_userId.SetFocus;exit;end;ifpos=0then//readerbeginbitbtn1.Visible:=true;ShowMessage<'登陸成功,請(qǐng)返回首頁!'>;Label1.Visible:=true;endelseifpos=1then//admbeginForm_master.Show;Self.Close;endelseifpos=2then//librianbeginForm_master.Image_7.Visible:=false;Form_master.Image_8.Visible:=false;Form_master.Label_7.Visible:=false;Form_master.Label_8.Visible:=false;Form_master.Show;self.Close;endelseifpos=3thenbeginForm_master.Image_5.Visible:=false;Form_master.Image_6.Visible:=false;Form_master.Label_5.Visible:=false;Form_master.Label_6.Visible:=false;Form_master.Image_7.Visible:=false;Form_master.Image_8.Visible:=false;Form_master.Label_7.Visible:=false;Form_master.Label_8.Visible:=false;Form_master.Show;self.Close;end;exceptshowMessage<'登錄失?。?>;end;end;procedureTForm_login.restartClick<Sender:TObject>;//重置密碼beginEdit_userId.Clear;Edit_password.Clear;tip_userId.Visible:=false;tip_password.Visible:=false;Label1.Visible:=false;Label2.Visible:=false;Bitbtn1.Visible:=false;end;procedureTForm_login.Label_homepageClick<Sender:TObject>;beginifLabel1.Visible=truethenbeginForm_my_library.Label_hello.Caption:=name+':您好';Form_home_page.log_in.Visible:=false;Form_home_page.log_out.Visible:=true;end;close;end;procedureTForm_login.BitBtn1Click<Sender:TObject>;beginForm_updatepass.ShowModal;//如果是讀者,則可直接在次界面點(diǎn)擊更改密碼按鈕end;procedureTForm_login.FormShow<Sender:TObject>;begintip_userId.Visible:=false;tip_password.Visible:=false;Label1.Visible:=false;Label2.Visible:=false;Bitbtn1.Visible:=false;Edit_userId.Clear;Edit_password.Clear;Edit_userId.SetFocus;end;界面7:my_library〔我的圖書館〕窗體描述: 窗體名稱:Form_my_library 單元文件名:my_library主要代碼:procedureTForm_my_library.FormShow<Sender:TObject>;beginwithADOStoredProc1dobeginclose;parameters.ParamByName<'sReaderId'>.Value:=Trim<Form_login.Edit_userId.Text>;Open;end;ADOQUERY1.Connection:=DM.ADOConnection1;withadoquery1dobeginclose;sql.Clear;sql.Text:='selectsbooknameas書名,deadlineas應(yīng)還日期 ,fine_ticketas罰單 fromBorrowed,BookwheresReaderId='+Trim<Form_login.Edit_userId.Text>+'andBook.sBookId=Borrowed.sBookIdandReturn_Dateisnullandgetdate<>>deadline';open;end;withADOQuery2dobeginclose;parameters.ParamByName<'readerId'>.Value:=Trim<Form_login.Edit_userId.Text>;open;end;Edit1.Text:=ADOquery2['balance'];end;界面9:master〔管理員控制系統(tǒng)〕窗體描述: 窗體名稱:Form_master 單元文件名:my_master主要代碼:procedureTForm_master.FormShow<Sender:TObject>;beginwithADOquery1dobeginclose;parameters.ParamByName<'managerId'>.Value:=Trim<Form_login.Edit_userId.Text>;Open;end; Label_welcome.Caption:='WelcomeAdministrator'+ADOQuery1['Name']+'!';//顯示管理員信息Label_welcome.Visible:=true;end;界面10:updatepass〔修改密碼〕窗體描述: 窗體名稱:Form_updatepass 單元文件名:updatepasswithADOStoredProc1dobeginclose;Parameters.ParamByName<'old_pas'>.Value:=Trim<Edit_originpassword.Text>;Parameters.ParamByName<'new_pas'>.Value:=Trim<Edit_setPassword.Text>;Parameters.ParamByName<'userId'>.Value:=Trim<Form_Login.Edit_userId.Text>;Parameters.ParamByName<'user_kind'>.Value:=user_kind;Parameters.ParamByName<'state'>.Value:=state;ExecProc;end;ifForm_login.RadioButton_user.CheckedthenbeginMessageDlg<'修改成功,請(qǐng)重新登錄!',mtInformation,[mbOk],0>;Form_login.Edit_password.Clear;Form_login.Label1.Visible:=false;endelsebeginMessageDlg<'修改成功,請(qǐng)重新登錄!',mtInformation,[mbOk],0>;Form_login.Edit_password.Clear;Form_login.Label1.Visible:=false;Form_master.close;end;界面11:Change_self_info〔修改個(gè)人信息〕窗體描述: 窗體名稱:Form_Change_self_info單元文件名:Change_self_info主要代碼:withADOSToredProc1dobeginclose;parameters.ParamByName<'readerId'>.Value:=Trim<Form_login.Edit_userId.Text>;parameters.ParamByName<'Name'>.Value:=Trim<Edit_name.Text>;Parameters.ParamByName<'sex'>.Value:=Trim<Edit_sex.Text>;Parameters.ParamByName<'birthday'>.Value:=Trim<Edit_birthday.Text>;parameters.ParamByName<'Phone'>.Value:=Trim<Edit_phone.Text>;parameters.ParamByName<'Email'>.Value:=Trim<Edit_email.Text>;ExecProc;end;ShowMessage<'更新成功'>;FormShow<Sender>;界面11:Addorder〔下訂單〕窗體描述: 窗體名稱:Form_Addorder單元文件名:Addorder主要代碼:procedureTForm_addorder.Button3Click<Sender:TObject>;varstate:integer;i:integer;beginif<Trim<Edit_bookName.Text>=''>or<Trim<Edit_press.Text>=''>or<Trim<Edit_booknum.Text>=''>thenbeginshowmessage<'請(qǐng)完善信息!'>;exit;end;i:=strtoin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論