田 青
(长春师范大学图书馆,吉林长春 130032)
进入21世纪以来,信息技术从根本上推动了图书馆的飞速发展,计算机和计算机管理系统已成为图书馆进行图书管理的主要设备和系统。虽然目前很多大型的图书馆已经有一整套比较完善的管理系统,但是在一些中小型的图书馆中,大部分的工作仍需手工来完成,工作起来效率比较低,不便于动态、及时地调整图书结构。为了更好地适应当前图书馆的管理需求,解决手工管理效率低、容易出错的问题,图书管理电子化应成为中小型图书馆的首要选择。本文所开发的图书馆管理系统将先进的信息技术运用到图书馆管理和服务中,从而改变了图书馆的传统管理模式。
基于上述考虑,本系统采用Visual Basic 程序语言作为前端的开发应用工具,利用Access 2003 数据库作为后台数据库,利用Windows 作为系统平台快发图书管理系统。严格按照软件工程学的方法进行设计,从问题定义、可行性分析、系统总体设计、整体概念设计、系统详细设计、系统运行到后期维护、系统编码以及软件测试,每一阶段都在前一阶段基础上设计,并在每一阶段都有相应的文档资料。
手工的图书管理不能准确、完整、及时地为管理者和读者提供图书信息和数据,使工作人员在管理过程中容易出错,工作效率低下。因此,为了克服上述弊端,图书管理的电子化成为发展的必然趋势。图书管理系统在图书馆工作人员的日常工作中起着尤为重要的作用,因此开发一套合理、有效、规范、实用的图书馆管理系统迫在眉睫。
通过对一些典型的图书馆管理系统的考察,从管理员和读者的视角出发,以操作方面界面美观简洁的原则,要求本系统具有以下特点:(1)具有友好的显示界面。(2)处理效率快,操作简便、实用,便于后期维护。(3)支持数据备份和还原,保护系统数据,减少不必要的损失。(4)数据计算系统自动完成,尽量减少人工干预。(5)本信息查询时,可根据查询条件动态显示查询结果。根据以上对图书馆管理系统的需求分析,一个标准的图书馆管理系统应该包含信息设置、库存管理、借阅管理、报表打印、系统维护等功能,每一个功能模块都包含了一系列的子模块。其整个系统功能如图1所示。
信息设置功能实现对图书类别设置、读者信息设置、订购新书等的维护。它提供增加、修改、删除和查询功能,其功能结构如图2所示。
图1 图书馆管理系统功能结构
图2 功能模块
主窗体用于调用程序的所有功能。用户输入正常的用户名和密码就可以进入图书馆管理系统的主窗体中,该主窗体主要由菜单栏、带图片的工具栏、左侧的树状导航菜单、右侧的功能列表以及底部的状态栏组成。用户单击左侧树状导航菜单中的节点,可以在右侧的窗格中显示出该主菜单下的子菜单。例如,选择“借阅管理”选项,将在右侧窗格中显示该菜单下的所有子菜单。
2.1.1 主窗体的设计
(1)在工程中新建一个窗体,命名为frmmain,设置Caption 属性为“图书馆管理系统”,Boderstyle 属性为1-Fixed Single,MinButton 属性为True。(2)利用菜单编辑器设置图书馆管理系统的主菜单。选择“工具”/“菜单编辑器”命令,打开菜单编辑器。(3)在窗体上添加一个TreeView 控件、一个ListView 控件和一个ImageList 控件。(4)在窗体上添加两个ADO 控件,使用其默认名,分别用于连接Table_zcd 表和Table_zcd_zcd表。(5)在窗体上添加一个StatusBar 控件。用鼠标右键单击StatusBar 控件,在弹出的快捷菜单中选择“属性”命令,在弹出的“属性页”对话框中选择“窗格”选项卡,添加4个窗格,分别用于显示欢迎信息、操作员、日期时间和程序网址。(6)在窗体上添加一个Timer 控件,使用默认名,设置Interval 属性为60,用于状态栏显示日期和时间。(7)在窗体上添加若干Label 控件,用于执行相应操作。
2.1.2 主窗体的代码设计
(1)给菜单添加代码
下面是“信息设置”/“图书类别设置”菜单中的代码:
Private Sub mnufen_Click()
frmbooksort.Show 1‘调用图书类别设置窗体
End Sub
(2)鼠标移动的效果
在菜单栏下面的位置是利用图片和Label1 控件实现的类似工具栏功能的按钮。在背景图片上绘制出需要的功能,利用Label 控件显示该图片的功能名称。这里显示名称的Label 控件是一个命名为Lbl_info 的控件数组,在每一个Lbl_info 控件和背景图片上再放置一个Label 控件,用于触发鼠标移动事件,将其设置为名为Lbl_Pic 的控件数组。当鼠标在Lbl_Pic 控件上移动时,改变对应的Lbl_info 控件中文字的颜色,将其设置为红色;当鼠标在窗体上移动时,将Lbl_info 控件中文字的颜色设置为黑色。实现的关键代码如下:
’鼠标在Lbl_Pic 控件上移动
Private Sub Lbl_Pic_MouseMove(Index As Integer,Button As Integer,Shift As Integer,x As Single,y As Single)
Lbl_info(Index).ForeColor=RGB(255,0,0)
‘设置Lbl_info 的文字为红色
End Sub
’鼠标在窗体上移动
Private Sub Form_MouseMove(Button As Integer,Shift As Integer,x As Single,y As Single)
Dim i As Integer‘定义整形变量
For i=0 To Lbl_info.Count-1
Lbl_info(i).ForeColor=RGB(0,0,0)
‘设置所有Lbl_info 的文字为黑色
Next i
End Sub
(3)添加工具栏命令
当用户单击Lbl_Pic 控件时,即可调用对应的功能,这里利用数组Index 属性来判断单击的是哪一个控件,并执行对应的功能。关键代码如下:
Private Sub Lbl_Pic_Click(Index As Integer)
Select Case Index‘根据index 的不同调用不同的操作
Case 0:frmaddnew.Show 1‘调用图书登记窗体
Case 1:frmdzxxgl.Show 1‘调用读者管理窗体
Case 2:frmdzjsgl.Show 1‘调用借书管理窗体
Case 3:frmdzhsgl.Show 1‘调用还书管理窗体
Case 4:frmcqtx.Show 1‘调用超时提醒窗体
Case 5:frm_lb_cx.Show 1‘调用检索图书窗体
Case 6:End‘关闭程序
End Select
End Sub
2.2.1 读者信息管理模块的设计
读者信息管理模块的主要功能是对图书馆的读者信息进行管理,可以对该信息进行增、删、改、查等操作。在主菜单中选“信息设置”/“读者信息设置”命令,即可进入读者信息管理窗体中,在该窗体中选择“添加读者”选项卡,单击“增加”按钮,开始添加读者信息。信息添加完成后,单击“保存”按钮,开始添加读者信息。信息添加完成后,单击“保存”按钮,即可将输入的读者信息保存到数据库中。
2.2.2 读者信息管理模块的代码设计
(1)自动生成读者编号。运行程序,在“添加读者”选项卡中单击“增加”按钮,即可在“读者编号”文本框中自动生成读者编号,这里主要利用ADO 执行SQL 语句,查询数据库中的读者编号,将最后一个读者的编号加1,生成新的读者编号,并将其填写到“读者编号”文本框中,同时将焦点移动到“读者姓名”文本框中。
(2)保存读者信息。将读者信息都输入完后,单击“保存”按钮,即可将读者信息保存到数据库中。这里主要是用数据库连接对象来执行SQL 语句,将数据信息保存到数据库中。
(3)修改读者信息。如果读者的基本信息发生改变,可以通过“修改信息”选项卡来修改读者信息,并将其保存到数据库中。运行程序,选择“修改信息”选项卡,在“读者编号”文本框中输入要修改的读者编号,按Enter 键,如果存在该读者信息,则将读者的基本信息显示在文本框中;否则,弹出提示信息,清空“读者编号”文本框。这里主要是利用数据集对象执行SQL 语句来查询数据库中是否存在该记录。
2.3.1 读者借书管理模块的设计
读者借书管理模块的主要功能是将读者的借书信息保存到数据库中,并可以对读者的借书信息进行删除操作。用户在主窗体中选择“借阅管理”/“读者借书管理”命令,即可进入到读者借书管理模块中。在该窗体中,用户输入“读者编号”,按Enter 键,即可显示读者的姓名;在“条码号”文本框中输入读者要借图书的条码,按Enter 键,即可显示所借图书的信息;输入借书数量,单击借书数量,单击“借出当前图书”按钮,即可将该图书借出。
2.3.2 读者借书管理模块的代码设计
(1)显示读者信息。用户在“读者编号”文本框中输入读者的编号信息,按Enter 键,系统将自动在读者信息表(dzxxtb)中查找具有该读者编号的读者信息。如果具有该信息,则将读者姓名显示在“读者姓名”文本框中,并将光标设置在“条码号”文本框中;如果没有相应的数据信息,则提示相应的信息并清空。这里主要利用ADO 控件来实现数据查询。
(2)显示借阅信息。“条码号”文本框用于输入图书的条码,这个条码一般是利用条形码扫描器获得的。在“条码号”文本框中输入图书的条码,当该文本框失去焦点以后,就开始在图书信息表(books)中查询具有该条码的图书信息,如果查询到信息,则将相应的图书信息显示在对应的文本框中;如果没有相应的图书信息,则提示相应的信息,并清空文本框。
(3)借出图书。在“借出数量”文本框中输入借书数量,然后单击“借出当前图书”按钮,即可借出图书。此时系统会首先查看借书信息内容添加是否完全,接着查看该读者的借出本数是否超出限制,如果超出限制,则提示信息;否则,将该信息写入读者借书表(dzjstb),并将图书信息表(books)中的“复本数”和“借书数量”两个字段的数据进行修改,执行完毕后,弹出提示信息,并刷新图书信息表中的内容。
图书丢失管理模块的主要功能是记录图书丢失信息。用户在主窗体中选择“借阅管理”/“图书丢失管理”命令,即可进入到图书丢失管理模块中。在该模块中输入读者的编号和丢失图书的条码号,按Enter 键即可显示该读者借阅该书的信息,单击“丢失”按钮显示“丢失”,单击“确定”按钮,将丢失信息写入数据库。在该模块中还可以对丢失图书的信息进行查询,输入查询条件,例如,查询读者编号是100003 的图书丢失信息,单击“查询”按钮,即可将编号是100003 的读者的图书丢失信息显示在表格中。最后,使用黑盒测试方法,对系统需求分析阶段与概要设计阶段提出的功能要求进行逐一测试。
[1]高春燕,刘彬彬.Visual Basic 开发实战宝典[M].北京:清华大学出版社,2010.
[2]刘瑞新.Visual Basic 管理信息系统开发毕业设计指导及实例[M].北京:机械工业出版社,2005.
[3]龙冬云.数据库原理与应用[M].北京:电子工业出版社,2005.
[4]张海藩.软件工程导论[M].4 版.北京:清华大学出版社,2003.
[5]黎连业,李淑春.管理信息系统设计与实施[M].北京:清华大学出版社,1998.
[6]Roger Jennings.中文Access 2000 开发使用手册[M].北京:机械工业出版社,2007.
[7]刘炳文.Visual Basic 程序设计教程[M].3 版.北京:清华大学出版社,2006.
[8]刘文涛.Visual Basic+Access 数据库开发与实例[M].北京:清华大学出版社,2006.
[9]胡大敏.载体媒体视阈下大学图书馆阅读推广研究[J].大学图书馆学报,2012(3):96-99.