圖書館書籍檢索與借閱管理系統(tǒng)_第1頁
圖書館書籍檢索與借閱管理系統(tǒng)_第2頁
圖書館書籍檢索與借閱管理系統(tǒng)_第3頁
圖書館書籍檢索與借閱管理系統(tǒng)_第4頁
圖書館書籍檢索與借閱管理系統(tǒng)_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、源代碼請聯(lián)系本人,參見豆丁本人信息。 文檔編號:版 本 號: 文檔名稱:圖書館管理系統(tǒng)開發(fā)文檔項(xiàng)目名稱:圖書館檢索與借閱管理系統(tǒng)項(xiàng)目負(fù)責(zé)人: 編 號: 2009年6月16日校 對: 2009年6月16日審 核: 2009年6月16日批 準(zhǔn): 2009年6月16日開發(fā)單位:開發(fā)小組 1)需求規(guī)格說明書1.1 引言圖書管理系統(tǒng)是圖書館管理工作中的不可缺少的部分;對于圖書館的管理者和使用者來說都至關(guān)重要,所以圖書管理系統(tǒng)應(yīng)該能夠?yàn)楣芾碚呋蜃x者提供足夠的信息和快捷的信息處理手段。但一直以來人們使用傳統(tǒng)的人工的方式進(jìn)行圖書管理和借閱管理,這種管理方式存在著許多缺點(diǎn),例如,效率低,易忘性,保密性差,另外時

2、間一長,將產(chǎn)生大量的數(shù)據(jù)和文件,這對于查找,更新和維護(hù)大批帶來了不少的困難。隨著科學(xué)技術(shù)的不斷提高,計(jì)算機(jī)科學(xué)日漸成熟,其強(qiáng)大的功能以經(jīng)為人們深刻認(rèn)識,它已經(jīng)進(jìn)入人類社會的各個方面并發(fā)揮著越來越重要的作用。作為計(jì)算機(jī)應(yīng)用的一部分,使用計(jì)算機(jī)對圖書信息進(jìn)行管理,具有著手工管理的所無法比擬的優(yōu)點(diǎn)。例如,檢索迅速,查找方便,易修改,可靠性高,存儲量大,數(shù)據(jù)處理快捷,保密性好,壽命長,成本低等。1.2 功能需求圖書管理信息系統(tǒng)是典型的信息管理系統(tǒng)(MIS),其開發(fā)主要包括后臺數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個方面。對于前者要求建立數(shù)據(jù)一致性和完整性強(qiáng),數(shù)據(jù)庫按前行好的庫,而對于后者則要求應(yīng)用

3、程序功能完備,易使用等。系統(tǒng)功能分析是在系統(tǒng)開發(fā)的總體任務(wù)的基礎(chǔ)上完成的,本系統(tǒng)需要完成的功能主要有6個部分。圖書基本情況管理模塊包括書籍類別標(biāo)準(zhǔn)的制定;類別信息的輸入包括類別編號,類別名稱;書籍信息的輸入包括書籍編號,書籍名稱,書籍類別,作者名稱,出版社名稱,出版日期,登記日期及備注信息等。辦理圖書卡模塊,主要是為新的讀者辦理借書證。結(jié)束管理模塊包括借書信息的輸入,輸入內(nèi)容含有借書信息編號,讀者編號,讀者姓名,書籍編號,書籍名稱,借書日期及備注信息等;而借書信息的查詢包括借書信息編號,讀者編號,讀者姓名,書籍編號,書籍名稱,借書日期及備注信息等。還書管理模塊包括還書信息的輸入內(nèi)容。含有還書信

4、息編號,讀者編號,書籍編號,書籍名稱,借書日期,還書日期及備注信息等;還包括還書信息的查詢和修改,包括還書信息編號,讀書編號,讀者姓名,書籍編號,書籍名稱,借書日期,還書日期及備注信息等。對超期的情況能自動給出提示信息。系統(tǒng)設(shè)置模塊應(yīng)該包括對用戶組的定義,權(quán)限的修改與添加,用戶管理及其他系統(tǒng)環(huán)境的設(shè)置。1.3 系統(tǒng)流程分析系統(tǒng)流程就是用戶進(jìn)入圖書館信息管理系統(tǒng)后的工作過程,本系統(tǒng)對不同的用戶設(shè)置了不同的權(quán)限,因此不同的用戶操作流程有所不同,如圖1-1所示:本系統(tǒng)的操作流程主要分為用戶登陸操作和業(yè)務(wù)操作兩個部分,用戶登陸操作和業(yè)務(wù)操作兩個部分,用戶登陸操作主要是對用戶的帳號和用戶的密碼進(jìn)行身份驗(yàn)

5、證,通過驗(yàn)證的進(jìn)入系統(tǒng)操作界面,身份驗(yàn)證失敗時,則給出則給出錯誤提示。業(yè)務(wù)操作根據(jù)帳號的權(quán)限允許或限制用戶的行為。流程圖第一層數(shù)據(jù)流程圖如圖1-2所示:新書入庫讀者種類D2基本信息錄入 D1基本信息錄入讀者種類信息 書籍類別信息D4D2基本信息錄入基本信息錄入D5書籍讀者書籍信息讀者信息借閱信息錄入書籍信息返回讀者信息返回借閱信息 圖 1-2通過上述流程圖,可以將管理部分劃分成4層模型,書籍信息查詢部分業(yè)務(wù)流程如圖1-3所示:除書籍查詢流程外,還有借書,還書流程圖,它主要是根據(jù)讀者的信息,經(jīng)管理員對書籍信息數(shù)據(jù),讀者信息數(shù)據(jù)庫進(jìn)行操作和確認(rèn),流程圖如圖1-4所示:Y錯誤信息借書證和所需數(shù)目所借

6、圖書讀者信息數(shù)據(jù)庫書籍信息數(shù)據(jù)庫圖書管理員讀者 圖 1-4 書籍信息管理模塊主要是管理員根據(jù)情況對新書進(jìn)行登記入庫,舊書刪除,修改操作,并將這些信息返書籍信息數(shù)據(jù)庫,它的業(yè)務(wù)流程如圖1-5:另一層為讀者信息管理模塊,它的主要功能是對新讀者的相關(guān)信息錄入到數(shù)據(jù)庫中,并實(shí)時的對讀者信息數(shù)據(jù)庫進(jìn)行更新,業(yè)務(wù)流程圖如圖1-6: 文檔編號:000002 版 本 號:000001 文檔名稱:圖書館管理系統(tǒng)概要設(shè)計(jì)文檔 項(xiàng)目名稱:圖書館檢索與借閱管理系統(tǒng) 項(xiàng)目負(fù)責(zé)人: 編 號: 0001 2009年6月16日校 對: 2009年6月16日審 核: 2009年6月16日批 準(zhǔn): 老師 2009年6月16日開發(fā)

7、單位: 開發(fā)小組2)概要設(shè)計(jì)說明書項(xiàng)目開發(fā)環(huán)境:windows xp操作系統(tǒng) SQL sever 2000Delphi 72.1 系統(tǒng)層次模塊圖在功能分析的基礎(chǔ)上,根據(jù)delphi程序編制的特點(diǎn),得到如圖1-7所示的系統(tǒng)功能模塊圖:系統(tǒng)數(shù)據(jù)結(jié)構(gòu)針對一般圖書管理信息系統(tǒng)的要求,通過對圖書管理工作過程的內(nèi)容和數(shù)據(jù)流程分析,設(shè)計(jì)如下面所述的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)。讀者種類信息屬性:種類編號,種類名稱,借書數(shù)量,借書期限。主碼:種類編號。讀者信息屬性:讀者編號,讀者姓名,讀者種類編號,讀者性別,證件種類,證件號碼。主碼:讀者編號。3書籍類別信息屬性:類別編號,類別名稱。主碼:類別編號。4.書籍信息屬性:書籍

8、編號,書籍名稱,書籍類別,作者姓名,出版社名稱,出版日期,備注信息,定價,總數(shù)量,剩余數(shù)量。主碼:書籍編號。5.借閱信息 屬性:讀者編號,書籍編號,書籍名稱,借書日期,還書日期,數(shù)量。 主碼:用戶帳號,圖書編號。6.用戶組信息表屬性:組號,組名,最大天數(shù),最大數(shù)量。主碼:組號。數(shù)據(jù)塊邏輯結(jié)構(gòu)設(shè)計(jì)登陸用戶詞表主要是在系統(tǒng)登陸時,對用戶的權(quán)限,密碼進(jìn)行驗(yàn)證,對同權(quán)限的操作員產(chǎn)生不同的用戶界面,表的結(jié)構(gòu)如表1所示: 表1 登陸用戶表借閱信息表借閱信息表包括用戶帳號,圖書編號,借書日期等字段,主要用在用戶借閱書籍,還書時需要用到,如圖表2: 表2 借閱信息表圖書類別表圖書類別表只含有兩個字段類別和類名

9、,此表在新書登記,書籍查詢等功能模塊中需要用到,如下表3: 圖書信息表圖書信息表包括圖書信息編號,類別,書名,作者等相關(guān)信息,在系統(tǒng)中使用比較多,在有關(guān)書的操作中都要用到,如下表4:用戶表用戶表包括用戶帳號,姓名,性別等相關(guān)信息,它主要是在讀者借閱,還書,讀者查詢模塊中用到,具體結(jié)構(gòu)如下表5:組用戶表包括組號,組名,最大天數(shù),最大數(shù)量4個字段,主要是在讀者圖書借閱時對用戶借書總數(shù)進(jìn)行限制,而且可在還書時檢查是否超期。如下表6:數(shù)據(jù)表的創(chuàng)建通過以上的數(shù)據(jù)流程分析和數(shù)據(jù)庫邏輯結(jié)構(gòu)的設(shè)計(jì),得到數(shù)據(jù)表的基本項(xiàng),建表的SQL語句如下:建數(shù)據(jù)庫:create database TSG建表:use TSGg

10、ocreate table yonghu(readerID nvarchar(10) PRIMARY KEY, name nvarchar(10), sex nvarchar(2), rgroup nvarchar(2), zjlx nvarchar(10), zID nvarchar(20);use TSGgocreate table lend(readerID nvarchar(10), bcode nvarchar(10), outdate datetime, deadline datetime, amount smallint, intime datetime);use TSGgocr

11、eate table yhz(znum nvarchar(2) PRIMARY KEY, zname nvarchar(10), maxdate smallint, maxnum smallint);use TSGgocreate table tsclass(class nvarchar(4), classname nvarchar(40);use TSGgocreate table book(bcode nvarchar(10) PRIMARY KEY, bclass nvarchar(4), bname nvarchar(20) UNIQUE, bauthor nvarchar(10),

12、boutdate datetime, bpress nvarchar(20), bcost smallint, bamount smallint, bsheng smallint, remark nvarchar(1000);use TSGgocreate table yhdl(num nvarchar(10) PRIMARY KEY, name nvarchar(10), password nvarchar(10), rights nvarchar(10); 文檔編號:000003 版 本 號:000001 文檔名稱:圖書館管理系統(tǒng)詳細(xì)設(shè)計(jì)文檔 項(xiàng)目名稱:圖書館檢索與借閱管理系統(tǒng) 項(xiàng)目負(fù)責(zé)人

13、: 編 號: 2009年6月16日校 對: 2009年6月16日審 核: 2009年6月16日批 準(zhǔn): 老師 2009年6月16日開發(fā)單位:開發(fā)小組3)詳細(xì)設(shè)計(jì)說明書主界面設(shè)計(jì)1.登陸窗體登陸窗體主要是通過驗(yàn)證用戶帳號給不同的用戶登陸系統(tǒng)不同的權(quán)限,從而可以對系統(tǒng)進(jìn)行一系列管理。登陸窗體中各控件的設(shè)置如下表所示:類型對象屬性屬性值TButtonEnterCaption登陸系統(tǒng)TbuttonExitCaption取消登陸TLabelLabel1Caption帳號TLabelLabel2Caption密碼TEditMMPasswordChar*TComboBoxXMStyplecsDropDwon

14、ListTXPMenuXPMenul1ActiveTrue調(diào)整控件布局和大小,設(shè)置號相關(guān)控件屬性,最后“登陸”界面的實(shí)現(xiàn)如下圖所示:在系統(tǒng)啟動時創(chuàng)建數(shù)據(jù)連接,并將用戶表中的姓名放置于ComboBox中完成初始化,這些功能代碼放置于Oncreate事件中,相關(guān)代碼如下:procedure Tdenglu.FormCreate(Sender: TObject);begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select name from yhdl); Open; while not Eof do begin YHM_CB.Item

15、s.Add(FieldValuesname); next; end; YHM_CB.ItemIndex:=0; close; end;end;完成相關(guān)控件的初始化后,“登陸”界面將用戶列出到ComboBox中。當(dāng)用戶輸入密碼完畢后,單擊登陸系統(tǒng),系統(tǒng)響應(yīng)OnClick事件,在事件代碼中判斷用戶密碼是否正確,并統(tǒng)計(jì)密碼錯誤輸入的次數(shù),提示輸入錯誤的次數(shù),當(dāng)超過3次時,系統(tǒng)自動關(guān)閉。代碼如下:procedure Tdenglu.EnterClick(Sender: TObject);var Password:string;begin with ADOQuery1 do begin Close; S

16、QL.Clear; SQL.Add(select password,rights from yhdl where name=:name); Parameters.ParamByName(name).Value:=YHM_CB.Text; Open; if RecordCount0 then begin Password:=FieldValuespassword; if MM_E.Text=Password then begin UserName:=YHM_CB.Text; QX:=FieldValuesrights; application.MessageBox(登陸成功,提示信息,64);

17、self.Hide; main.Show; end else begin Logintimes:= Logintimes+1; if Logintimes3 then begin messageBox(handle,pchar(密碼第+IntTostr(Logintimes)+次錯誤,請重新輸入!),密碼錯誤,MB_OK OR MB_ICONERROR); MM_E.Text:=; MM_E.SetFocus; end else begin MessageBox(handle,密碼三次錯誤,請關(guān)閉!,密碼錯誤,MB_ICONERROR); application.Terminate; end;

18、 end; end; end;end;2.主界面設(shè)計(jì)系統(tǒng)主界面包括各個功能模塊,新建窗體main是系統(tǒng)主界面,主界面的設(shè)置如下表所示:控件類型對象屬性屬性值TcoolbarCoolBar1BandsTImageImage1AlignClientTmainMenuMainMenu1ItemsTstatusBarStatusBar1Ctl3DTrueTtimerTimer1Align1000TXPMenuXpMenu1ActiveTrue通過主界面上的MainMenu1控件來設(shè)計(jì)各功能菜單的內(nèi)容,雙擊MainMenu1控件,對菜單內(nèi)容進(jìn)行設(shè)置,如下表所示:類型對象屬性屬性值TbuttonFile_

19、TCaption文件TbuttonClose_TCaption退出TbuttonOperator_TCaption操作TbuttonViewF_TCaption顯示文件TbuttonViewBM_TCaption顯示圖書管理TbuttonViewSM_TCaption顯示環(huán)境管理TbuttonViewH_TCaption顯示幫助TbuttonChangBG_TCaption返回登陸TbuttonBookM_TCaption圖書管理TbuttonXSRK_TCaption新書入庫TbuttonTSZL_TCaption辦借書卡TbuttonBJSK_TCaption圖書整理TbuttonTSJH

20、_TCaption圖書整理TbuttonQuery_TCaption查詢TbuttonSETM_TCaption環(huán)境管理TbuttonQXGL_TCaption權(quán)限設(shè)置TbuttonZYHGL_TCaption組用戶設(shè)置TbuttonBFHY_TCaption備份還原TbuttonHelp_TCaption幫助TButtonGY_TCaption關(guān)于通過上述步驟,調(diào)整布局大小,主界面設(shè)置完成如下圖所示:雙擊Oncreate事件,在OnCreate中的相關(guān)代碼添加如下:procedure Tmain.FormCreate(Sender: TObject);begin statusbar1.pan

21、els.items0.width:=200; statusbar1.panels.items1.width:=200; statusbar1.panels.items2.width:=200; statusbar1.panels.items3.width:=200; ViewF_T.Checked:=ViewFile; CoolBar1.Bands0.Visible:=ViewF_T.Checked; ViewF_T.Checked:=ViewBookMgr; CoolBar1.Bands1.Visible:=ViewBM_T.Checked; ViewSM_T.Checked:=ViewSe

22、ttingMgr; CoolBar1.Bands2.Visible:=ViewSM_T.Checked; ViewH_T.Checked:=ViewAbout; CoolBar1.Bands3.Visible:=ViewH_T.Checked; StatusBar1.Panels2.Text:=日期:+datetimetostr(date);end;當(dāng)系統(tǒng)主界面被調(diào)用時,根據(jù)登陸用戶服務(wù)的級別可以設(shè)置用戶服務(wù)的操作權(quán)限,也就是對不同權(quán)限的用戶顯示不同窗口和控件,該過程的相關(guān)操作和設(shè)置時在form的OnShow事件中添加的,相關(guān)代碼如下:procedure Tmain.FormShow(Send

23、er: TObject);var myini:TIniFile; OldcheckDay:string; num,maxnum:integer;begin StatusBar1.Panels0.Text:=用戶名:+UserName; if QX=超級管理員 then StatusBar1.Panels1.Text:=用戶描述:超級管理員 else if QX=普通管理員 then StatusBar1.Panels1.Text:=用戶描述:普通管理員 else statusBar1.Panels1.Text:=用戶描述:讀者; if QX=讀者 then begin XSRK_T.Enabl

24、ed:=false;/讀者菜單上很多功能不能用 TSZL_T.Enabled:=false; BJSK_T.Enabled:=false; TSJH_T.Enabled:=false; QXGL_T.Enabled:=false; QTSZ_T.Enabled:=false; BFHY_T.Enabled:=false; ZYHGL_T.Enabled:=false; BJSK_SB.Enabled:=false; /讀者工具條上很多功能不能用 TSZL_SB.Enabled:=false; TSJH_SB.Enabled:=false; XSRK_SB.Enabled:=false; QXG

25、L_SB.Enabled:=false; ZYHGL_SB.Enabled:=false; BFHY_SB.Enabled:=false; exit; end else if QX=普通管理員 then begin XSRK_T.Enabled:=false;/普通管理員菜單上很多功能不能用 TSZL_T.Enabled:=false; QXGL_T.Enabled:=false; ZYHGL_T.Enabled:=false; TSZL_SB.Enabled:=false;/普通管理員工具條上很多功能不能用 XSRK_SB.Enabled:=false; QTSZ_T.Enabled:=fa

26、lse; BFHY_T.Enabled:=false; QXGL_SB.Enabled:=false; ZYHGL_SB.Enabled:=false; BFHY_SB.Enabled:=false; end; myini:=TIniFile.Create(ExtractFilePath(Application.ExeName)+set.ini); OldCheckDay:=myini.ReadString(set,OldCheckDay,); Maxnum:=myini.ReadInteger(set,MaxCheckNum,0); if maxnum=0 then exit; if Old

27、CheckDay=DateToStr(date) then begin num:=myini.ReadInteger(set,Checked,0); if nummaxnum then begin num:=num+1; myini.WriteInteger(set,Checked,num); end; end else begin myini.WriteString(set,OldCheckDay,dateTostr(date); myini.WriteInteger(set,Checked,1); end;end;圖書管理模塊的實(shí)現(xiàn)圖書管理模塊主要是對相關(guān)書籍進(jìn)行管理,如新書的入庫登記、舊

28、書的刪除,書籍相關(guān)信息的修改、圖書類別的編輯。下面時各功能的設(shè)計(jì)和實(shí)現(xiàn):新書入庫管理主要是將新購進(jìn)書的相關(guān)信息,如書名、ISDN號、出版日期、作者等相關(guān)信息添加到數(shù)據(jù)庫中,方便讀者借閱時查詢。界面布局如下:添加相關(guān)控件,控件類型,屬性及相關(guān)屬性設(shè)置和如下表所示:類型對象屬性屬性值TgroupBoxgroupBox1Caption圖書相關(guān)信息TEditBH對應(yīng)Lable編號TeditBZ對應(yīng)Lable備注TeditCBRQ對應(yīng)Lable出版日期TeditCBS對應(yīng)Lable出版社TeditDJ對應(yīng)Lable定價TeditLBstyle類別TconboBoxLM對應(yīng)LablecsDropListT

29、EditSL對應(yīng)Lable數(shù)量TeditSM對應(yīng)Lable書名TEditZZ對應(yīng)Lable作者在public中添加GetClassName和CheckError函數(shù),分別用于獲得書籍類別名稱和對輸入數(shù)據(jù)的合法性進(jìn)行檢查。這兩個函數(shù)的實(shí)現(xiàn)如下所示:function TXSRK1.IsNumber(Vaule:String):Boolean; /判斷Vaule是不是數(shù)字var i:integer; begin for i:=1 to length(Vaule) do if not (vaulei in 0.9) then begin result:=false; exit; end; result

30、:=true; end;function TXSRK1.GetClassName(ClassName:String):String;var h:String;begin h:=ClassName; with ADOQuery1 do begin try Close; SQL.Clear; SQL.Add(select class from tsclass where classname=:classname); Parameters.ParamByName(classname).Value:=h; Open; if RecordCount = 0 then Result := else Res

31、ult:=FieldValuesclass; Close; except Result := ; end; end;end;function TXSRK1.CheckError:boolean; /檢查輸入的數(shù)據(jù)是否有錯誤begin result:=false; if (length(BH.Text)10)or (not IsNumber(BH.Text) then /圖書編號是否合法 begin MessageBox(handle,圖書編號即圖書的條形碼為10位數(shù)字!,圖書編號錯誤,MB_OK or MB_ICONERROR); result:=true; exit; end else be

32、gin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(Select * From book Where bcode=:bcode); Parameters.ParamByName(bcode).Value:=BH.Text; Open; if RecordCount0 then begin MessageBox(handle,你輸入的圖書編號已經(jīng)存在!,編號重復(fù),MB_OK or MB_ICONERROR); result:=true; exit; end; end; end; if SM.Text= then begin MessageB

33、ox(handle,書名不能為空!,書名有誤,MB_OK or MB_ICONERROR); result:=true; exit; end; if ZZ.Text= then begin MessageBox(handle,作者不能為空!,作者有誤,MB_OK or MB_ICONERROR); result:=true; exit; end; if CBS.Text= then begin MessageBox(handle,出版社不能為空!,出版社有誤,MB_OK or MB_ICONERROR); result:=true; exit; end; if DJ.Text= then be

34、gin MessageBox(handle,定價不能為空!,定價有誤,MB_OK or MB_ICONERROR); result:=true; exit; end; try /判斷定價是否正確 StrToFloat(DJ.Text); except MessageBox(handle,定價不對!,定價錯誤,MB_OK or MB_ICONERROR); result:=true; exit; end; try /判斷日期格式是否正確 StrToDate(CBRQ.Text); except MessageBox(handle,日期格式不對,正確格式形如:2004-8-5!,日期錯誤,MB_O

35、K or MB_ICONERROR); result:=true; exit; end; try /入庫數(shù)量必須為整數(shù) StrToInt(SL.Text); except MessageBox(handle,入庫數(shù)量必須為大于0的整數(shù)!,數(shù)量錯誤,MB_OK or MB_ICONERROR); result:=true; exit; end;end;在窗體創(chuàng)建時需要對ComboBox類別進(jìn)行初始化,在OnCreate中實(shí)現(xiàn),代碼如下:procedure TXSRK1.FormCreate(Sender: TObject);begin with ADOQuery1 do begin close;

36、 SQL.Clear; SQL.Add(select classname from tsclass); Open; while not Eof do begin LM.Items.Add(FieldByName(classname).AsString); Next; end; LB.Enabled:=false; LM.ItemIndex:=0; LB.Text:=GetClassName(LM.Items0); Close; end;end;為LM控件添加OnChange事件代碼,它的功能主要時在用戶單擊ComboBox時,將書籍的所有類別顯示在下拉列表中,代碼如下:procedure TX

37、SRK1.LMChange(Sender: TObject);begin LB.Text:=GetClassName(LM.ItemsLM.ItemIndex);end;當(dāng)用戶單擊“入庫”按鈕時,系統(tǒng)對用戶輸入的信息進(jìn)行合法性檢查,然后再將相關(guān)信息插入到數(shù)據(jù)庫中。單擊“入庫”的事件為OnClick,相關(guān)代碼如下:procedure TXSRK1.BitBtn1Click(Sender: TObject);begin if Checkerror then exit;/檢查信息合法性 with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(insert

38、into book(bcode,bclass,bname,bauthor,boutdate,bpress,bcost,bamount,bsheng,remark); SQL.Add(values(:bcode,:bclass,:bname,:bauthor,:boutdate,:bpress,:bcost,:bamount,:bsheng,:remark); Parameters.ParamByName(bcode).Value:=BH.Text; Parameters.ParamByName(bclass).Value:=LB.Text; Parameters.ParamByName(bna

39、me).Value:=SM.Text; Parameters.ParamByName(bauthor).Value:=ZZ.Text; Parameters.ParamByName(boutdate).Value:=StrToDate(CBRQ.Text); Parameters.ParamByName(bpress).Value:=CBS.Text; Parameters.ParamByName(bcost).Value:=StrToFloat(DJ.Text); Parameters.ParamByName(bamount).Value:=StrToInt(SL.Text); Parame

40、ters.ParamByName(bsheng).Value:=StrToInt(SL.Text); Parameters.ParamByName(remark).Value:=BZ.Text; ExecSQL; MessageBox(handle,此書已成功入庫,入庫成功,MB_OK or MB_ICONINFORMATION); BH.Text:=; SM.Text:=; ZZ.Text:=; CBRQ.Text:=; CBS.Text:=; DJ.Text:=; SL.Text:=; BZ.Text:=; close; end;end;2.圖書維護(hù)圖書修改、刪除功能是按照圖書的編號和操作

41、方式對圖書進(jìn)行相關(guān)操作,操作的fangshi 包括修改、刪除兩種。界面布局如下:(1)控件的初始化如下:procedure TTSZL1.FormCreate(Sender: TObject);begin with ADOQuery1 do begin close; SQL.Clear; SQL.Add(select class,classname from tsclass); Open; LBXX.Columns0.FieldName:=class; LBXX.Columns0.Title.Caption:=類別代碼; LBXX.Columns1.FieldName:=classname;

42、LBXX.Columns1.Title.Caption:=類別名稱; while not Eof do begin LB.Items.Add(FieldValuesclassname); Next; end; LB.ItemIndex:=0; TJLB.Checked:=true; end;end;(2)在圖書修改刪除頁面上,當(dāng)用戶輸入圖書編號并單擊“查找”按鈕時,系統(tǒng)自動搜索相關(guān)數(shù)據(jù)并顯示,如果輸入的數(shù)據(jù)有誤,則將彈出警告對話框告知錯誤,相關(guān)代碼如下:procedure TTSZL1.CZClick(Sender: TObject);begin with ADOQuery1 do begin

43、 Close; SQL.Clear; SQL.Add(select * from book); Open; if Locate(bcode,TSBH.Text,) then begin BH.Text:=TSBH.Text; SM.Text:=FieldValuesbname; ZZ.Text:=FieldValuesbauthor; CBRQ.Text:=dateToStr(FieldValuesboutdate); CBs.Text:=FieldValuesbpress; DJ.Text:=FloatToStr(FieldValuesbcost); SL.Text:=IntToStr(Fi

44、eldValuesbamount); BZ.Text:=FieldValuesremark; with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select class from tsclass); Open; Locate(class,Fieldvaluesclass,); LB.ItemIndex:=LB.Items.IndexOf(FieldValuesclass); XG.Checked:=true; ZX.Enabled:=true; end; end else begin MessageBox(handle,記錄沒有找到,請檢查輸入

45、的編號是否正確!,沒有找到圖書記錄,MB_OK or MB_ICONERROR); end; end;end;用戶可對查詢出來的記錄選擇操作方式,如修改、刪除,當(dāng)用戶單擊“執(zhí)行“按鈕時,系統(tǒng)響應(yīng)執(zhí)行對應(yīng)的操作,Onclick響應(yīng)函數(shù)代碼如下:procedure TTSZL1.ZXClick(Sender: TObject);var Del:integer;begin if XG.Checked then begin if TSZL1.CheckError1 then exit; with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select *

46、 from book); Open; Locate(bcode,BH.Text,); Edit; FieldValuesbclass:=LB.Text; FieldValuesbname:=SM.Text; FieldValuesbauthor:=ZZ.Text; FieldValuesboutdate:=StrToDate(CBRQ.Text); FieldValuesbpress:=CBS.Text; FieldValuesbcost:=StrToFloat(DJ.Text); FieldValuesbamount:=StrToInt(SL.Text); FieldValuesbsheng

47、:=StrToInt(SL.Text); FieldValuesremark:=BZ.Text; Post; MessageBox(handle,記錄已成功修改,修改成功,MB_OK or MB_ICONINFORMATION); end; end else begin Del:=MessageBox(handle,警告:刪除是永久不可恢復(fù)的!確認(rèn)刪除嗎?,刪除確認(rèn),MB_OKCANCEL or MB_ICONWarning); if Del=IDCancel then exit; with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(delete

48、 book where bcode =:bcode); Parameters.ParamByName(bcode).Value:=BH.Text; ExecSQL; MessageBox(handle,記錄已成功刪除,刪除成功,MB_OK or MB_ICONINFORMATION); TSBH.Text:=; BH.Text:=; SM.Text:=; ZZ.Text:=; CBRQ.Text:=; CBS.Text:=; DJ.Text:=; SL.Text:=; BZ.Text:=; LB.Text:=; LB.Enabled:=false; end; end;end;3.圖書類別管理圖

49、書類別管理主要是根據(jù)書籍的類型進(jìn)行分類,方便讀者進(jìn)行查詢,提高查詢速度。圖書類別管理分為修改和添加兩種操作,它與圖書管理在同一窗體中,只需新建一個TabSheet即可,界面布置如下所示:用戶選中DBGrid中某一列記錄,單擊“刪除”按鈕,將分類記錄信息從數(shù)據(jù)庫中移除。在刪除前彈出警告對話框提示操作的危險性,只有在用戶確認(rèn)的情況下刪除記錄,代碼如下:procedure TTSZL1.DELClick(Sender: TObject);Var Del:integer;begin Del:=MessageBox(handle,警告:刪除是永久不可恢復(fù)的!確認(rèn)刪除嗎?,刪除確認(rèn),MB_OKCANCEL

50、 or MB_ICONWarning); if Del=IDCancel then exit; LBXX.DataSource.DataSet.Delete; MessageBox(handle,記錄已成功刪除,刪除成功,MB_OK or MB_ICONINFORMATION); LBDM.Text:=; LBDM.Enabled:=true; LBMC.Text:=; TJLB.Enabled:=true;end;選中修改類別按鈕時,將DBGrid中的內(nèi)容顯示在類別代碼和類別名稱編輯控件中,并使“執(zhí)行”按鈕可見。代碼如下:procedure TTSZL1.XGLBClick(Sender:

51、TObject);begin LBDM.Text:=LBXX.DataSource.DataSet.FieldValuesclass; LBmc.Text:=LBXX.DataSource.DataSet.FieldValuesclassname; LBZX.Enabled:=true; LBDM.Enabled:=false;End;選中添加類別按鈕時,在信息GroupBox下的兩個Edt控件中輸入相關(guān)信息,并使“執(zhí)行”可見。代碼如下:procedure TTSZL1.TJLBClick(Sender: TObject);begin LBDM.Text:=; LBDM.Enabled:= t

52、rue; LBMC.Text:=;end;(4)在“執(zhí)行”按鈕可見的情況下,用戶單擊“執(zhí)行”按鈕,系統(tǒng)根據(jù)操作方式進(jìn)行不同的響應(yīng)事件,處理代碼如下:procedure TTSZL1.LBZXClick(Sender: TObject);begin if LBDM.Text= then begin MessageBox(handle,類別代碼不能為空!,類別代碼錯誤,MB_OK or MB_ICONERROR); exit; end; if LBMC.Text= then begin MessageBox(handle,類別名稱不能為空!,類別名稱錯誤,MB_OK or MB_ICONERROR

53、); exit; end; if TJLB.Checked then begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select class,classname from tsclass); Open; if Locate(class,LBDM.Text,) then begin MessageBox(handle,類別代碼已經(jīng)存在!,錯誤,MB_OK or MB_ICONERROR); LBDM.SetFocus; exit; end; if Locate(classname,Lbmc.Text,) then begin Me

54、ssageBox(handle,類別名稱已經(jīng)存在!,錯誤,MB_OK or MB_ICONERROR); LBDM.SetFocus; exit; end; Append; FieldValuesclass:=LBDM.Text; FieldValuesclassname:=LBMc.Text; Post; MessageBox(handle,類型記錄添加成功!,添加成功,MB_OK or MB_ICONINFORMATION); end; end else begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select class

55、,classname from tsclass); Open; Locate(class,LBDM.Text,); edit; FieldValuesclassname:=LBMC.Text; Post; MessageBox(handle,類型記錄修改成功!,修改成功,MB_OK or MB_ICONINFORMATION); end; end; end;procedure TTSZL1.LBXXCellClick(Column: TColumn);begin if XGLB.Checked then begin LBDM.Text:=ADOQuery1.Fields0.AsString;

56、LBMC.Text:=ADOQuery1.Fields1.AsString; LBDM.Enabled:=false; end else begin LBDM.Text:=; LBMC.Text:=; end;end;四、書籍借閱模塊的實(shí)現(xiàn)書籍借閱模塊主要時服務(wù)讀者的借書、還書,在此基礎(chǔ)上添加相關(guān)的判斷,如在借書時,檢查的是借閱人所屬群組、最大借閱書籍?dāng)?shù)、已借閱書籍?dāng)?shù)。在歸還書籍時頁需要判斷所環(huán)的書籍是否超期,并對超期書籍進(jìn)行罰金統(tǒng)計(jì),下面兩個部分的實(shí)現(xiàn)。窗體的初始化程序如下:procedure TTSJH1.JSClick(Sender: TObject);begin Label2.Capt

57、ion:=圖書編號:; HS_T.TabVisible:=false; JS_T.TabVisible:=true; TSBH.Text:=;end;在用戶輸入圖標(biāo)編號后,單擊“檢查”按鈕時,查檢ID是否合法,并判斷時還書還是借書,并對相關(guān)信息進(jìn)行初始化,此部分是借書和還書的共有部分,具體代碼如下:procedure TTSJH1.JCClick(Sender: TObject);var s:string;begin if JS.Checked then begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select * from

58、book where bcode=:bcode); Parameters.ParamByName(bcode).Value:=TSBH.Text; Open; if Bof and Eof then begin MessageBox(handle,輸入的圖書編號有錯!請重新輸入!,錯誤,MB_OK or MB_ICONERROR); TSBH.Text:=; JS_T.TabVisible:=false; end else begin MessageBox(handle,圖書編號存在,成功,MB_OK or MB_ICONINFORMATION); JS_T.TabVisible:=true;

59、 HS_T.TabVisible:=false; SM.Text:=FieldValuesbname; ZZ.Text:=FieldValuesbauthor; CBs.Text:=FieldValuesbpress; SYSL.Text:=IntToStr(FieldValuesbsheng); CBRQ.Text:=dateToStr(FieldValuesboutdate); s:=FieldValuesbclass; with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select * from tsclass where class=:

60、class); Parameters.ParamByName(class).Value:=s; Open; LB.Text:=FieldValuesclassname; end; end; end; end; if HS.Checked then begin with ADOQuery1 do begin Close; SQL.Clear; SQL.Add(select * from yonghu where readerID=:readerID); Parameters.ParamByName(readerID).Value:=TSBH.Text; Open; if Bof and Eof

溫馨提示

  • 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

提交評論