图书馆图书信息管理系统程序设计文档_第1页
图书馆图书信息管理系统程序设计文档_第2页
图书馆图书信息管理系统程序设计文档_第3页
图书馆图书信息管理系统程序设计文档_第4页
图书馆图书信息管理系统程序设计文档_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、 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.

2、5.9 读者管理窗体设计 .27.5.10 借阅管理窗体设计 .31.5.11 规章制度窗体设计 .36.5.12 图书馆背景窗体设计 .37.6.本系统各个功能的运行 .37.7.总体设计方案的分析 .38.8.出现的问题及解决方法 .38.9.小结 .39.一、 概述: 本系统是介绍一个用delphi为开发工具基于ADO的图书馆图书管理系统。图书管理系是以数据库为支撑的应用程序,提出了权限管理模块的具体实现方法,并完成了相关模块设计。其功能包括用户管理、图书或读者或借阅查询、图书或读者管理以及图书借还等。本系统使用Access数据库存储图书管理的基本信息。二:需求分析:l 主要功能本图书管

3、理系统主要是实现对图书信息的查询和管理,其功能为: 操作系统:分为四个部分:.登录:根据不同的用户的权限不同,可进行不同的操作;.用户管理:增加和删除系统用户,并制定用户的权限;.修改密码:可修改当前用户自己的密码;.退出系统:退出程序,关闭窗口。信息查询:分为三个部分查询:.图书查询:可根据书号、书名、出版社、作者分别来查询图书的基本信息,也可模糊查询来查询图书的全部基本信息;.读者查询:可根据书号借书证号、姓名来查询读者的基本信息,也可根据模糊查询来查询读者的全部基本信息;.借阅查询:可根据借书证号来查询图书被借阅的基本信息,也可根据模糊查询来查询图书借阅的全部基本信息。图书管理:分为三个

4、部分管理:.图书管理:a.新书入库:添加新的书籍; b.浏览图书:可根据书号来浏览图书 .读者管理:添加、修改、删除读者信息,刷新可查看读者的信息; . 图书借还:实现图书的借出和归还的管理。关于图书馆:a. 图书馆制度:实现对图书馆规章制作的查看;b.图书馆背景:实现对本图书馆了解。 在本系统中,主要采用“用户登录”来进行子系统的切换,使不同权限的用户能在对应的子系统下正常操作。三系统功能模块分析图:操作系统信息查询管理信息关于图书馆登录系统用户系统修改密码退出系统图书管理读者管理借阅管理图书查询读者查询借阅查询图书馆制度图书馆背景图书馆图书信息管理四、数据库设计:名称:图书信息表; 表名称

5、标识:book;表结构示意图如下所示: 用户信息表数据图如下所示:名称:读者信息表; 表名称标识:reader; 表结构示意图如下所示: 读者信息表数据如下: 名称:借阅图书信息表; 表名称标识:lend; 表结构如下所示: 借阅图书信息表数据如下所示:名称:用户信息表; 表名称标识:usera; 表结构图如下所示: 用户名称信息表数据如下所示:五、系统模块设计:主窗体的创建 主窗体的名字:mainform,对应的单元文件为:main.pas,在窗体中添加一个mainmenu组件,一个statusbar组件,一个image组件,程序界面如下图所示: 程序主要代码: var Mainform:

6、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:=fals

7、e; 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.Button2

8、Click(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(Send

9、er: 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(S

10、ender: 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.N4

11、Click(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;procedu

12、re 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

13、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

14、;数据模块设计窗体: 建立一个数据模块(data module)来存放ADO组件对象,便于窗体统一使用ADO组件来访问数据库,命名为:DataModuleADO,在窗体中添加一个ADOConnection组件,三个ADOQuery组件,两个ADOTable组件,一个DataSource组件。程序界面如下图所示: 程序主要代码如下: procedure TDataModuleADO.DataModuleCreate(Sender: TObject);begin adoconnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.

15、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=F

16、alse' 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

17、 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(&#

18、39;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.Edit

19、1.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.en

20、abled:=false;bled:=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.enab

21、led:=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组件,一个m

22、ainmenu组件,界面如下所示: 程序主要的代码如下: 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

23、; 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

24、 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; S

25、QL.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);beg

26、in 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 * fro

27、m usera where (yhm='''+vyhm+''')' with dataModuleADO.ADOQuery1 do begin close; sql.Clear ; SQL.Add(sqlstr); open; end; if dataModuleADO.ADOQuery1.RecordCount>0 then begin ShowMessage('该用户已经存在,请选择“删除用户”!'); exit; end; if ComboBox1.Text='管理员' then vqx:=&#

28、39;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(&#

29、39;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; vyh

30、m:=mainForm.dlname; sqlstr:='select * from usera where (yhm='''+vyhm+''')' with dataModuleADO.ADOQuery1 do begin close; sql.Clear ; SQL.Add(sqlstr); open; if recordcount>0 then begin vymm:=FieldByName('mm').AsString; if vymm<>Edit1.Text then begin Sho

31、wMessage('原密码不正确!'); exit; end else begin if Edit2.Text<>Edit3.Text then begin ShowMessage('新密码与确认密码不一致!'); exit; end else begin sqlstr:='update usera set mm='''+vxmm+'''where (yhm='''+vyhm+''')' Close; SQL.Clear; SQL.Add(

32、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组件对象中建立三个页面

33、,还有一个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 :=

34、'' 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.RadioBut

35、ton4Click(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(ke

36、y)=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+'%' sq

37、l.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,

38、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

39、').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 /将查

40、询到的结果加入到列表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

41、.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;.读者基本信息查询页面:在窗体中添加一个GroupB

42、ox组件,一个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 chec

43、kbox2.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 radiobut

44、ton6.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

45、').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 :='共'+inttost

46、r(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组件,一个ra

47、diobutton组件,一个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:='%'

48、;+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')

49、.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('女') els

50、e 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

51、').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; end; except messagedlg('查询失败',mterror,mbok,0);

52、 end;end;图书管理窗体设计: 窗体的名字为:bookform,对应的单元文件为:book.pas。信息查询窗体包新书入库和图书管理两个功能。在窗体中添加一个tPageControl组件,在t PageControl组件对象中建立两个页面, .新书入库设计:在窗体中添加七个statictext组件,六个DBedit组件,一个DBmemo组件,两个button组件。程序界面如下: 程序的主要代码: procedure Tbookform.TabSheet1Show(Sender: TObject);begin TabSheet2.Caption:='图书浏览' codeedit.Se

温馨提示

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

评论

0/150

提交评论