VB图书管理系统.docx

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

VB图书管理系统.docx

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

VB图书管理系统.docx

VB图书管理系统

图书馆管理信息系统

一.系统需求分析

1.系统功能需求

这是为某小型图书馆设计的一个管理系统,经过调查,图书馆工作人员最希望该系统解决的问题有:

(1)图书馆的借阅书籍与归还书籍的登记。

也就是为读者借书建立一个帐台,应用该台帐,工作人员能方便的掌握每位读者借了哪些书,借了多长时间。

(2)编制催还图书通知单。

该图书馆对所借书的数量暂时未进行限制,但对借书时间限制为60天,对逾期未还书的读者下达催还图书的通知单,促其尽快还书,以加快图书的流通。

(3)提供快速的图书查找功能,方便读者尽快查到其所要的图书。

(4)系统所提供的全部功能操作要简单,直观,实用。

二.系统数据关系E-R图

系统所涉及到的实体及其关联关系比较简单,主要实体只有读者和图书两个,它们通过读者的借阅活动而发生联系。

三.系统设计

1.功能设计

(1)图书借阅。

为有借书证的读者办理借阅登记,登记的内容包括借书证编号,图书编号,借阅日期。

图书编号的输入过程应尽量方便,借阅日期应自动登记。

(2)图书归还。

在适当的位置登记一个还书日期,这个适当的位置应该由两个字段组成的关键字决定,一是借书证编号,其次是图书编号,这个适当的位置的查找过程应该在系统

(3)编制催还图书通知单。

根据图书馆规定,对借书时间超过60天者打印催还图书通知单,其内容包括借书证编号,读者姓名,电话号码,图书编号,名称,作者,出版社,借阅日期等信息,通知单编制过程由系统自动完成。

(4)借书证办理与退还。

在实际工作中,这个过程包括了借书证的制作,填写,发放,以及收回后的处理等过程,但这里只提供对发放借书证和收回借书证两个过程的支持,而不管其证件的制作。

(5)图书入库与报废。

新采购的入库登记和废旧图书的报废登记,登记处理过程是在图书数据库中进行相应登记,对于新图书入库有两种不同的情况:

其一新采购的图书在以前已经登记过,这次属于补充库存;其二是图书馆以前没有登记过。

对于已经登记过的,要找到以前的记录将其合并。

对于后者,要重新登记图书名称,作者,出版社等详细数据。

2.数据库设计

根据E-R图,将其转化为如下数据实体,数据库:

book.dbc,包括如下的表和视图:

借书证发放登记表——Reader.dbf

图书登记表——Booker.dbf

图书类型表——Typer.dbf

借书登记表——Brower.dbf

因为借书证和图书间存在多对多的关系,因此还要建立了一个借阅登记表,为查询方便,系统中还设计了一个图书类型表,该表和图书的关系是一对多关系,另外还有一个借书关系视图。

所有这些数据实体都纳入一个数据库book.dbc进行管理。

下面详细说明这些数据实体的结构。

(1)借书证发放登记表(读者表)——Reader.dbf

Dzbhc(8)借书证编号

Xmc(8)读者姓名

Gzdwc(30)工作单位

Dhc(11)电话号码

Dzc(20)家庭住址

Bzrqd办证日期

Hzrqd退证日期

 

(2)图书登记表——Booker.dbf

Tsbhc(8)图书编号,同种图书有同一个编号

Tsmcc(30)图书名称

Zzc(8)作者

Cbsc(30)出版社

Lbc(8)图书类别

DjN(5,1)图书价格

Nrtym内容提要

KcsI库存数量

ZksI在库数量

(3)图书类型表——Typer.dbf

Lbc(8)图书类别

(4)借书登记表——Brower.dbf

Dzbhc(8)读者编号

Tsbhc(8)图书编号

Jyrqd借阅日期

Ghrqd归还日期

(5)借书视图(brower)

为了打印催还通知单的需要,设计了一个借书视图文件,该视图从reader.dbf

等三个表中提取了7个字段的数据:

Reader.dabh

Reader.xm

Reader.dh

Brower.tsbh

Book.thmc

Book.zz

Brower.jyrq

其视图关系可以由以下SQL语句定义:

SELECTReader.dzbh,Reader.xm,Reader.dh,Booker.tsbh,Booker.tsmc,;

Booker.zz,Brower.jyrq,Brower.ghrq;

FROMbook!

readerINNERJOINbook!

brower;

INNERJOINbook!

booker;

ONBrower.tsbh=Booker.tsbh;

ONReader.dzbh=Brower.dzbh;

WHEREBrower.jyrq

ANDDATE()-Brower.ghrq=0;

ORDERBYReader.dzbh

3.总体模块设计

该系统的全部功能由一个主控界面(两个表单),一个表单以及相关的四个表单组成,其总体总体模块框图如图所示:

 

 

 

总体框图

 

四.模块设计

1.主控界面表单设计

图书馆管理信息系统的主界面由“动画欢迎表单”和“主控表单”组成,主控表单上安排六个命令按钮,分别实现总体框图中的五部分功能和退出系统模块。

每个命令按钮触发的结果均执行一条命令,运行一个表单,或者启动一个报表文件运行,或者退回到Visualfoxpro系统状态。

 

主控表单设计代码如下:

“借书证管理”按钮的click事件代码:

doform借书证管理.scx

“借书登记”按钮的click事件代码:

doform借书登记.scx

“还书登记”按钮的click事件代码:

doform还书登记.scx

“图书入库与报废”按钮的click事件代码:

doform图书入库与报废.scx

“催还通知书”按钮的click事件代码:

reportform催还通知书.frxpreview

“退出系统”按钮的click事件代码:

Releasethisform

Closeall

Quit

2.其他表单的设计

(1)借书证表单设计

这个表单的数据源是reader.dbf表,在其支持下完成用户所要进行的图书证发放和退回工作,其运行界面如下图所示。

用户从“借书证编号”文本框中输入一个借书证编号,如果该借书证在reader.dbf表中已经存在,系统会在下面表格对象中显示与之对应的读者情况,否则显示为空。

但单击“办理借书证”按钮后,系统会在变个对象中添加一行空记录,等待用户输入新读者资料,并自动把办证日期赋值为系统当前日期,用户退出表单时系统将新数据存入与表单对应的reader.dbf表中;当用户单击“退还借书证”按钮后,系统把当前日期赋值给换证日期字段,表示该读者已归还借书证。

与表单相对应的各种对象的属性值及事件代码说明如下:

(1)“借书证编号”文本框的属性和事件代码:

Name属性——text1

Fomat属性——‘*******’

Interactivechange事件代码:

thisform.dataenvironment.cursor1.filter='dzbh='+"'"+trim(this.value)+"'"

thisform.refresh

return

lostfocus事件代码:

thisform.dataenvironment.cursor1.filter='dzbh='+"'"+trim(this.value)+"'"

thisform.refresh

return

(2)办理借书证按钮的click事件代码:

appendblank

replacedzbhwiththisform.text1.value,bzrqwithdate()

thisform.dataenvironment.cursor1.filter='dzbh='+"'"+;

trim(thisform.text1.value)+"'"

thisform.refresh

return

(3)“退还借书证”

thisform.grid1.column7.text1.value=date()

return

(4)“退出”按钮click事件代码:

Closeall

Thisform.release

其他表单的“退出”按钮的代码都完全相同,后面不再进行说明。

3.借书证表单的设计

这个表单是整个系统的一个主要表单,共涉及到reader.dbf,book.dbf,brower.dbf,typer.dbf等四个表,其运行界面如下图所示,用户在左上角的组合框对象中选择“借书证编号”,文本框中“读者姓名”与“电话号码”是系统自动显示的。

在“选择图书类型”组合框中选择要借阅的图书类型,表单中上面的表格显示图书的库存信息,在单击“借阅”按钮后,系统自动进行借阅登记(同种类图书每次只能借一本),表单下半部分的表格中显示该读者现在未归还的图书及借阅日期。

 

借书按钮的click代码:

ifbooker.tsbh=trim(bo2.value)

replacebooker.zkswithbooker.zks-1

endif

ifused("brower")

selectbrower

gobottom

appendblank

endif

ifbooker.tsbh=trim(bo2.value)

replacebrower.tsbhwithbooker.tsbh

replacebrower.jyrqwithdate()

endif

ifused("reader")

selectreader

replacebrower.dzbhwithreader.dzbh

endif

thisform.refresh

return

退出的按钮的click代码:

releasethisform

 

4.还书登记表单的设计:

还书登记表单的运行界面如图所示,该表单共涉及reader.dbf,brower.dbf和book.dbf等三个数据表,当用户在借书证编号的组合框中选择一个借书证编号后,系统自动在后面的文本框中显示与该编号对应的读者姓名和联系方式,并在表格中显示该读者尚未归还的图书,然后由用户在表格中用鼠标选择要归还的图书,选中后单击“还书”按钮。

程序进行两项工作,其一,将系统日期赋值给brower.dbf表的当前记录的对应字段,表示其已于当日归还所借图书;其二,在book.dbf表中修改与所还图书对应的“在库数zks字段”的数量。

还书的click事件代码:

tdbf=alias()

select(thisform.dataenvironment.cursor2.alias)

replaceghrqwithdate()

select(thisform.dataenvironment.cursor3.alias)

replacezkswithzks+1

select&tdbf

thisform.refresh

return

退出按钮的click事件代码:

selectoperating

locateforoperating.操作员姓名=alltrim(operating.操作员姓名)

ifalltrim(thisform.text1.value)=alltrim(operating.口令)

ifthisform.text2.value=thisform.text3.value

replaceoperating.口令withthisform.text2.value

releasethisform

else

messagebox("口令不一致!

")

thisform.text2.setfocus()

endif

else

messagebox("原口令错误!

")

thisform.text1.setfocus()

endif

 

5.图书的入库与报废表单设计:

 

该表单的运行界面如上图所示,左上角的“借书编号”文本框供用户输入要登记入库或报废的图书编号,后面的册数文本框输入对应的入库或报废的图书册数,如果所输入的图书编号是一个booker.dbf表中存在的图书编号(这表示是进行图书报废登记),下面的表格中显示该图书的其他信息。

反之,表示是一种新书要进行入库登记,实质是将这种图书信息添加到booker.dbf数据表中。

“新书入库登记”按钮的click事件:

thisform.dataenvironment.cursor1.filter='tsbh='+"'"+trim(thisform.text1.value)+"'"

ifeof()

appendblank

replacetsbhwiththisform.text1.value

thisform.refresh

thisform.grid1.column1.enabled=.t.

thisform.grid1.column2.enabled=.t.

thisform.grid1.column3.enabled=.t.

thisform.grid1.column4.enabled=.t.

thisform.grid1.column5.enabled=.t.

endif

thisform.grid1.column8.text1.value=thisform.grid1.column8.text1.value+val(thisform.text2.value)

thisform.grid1.column9.text1.value=thisform.grid1.column9.text1.value+val(thisform.text2.value)

thisform.refresh

return

“图书报废登记”按钮的click事件代码:

thisform.grid1.column8.text1.value=thisform.grid1.column8.text1.value-val(thisform.text2.value)

thisform.grid1.column9.text1.value=thisform.grid1.column9.text1.value-val(thisform.text2.value)

thisform.refresh

return

6.密码设定表单的设计:

 

“确认”按钮的click事件代码:

selectoperating

locateforoperating.操作员姓名=alltrim(operating.操作员姓名)

Ifalltrim(thisform.text1.value)=alltrim(operating.口令)

ifthisform.text2.value=thisform.text3.value

replaceoperating.口令withthisform.text2.value

releasethisform

else

messagebox("口令不一致!

")

thisform.text2.setfocus()

endif

else

messagebox("原口令错误!

")

thisform.text1.setfocus()

endif

“退出”按钮事件代码:

Releasethisform

 

7.系统日志表单的设计:

“清除”按钮的click事件代码:

selectlog

zap

thisform.grid1.recordsource="log"

thisform.refresh

“退出”按钮的click事件的代码:

Releasethisform

“zhu”程序代码:

CLEAR&&清屏

CLEARALL&&从内存中释放所有的内存变量

CLOSEALL&&关闭各种类型的文件

SETESCAPEOFF&&禁止运行的程序和命令在按Esc键后被中断

SETSAFETYOFF&&指定在改写已有文件时不显示对话框

SETDELETEON&&使用范围子句处理记录的命令忽略标有删除标记的记录

SETSYSMENUOFF&&在程序执行期间废止VisualFoxPro主菜单栏

RELEASEWINDOW"常用"&&关闭常用工具栏

SETCENTURYON&&年份以四位显示

SETDATETOymd&&日期格式为年、月、日

SETMARKTO"-"&&指定日期分隔字符

SETHOURSTO24&&指定为24-小时时间格式

 

DOFORM.\动画欢迎表单.scx&&调用登录界面表单

OnShutDowndoOnShutdown&&退出系统时调用函数onshutdown()

READEVENTS&&建立事件循环

OnShutDown&&释放当前的OnShutDown命令

*按菜单的“关闭”按钮退出时,出现的提示框

FUNCTIONOnShutdown()

sel=MESSAGEBOX("真的要退出吗?

",4+32+256,"提示")

IFsel=6

SELECT0

USELOG

GOBOTTOM

REPLACE离开时间WITHDATETIME()&&退出系统时记录操作员退出时间

CLOSEALL

CLEAREVENTS&&退出事件循环

QUIT&&结束当前VisualFoxPro工作期,并将控制权返回给操作系统

ENDIF

ENDFUNC

 

五实验总结

通过这次实验,我们主要充分的使用数据库,表单,等各种控件,特别是报表,使系统变得更为实用.同时自己也加入了很多的图片,这使得我的系统有锦上添花的效果。

如:

登陆界面的设计,同时也使字体设为动态的等.

实验做了很长时间,第一次我做的超市管理系统总是连编后有错误,不能很好的运行,后来也解决了,但是showwindow的顶层表单设置总是不合适。

后来我就只有做了图书管理系统,做的不完善,但是系统工作正常。

学习我们应该学会大家相互讨论的学习方法,不能闭门造车,不能一个人一直研究,那样学习效率太低。

大家讨论学习学到的东西就会更多,解决问题的方法也就多,做事效率也就高。

通过本系统我们能够基本的进行图书的管理,虽然本系统做的不够完美,但是通过做本系统确实收获不少,同时懂得了系统维护的重要性。

通过以后的学习能够做的更加完善。

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

当前位置:首页 > PPT模板 > 商务科技

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

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