案例3 图书管理系统Word下载.docx
《案例3 图书管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《案例3 图书管理系统Word下载.docx(91页珍藏版)》请在冰豆网上搜索。
5.3.2开发与运行环境
本例的高校图书管理系统开发与运行环境如下:
开发环境:
WindowsXP
开发工具:
Delphi8
数据库管理系统:
SQLServer2000
运行环境:
Windows98/ME/2000/XP
5.4系统设计
5.4.1系统模块设计
根据系统功能分析和高校图书管理的特点,经过模块化的分析得到如图5-2所示的系统功能模块结构图。
图5-2系统功能模块图
5.4.2数据库设计
1.数据字典
根据系统功能模块结构图和高校图书管理流程,以及典型高校图书管理系统的需求,总结出如下的数据字典:
●系统用户数据:
图书馆内部人员使用图书管理系统的身份数据,包含的数据项有用户编号、登录口令、权限代码。
●读者类别数据:
借阅图书读者的类别数据,包含的数据项有读者类别编号、类别名称、借书数量、借书期限、有效期限。
●读者个人数据:
读者个人与图书借阅有关的身份数据,包含的数据项有借阅证编号、读者类别编号、姓名、部门名称、办证时间。
●图书书目数据:
用于图书编目使用的书目数据,包含的数据项有索书号、图书条码、书名、作者、出版社、出版日期、字数、页数、内容简介、关键词。
●新书书目数据:
图书编目产生的书目数据,包含的数据项与图书书目数据相同。
●馆藏书目数据:
新书书目经典藏之后形成馆藏图书书目数据,包含的数据项有索书号、图书条码、书名、作者、出版社、出版日期、字数、页数、内容简介、关键词、入馆日期、复本数、可借数、库室名。
●图书征订数据:
征订图书的相关数据,包含的数据项有书名、作者、出版社、出版日期、数量、征订日期。
●图书借阅数据:
包含的数据项有图书条码、借阅证编号、借阅日期、还书日期、图书所在库室编号。
●操作日志数据:
包含的数据项有用户名、操作时间、操作动作。
2.数据库结构设计
根据系统需求,分析出实体-关系图,如图5-3所示。
图5-3实体-关系图
根据实体-关系图和数据字典,设计出高校图书管理系统数据库中的各个数据表。
根据用户使用要求得到系统用户数据表,根据读者实体得到读者个人数据表,根据数据字典对读者的要求得到读者类别数据表,根据图书实体得到图书书目数据表,根据新书实体得到新书书目数据表,根据馆藏图书实体得到馆藏书目数据表,根据征订关系得到图书征订数据表,根据借阅关系得到图书借阅数据表,根据系统要求记录操作日志得到操作日志数据表。
数据表名称与结构如下:
系统用户数据表:
表名“t_user”,结构见表5-1。
表5-1t_user表结构
字段名
类型
大小
索引
说明
Bh
Char
5
是
编号
Passwd
6
密码
Limit
Tinyint
权限
读者个人数据表:
表名“t_dzb”,结构见表5-2。
表5-2t_dzb表结构
Zh
证号
Lxdm
类型代码
Xm
20
姓名
Bm
部门
Rq
Datetime
日期
读者类别数据表:
表名“t_lxdm”,结构见表5-3。
表5-3t_lxdm表结构
Lxmc
10
类型名称
Jsl
借书量
Jsq
借书期
Yxq
有效期
图书书目数据表:
表名“t_tsb”,结构见表5-4。
表5-4t_tsb表结构
Id
Bigint
自动增长
Tm
7
条码
Syh
Varchar
30
索引号
Sm
60
书名
Zz
作者
Cbs
出版社
Cbrq
出版日期
Zs
Int
字数
Ys
页数
Nrjj
200
内容简介
Gjz
100
关键字
新书书目数据表:
表名“t_xsb”,结构同上。
馆藏书目数据表:
表名“t_csb”,结构见表5-5。
表5-5t_csb表结构
Rgrq
入馆日期
Jbs
Smallint
基本数
Kjs
可借数
Ksm
库室名
图书征订数据表:
表名“t_dgb”,结构见表5-6。
表5-6t_dgb表结构
Sl
数量
Dgrq
定购日期
图书借阅数据表:
表名“t_jyb”,结构见表5-7。
表5-7t_jyb表结构
Jsrq
借书日期
Hsrq
还书日期
Yh
已还
Kh
库号
操作日志数据表:
表名“t_log”,结构见表5-8。
表5-8t_log表结构
Name
用户名
Czsj
操作时间
Czlog
操作动作
5.5系统实现
5.5.1建立数据库
本例数据库使用SQLServer2000,数据库名为TSGL。
在SQLServer2000数据库服务器上建立数据库以及各数据表的过程,在这里不作介绍,有关内容参阅SQLServer相关书籍。
5.5.2建立连接
本例使用ODBC数据源连接数据库,数据源名为mybase。
建立过程可参阅第四章内容。
5.5.3程序设计
1.主窗体
主窗体保存为main.pas。
主窗体界面如图5-4所示,包含一个Database组件、一个MainMenu组件和一个StatusBar组件。
图5-4主窗体
窗体主要组件属性设置见表5-9。
表5-9主窗体组件属性设置
组件
属性值
Form1
Name='
MainForm'
FormStyle=fsMDIFormCaption='
高校图书管理系统'
MainMenu1
Database1
DatabaseName=mybaseLoginPrompt=False
StatusBar1
其中Database1的Params属性添加两项USERNAME和PASSWORD分别设置为SQLServer的登录用户名和密码。
主窗体中定义全局变量dlname,用于保存登录的用户名。
编写一个过程addlog完成日志记录,和一个函数getnettime用来取得服务器时间,保证系统时间的一致性。
过程和函数的代码如下:
//取得服务器时间函数
functionTMainForm.getnettime:
string;
begin
withTQuery.Create(nil)do
begin
try
Close;
SessionName:
=MainForm.Database1.SessionName;
DatabaseName:
=MainForm.Database1.DatabaseName;
SQL.Clear;
SQL.Add('
selectgetdate()asaa'
);
Open;
result:
=FieldByName('
aa'
).AsString;
finally
Free;
end;
end;
//日志记录过程
procedureTMainForm.addlog(varname,czsj,czlog:
string);
varsqlstr:
//生成将参数传递的信息写入日志数据表的SQL语句
sqlstr:
='
insertintot_log(name,czsj,czlog)values('
'
+name+'
'
+czsj+'
+czlog+'
)'
;
SQL.Add(sqlstr);
ExecSQL;
2.用户登录窗体
用户登录功能是在启动系统后,要求用户登录,只有输入合法的用户名和密码,系统才分配具体的功能模块。
用户登录窗体保存为login.pas。
界面如图5-5所示,包含一个Panel组件、两个Label组件、两个Edit组件和两个Button组件。
图5-5用户登录窗体
主要组件属性设置见表5-10。
表5-10用户登录窗体主要组件属性
Form2
FormStyle=fsMDIChildBorderStyle=bsSingleBorderIcons=[biSystemMenu]
Name=LoginFormCaption='
用户登录窗口'
Panel1
Caption='
BevelOuter=bvLowered
Label1(Panel1)
用户名'
Label2(Panel1)
密码'
Edit1(Panel1)
Text='
Name=Name_Edit
Edit2(Panel1)
PasswordChar=*Text='
Name=Password_Edit
Button1
确定'
Button2
取消'
主要代码如下:
usesmain;
//确定按钮单击事件
procedureTLoginForm.Button1Click(Sender:
TObject);
var
aname,apassword,sqlstr:
a,b:
integer;
//有输入时,从数据库中检验用户信息
if(Length(Trim(Name_Edit.Text))>
0)or(Length(Trim(Password_Edit.Text))>
0)then
aname:
=Trim(Name_Edit.Text);
apassword:
=Trim(Password_Edit.Text);
select*fromt_usera,t_qxbbwhere(a.name='
+aname+'
)and
(a.passwd='
+apassword+'
)and(a.name=b.name)orderbyb.cdx'
ifRecordCount>
0then
//验证通过,根据权限设置菜单项的可访问性
First;
whilenotEofdo
a:
=StrToInt(Copy(FieldByName('
cdx'
).AsString,1,1));
b:
).AsString,2,2));
MainForm.MainMenu1.Items.Items[a].Visible:
=True;
MainForm.MainMenu1.Items.Items[a].Items[b].Visible:
Next;
//关闭登录窗口
LoginForm.Close;
//主窗体状态栏显示登录用户名
MainForm.StatusBar1.Panels[0].Text:
=aname;
MainForm.dlname:
end
else
//验证不通过,提示错误信息
ShowMessage('
请确认登录的用户名和密码是否正确!
Name_Edit.SetFocus;
Name_Edit.SelectAll;
//无输入,提示错误信息
请输入登录用户名和密码!
3.用户管理窗体设计
用户管理需要根据不同的用户类型,分配不同的权限,便于系统的维护。
主要功能包括用户数据(包括编号、密码和权限)的添加、删除和浏览等操作。
高级管理员可以管理系统中所以的用户数据,而普通用户则只能修改自己的密码。
图5-6用户管理窗体设计
用户管理窗体保存为usergl.pas,界面设计如图5-6所示,包含一个PopupMenu组件、一个Query组件、一个DataSource组件和一个DBGrid组件。
窗体的主要组件属性设置见表5-11。
表5-11用户管理窗体主要组件属性
Form3
FormStyle=fsMDIChildName=usergl_FormCaption='
用户管理'
PopupMenu1
MenuItem1Name=N11Caption='
添加用户'
MenuItem2Name=N12Caption='
修改用户'
MenuItem3Name=N13Caption='
删除用户'
Query1
DataSource1
DataSet=Query1
DBGrid1
DataSource=DataSource1PopupMenu=PopupMenu1
用户管理窗体主要代码如下:
public
modi:
Boolean;
//用于标识添加/修改用户
xx:
//用于设置添加/修改用户窗体标题栏
procedureTusergl_Form.FormCreate(Sender:
Query1.SessionName:
Query1.DatabaseName:
=False;
//数据网格双击事件
procedureTusergl_Form.DBGrid1DblClick(Sender:
//相当于修改用户操作
N12.Click;
procedureTusergl_Form.FormShow(Sender:
select*fromt_userorderbyyhm'
Query1.SQL.Clear;
Query1.SQL.Add(sqlstr);
Query1.Open;
//根据数据查询结果,设置弹出菜单项的可访问性
ifQuery1.RecordCount>
N12.Enabled:
N13.Enabled:
//“添加用户”弹出菜单单击事件
procedureTusergl_Form.N11Click(Sender:
//设置标识
//打开添加/修改用户窗体
Application.CreateForm(Tmodiuser_Form,modiuser_Form);
modiuser_Form.ShowModal;
//“修改用户”弹出菜单单击事件
procedureTusergl_Form.N12Click(Sender:
//“删除用户”弹出菜单单击事件
procedureTusergl_Form.N13Click(Sender:
varname,id:
name:
=Query1.FieldByName('
name'
//弹出确认删除对话框
ifMessageDlg('
确认要删除选中的记录码?
mtConfirmation,[mbYes,mbNo],0)=mrYesthen
id:
id'
//删除用户表数据
deletefromt_userwhereid='
+id+'
//删除权限表数据