已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Delphi课程设计(图书信息管理系统) 学院:数计学院 专业:08 信管 学号:080304041 姓名:林燕玉目录(图书信息管理系统)1.概述 .3.2 需求分析 .3. 3.系统模块分析图 .3.4.数据库设计 .4.4.1图书信息表 .4.4.2读者信息表 .5.4.3图书借阅表 .6.4.4用户信息表 .7.5.系统模块设计 .7.5.1主窗体的创建 .7.5.2数据模块窗体设计 .11.5.3登录窗体设计 11.5.4 用户密码窗体设计 13.5.5 添加用户窗体设计 .14.5.6 修改密码窗体设计 .16.5.7 信息查询窗体设计 .17.5.8 图书管理窗体设计 . 23.5.9 读者管理窗体设计 .27.5.10 借阅管理窗体设计 .31.5.11 规章制度窗体设计 .36.5.12 图书馆背景窗体设计 .37.6.本系统各个功能的运行 .37.7.总体设计方案的分析 .38.8.出现的问题及解决方法 .38.9.小结 .39.一、 概述: 本系统是介绍一个用delphi为开发工具基于ADO的图书馆图书管理系统。图书管理系是以数据库为支撑的应用程序,提出了权限管理模块的具体实现方法,并完成了相关模块设计。其功能包括用户管理、图书或读者或借阅查询、图书或读者管理以及图书借还等。本系统使用Access数据库存储图书管理的基本信息。二:需求分析:l 主要功能本图书管理系统主要是实现对图书信息的查询和管理,其功能为: 操作系统:分为四个部分:.登录:根据不同的用户的权限不同,可进行不同的操作;.用户管理:增加和删除系统用户,并制定用户的权限;.修改密码:可修改当前用户自己的密码;.退出系统:退出程序,关闭窗口。信息查询:分为三个部分查询:.图书查询:可根据书号、书名、出版社、作者分别来查询图书的基本信息,也可模糊查询来查询图书的全部基本信息;.读者查询:可根据书号借书证号、姓名来查询读者的基本信息,也可根据模糊查询来查询读者的全部基本信息;.借阅查询:可根据借书证号来查询图书被借阅的基本信息,也可根据模糊查询来查询图书借阅的全部基本信息。图书管理:分为三个部分管理:.图书管理:a.新书入库:添加新的书籍; b.浏览图书:可根据书号来浏览图书 .读者管理:添加、修改、删除读者信息,刷新可查看读者的信息; . 图书借还:实现图书的借出和归还的管理。关于图书馆:a. 图书馆制度:实现对图书馆规章制作的查看;b.图书馆背景:实现对本图书馆了解。 在本系统中,主要采用“用户登录”来进行子系统的切换,使不同权限的用户能在对应的子系统下正常操作。三系统功能模块分析图:操作系统信息查询管理信息关于图书馆登录系统用户系统修改密码退出系统图书管理读者管理借阅管理图书查询读者查询借阅查询图书馆制度图书馆背景图书馆图书信息管理四、数据库设计:名称:图书信息表; 表名称标识:book;表结构示意图如下所示: 用户信息表数据图如下所示: 名称:读者信息表; 表名称标识:reader; 表结构示意图如下所示: 读者信息表数据如下: 名称:借阅图书信息表; 表名称标识:lend; 表结构如下所示: 借阅图书信息表数据如下所示: 名称:用户信息表; 表名称标识:usera; 表结构图如下所示: 用户名称信息表数据如下所示: 五、系统模块设计:主窗体的创建 主窗体的名字:mainform,对应的单元文件为:main.pas,在窗体中添加一个mainmenu组件,一个statusbar组件,一个image组件,程序界面如下图所示: 程序主要代码: var Mainform: TMainform; mypath:string;implementationuses book, reader, lend, infoquery,dl, xgmm, xgyh, about, gz;$R *.dfmprocedure TMainform.FormCreate(Sender: TObject);begin mypath:=extractfilepath(paramstr(0); /程序当前的途径 shortdateformat:=yyyy/mm/dd; n1.enabled:=false; n2.enabled:=false; n3.enabled:=false; n4.enabled:=false; n5.enabled:=false; n6.enabled:=false; n7.enabled:=false; n8.enabled:=false; n11.enabled:=false; n12.enabled:=false; Mainform.statusbar1.panels4.Text:=datetostr(now); /显示现在时间end;procedure TMainform.Button1Click(Sender: TObject);begin bookform.show;end;procedure TMainform.Button2Click(Sender: TObject);begin readerform.show;end;procedure TMainform.Button3Click(Sender: TObject);begin lendform.show;end;procedure TMainform.Button4Click(Sender: TObject);begin close;end;procedure TMainform.Button5Click(Sender: Tobject);beginqueryform.show;end;procedure TMainform.Button6Click(Sender: TObject);begin button5click(sender);end;procedure TMainform.Button7Click(Sender: TObject);begin button5click(sender);end;procedure TMainform.Button8Click(Sender: TObject);begin dl_form.show;end;procedure TMainform.Button11Click(Sender: TObject);begin close;end;procedure TMainform.Button10Click(Sender: TObject);begin xgmm_Form.show;end;procedure TMainform.Button9Click(Sender: TObject);begin xgyh_Form.show;end;procedure TMainform.N2Click(Sender: TObject);beginqueryform.show; /显示图书查询end;procedure TMainform.N3Click(Sender: TObject);beginbutton5click(sender); /显示图书管理系统end;procedure TMainform.N4Click(Sender: TObject);begin button5click(sender); /显示借阅查询end;procedure TMainform.N6Click(Sender: TObject);beginbookform.show; /显示图书管理end;procedure TMainform.N7Click(Sender: TObject);beginreaderform.show; /显示读者管理end;procedure TMainform.N8Click(Sender: TObject);begin lendform.show; /显示借阅管理end;procedure TMainform.N10Click(Sender: TObject);begindl_form.show; /显示登录end;procedure TMainform.N11Click(Sender: TObject);beginxgyh_Form.show; /显示用户管理end;procedure TMainform.N12Click(Sender: TObject);beginxgmm_Form.show; /显示修改密码end;procedure TMainform.N13Click(Sender: TObject);beginclose; /退出系统end;procedure TMainform.Timer1Timer(Sender: TObject);beginMainform.statusbar1.panels4.Text:=FormatDateTime(yyyy年mm月dd日.,now()+timetostr(now);end;procedure TMainform.N16Click(Sender: TObject);begin about_form.show; /显示图书馆背景end;procedure TMainform.N15Click(Sender: TObject);begingz_form.show; /显示图书馆规章制度end;数据模块设计窗体: 建立一个数据模块(data module)来存放ADO组件对象,便于窗体统一使用ADO组件来访问数据库,命名为:DataModuleADO,在窗体中添加一个ADOConnection组件,三个ADOQuery组件,两个ADOTable组件,一个DataSource组件。程序界面如下图所示: 程序主要代码如下: procedure TDataModuleADO.DataModuleCreate(Sender: TObject);begin adoconnection1.ConnectionString :=Provider=Microsoft.Jet.OLEDB.4.0;User ID=admin;Data Source= +mypath+databookmanage.mdb;Persist Security Info=False; adoquery1.Connection :=adoconnection1; adotable1.Connection :=adoconnection1; ADOQuery2.ConnectionString:=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.databookmanage.mdb;Persist Security Info=False; ADOQuery3.ConnectionString:=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.databookmanage.mdb;Persist Security Info=False;end; 登录窗体设计: 窗体的名字为:dlform,对应的单元文件为:dl.pas。在窗体中添加两个label组件,两个edit组件,两个speedbutton组件。程序的界面如下所示: 程序的主要代码如下: procedure Tdl_Form.Button1Click(Sender: TObject);begin close;end;procedure Tdl_Form.SpeedButton1Click(Sender: TObject);var vqx:string;begin with dataModuleADO.ADOQuery1 do begin close; sql.Clear ; SQL.Add(select * from usera where (yhm=:yhm1) and (mm=:mm1); parameters.ParamByName(yhm1).Value :=Edit1.text ; parameters.ParamByName(mm1).Value :=Edit2.text ; open; if recordcount=0 then begin showmessage(用户名或密码错!); edit2.Text:= ; end else begin vqx:=fieldbyname(qx).asstring; Mainform.dlname:=mainform.statusbar1.panels0.text; Mainform.statusbar1.panels0.Text:=登录用户:+trim(dl_form.Edit1.text); mainform.n12.enabled:=true; if vqx=1 then begin Mainform.statusbar1.panels1.Text:=用户权限:读者 ; mainform.n11.enabled:=false; mainform.n1.enabled:=true; mainform.n2.enabled:=true; mainform.n3.enabled:=false; mainform.n4.enabled:=true; mainform.n5.enabled:=true; mainform.n6.enabled:=false; mainform.n7.enabled:=false; mainform.n8.enabled:=true; end else begin Mainform.statusbar1.panels1.Text:=用户权限:管理者; mainform.n11.enabled:=true; mainform.n1.enabled:=true; mainform.n2.enabled:=true; mainform.n3.enabled:=true; mainform.n4.enabled:=true; mainform.n5.enabled:=true; mainform.n6.enabled:=true; mainform.n7.enabled:=true; mainform.n8.enabled:=true; end; Button1Click(Sender); edit1.text:=; edit2.text:=; end; end;end;procedure Tdl_Form.SpeedButton2Click(Sender: TObject);beginclose;end;用户密码窗体设计: 窗体的名字为:xxgh_form,对应的单元文件为:xxgh.pas。在窗体中添加一个Dbgrid组件,一个datasource组件,一个mainmenu组件,界面如下所示: 程序主要的代码如下: procedure Txgyh_Form.FormShow(Sender: TObject);var sqlstr:string;begin DataSource1.DataSet:= dataModuleADO.ADOQuery1; DBGrid1.DataSource:=DataSource1; sqlstr:=select yhm as 用户名,mm as 密码,qx as 权限 from usera; with dataModuleADO.ADOQuery1 do begin close; sql.Clear ; SQL.Add(sqlstr); open; end;end;procedure Txgyh_Form.N1Click(Sender: TObject);begin xgyh_Form.Visible:=false; tjyh_Form.show;end;procedure Txgyh_Form.N2Click(Sender: TObject);var vmsg,vyhm,sqlstr:string;begin vyhm:=dataModuleADO.ADOQuery1.FieldByName(用户名).AsString; if vyhm=mainForm.dlname then begin ShowMessage(不能删除当前用户 !); exit; end; vmsg:= 确实要删除“+vyhm+”用户?; if MessageDlg(vmsg, mtConfirmation, mbYes, mbNo,0)=mrNo then exit; sqlstr:=delete from usera where (yhm=+vyhm+); with dataModuleADO.ADOQuery1 do begin Close; SQL.Clear; SQL.Add(sqlstr); ExecSQL; end; xgyh_Form.FormShow(Sender);end;procedure Txgyh_Form.N3Click(Sender: TObject);beginclose;end;添加用户窗体设计: 窗体的名字为:tjyh_form,对应的单元文件为tjyh.pas。在窗体中添加三个label组件,两个edit组件,一个combobox组件,两个button组件,程序的界面如下: 程序的主要代码如下: procedure Ttjyh_Form.Button2Click(Sender: TObject);begin xgyh_Form.Visible:=true; xgyh_Form.FormShow(Sender); close;end;procedure Ttjyh_Form.Button1Click(Sender: TObject);var vmm,vyhm,vqx,sqlstr:string;begin if trim(Edit1.Text)= then begin ShowMessage(用户名不能为空!); exit; end; vmm:=Edit2.Text; vyhm:=Edit1.Text; sqlstr:=select * from usera where (yhm=+vyhm+); with dataModuleADO.ADOQuery1 do begin close; sql.Clear ; SQL.Add(sqlstr); open; end; if dataModuleADO.ADOQuery1.RecordCount0 then begin ShowMessage(该用户已经存在,请选择“删除用户”!); exit; end; if ComboBox1.Text=管理员 then vqx:=1 else vqx:=0; sqlstr:=insert into usera (yhm,mm,qx) values (:yhm,:mm,:qx); with dataModuleADO.ADOQuery1 do begin Close; SQL.Clear; SQL.Add(sqlstr); Parameters.ParamByName(yhm).Value:=vyhm; Parameters.ParamByName(mm).Value:=vmm; Parameters.ParamByName(qx).Value:=vqx; ExecSQL; end; tjyh_Form.Button2Click(Sender);end;修改密码窗体设计: 窗体的名字:xxgm_form, 对应的单元文件为:xxgm.pas。在窗体中添加三个edit组件,三个label组件,两个button组件,程序界面如下: 程序的主要代码: procedure Txgmm_Form.Button1Click(Sender: TObject);var vymm,vxmm,vyhm,sqlstr:string;begin vymm:=Edit1.Text; vxmm:=Edit2.Text; vyhm:=mainForm.dlname; sqlstr:=select * from usera where (yhm=+vyhm+); with dataModuleADO.ADOQuery1 do begin close; sql.Clear ; SQL.Add(sqlstr); open; if recordcount0 then begin vymm:=FieldByName(mm).AsString; if vymmEdit1.Text then begin ShowMessage(原密码不正确!); exit; end else begin if Edit2.TextEdit3.Text then begin ShowMessage(新密码与确认密码不一致!); exit; end else begin sqlstr:=update usera set mm=+vxmm+where (yhm=+vyhm+); Close; SQL.Clear; SQL.Add(sqlstr); ExecSQL; xgmm_Form.Button2Click(Sender); end; end; end; end; ShowMessage(密码更改成功!);end;procedure Txgmm_Form.Button2Click(Sender: TObject);begin close;end;信息查询窗体设计:窗体的名字为:queryform,对应的单元文件为:infoquery.pas。信息查询包括图书信息查询、读者信息查询和借阅信息查询3个功能。在窗体中添加一个tPageControl组件,在t PageControl组件对象中建立三个页面,还有一个button组件,并输入以下代码: procedure Tqueryform.Button1Click(Sender: TObject);begin close;end;.查询图书基本信息页面:在窗体中添加一个GroupBox组件,一个button组件,四个radiobutton组件,一个checkbox组件,一个edit组件,一个listview组件,一个statictext组件,一个label组件。 程序界面如下:程序主要代码如下:procedure Tqueryform.RadioButton1Click(Sender: TObject);begin edit3.Text :=; edit3.MaxLength:=4; /输入最大长度为4;end;procedure Tqueryform.RadioButton2Click(Sender: TObject);begin edit3.Text :=; edit3.MaxLength:=0; /输入长度不限end;procedure Tqueryform.RadioButton3Click(Sender: TObject);begin edit3.Text :=; edit3.MaxLength:=0;end;procedure Tqueryform.RadioButton4Click(Sender: TObject);begin edit3.Text :=; edit3.MaxLength:=0;end;procedure Tqueryform.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if key=13 then /按回车键 button4click(sender);end;procedure Tqueryform.Edit3KeyPress(Sender: TObject; var Key: Char);begin if ord(key)=13 then Button2Click(Sender);end;procedure Tqueryform.Button2Click(Sender: TObject);var content:string;begin try listview1.Items.Clear ; with datamoduleado.ADOQuery1 do begin content:=edit3.Text ; /将查询内容存放到变量content中 if checkbox1.Checked then /如果选择了模糊查询 content:=%+content+%; sql.Clear ; if radiobutton1.Checked then /按书号查询 begin sql.Add(select code,name,author,press,outdate,cost,memo0 from book where code like :code ); parameters.ParamByName(code).Value :=content; end; if radiobutton2.Checked then /按书名查询 begin sql.Add(select code,name,author,press,outdate,cost,memo0 from book where name like :name ); parameters.ParamByName(name).Value :=content; end; if radiobutton3.Checked then begin /按出版社查询 sql.Add(select code,name,author,press,outdate,cost,memo0 from book where press like :press ); parameters.ParamByName(press).Value :=content; end; if radiobutton4.Checked then /按作者查询 begin sql.Add(select code,name,author,press,outdate,cost,memo0 from book where author like :author ); parameters.ParamByName(author).Value :=content; end; open; while not eof do begin with listview1.Items.Add do /将查询到的结果加入到列表listview1 begin caption:=fieldbyname(code).AsString ; subitems.add(fieldbyname(name).AsString ); subitems.add(fieldbyname(author).AsString ); subitems.add(fieldbyname(press).AsString ); subitems.add(fieldbyname(outdate).AsString ); subitems.add(floattostr(fieldbyname(cost).AsFloat); subitems.add(fieldbyname(memo0).AsString ); end; next; end; statictext2.Caption :=共+inttostr(recordcount)+条记录; /显示查询到的记录 close; end; except messagedlg(查询失败,mterror,mbok,0); end;end;.读者基本信息查询页面:在窗体中添加一个GroupBox组件,一个button组件,两个radiobutton组件,一个checkbox组件,一个edit组件,一个listview组件,一个statictext组件,一个label组件。 程序界面如下: 程序主要代码: procedure Tqueryform.Button3Click(Sender: TObject);var content:string;begin try listview2.Items.Clear ; with datamoduleado.ADOQuery1 do begin content:=edit1.Text ; /将查询内容保存到变量content中 if checkbox2.Checked then /如果选择了模糊查询 content:=%+content+%; sql.Clear ; if radiobutton5.Checked then /按借书证号查询 begin sql.Add(select readerid,name,sex,idcardno from reader where readerid like :readerid ); parameters.ParamByName(readerid).Value :=content; end; if radiobutton6.Checked then /按姓名查询 begin sql.Add(select readerid,name,sex,idcardno from reader where name like :name ); parameters.ParamByName(name).Value :=content; end; open; while not eof do begin with listview2.Items.Add do /将查询结果加入到列表listview2中 begin caption:=fieldbyname(readerid).AsString ; subitems.add(fieldbyname(name).AsString ); if fieldbyname(sex).AsString =1 then subitems.add(女) else subitems.add(男); subitems.add(fieldbyname(idcardno).AsString ); end; next; end; statictext4.Caption :=共+inttostr(recordcount)+条记录;/显示查询到的记录数 close; end; except messagedlg(查询失败,mterror,mbok,0); /显示查询失败 end;end;procedure Tqueryform.Edit2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if key=13 then /按回车键 button4click(sender);end.借阅基本信息查询页面:在窗体中添加一个GroupBox组件,一个button组件,一个radiobutton组件,一个checkbox组件,一个edit组件,一个listview组件,一个statictext组件,一个label组件。 程序界面如下: 程序的主要代码如下: procedure Tqueryform.Button4Click(Sender: TObject);var content:string;begin try listview3.Items.Clear ; with datamoduleado.ADOQuery1 do begin content:=edit2.Text ; if checkbox3.Checked then content:=%+content+%; sql.Clear ; if radiobutton7.Checked then /按借书证查询 begin sql.Add(select lend.readerid ,name,sex,idcardno,outdate,code from end,reader where lend.readerid like :readerid and reader.readerid=lend.readerid order by lend.readerid); parameters.ParamByName(readerid).Value :=content; end; open; while not eof do begin with listview3.Items.Add do /将查询结果加入到列表 listview3中 begin caption:=fieldbyname(readerid).AsString ; subitems.add(fieldbyname(name).AsString ); if fieldbyname(sex).AsString =1 then subitems.add(女) else subitems.add(男); subitems.add(fieldbyname(code).AsString ); subitems.add(fieldbyname(outdate).AsString ); subitems.add(floattostr(date-fieldbyname(outdate).AsDateTime); subitems.add(fieldbyname(idcardno).AsString ); if date-fieldbyname(outdate).AsDateTime 60 then subitems.Add(floattostr(date-fieldbyname(outdate).AsDateTime-60)*0.1) else subitems.add(0); end; next; end; statictext6.Caption :=共+inttostr(recordcount)+条记录; / 显示查询到的记录 close; e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电工电子技术知到智慧树章节测试课后答案2024年秋临沂职业学院
- 地下工程施工技术知到智慧树章节测试课后答案2024年秋山东科技大学
- 2025年浙江建筑安全员-B证(项目经理)考试题库
- 2025年度涂料产品环保认证与标准制定合同3篇
- 2025版酒店承包经营合同(含客房、餐饮及商务洽谈空间)3篇
- 2025四川省安全员知识题库
- 2025山西建筑安全员知识题库附答案
- 二零二五年度信息技术合伙经营退伙协议书3篇
- 2024年抵押房屋权属转移与登记协议3篇
- 2025年度物业管理补充协议2篇
- AutoCAD快速入门资料
- 新高考背景下2025年高考思想政治一轮复习策略讲座
- 初中音乐欣赏课型互动教学策略的构建及实践
- 2020-2021学年北京市西城区七年级(上)期末数学试卷(附答案详解)
- DB13-T 5821-2023 预拌流态固化土回填技术规程
- 《新媒体运营》高职新媒体运营全套教学课件
- 第四单元“家乡文化生活”系列教学设计 统编版高中语文必修上册
- 2024年兰州大学专业课《金融学》科目期末试卷B(有答案)
- 初中物理宝典
- 工业园区临时管理公约
- GB/T 26527-2024有机硅消泡剂
评论
0/150
提交评论