图书馆管理系统详细有图片的插入.doc
《图书馆管理系统详细有图片的插入.doc》由会员分享,可在线阅读,更多相关《图书馆管理系统详细有图片的插入.doc(39页珍藏版)》请在冰豆网上搜索。
北京联合大学
实验(实习、实训)报告
课程(项目)名称:
图书馆管理系统
学院:
特殊教育学院专业:
计算机应用技术
班级:
09年级学号:
2009061243109
姓名:
许华杰成绩:
2011年12月29日
图书馆管理系统
——09计应许华杰
系统资料室的藏书量较小,一般从几千册到几万册不等,读者人数也较少,大多数单位都没有购买了昂贵的大型管理软件,往往又很难充分应用其所有功能,从而造成经济与资源上的浪费。
因此,我利用VFP数据库管理系统软件设计一套适合资料的图书馆管理系统。
一、需求分析
需求分析是数据库设计的第一步,是整个设计的基础,准确了了解和分析用户的需求,用户包括图书管理员及读者,想要设计出功能强大的图书馆管理系统。
二、概念结构设计阶段
概念结构设计就是现实世界具体数据的首次抽象,是对用户的需求和功能的要求来完成的,因此,我采用了Xmind软件来建立图书馆管理系统概念模型的E-R图——联系模型
补,模块结构:
三、逻辑结构设计阶段
将概念结构转化为DBMS(数据库管理系统)支持的数据模型,概念结构模型可转换网状模型,层次模型,关系模型。
目前,数据库系统普通采用关系模型。
将概念设计阶段得到的概念模型转换成关系模型,如表1,2,3所示:
表1,读者信息
姓名
读者证号
借书状态
当前借量
失效日期
表2,借阅信息
读者证号
书号
还书日期
表3,图书信息
书号
书名
作者
出版社
出版日期
价格
注销
四、数据库物理设计阶段
一)、表与数据库的具体设计
1、表的设计
读者信息表:
读者信息:
索引:
读者证号——主索引
表4,读者信息表
借阅信息表:
借阅信息:
索引:
书号——普通索引;读者证号——普通索引
表5,借阅信息表
图书信息表:
图书信息:
索引:
书号——主索引
表6,图书信息
④用户表:
2、数据库的设计
建立“图书馆管理系统数据库”,添加表,并建立表间的关联,如图:
3、目录设计
建立“图书馆管理系统”文件夹,在文件夹内建立form、database、images、report、menu、bak子文件夹,分别用于存放表单、数据库和表、图像、报表、菜单、备份文件。
4、读者信息管理设计
读者查询
表单的init事件:
thisform.Label1.visible=.f.
thisform.text1.visible=.f.
thisform.text1.setfocus()
mand1.visible=.f.
thisform.grid1.readonly=.t.
选项按钮组(optiongroup1)的click事件:
docase
casethis.value=1
thisform.text1.visible=.t.
thisform.label1.visible=.t.
mand1.visible=.t.
thisform.label1.caption="请输入按读者证号查询:
"
thisform.text1.value=""
thisform.text1.setfocus()
casethis.value=2
thisform.text1.visible=.t.
thisform.label1.visible=.t.
mand1.visible=.t.
thisform.label1.caption="请输入按姓名查询:
"
casethis.value=3
thisform.text1.visible=.f.
thisform.label1.visible=.f.
mand1.visible=.f.
setfilterto
gotop
thisform.grid1.refresh
Endcase
“查看”按钮(command1)的click事件:
docase
casethisform.optiongroup1.value=1
setfilterto读者证号=alltrim(thisform.text1.value)
casethisform.optiongroup1.value=2
setfilterto姓名=alltrim(thisform.text1.value)
endcase
thisform.grid1.refresh
“查询打印”按钮(command3)的click事件:
reportformreport\读者信息.frxpreview
设计“读者信息”报表,样式如图下:
“退出”按钮(command2)的click事件:
thisform.release。
读者信息编辑
功能要求:
图书管理员向系统数据库中录入读者信息,删除或修改读者信息。
表单界面如图下:
Form1的init事件:
thisform.text1.value=读者信息.读者证号
thisform.text2.value=读者信息.姓名
thisform.text3.value=读者信息.借书状态
thisform.text4.value=读者信息.当前借量
thisform.text5.value=读者信息.失效日期
第一个按钮组包括第一个,上一个,下一个,最后一个,它们的代码和“用户管理”的代码是一样。
第二个按钮组里有四个,分别是添加,修改,删除,退出。
“添加”按钮(command1)的click事件:
ifalltrim(mand1.caption)='添加'
mand1.caption='保存'
mand2.caption='取消'
mand3.enabled=.f.
mand1.enabled=.t.
mand2.enabled=.t.
store''tothisform.text1.value,thisform.text2.value,thisform.text3.value,thisform.text4.value,thisform.text5.value
thisform.text1.setfocus
else
mand1.caption='添加'
mand2.caption='修改'
mand3.enabled=.t.
a1=alltrim(thisform.text1.value)
a2=alltrim(thisform.text2.value)
a3=alltrim(thisform.text3.value)
a4=alltrim(thisform.text4.value)
a5=alltrim(thisform.text5.value)
select*from读者信息where读者证号==a1orderby读者证号intocursortt1
ifreccount()=0
insertinto读者信息values(a1,a2,a3,a4,a5)
messagebox('数据保存完毕!
',48,'操作成功!
')
else
nAnswer=messagebox('信息已修改,确定要保存吗?
',4+32,"重要提示")
docase
casenAnswer=6
update读者信息set读者证号=a1,姓名=a2,借书状态=a3,当前借量=a4,失效日期=a5where读者证号==a1
messagebox('数据保存完毕!
',48,'操作成功!
')
endcase
endif
select读者信息
thisform.init
endif
“修改”按钮的代码和“用户管理”的代码一样
ifalltrim(mand2.caption)='修改'
mand1.caption='保存'
mand2.caption='取消'
mand3.enabled=.f.
thisform.text1.setfocus
else
mand1.caption='添加'
mand2.caption='修改'
mand3.enabled=.t.
thisform.init
endif
“删除”按钮(command3)的click事件:
j1=recno()
a1=alltrim(thisform.text1.value)
nAnswer=messagebox('确定要删除吗?
',4+32,"重要提示")
ifnAnswer=6
deletefrom读者信息where读者证号==a1
usedatabase\读者信息exclusive
pack
ifj1<=reccount()
goj1
else
gobottom
endif
thisform.init
messagebox('删除完毕',48,'操作成功!
')
thisform.refresh
endif
“退出”按钮(command4)的click事件:
thisform.release。
读者统计
功能要求:
根据按选择的统计类别,对读者信息进行分类统计。
如图下:
此图片里有一个选项按钮组(optiongroup1)里有两个按钮,分别是借书状态和全部显示。
按钮组里的”借书状态“按钮(option1)的click事件:
thisform.grid1.recordsourcetype=4
thisform.grid1.recordsource