图书馆信息管理系统设计.docx
《图书馆信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《图书馆信息管理系统设计.docx(13页珍藏版)》请在冰豆网上搜索。
图书馆信息管理系统设计
图书馆信息管理系统设计
一、系统功能描述
图书馆管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强.数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
本图书管理系统的应用对象定位在小型图书馆的应用。
根据要求本图书管理系统主要针对图书管理员进行添加新书、执行借书、还书、查看图书的操作,另外进入该系统的读者只能查看当前图书馆的藏书并能执行查询操作,读者还可以通过该系统注册成为会员。
图书管理系统用来管理图书借还过程中的静态和动态信息。
系统管理的信息主要包括图书基本信息、图书存储信息、借书和还书信息。
系统的目的就是有效地处理这些信息,同时为图书管理员提供信息检索和信息统计功能。
该图书管理系统主要实现管理员操作和读者操作。
其中,管理员操作包括完成添加图书、借书、还书、查询图书功能;读者操作包括完成图书查询和读者注册功能。
二、开发环境(VISUALBASIC)的简介
VISUALBASIC是微软公司出品的一个快速可视化程序开发工具软件。
借助微软在操作系统和办公自动化软件的垄断/地位,VB在短短的几年内风靡全球。
VB是极具特色和功能强大的软件,主要表现:
所见即所得的界面设计,基于对象的设计方法,极短的软件开发周期,教易维护的代码。
同时众多的ACTIVE控件,提高了软件的使用效率。
1VB应用程序语言的基本特点:
可视化界面设计:
VB为用户提供大量的界面元素(在VB中称为控件对象),这些控件对象如“窗体”,“菜单”,“命令按扭”,“工具按扭”,“检查框”等等,用户只要利用鼠标、键盘把这些控件对象拖动到合适的位置,设置其大小、形状、属性等,就可以设计出所需的应用程序界面。
2事件驱动编程
在使用VB设计应用程序是,必须首先确定应用程序如何同用户进行交互。
例如发生鼠标单击、键盘输入等事件是,由用户编写代码控制这些事件的响应,这就是所谓的事件驱动编程。
3与数据库的连接性
VISUALBASIC提供了与底层数据库系统紧密的连接。
VISUALBASIC支持不同的关系数据库管理系统并充分发挥每一个数据库的特长。
在开发该图书馆管理系统时,VISUALBASIC存取数据库的方式有两种:
•通过使用的ODBC接口。
(ODBC(开放数据库连接)是微软公司的数据库连接标准)
•通过使用由VISUALBASIC提供的专用的直接与数据库相连的接口
该系统程序是在应用vb软件程序的过程中,通过声明和定义数据库变量和记录集变量将程序的实现与access数据库连接起来。
三、系统开发过程
(一)建立数据库
Access数据库中包括member、book、loan、admin(读者表、图书表、借阅信息表、管理员表)四个数据表,分别存放读者信息、馆藏图书信息、读者借阅信息、管理员信息。
Admin(管理员表)作为单独的一个表,与其他三个表没有直接联系。
book表中的isbn(图书编号)与loan(借书表)中的isbn(图书编号)具有一对多的关系,member(读者表)中的nomber(借书证编号)与loan表中的member(图书证编号)同样具有一对多的关系。
Loan表中另外添加了out_data和due_data两个字段分别记录读者的借书时间和应还时间。
数据库中表之间的联系如下图所示:
(二)vb程序中连接数据库
在程序的设计过程中,直接通过vb语句连接数据库,并没有使用控件连接。
定义数据库变量的语句如下:
Dimdb1AsDatabase
Dimdb2AsDatabase
Dimdb3AsDatabase
定义数据记录集变量
Dimrst1AsRecordset
Dimrst2AsRecordset
Dimrst3AsRecordset
设置连接数据库并打开数据库中相应的记录表语句:
Setdb1=Workspaces(0).OpenDatabase(App.Path&"\database\database.mdb",False)
Setrst1=db1.OpenRecordset("member",dbOpenTable)
‘打开member表
Setdb2=Workspaces(0).OpenDatabase(App.Path&"\database\database.mdb",False)
Setrst2=db2.OpenRecordset("loan",dbOpenTable)
‘打开loan表
Setdb3=Workspaces(0).OpenDatabase(App.Path&"\database\database.mdb",False)
Setrst3=db3.OpenRecordset("book",dbOpenTable)
‘打开book表
在连接数据库中数据表的过程中,通过索引,以便以后在数据表中查找数据。
设定索引语句:
rst1.index="nomber"
rst2.index="isbn"
rst3.index="isbn"
(三)设定管理员的操作:
管理员进入系统后,首先能够看到当前图书馆的存书情况以及借书情况,在该界面下进行添加图书、还书、借书和查询操作。
显示当前馆藏图书情况的代码实现为:
LV2.View=lvwReport
LV2.ColumnHeaders.Add,,"图书编号"
LV2.ColumnHeaders.Add,,"书名"
LV2.ColumnHeaders.Add,,"作者"
LV2.ColumnHeaders.Add,,"价格"
LV2.ColumnHeaders.Add,,"数量"
LV2.ColumnHeaders.Add,,"出版社"
LV2.ColumnHeaders.Add,,"出版日期"
total=rst3.RecordCount
LV2.ListItems.Clear
rst3.MoveFirst
Fori=1Tototal
LV2.ListItems.Addi,,rst3.Fields("isbn")&vbNullString
WithLV2.ListItems(i)
.SubItems
(1)=rst3.Fields("bname")&vbNullString
.SubItems
(2)=rst3.Fields("author")&vbNullString
.SubItems(3)="¥"&rst3.Fields("price")
.SubItems(4)=rst3.Fields("total")&vbNullString
.SubItems(5)=rst3.Fields("publish")&vbNullString
.SubItems(6)=rst3.Fields("pdata")&vbNullString
EndWith
rst3.MoveNext
Ifrst3.EOFThenExitFor
Nexti
借书情况的代码实现同馆藏图书的代码实现类似,在此不再重复给出。
1添加新书
管理员点击“添加新书”按钮后,系统弹出添加新书的窗口添加图书。
将新添加的图书记录在数据库中,新进图书可能图书馆中已有,也可能没有,系统要能分别处理。
若新添加的图书在图书馆中已有记录,则在图书表中将总数增加,通过以下语句实现:
rst.Edit
rst.Fields("total")=rst.Fields("total")+Val(total.Text)
rst.Update
如果图书馆中没有相应记录,则在图书表中增加一条记录,写入其相关信息。
通过以下语句实现:
rst.Seek"=",isbn.Text
Ifrst.NoMatchThen
rst.AddNew
rst.Fields("isbn")=isbn.Text
rst.Fields("bname")=b_name.Text
rst.Fields("author")=author.Text
rst.Fields("price")=Val(price.Text)
rst.Fields("total")=Val(total.Text)
rst.Fields("publish")=publish.Text
rst.Fields("pdata")=pdata.Text
rst.Fields("class")=class.Text
rst.Update
2查询图书
管理员通过输入图书编号查询相关图书,管理员窗口图书管理界面显示所查询图书的详细信息
在程序实现过程中,用BookId作为全局变量,存放图书的编号信息,具体由以下语句实现:
rst.Seek"=",BookId
txtBookHao.Text=BookId
txtBookName.Text=rst.Fields("bname")&vbNullString
txtChuBan.Text=rst.Fields("publish")&vbNullString
txtCost.Text=rst.Fields("price")&Empty
txtLentDate=rst.Fields("pdata")&vbNullString
txtType.Text=rst.Fields("class")&vbNullString
author.Text=rst.Fields("author")&vbNullString
3还书操作:
管理员在实现还书操作的过程中,分别输入所借图书编号和借书证号进行借书操作。
在还书过程中涉及到对book表、loan表、member表的同时修改,首先在book表中对所还图书的相应图书的数量(total字段)进行加1操作,然后在member表中对应借书证号的借书数量(total字段)进行减1操作,最后将loan表中对应的借书记录删除掉。
删除loan表中相应记录:
rst.Delet
修改book表中的记录:
rst2.Seek"=",BookId
rst2.Edit
rst2.Fields("total")=rst2.Fields("total")+1
rst2.Update
修改member表
rst1.Seek"=",mAddEditId
rst1.Edit
rst1.Fields("total")=rst1.Fields("total")–1
rst1.Update
4借书操作:
工作人员通过此模块来进行借阅记录的查询。
该模块提供了包括读者编号、图书编号两种查询条件,管理员根据这个查询条件来进行查询,既可以查询出某本书。
执行结束操作过程中,管理员首先输入借书证号,查询是否存在该借书证号,若存在则显示对应的读者信息,并执行借书操作,否则弹出提示信息要求重新输入正确的借书证号。
借书过程中也涉及到对book表、member表、loan表的同时操作。
在book表中相应图书的数量(total字段)减1,member表中相应读者的借书量(total字段)加1,loan表中增加一条借书记录。
同时借书过程中系统自动检查该用户借书是否已达到六本,若已达到六本则不允许继续借书。
正确输入借书证后进入借书窗口,系统通过查询member表的相应记录,自动显示当前读者的详细信息,同时显示当前图书馆的藏书情况。
读者所能进行的操作只有根据相应的图书编号查看图书,同时系统会将读者查看的图书的详细信息显示出来。
具体代码实现为:
rst1.Seek"=",mAddEditId
'显示当前读者的信息
nomber.Text=mAddEditId
txtname.Text=rst1.Fields("name")&vbNullString
txtage.Text=rst1.Fields("age")&vbNullString
txtphone.Text=rst1.Fields("telephone")&vbNullString
txtaddress.Text=rst1.Fields("address")&vbNullString
txtfa.Text=rst1.Fields("fa")&Empty
查看相应图书编号图书的详细信息通过以下代码实现:
PrivateSubisbn_KeyPress(KeyAsciiAsInteger)
IfKeyAscii=13Then
rst3.Seek"=",isbn.Text
Ifrst3.NoMatchThen
MsgBox"没有此图书编号,请重新填写",0+48,"填写错误"
isbn.SetFocus
Frame4.Visible=False
ExitSub
EndIf
Frame4.Visible=True
txtBookHao.Text=isbn.Text
txtBookName.Text=rst3.Fields("bname")&vbNullString
txtChuBan.Text=rst3.Fields("publish")&vbNullString
txtCost.Text=rst3.Fields("price")&Empty
txtLentDate=rst3.Fields("pdata")&vbNullString
txtType.Text=rst3.Fields("class")&vbNullString
author.Text=rst3.Fields("author")&vbNullString
EndIf
EndSub
单击“借出图书”按钮后系统执行借书操作。
首先查看该图书是否被全部借出,然后确定该读者借书总数没有超过六本,否则不允许借出。
具体通过一下操作实现
Ifrst3.Fields("total")<=0Then
MsgBox"此书已被全部借出!
",0+48,"提示"
isbn.Text=""
isbn.SetFocus
Frame4.Visible=False
ExitSub
EndIf
‘控制每人所借图书不能超过六本
rst1.Seek"=",mAddEditId
Ifrst1.Fields("total")>=6Then
MsgBox"该用户借书已达到六本,不能再借!
",0+48,"提示"
ExitSub
EndIf
Loan表中添加一条记录的代码实现:
rst2.AddNew
rst2.Fields("isbn")=txtBookHao.Text
rst2.Fields("member")=nomber.Text
rst2.Fields("uname")=txtname.Text
rst2.Fields("bname")=txtBookName.Text
rst2.Fields("price")=txtCost.Text
rst2.Fields("publish")=txtChuBan.Text
rst2.Fields("class")=txtType.Text
rst2.Fields("author")=author.Text
rst2.Update
修改book表中的记录:
rst3.Seek"=",BookId
rst3.Edit
rst3.Fields("total")=rst3.Fields("total")–1
rst3.Update
修改member表
rst1.Seek"=",mAddEditId
rst1.Edit
rst1.Fields("total")=rst1.Fields("total")+1
rst1.Update
(四)读者操作
读者通过登录进入读者窗口界面,该界面自动显示当前登录读者的详细信息以及当前图书馆的藏书情况,同时可以通过图书编号查询响应图书的详细信息。
读者登录系统后,系统自动进行的操作以及馆藏图书的自动显示的代码实现同管理员进行借书操作时的代码相同。
四、心得体会
在整个系统的实现过程中,通过参考一些access数据库和visualbasic方面的书籍我学会了通过vb语句正确连接数据库,并且在数据库中进行查找、添加、删除记录等操作。
通过老师的指导掌握了基本的图书关系系统的开发过程。
经过两周的设计和开发,图书馆管理系统基本开发完毕。
其功能基本符合需求,能够完成书籍录入,借阅,查询,归还。
界面提供两种模式:
一种是管理员模式,另一种是读者模式,并提供部分系统维护功能,使用户方便进行数据添加和修改、数据删除等功能。
但是由于设计时间较短,所以该系统还有许多不尽如人意的地方,用户界面不够美观,出错处理不够等多方面问题。
这些都有待进一步改善。
两周的设计过程,使我提高了实际操作能力,从以前的理论上升到实践,从感性认识上升到理性认识,真正做到学有所用,在设计过程中遇到一些数据库连接方面的问题也基本能够解决克服了,但由于时间关系,并没有做到尽善尽美。