资源描述
vfp综合设计实例__图书管理系统
———————————————————————————————— 作者:
———————————————————————————————— 日期:
13
个人收集整理 勿做商业用途
图书管理系统实例
一、 系统简介
1、本图书管理系统,包含了对图书、作者、读者等基本信息的管理,也包含了借书信息,还书信息等的查询,和管理。本系统具有如下功能:能够修改、输入、查询、与图书有关的信息,如图书信息、读者信息、作者信息、图书借阅信息等:能打印图书信息,图书借阅信息等。
2、本系统的总体设计树状图
系统登录
图书管理
信息录入
读者服务
信息维护
信息查询
报表打印
图书登记
读者登记
作者登记
借书登记
换书登记
读者
借书
图书借阅
读者借阅
图书
读者清单
图书
作者
读者密码
作者图书
二、 具体操作步骤
1、创建项目,名为图书管理系统
2、数据库设计
(1)在项目中新建五个自由表,各自由表的字段值如下:
表名
字段一
字段二
字段三
字段四
字段五
字段六
字段七
图书
书号
作者编号
书名
价格
数量
出版社
借阅次数
作者
作者编号
作者姓名
职称
联系电话
备注
照片
读者
读者编号
读者姓名
性别
籍贯
联系电话
出生日期
照片
借阅
读者编号
读者姓名
书号
借书日期
还书日期
用户
读者编号
用户名
密码
(2)在项目中创建一个数据库,并把五个表添加到数据库中。在图书表中,为书号建立主索引,为作者编号建立普通索引,通过该索引和作者表之间创建关联。在作者表中,为作者编号设置主索引。在读者表中,读者编号为主索引.在借阅表中,为读者编号、书号字段创建普通索引,通过书号和图书表之间关联;通过读者编号和读者表之间关联。在用户表中,为读者编号建立索引,通过读者编号和读者表建立关联。最终形成如下图所示的数据库。
3、界面设计
(1)系统启动表单
在项目中创建一个表单,命名为启动.如下图,添加一个标签控件,两个命令按钮,按照自己的喜好分别设置他们的属性。在登录按钮的Click事件下写入如下代码:
ThisForm.Release
Do form 身份验证
双击退出按钮,并在它的Click事件写下如下代码:
Clear event
(2)创建身份验证表单
在项目中创建,一个表单,保存为“身份验证"并按以下图添加控件,设置属性.
打开他的数据工作环境,把“用户”表添加到其中,在进入的click事件写入如下代码:
locate for 用户名=thisform.Combo1。value
if alltrim(thisform。Text1。value)〈〉alltrim(密码)
messagebox("读不起,密码有误!你不能进入本系统",0,"请注意:”)
else
thisform.release
do form 主表单
endif
在退出的click事件下写如下代码:
thisform.release
clear event
(3)创建住表单
创建一个表单保存为“主表单”并且设置它的ShowWindows属性为“2—-作为顶层表单”
如图设置它的其他控件属性.
设置Form1对象的init 事件代码为:
do 主菜单。mpr with this,”menux"
设置form1对象的destroy事件代码为
release menu menux extended
设置form1对象的activate事件代码为
thisform。Label1。left=(thisform.width-thisform。Label1。width)/2
thisform.Label2。left=(thisform.width—thisform。Label2。width)/2
thisform.Label3.left=(thisform.width—thisform。Label3。width)/2
thisform.Label1。top=thisform。height/6
thisform。Label2。top=thisform。height*2/6
thisform。Label3。top=thisform.height*3/6
thisform.refresh
设置form1对象的Resize事件代码为:
thisform。Label1.left=(thisform.width—thisform。Label1.width)/2
thisform。Label2。left=(thisform.width-thisform.Label2。width)/2
thisform。Label3.left=(thisform.width-thisform.Label3.width)/2
thisform.Label1.top=thisform。height/6
thisform.Label2.top=thisform。height*2/6
thisform。Label3。top=thisform.height*3/6
thisform。refresh
(4)创建主菜单
如下图创建主菜单表单,并且选择“显示”“常规选项"“顶层表单”
分别设置各个子菜单如下:
信息录入
读者服务
信息维护
信息查询
报表打印
然后分别在各自的过程中写入相应的调用表单的命令。例如在读者登记菜单的过程中写入:
Do form 读者信息
(5)创建主程序文件
创建主程序文件,将其保存为“主程序”在代码编辑窗口中,输入以下代码:
clear all
set talk off
set default to c:\综合设计
do form 启动
modify windows screen title "图书管理系统”
read event
quit
4、表单设计
(1)图书登记表单
如下图,创建一个名为图书登记的表单,在他的数据环境中添加表作者和图书.然后拖动相应的字段到表单中,按如图所示的位置放好.
添加一个按钮组如图。设置按钮组的 Click事件的代码为:
do case
case this.value=1
go top
case this.value=2
if not bof()
skip—1
endif
case this.value=3
skip
if eof()
skip-1
endif
case this.value=4
go bottom
case this。value=5
sure=messagebox(”需要增加图书信息吗?”,4+32+256,"确认")
if sure=6
append blank
endif
case this。value=6
sure=messagebox("需要删除当前图书信息吗?”,4+32+256,”确认")
if sure=6
delete
pack
endif
case this.value= 7
thisform. release
endcase
thisform.refresh
(2)借书登记表单
如图新建一个表单,在他的数据环境中添加,图书表和借阅表,把相应的字段拖入表单中。按如图所示的位置放好
如图添加一个命令按钮组并在他的 click事件中写入如下代码:
do case
case this.value=1
go top
case this.value=2
if not bof()
skip—1
endif
case this。value=3
skip
if eof()
skip—1
endif
case this.value=4
go bottom
case this。value=5
sure=messagebox(”需要增加借书信息吗?”,4+32+256,”确认”)
if sure=6
append blank
endif
case this.value=6
sure=messagebox("需要删除当前借书信息吗?",4+32+256,"确认”)
if sure=6
delete
pack
endif
case this.value= 7
thisform。 release
endcase
thisform.refresh
设置文本框“txt书号”的lostfocus事件代码为:
select 图书
locate for alltrim(书号)=alltrim(thisform。txt书号。text)
if found()
thisform.txt书名。refresh
else
messagebox("书库里无此书,请重输!”,256,"确认”)
thisform。txt书号。setfocus
endif
thisform。refresh
(3)读者信息维护表单
创建一个表单,在其数据环境设计器中添加读者表,在表单上添加一个表格对象,一个命令按钮组对象,如图设置他们的属性.
设置按钮的Click事件代码为:
do case
case this。value=1
sure=messagebox("需要添加读者信息吗?”,4+32+256,"确认”)
if sure=6
append blank
endif
case this。value=2
sure=messagebox("确定要删除当前读者信息吗?",4+32+256,”确认”)
if sure=6
delete
endif
case this.value=3
thisform。release
endcase
thisform.Grid1。refresh
thisform。refresh
(4)读者借书信息查询表单
创建一个表单,如下图设置各个控件的属性。
在他的数据环境中添加,读者表和借阅表。在他的查询按钮的click事件下输入如下代码:
set exact on
thisform.Grid1。recordsource=”select读者编号,读者姓名,书号,借书日期,还书日期,from 借阅 where alltrim(读者编号)==alltrim(bo1.value)"
set exact off
5、连编程序
展开阅读全文