图书馆管理系统的实现功能和实现步骤.doc_第1页
图书馆管理系统的实现功能和实现步骤.doc_第2页
图书馆管理系统的实现功能和实现步骤.doc_第3页
图书馆管理系统的实现功能和实现步骤.doc_第4页
图书馆管理系统的实现功能和实现步骤.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

图书馆管理系统1.信息描述图书馆中有各种类型的图书,图书信息包括:图书编号、图书名称、作者、出版社、种类、价格、出版时间等;读者信息包括:姓名、性别、单位、出生日期等。2.预计功能描述1. 基础数据维护。2. 图书的插入。(数量1)3. 图书的删除与修改。4. 图书查询。5. 图书借阅与归还。(可以查询图书当前被谁借走及剩余数量。每人能同时最多能借5本书,超过5本不能再借阅。)6. 读者查询。可以查询读者目前已借的图书信息及借阅时间与归还时间7. 权限设置。8. 帮助等。3.功能的实现3.1主界面设置主界面中仅有一个MainMenu控件,如图所示:在“管理员登录”中输入以下代码:procedure TMain.AdLoginClick(Sender: TObject);begin FrmLogin.Caption:=管理员登陆; /把登陆界面标题改为“管理员登陆” FrmLogin.ShowModal; /显示登陆界面end;在“用户登录”中输入以下代码:procedure TMain.CoLoginClick(Sender: TObject);begin FrmLogin.Caption:=用户登陆; /把登陆界面标题改为“用户登录” FrmLogin.ShowModal; /显示登陆界面end;在“退出”中输入以下代码(为简便起见,下文中未注明的“退出”与“取消”按钮与此操作相同,不予以再次注明):procedure TMain.ExitClick(Sender: TObject);begin close;end;3.2登录界面的设置登录界面的主要控件:2个Lable、2个Edit、2个BitButton、ADOQuery、DataSourse。如图: 在确定按钮中输入以下代码:procedure TFrmLogin.BtnOKClick(Sender: TObject);Var CmdStr: String; /CmdStr存放查询语句 UsrType: integer; /UsrType存放用户类型begin ADOQryUser.SQL.Clear; CmdStr:=select* From 用户(管理员) Where 用户名=+QuotedStr(EdtUserName.Text)+and 口令=+QuotedStr(EdtPass.Text); AdoQryUser.SQL.Add(CmdStr); AdoQryUser.Open; if AdoQryUser.RecordCount0 then /确认该用户存在 begin UsrType:=ADOQryUser.FieldList2.AsInteger; if UsrType=0 then /0为普通用户 if FrmLogin.Caption=管理员登陆 then /如果用户点了管理员登陆,提醒其换登陆 begin messagedlg(此账号不是管理员,请使用用户登录,mtinformation,mbyes,mbno,0); close; end /登陆成功 else begin FrmWork.Caption:=用户使用; /主界面标题改为“用户使用” FrmWork.BkManage.Enabled:=false; /图书管理按钮不可用 FrmWork.BkRdManage.Enabled:=false; /用户管理按钮不可用 FrmWork.BkBorL.Enabled:=False; /图书借阅及归还按钮不可用 FrmWork.BkReader.Enabled:=true; /读者服务按钮可用 FrmWork.BkSearch.Enabled:=true; /图书查询按钮可用 FrmWork.BkExit.Enabled:=true; /退出登录按钮可用 FrmWork.ShowModal; /显示主界面 end else if UsrType=1 then /1为普通管理员 if FrmLogin.Caption=用户登录 then begin messagedlg(此账号不是用户,请使用管理员登录,mtinformation,mbyes,mbno,0); close; end else begin FrmWork.Caption:=管理员使用; FrmWork.BkManage.Enabled:=true; /普通管理员可以使用图书管理 FrmWork.BkRdManage.Enabled:=false; FrmWork.BkBorL.Enabled:=true; /普通管理员可以使用图书借阅及归还 FrmWork.BkReader.Enabled:=true; FrmWork.BkSearch.Enabled:=true; FrmWork.BkExit.Enabled:=true; FrmWork.ShowModal; end else /其他的是顶级管理员 if FrmLogin.Caption=用户登录 then begin messagedlg(此账号不是用户,请使用管理员登录,mtinformation,mbyes,mbno,0); close; end else begin FrmWork.Caption:=管理员使用; FrmWork.BkManage.Enabled:=true; FrmWork.BkRdManage.Enabled:=true; /顶级管理员可以使用用户管理 FrmWork.BkBorL.Enabled:=true; FrmWork.BkReader.Enabled:=true; FrmWork.BkSearch.Enabled:=true; FrmWork.BkExit.Enabled:=true; FrmWork.ShowModal; end end else if(messagedlg(输入的用户名与口令不对!是否要重输?,mtinformation,mbyes,mbno,0)mryes) then Close;end;3.3工作主界面 工作主界面的主要控件为:6个Button、2个Lable。如图:此界面的主要代码如下:procedure TFrmWork.BkExitClick(Sender: TObject);begin close;end;procedure TFrmWork.BkSearchClick(Sender: TObject);begin FrmBkSearch.ShowModal; /显示图书查询界面end;procedure TFrmWork.BkRdManageClick(Sender: TObject);begin FrmRdManage.ShowModal; /显示用户管理界面end;procedure TFrmWork.BkManageClick(Sender: TObject);begin FrmBkManage.ShowModal; /显示图书管理界面end;procedure TFrmWork.BkReaderClick(Sender: TObject);begin FrmReader.ShowModal; /显示读者服务界面end;procedure TFrmWork.BkBorLClick(Sender: TObject);begin FrmBkBandL.showModal; /显示图书借阅与归还界面end;3.4图书查询界面 图书查询界面的主要控件为:Lable、DBEdit、Button、BitButton、RadioGroup、DBGrid、DataSourse和ADOQurey。如图:选择查询条件的代码为:procedure TFrmBkSearch.rdgClick(Sender: TObject); /查询条件的改变begin ADOQryCondtion.Close; ADOQryConDtion.SQL.Clear; Case rdg.ItemIndex of 0: begin ADOQryCondtion.SQL.Add(select 图书名称 from 图书); DBEditBook.DataField:=图书名称; end; 1: begin ADOQryCondtion.SQL.Add(select 作者 from 图书); DBEditBook.DataField:=作者; end; 2: begin ADOQryCondtion.SQL.Add(select 出版社 from 图书); DBEditBook.DataField:=出版社; end; 3: begin ADOQryCondtion.SQL.Add(select 种类 from 图书); DBEditBook.DataField:=种类; end; 4: begin ADOQryCondtion.SQL.Add(select * from 图书); ADOQryCondtion.Active:=true; end; end; ADOQryCondtion.Active:=true;end;点击搜索的代码为:procedure TFrmBkSearch.Button1Click(Sender: TObject); /确认查询var CID:String; /CID中存放查询语句begin ADOQryXx.Close; ADOQryXx.SQL.Clear; case rdg.ItemIndex of 0:CID:=select* from 图书 where 图书名称 LIKE +QuotedStr(%+DBEditBook.Text+%); 1:CID:=select* from 图书 where 作者 LIKE +QuotedStr(%+DBEditBook.Text+%); 2:CID:=select* from 图书 where 出版社 LIKE +QuotedStr(%+DBEditBook.Text+%); 3:CID:=select* from 图书 where 种类 LIKE +QuotedStr(%+DBEditBook.Text+%); 4:CID:=select* from 图书; end; ADOQryXx.SQL.Add(CID); /写入SQL语句 ADOQryXx.Active:=true; /显示查询结果end;3.5读者服务界面读者服务界面的主要控件为:DataSourse、ADOQuery、Edit、Table、PageControl、bitbutton、DBGrid等。1.用户信息查询: 此TabSheet的OnShow事件代码为:procedure TFrmReader.TabSheet1Show(Sender: TObject); /实现了用户信息查询var chazhao: String; /保存查询语句 leixin: integer; /保存用户类型begin ADOQryJieshu.Close; ADOQryJieshu.SQL.Clear; chazhao:=select* From 用户(管理员) Where 用户名=+QuotedStr(FrmLogin.EdtUserName.Text)+and 口令=+QuotedStr(FrmLogin.EdtPass.Text); ADOQryJieshu.SQL.Add(chazhao); ADOQryJieshu.Open; /显示各种查询到的信息 Edit1.text:=ADOQryJieshu.FieldList3.AsString; Edit2.text:=ADOQryJieshu.FieldList4.AsString; Edit3.text:=ADOQryJieshu.FieldList6.AsString; Edit4.text:=ADOQryJieshu.FieldList5.AsString; Edit8.Text:=ADOQryJieshu.FieldList7.AsString; leixin:=ADOQryJieshu.FieldList2.AsInteger; case leixin of 0: Edit9.Text:=普通用户; 1: Edit9.Text:=管理员; 2: Edit9.Text:=顶级管理员; end;end;2.图书借阅查询 此TabSheet的OnShow事件代码为:procedure TFrmReader.TabSheet2Show(Sender: TObject); /实现该用户所借书籍的显示var chaxun: String;begin ADOQuery1.Close; ADOQuery1.SQL.Clear; chaxun:=select* From 借书 Where 用户名=+QuotedStr(FrmLogin.EdtUserName.Text); ADOQuery1.SQL.Add(chaxun); ADOQuery1.Open; ADOQuery1.Active:=true;end;3.密码修改 点击确认修改按钮的代码是:procedure TFrmReader.BitBtn2Click(Sender: TObject); /实现密码的修改var xiugai: String; /保存修改语句begin ADOQuery1.Close; ADOQuery1.SQL.Clear; if Edit5.TextFrmLogin.EdtPass.Text then /确认原密码正确 messagedlg(原密码错误,请重输,mtinformation,mbyes,mbno,0) else if Edit6.TextEdit7.Text then /确保两次输入密码相同 messagedlg(确认密码与新密码不匹配,请重输,mtinformation,mbyes,mbno,0) /修改密码 else begin xiugai:=Update 用户(管理员) set 口令=:口令 where 用户名=+QuotedStr(FrmLogin.EdtUserName.Text); ADOQuery1.SQL.text:=xiugai; ADOQuery1.Parameters.ParamByName(口令).Value:=trim(Edit6.Text); ADOQuery1.ExecSQL; end; Edit5.Text:=; Edit6.Text:=; Edit7.Text:=;end;3.6图书借阅与归还界面图书借阅与归还界面主要控件为:PageControl、DataSource、ADOQuery、Button、Edit、DBGrid等。1.图书借阅修改用户名时的代码为:procedure TFrmBkBandL.Edit1Change(Sender: TObject); /当用户更改时,即时显示该用户借阅的书籍var chaxun: String;begin ADOQuery1.close; ADOQuery1.sql.clear; chaxun:=select* from 借书 where 用户名=+quotedstr(Edit1.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; ADOQuery1.ACtive:=true;end;点击确认借阅按钮的代码为:procedure TFrmBkBandL.Button1Click(Sender: TObject); /按此按钮确认借书var chaxun: String; /保存查询语句 YH: String; /保存用户姓名 TS: String; /保存图书名称 YHSL: Integer; /保存用户现在的借阅数量 TSSL: Integer; /保存图书的现有数量begin if edit1.text= then begin showmessage(用户名不能为空,请重输!); edit1.SetFocus; end else if edit2.Text= then begin showmessage(图书编号不能为空,请重输!); edit2.SetFocus; end /以上确保用户名与图书编号均不为空 else begin ADOQuery1.close; ADOQuery1.sql.Clear; chaxun:=select* from 用户(管理员) where 用户名=+quotedstr(edit1.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; YHSL:=ADOQuery1.FieldList7.ASInteger; if(ADOQuery1.recordcount=0) then /确保用户存在 begin showmessage(该用户不存在,请重输!); edit1.SetFocus; end else if(YHSL=5) then /确保该用户借书量未满 begin showmessage(该用户书籍已借满,请重输!); edit1.SetFocus; end else begin ADOQuery1.close; ADOQuery1.sql.Clear; chaxun:=select* from 图书 where 图书编号=+quotedstr(edit2.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; TSSL:=ADOQuery1.FieldList7.ASInteger; if(ADOQuery1.recordcount=0) then /确保该图书在库中 begin showmessage(该图书不存在,请重输!); edit2.SetFocus; end else if(TSSL=0) then /确保该图书还有存货 begin showmessage(该书籍库存已尽,请重输!); edit2.SetFocus; end /以下为借书步骤 else begin ADOQuery1.close; ADOQuery1.sql.Clear; chaxun:=select* from 图书 where 图书编号=+quotedstr(edit2.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; TS:=ADOQuery1.FieldList1.ASString; /提取该编号的图书名称 ADOQuery1.close; ADOQuery1.sql.Clear; chaxun:=select* from 用户(管理员) where 用户名=+quotedstr(edit1.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; YH:=ADOQuery1.FieldList3.ASString; /提取该用户的姓名 /以下是借书步骤 ADOQuery1.close; ADOQuery1.sql.Clear; ADOQuery1.sql.Text:=insert into 借书(用户名,图书编号,用户姓名,图书名称,借书日期,应还日期) values(:用户名,:图书编号,:用户姓名,:图书名称,:借书日期,:应还日期); ADOQuery1.PArameters.ParamByName(用户名).Value:=trim(Edit1.Text); /设置用户名 ADOQuery1.PArameters.ParamByName(图书编号).Value:=trim(Edit2.Text); /设置图书编号 ADOQuery1.PArameters.ParamByName(用户姓名).Value:=trim(YH); /设置用户姓名为YH ADOQuery1.PArameters.ParamByName(图书名称).Value:=trim(TS); /设置图书名称为TS ADOQuery1.PArameters.ParamByName(借书日期).Value:=Datetostr(date(); /设置结束日期为当前日期 ADOQuery1.PArameters.ParamByName(应还日期).Value:=Datetostr(date()+30); /设置应还日期为一个月后 ADOQuery1.ExecSQl; /执行SQL语句,到此“借书”表中插入了一条记录 /更新“图书”表,把刚借走的图书的现有数量减1 ADOQuery1.close; ADOQuery1.sql.clear; ADOQuery1.sql.Text:=update 图书 set 现有数量=:现有数量 where 图书编号=+quotedstr(Edit2.Text); ADOQuery1.PArameters.ParamByName(现有数量).Value:=TSSL-1; ADOQuery1.ExecSQl; /更新“用户(管理员)”表,把刚借书的用户的借书数量加1 ADOQuery1.close; ADOQuery1.sql.clear; ADOQuery1.sql.Text:=update 用户(管理员) set 已借图书=:已借图书 where 用户名=+quotedstr(Edit1.Text); ADOQuery1.PArameters.ParamByName(已借图书).Value:=YHSL+1; ADOQuery1.ExecSQl; /及时更新数据并显示 ADOQuery1.close; ADOQuery1.sql.clear; chaxun:=select* from 借书 where 用户名=+quotedstr(edit1.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; ADOQuery1.ACtive:=true; end end endend;2.图书归还点击确认归还得代码为:procedure TFrmBkBandL.Button3Click(Sender: TObject);var chaxun: String; /保存查询语句 YHSL: Integer; /保存用户借书数量 TSSL: Integer; /保存图书现有数量begin if edit3.text= then begin showmessage(用户名不能为空,请重输!); edit3.SetFocus; end else if edit4.Text= then begin showmessage(图书编号不能为空,请重输!); edit4.SetFocus; end /以上确保用户名和图书编号不为空 else begin ADOQuery1.close; ADOQuery1.sql.Clear; chaxun:=select* from 用户(管理员) where 用户名=+quotedstr(edit3.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; YHSL:=ADOQuery1.FieldList7.ASInteger; if(ADOQuery1.recordcount=0) then /确保存在该用户 begin showmessage(该用户不存在,请重输!); edit3.SetFocus; end else begin ADOQuery1.close; ADOQuery1.sql.Clear; chaxun:=select* from 借书 where 用户名=+quotedstr(edit3.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; if(ADOQuery1.recordcount=0) then /确保该用户借了书籍 begin showmessage(该用户无借阅书籍,请重输!); edit3.SetFocus; end else begin ADOQuery1.close; ADOQuery1.sql.Clear; chaxun:=select* from 图书 where 图书编号=+quotedstr(edit4.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; TSSL:=ADOQuery1.FieldList7.ASInteger; if(ADOQuery1.recordcount=0) then /确保该图书在库中 begin showmessage(该图书不存在,请重输!); edit4.SetFocus; end else begin ADOQuery1.close; ADOQuery1.sql.Clear; chaxun:=select* from 借书 where 图书编号=+quotedstr(edit4.Text)+ and 用户名=+quotedstr(edit3.Text); ADOQuery1.sql.Add(chaxun); ADOQuery1.open; if(ADOQuery1.recordcount=0) then /确保该用户借了这本书 begin showmessage(该用户没有借阅此书,请重输!); edit4.SetFocus; end /以下是还书步骤 else begin /删除该用户借该书的记录 ADOQuery1.close; ADOQuery1.sql.Clear; ADOQuery1.sql.Text:=delete from 借书 where 用户名=:用户名 and 图书编号=:图书编号; ADOQuery1.PArameters.ParamByName(用户名).Value:=trim(Edit3.Text); ADOQuery1.PArameters.ParamByName(图书编号).Value:=trim(Edit4.Text); ADOQuery1.ExecSQl; /更新“图书”表,把刚还得书籍的现有数量加1 ADOQuery1.close; ADOQuery1.sql.clear; ADOQuery1.sql.Text:=update 图书 set 现有数量=:现有数量 where 图书编号=+quotedstr(Edit4.Text); ADOQuery1.PArameters.ParamByName(现有数量).Value:=TSSL+1; ADOQuery1.ExecSQl; /更新“用户(管理员)”表,把刚还书的用户的借书数量减1 ADOQuery1.close; ADOQuery1.sql.clear; ADOQuery1.sql

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论