vf图书管理系统.docx
《vf图书管理系统.docx》由会员分享,可在线阅读,更多相关《vf图书管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
vf图书管理系统
陕西理工学院管理系
《数据库管理系统》
课程设计报告书
学号:
XXX
班级:
电子商务102班
姓名:
XXX
指导教师:
XX
时间:
XX
附件二课程设计评阅书
《数据库管理系统》课程设计评阅书
题目
小型图书室管理程序设计
设计目的
(1)综合运用所学的数据库知识编制一个具有一定功能的图书室管理程序。
(2)学会运用合适的工具进行系统分析与设计工作,并独立完成程序的编制,培养独立工作与研究的能力。
(3)学习课程设计报告书的撰写方法,使学生受到基本的科研素质训练。
设计要求
(1)对系统进行业务流程分析的数据流程分析,确定系统功能,划分功能模块,要求功能完整、准确。
(2)程序实现要求编程简练,可用,功能全面。
应包含图书登记入库、图书查询、图书借还、统计汇总除等基本功能。
(3)要求按照科技文格式撰写不少于3000字的课程设计说明书,并按时上交。
正文应包括以下几个方面的内容:
需求分析、概要设计、详细设计、测试分析报告、用户使用说明、测试结果、参考文献。
(4)设计结果
包括报告书1份(打印),其中附源程序(打印)。
教师评语及成绩
教师签名:
年月日
图书管理系统程序设计
作者:
王海斌
[摘要]利用一周时间,用VisualFoxpro6.0作为开发工具,结合所学的数据库理论知识,编制了一个简单的图书管理系统程序。
程序具有图书登记入库、图书查询、图书借还、统计汇总等基本功能。
[关键词]visualfoxpro:
;图书管理;程序
1设计任务
根据所学的数据库知识,运用VisualFoxpro6.0(以下简称VFP)作为开发工具,设计与实现一个简单的图书管理程序。
本次任务要求的程序尽管业务过程较简单,但功能要求全面,报告书格式要求严格,时间紧迫,因此工作量是充分的,难度也很大。
2设计目的
本次设计有两个目的:
一是加深对所学VFP知识的理解与掌握,提高熟练运用计算机的能力;二是掌握问题分析与解决方法,加强工程素质训练。
3需求分析
3.1系统功能分析
图书管理系统的主要任务是对图书馆管理员登陆,图书信息、读者信息、图书借阅归还信息的查询、统计并且能按一定要求输出报表。
3.2数据描述
三个实体:
图书基本信息与读者基本信息,管理员信息。
其中图书基本信息(图书编号,书名,出版社,库存量、借阅状态),读者基本信息(读者学号,班级,姓名,性别)。
由于读者信息限定,因此,可将图书数据与读者数据合为一个借书表。
该借书表的数据项包括:
借书表:
={读者学号,图书编号,书名}
由于图书与读者两个实体之间存在多对多关系,因此,从关系规范化理论角度看,两个实体之间需要通过一个表(即借书表)产生联系。
而不能将图书基本信息与读者基本信息放在一个表中,否则存在大量数据冗余。
所以,上面的设计,只是针对读者基本信息限定这一条件所做的简化处理。
3.3功能说明
3.3.1登陆系统
管理员登陆系统的唯一入口,便于系统的安全管理
3.3.2登记入库
能够让即将入库的图书及时登记在图书基本信息
3.3.3图书查询
可以根据图书书名,作者,出版社,库存量,图书编号查找图书馆是否有自己需要找的图书
3.3.4借还书记录
记录借出的和还的书进行图书登记
3.3.5读者信息查询
查询已借出去的书的读者的基本信息
3.3.6图书汇总
通过报表显示图书的基本信息、读者的基本信息、借书的基本信息
4设计与实现
4.1数据库设计
创建数据库是设计系统的第一步,其关键问题在于确定所需的表结构并为之建立索引。
为了使系统设计精练实用,体现关系型数据库的特点,本系统还为各相关表建立关系。
4.1.1数据项设计
通过需求分析,可确定系统的数据项和数据结构如下:
a.图书的基本信息(图书编号、书名、作者、出版社、库存量、借阅状态)
b.借书表信息(图书编号、书名、读者学号、借书日期)
c.读者的基本信息(读者学号、班级、姓名、性别)
d.管理员信息(用户名、密码)
4.1.2概念结构设计
本系统在需求分析的基础上设计出能够满足用户需求的各种实体。
根据上面的分析所得的实体有:
图书的基本信息实体(图书基本信息表)、所借图书的读者与图书信息实体(借书表)、读者的基本信息实体(读者基本信息表)。
各实体间的关系如图:
4.1.3逻辑结构设计
图书的基本信息表(图书基本信息表.dbf)
列名
数据类型
可否为空
图书编号
字符型(10)
否
书名
字符型(50)
否
作者
字符型(10)
否
出版社
数值型(50)
否
库存量
数值型(3)
否
借书状态
逻辑性
(1)
否
所借图书的读者与图书信息表(借书表.dbf)
列名
数据类型
可否为空
图书编号
字符型(10)
否
书名
字符型(50)
否
读者学号
字符型(10)
否
借书日期
字符型(10)
否
读者的基本信息表(读者基本信息.dbf)
列名
数据类型
可否为空
读者学号
字符型(10)
否
班级
字符型(6)
否
姓名
字符型(10)
否
性别
字符型(6)
否
管理员信息表(user1.dbf)
列名
数据类型
可否为空
用户名
字符型(10)
否
密码
字符型(10)
否
4.2界面设计与功能代码
具体说明如下:
4.2.1功能:
图书管理员登陆界面
表单名:
表单1
数据环境:
管理员信息表.dbf
图1 程序界面
command1的clickevent代码:
sele管理员信息表
locateforallt(thisform.text1.value)==allt(用户名)
iffound()
ifallt(thisform.text2.value)=allt(密码)
messagebox("登陆成功")
doform表单2
thisform.release
else
message("密码错误请重新输入")
thisform.text2.value=""
thisform.text2.setfocus
endif
else
message("用户名输入不正确")
Endif
command1的clickevent代码:
thisform.release
4.2.2功能:
图书管理系统界面
表单名:
表单2
图2程序界面
command1的clickevent代码:
doform表单3
command2的clickevent代码:
doform表单4
command3的clickevent代码:
doform表单5
command3的clickevent代码:
doform表单6
Command4的clickevent代码:
Doform表单7
Command5的clickevent代码:
thisform.release
4.2.3功能:
图书登记入库界面
表单名:
表单3
数据环境:
图书基本信息表表.dbf
登记入库后:
图3 程序界面
Command1的clickevent代码:
a=allt(thisform.Text1.value)
b=allt(thisform.text2.value)
c=allt(thisform.Text3.value)
d=allt(thisform.text4.value)
f=val(thisform.text5.value)
ifselect("图书基本信息表")=0
messagebox("数据表图书基本信息表不存在,请检查后再试")
else
locateforallt(thisform.Text1.value)==allt(图书编号)
iffound()
messagebox("操作失败,此用户名已经存在!
",0+64,"错误")
else
messagebox("操作成功")
insertinto图书基本信息表(图书编号,书名,作者,出版社,库存量)value(a,b,c,d,f)
thisform.refresh
thisform.init
endif
Endif
Command2的clickevent代码:
Thisform.release
4.2.4功能:
读者借还书界面
表单名:
表单4
数据环境:
图书基本信息表.dbf、读者基本信息表.dbf、借书表.dbf
图5 程序界面
Form1的init代码:
thisform.pageframe1.page1.Combo2.rowsourceType=0
sele图书基本信息表
gotop
dowhile.not.eof()
if借阅状态==.F.
t4=allt(图书编号)
thisform.pageframe1.page1.Combo2.additem(t4)
endif
skip
enddo
thisform.pageframe1.page2.Combo2.rowsourceType=0
sele图书基本信息表
gotop
dowhile.not.eof()
if借阅状态==.T.
t3=allt(图书编号)
thisform.pageframe1.page2.Combo2.additem(t3)
endif
skip
enddo
Command1的clickevent代码:
t1=allt(thisform.pageframe1.page1.Combo1.value)
t2=allt(thisform.pageframe1.page1.Combo2.value)
s1=.T.
sele图书基本信息表
locatefort2=allt(图书编号)
iffound()
s2=allt(书名)
endif
sele借书表
locateforallt(书名)=s2
iffound()
aa=1
else
aa=2
endif
Command2的clickevent代码:
thisform.release
Combo2的Lostfocusevent代码:
sele图书基本信息表
locateforallt(thisform.pageframe1.page1.Combo2.value)=allt(isbn)
iffound()
thisform.pageframe1.page1.text3.value=书名
else
thisform.pageframe1.page1.text3.value="未找到"
endif
thisform.pageframe1.page1.text3.setfocus
Combo1的lostfocusevent代码:
thisform.refresh
thisform.init
Command1的clickevent代码:
x1=allt(thisform.pageframe1.page2.Combo1.value)
x2=allt(thisform.pageframe1.page2.Combo2.value)
y1=.F.
sele图书基本信息表
locateforx2=allt(图书编号)
iffound()
t4=allt(书名)
endif
ifallt(thisform.pageframe1.page2.text3.value)=="未找到"
Messagebox("未找到此书",0,"提示")
thisform.pageframe1.page2.Combo2.setfocus
else
sele借书表
gotop
locateforallt(read编号)=x1andallt(书名)=t4
iffound()
messagebox("归还成功",0+48,"提示")
dele
pack
sele图书基本信息表
replace借阅状态withy1forx2=allt(isbn)
else
messagebox("此人未借此书",0+48,"提示")
endif
endif
Command2的clickevent代码:
thisform.release
Combo1的lostfocusevent代码:
thisform.refresh
thisform.init
Combo2的lostfocusevent代码:
sele图书基本信息表
locateforallt(thisform.pageframe1.page2.Combo2.value)=allt(图书编号)
iffound()
thisform.pageframe1.page2.text3.value=书名
else
thisform.pageframe1.page2.text3.value="未找到"
endif
thisform.pageframe1.page2.text3.setfocus
4.2.5功能:
读者信息查询界面
表单名:
表单5
数据环境:
读者基本信息表.dbf、借书表.dbf
图6 程序界面
Command1的clickevent代码:
ifselect("读者基本信息表")=0
messagebox("数据表图书基本信息表不存在")
else
selec借书表
gotop
q2=""
dowhile.not.eof()
ifallt(读者学号)==allt(thisform.Combo1.value)
q2=q2+allt(书名)
endif
skip
enddo
gotop
select读者基本信息表
locateforallt(thisform.Combo1.value)==allt(读者学号)
iffound()
thisform.Text1.value=班级
thisform.Text2.value=姓名
thisform.text3.value=q2
endif
endif
skip
ifeof()
thisform.Command4.enabled=.F.
thisform.Command3.enabled=.T.
else
skip-2
ifbof()
thisform.Command3.enabled=.F.
thisform.Command4.enabled=.T.
else
thisform.Command4.enabled=.T.
thisform.Command3.enabled=.T.
endif
Endif
Command2的clickevent代码:
thisform.release
4.2.6功能:
图书查询界面
表单名:
表单6
数据环境:
图书基本信息表.dbf
查询结果:
图7 程序界面
Command1的clickevent代码:
ifthisform.Combo1.value=="图书编号"
ifthisform.Text1.value==""
messagebox("你没有选择要查找的内容",0+16,"提示")
else
locateforallt(thisform.text1.value)=allt(图书编号)
iffound()
messagebox("查找成功",0+48,"提示")
gotop
sele*from图书基本信息表whereallt(thisform.Text1.value)==allt(图书编号)intocursortemp
thisform.refresh
thisform.init
else
messagebox("对不起,没有相关内容",0+48,"提示")
endif
endif
endif
ifthisform.Combo1.value==allt("书名")
ifthisform.Text1.value==""
messagebox("你没有选择要查找的内容",0+16,"提示")
else
locateforallt(thisform.text1.value)=allt(书名)
iffound()
messagebox("查找成功",0+48,"提示")
gotop
sele*from图书基本信息表whereallt(thisform.Text1.value)==allt(书名)intocursortemp
thisform.refresh
thisform.init
else
messagebox("对不起,没有相关内容",0+48,"提示")
endif
endif
endif
ifthisform.Combo1.value=="作者"
ifthisform.Text1.value==""
messagebox("你没有选择要查找的内容",0+16,"提示")
else
locateforallt(thisform.text1.value)=allt(作者)
iffound()
messagebox("查找成功",0+48,"提示")
gotop
sele*from图书基本信息表whereallt(thisform.Text1.value)==allt(作者)intocursortemp
thisform.refresh
thisform.init
else
messagebox("对不起,没有相关内容",0+48,"提示")
endif
endif
endif
ifthisform.Combo1.value==allt("出版社")
ifthisform.Text1.value==""
messagebox("你没有选择要查找的内容")
else
locateforallt(thisform.text1.value)=allt(出版社)
iffound()
messagebox("查找成功")
gotop
sele*from图书基本信息表whereallt(thisform.Text1.value)==allt(出版社)intocursortemp
Thisform.refresh
thisform.init
Else
messagebox("对不起,没有相关内容")
endif
endif
endif
ifthisform.Combo1.value=="借阅状态"
locateforthisform.text1.value=借阅状态
iffound()
messagebox("查找成功",0+48,"提示")
gotop
sele*frombookswherethisform.Text1.value==借阅状态intocursortemp
thisform.refresh
thisform.init
Else
messagebox("对不起,没有相关内容",0+48,"提示")
endif
Endif
Command2的clickevent代码:
thisform.release
4.2.7功能:
报表显示关于表的的所有信息
表单名:
表单7
数据环境:
图书基本信息表.dbf、读者基本信息表.dbf、借书表.dbf,全部信息显示.dbf
图7 程序界面
运行结果;
Command1的clickevent代码:
reportform图书基本信息表
Command2的clickevent代码:
reportform读者基本信息表
Command3的clickevent代码:
reportform借书表
Command4的clickevent代码:
reportform全部信息
5难点
1.实体的建立
2.借书还书程序的设计
6总结
经过一周的设计和开发,图书管理系统基本开发完毕。
其功能基本符合用户需求,能够完成图书资料管理、学生资料管理和借还书操作,同时也考虑到了单位编码以减少冗余的问题,对于数据的一致性的问题也通过程序进行了有效的解决。
可是在运用和进一步了解VFP的同时遇到的困难是开始时没有想象到的,从中我学到的宝贵知识是对VFP的了解和运用都有了很大的提高。
当时遇到的困难和解决后的喜悦现在回想起来还是那么的有滋味,这对我今后的学习和工作都有着很大的帮助。
但在完成后发现许多功能还不足,比如还书期限,库存量的统计,对教师的权限都没有涉及到等等不足,在以后对此还需完善。
参考文献
[1]visualfoxpro及其应用系统开发(第二版)史济民主编清华大学出版社
[2]萨师煊、王珊.数据库系统概论.北京:
高等教育出版社
[3]史济民主编VisualFoxP及其应用系统开发,北京清华大学出版社
[4]王浩等.精通VisualFoxPro6.0中文版,上海:
上海科学技术出版社,1998