vf图书管理系统.docx

上传人:b****7 文档编号:11328920 上传时间:2023-02-27 格式:DOCX 页数:25 大小:455.76KB
下载 相关 举报
vf图书管理系统.docx_第1页
第1页 / 共25页
vf图书管理系统.docx_第2页
第2页 / 共25页
vf图书管理系统.docx_第3页
第3页 / 共25页
vf图书管理系统.docx_第4页
第4页 / 共25页
vf图书管理系统.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

vf图书管理系统.docx

《vf图书管理系统.docx》由会员分享,可在线阅读,更多相关《vf图书管理系统.docx(25页珍藏版)》请在冰豆网上搜索。

vf图书管理系统.docx

vf图书管理系统

陕西理工学院管理系

《数据库管理系统》

课程设计报告书

学号:

1020014060

班级:

电子商务102班

姓名:

王海斌

指导教师:

周作涛

时间:

2011-2012-1

 

附件二课程设计评阅书

《数据库管理系统》课程设计评阅书

题目

小型图书室管理程序设计

设计目的

(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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1