图书馆图书信息管理系统程序设计文档.docx
《图书馆图书信息管理系统程序设计文档.docx》由会员分享,可在线阅读,更多相关《图书馆图书信息管理系统程序设计文档.docx(53页珍藏版)》请在冰豆网上搜索。
![图书馆图书信息管理系统程序设计文档.docx](https://file1.bdocx.com/fileroot1/2023-1/10/75645aab-6a09-4aa9-900c-fc025fa6705f/75645aab-6a09-4aa9-900c-fc025fa6705f1.gif)
图书馆图书信息管理系统程序设计文档
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数据库存储图书管理的基本信息。
二:
需求分析:
●主要功能
本图书管理系统主要是实现对图书信息的查询和管理,其功能为:
1操作系统:
分为四个部分:
ⅰ.登录:
根据不同的用户的权限不同,可进行不同的操作;
ⅱ.用户管理:
增加和删除系统用户,并制定用户的权限;
ⅲ.修改密码:
可修改当前用户自己的密码;
ⅳ.退出系统:
退出程序,关闭窗口。
②信息查询:
分为三个部分查询:
ⅰ.图书查询:
可根据书号、书名、出版社、作者分别来查询图书的基本信息,也可模糊查询来查询图书的全部基本信息;
ⅱ.读者查询:
可根据书号借书证号、姓名来查询读者的基本信息,也可根据模糊查询来查询读者的全部基本信息;
ⅲ.借阅查询:
可根据借书证号来查询图书被借阅的基本信息,也可根据模糊查询来查询图书借阅的全部基本信息。
③图书管理:
分为三个部分管理:
ⅰ.图书管理:
a.新书入库:
添加新的书籍;
b.浏览图书:
可根据书号来浏览图书
ⅱ.读者管理:
添加、修改、删除读者信息,刷新可查看读者的信息;
ⅲ.图书借还:
实现图书的借出和归还的管理。
④关于图书馆:
a.图书馆制度:
实现对图书馆规章制作的查看;
b.图书馆背景:
实现对本图书馆了解。
在本系统中,主要采用“用户登录”来进行子系统的切换,使不同权限的用户能在对应的子系统下正常操作。
三.系统功能模块分析图:
四、数据库设计:
⑴.名称:
图书信息表;
表名称标识:
book;
表结构示意图如下所示:
用户信息表数据图如下所示:
⑵.名称:
读者信息表;
表名称标识:
reader;
表结构示意图如下所示:
读者信息表数据如下:
⑶.名称:
借阅图书信息表;
表名称标识:
lend;
表结构如下所示:
借阅图书信息表数据如下所示:
⑷.名称:
用户信息表;
表名称标识:
usera;
表结构图如下所示:
用户名称信息表数据如下所示:
五、系统模块设计:
⑴.主窗体的创建
主窗体的名字:
mainform,对应的单元文件为:
main.pas,在窗体中添加一个mainmenu组件,一个statusbar组件,一个image组件,程序界面如下图所示:
程序主要代码:
var
Mainform:
TMainform;
mypath:
string;
implementation
usesbook,reader,lend,infoquery,dl,xgmm,xgyh,about,gz;
{$R*.dfm}
procedureTMainform.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.panels[4].Text:
=datetostr(now);//显示现在时间
end;
procedureTMainform.Button1Click(Sender:
TObject);
begin
bookform.show;
end;
procedureTMainform.Button2Click(Sender:
TObject);
begin
readerform.show;
end;
procedureTMainform.Button3Click(Sender:
TObject);
begin
lendform.show;
end;
procedureTMainform.Button4Click(Sender:
TObject);
begin
close;
end;
procedureTMainform.Button5Click(Sender:
Tobject);
begin
queryform.show;
end;
procedureTMainform.Button6Click(Sender:
TObject);
begin
button5click(sender);
end;
procedureTMainform.Button7Click(Sender:
TObject);
begin
button5click(sender);
end;
procedureTMainform.Button8Click(Sender:
TObject);
begin
dl_form.show;
end;
procedureTMainform.Button11Click(Sender:
TObject);
begin
close;
end;
procedureTMainform.Button10Click(Sender:
TObject);
begin
xgmm_Form.show;
end;
procedureTMainform.Button9Click(Sender:
TObject);
begin
xgyh_Form.show;
end;
procedureTMainform.N2Click(Sender:
TObject);
begin
queryform.show;//显示图书查询
end;
procedureTMainform.N3Click(Sender:
TObject);
begin
button5click(sender);//显示图书管理系统
end;
procedureTMainform.N4Click(Sender:
TObject);
begin
button5click(sender);//显示借阅查询
end;
procedureTMainform.N6Click(Sender:
TObject);
begin
bookform.show;//显示图书管理
end;
procedureTMainform.N7Click(Sender:
TObject);
begin
readerform.show;//显示读者管理
end;
procedureTMainform.N8Click(Sender:
TObject);
begin
lendform.show;//显示借阅管理
end;
procedureTMainform.N10Click(Sender:
TObject);
begin
dl_form.show;//显示登录
end;
procedureTMainform.N11Click(Sender:
TObject);
begin
xgyh_Form.show;//显示用户管理
end;
procedureTMainform.N12Click(Sender:
TObject);
begin
xgmm_Form.show;//显示修改密码
end;
procedureTMainform.N13Click(Sender:
TObject);
begin
close;//退出系统
end;
procedureTMainform.Timer1Timer(Sender:
TObject);
begin
Mainform.statusbar1.panels[4].Text:
=FormatDateTime('yyyy年mm月dd日.',now())+timetostr(now);
end;
procedureTMainform.N16Click(Sender:
TObject);
begin
about_form.show;//显示图书馆背景
end;
procedureTMainform.N15Click(Sender:
TObject);
begin
gz_form.show;//显示图书馆规章制度
end;
⑵.数据模块设计窗体:
建立一个数据模块(datamodule)来存放ADO组件对象,便于窗体统一使用ADO组件来访问数据库,命名为:
DataModuleADO,在窗体中添加一个ADOConnection组件,三个ADOQuery组件,两个ADOTable组件,一个DataSource组件。
程序界面如下图所示:
程序主要代码如下:
procedureTDataModuleADO.DataModuleCreate(Sender:
TObject);
begin
adoconnection1.ConnectionString:
='Provider=Microsoft.Jet.OLEDB.4.0;UserID=admin;DataSource='
+mypath+'\data\bookmanage.mdb;PersistSecurityInfo=False';
adoquery1.Connection:
=adoconnection1;
adotable1.Connection:
=adoconnection1;
ADOQuery2.ConnectionString:
='Provider=Microsoft.Jet.OLEDB.4.0;DataSource=.\data\bookmanage.mdb;PersistSecurityInfo=False';
ADOQuery3.ConnectionString:
='Provider=Microsoft.Jet.OLEDB.4.0;DataSource=.\data\bookmanage.mdb;PersistSecurityInfo=False';
end;
⑶.登录窗体设计:
窗体的名字为:
dlform,对应的单元文件为:
dl.pas。
在窗体中添加两个label组件,两个edit组件,两个speedbutton组件。
程序的界面如下所示:
程序的主要代码如下:
procedureTdl_Form.Button1Click(Sender:
TObject);
begin
close;
end;
procedureTdl_Form.SpeedButton1Click(Sender:
TObject);
var
vqx:
string;
begin
withdataModuleADO.ADOQuery1do
begin
close;
sql.Clear;
SQL.Add('select*fromuserawhere(yhm=:
yhm1)and(mm=:
mm1)');
parameters.ParamByName('yhm1').Value:
=Edit1.text;
parameters.ParamByName('mm1').Value:
=Edit2.text;
open;
ifrecordcount=0then
begin
showmessage('用户名或密码错!
');
edit2.Text:
='';
end
else
begin
vqx:
=fieldbyname('qx').asstring;
Mainform.dlname:
=mainform.statusbar1.panels[0].text;
Mainform.statusbar1.panels[0].Text:
='登录用户:
'+trim(dl_form.Edit1.text);
mainform.n12.enabled:
=true;
ifvqx='1'then
begin
Mainform.statusbar1.panels[1].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.panels[1].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;
procedureTdl_Form.SpeedButton2Click(Sender:
TObject);
begin
close;
end;
⑷.用户密码窗体设计:
窗体的名字为:
xxgh_form,对应的单元文件为:
xxgh.pas。
在窗体中添加一个Dbgrid组件,一个datasource组件,一个mainmenu组件,界面如下所示:
程序主要的代码如下:
procedureTxgyh_Form.FormShow(Sender:
TObject);
var
sqlstr:
string;
begin
DataSource1.DataSet:
=dataModuleADO.ADOQuery1;
DBGrid1.DataSource:
=DataSource1;
sqlstr:
='selectyhmas用户名,mmas密码,qxas权限fromusera';
withdataModuleADO.ADOQuery1do
begin
close;
sql.Clear;
SQL.Add(sqlstr);
open;
end;
end;
procedureTxgyh_Form.N1Click(Sender:
TObject);
begin
xgyh_Form.Visible:
=false;
tjyh_Form.show;
end;
procedureTxgyh_Form.N2Click(Sender:
TObject);
var
vmsg,vyhm,sqlstr:
string;
begin
vyhm:
=dataModuleADO.ADOQuery1.FieldByName('用户名').AsString;
ifvyhm=mainForm.dlnamethen
begin
ShowMessage('不能删除当前用户!
');
exit;
end;
vmsg:
='确实要删除“'+vyhm+'”用户?
';
ifMessageDlg(vmsg,mtConfirmation,[mbYes,mbNo],0)=mrNothenexit;
sqlstr:
='deletefromuserawhere(yhm='''+vyhm+''')';
withdataModuleADO.ADOQuery1do
begin
Close;
SQL.Clear;
SQL.Add(sqlstr);
ExecSQL;
end;
xgyh_Form.FormShow(Sender);
end;
procedureTxgyh_Form.N3Click(Sender:
TObject);
begin
close;
end;
⑸.添加用户窗体设计:
窗体的名字为:
tjyh_form,对应的单元文件为tjyh.pas。
在窗体中添加三个label组件,两个edit组件,一个combobox组件,两个button组件,程序的界面如下:
程序的主要代码如下:
procedureTtjyh_Form.Button2Click(Sender:
TObject);
begin
xgyh_Form.Visible:
=true;
xgyh_Form.FormShow(Sender);
close;
end;
procedureTtjyh_Form.Button1Click(Sender:
TObject);
var
vmm,vyhm,vqx,sqlstr:
string;
begin
iftrim(Edit1.Text)=''then
begin
ShowMessage('用户名不能为空!
');
exit;
end;
vmm:
=Edit2.Text;
vyhm:
=Edit1.Text;
sqlstr:
='select*fromuserawhere(yhm='''+vyhm+''')';
withdataModuleADO.ADOQuery1do
begin
close;
sql.Clear;
SQL.Add(sqlstr);
open;
end;
ifdataModuleADO.ADOQuery1.RecordCount>0then
begin
ShowMessage('该用户已经存在,请选择“删除用户”!
');
exit;
end;
ifComboBox1.Text='管理员'then
vqx:
='1'
else
vqx:
='0';
sqlstr:
='insertintousera(yhm,mm,qx)values(:
yhm,:
mm,:
qx)';
withdataModuleADO.ADOQuery1do
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组件,程序界面如下:
⑺
程序的主要代码:
procedureTxgmm_Form.Button1Click(Sender:
TObject);
var
vymm,vxmm,vyhm,sqlstr:
string;
begin
vymm:
=Edit1.Text;
vxmm:
=Edit2.Text;
vyhm:
=mainForm.dlname;
sqlstr:
='select*fromuserawhere(yhm='''+vyhm+''')';
withdataModuleADO.ADOQuery1do
begin
close;
sql.Clear;
SQL.Add(sqlstr);
open;
ifrecordcount>0then
begin
vymm:
=FieldByName('mm').AsString;
ifvymm<>Edit1.Textthen
begin
ShowMessage('原密码不正确!
');
exit;
end
else
begin
ifEdit2.Text<>Edit3.Textthen
begin
ShowMessage('新密码与确认密码不一致!
');
exit;
end
else
begin
sqlstr:
='updateuserasetmm='''+vxmm+'''w