1、实例图书馆管理系统,实例图书馆管理系统,进入知识经济和信息时代,图书馆的数字信息化管理是现代图书情报事业发展的必然之路,也是现代图书情报机构的不可缺少的重要组成部分。从某种程度上说,图书馆的数字信息化程度反映着一个国家、一个地区知识经济和信息产业的发展水平。跨入21世纪后,我国图书馆的数字信息化建设研究与实践探索呈现出方兴未艾的蓬勃趋势,各级图书情报单位都在积极开发图书馆的信息管理系统。,1系统概述,本实例将介绍如何结合Visual Basic 2005技术和Oracle 9i数据库技术,创建一个基于本地数据库的图书馆管理系统。该系统主要面向图书馆的单机服务实体对象开发,适合中小型图书馆使用。
2、所开发的“图书馆管理系统”项目的界面如图4.1所示。 主界面采用了多文档窗口,这样可以在窗口内打开多个子窗口,同时进行多种操作。主界面中通过菜单实现不同模块的功能,包括系统管理员、书籍信息管理、读者信息管理、报表和窗口功能。管理员可以根据自己的权限,对相应的模块进行操作。,图4.1 图书馆管理系统主界面,2系统设计,本实例的目是将传统的图书馆转换为数字信息化的图书馆,并对图书实现自动化的管理。在进行具体的设计工作之前需要进行系统功能模块的分析和系统代码架构的分析。通过这两方面分析,能为实际的开发提供一个指导思想。,2.1 系统功能模块分析,利用本实例的图书馆管理系统,可以大大减轻图书馆管理员的
3、工作负担,同时能够极大地利用图书资源,为用户提供及时快捷的图书信息。 图书馆管理系统的管理员权限分为3级:系统管理员、图书管理员和一般管理员。他们具有不同模块的管理权限。图书馆管理系统的主要实体是书籍和读者。通过不同的功能模块可以有效地对这两个实体进行管理。这些模块的功能需求简单表述如下: 系统管理员:只有系统管理员才具有该模块的权限。该模块需要实现书籍参数和用户信息管理,另外,通过该模块还可以解冻被冻结的用户和修改密码。书籍参数具体包括索书号、书籍类型和费用类型3个方面的信息。用户信息管理包括添加、编辑和删除用户信息。,2.1 系统功能模块分析,书籍信息管理:系统管理员和图书管理员具有该模块
4、的权限。该模块是系统核心的功能模块,要求实现添加书籍信息、查找书籍信息、编辑书籍信息、删除书籍信息、今日借阅查询和归还书籍功能。 读者信息管理:所有的管理员都具有该模块的权限。该模块要求实现添加读者信息、编辑读者信息和删除读者信息的功能。 报表:所有的管理员都具有该模块的权限。该模块要求实现书籍类型报表、用户报表和索书号报表。所有的报表要求通过Visual Basic 2005的水晶报表实现。 对上述各项功能进行集中、分块和结构化,得到如图4.2所示的系统功能模块图。,2.1 系统功能模块分析,2.2 系统代码架构分析,由于本实例的图书馆管理系统应用于中小型图书馆,属于小型的项目,因此,系统相
5、对简单。为了提高系统的开发速度,这里采用了两层的代码架构,如图4.3所示。 系统的架构包括用户界面和数据库两个层次。用户界面由系统管理员界面、书籍信息管理界面、读者信息管理界面和报表界面组成。用户界面一般面向用户,与用户发生交互,另一方面面向底层的数据库。开发过程中有关数据库操作的代码穿插在界面代码中。,3 数据库设计,本实例的图书馆管理系统是基于Oracle 9i数据库进行开发的一个项目。 数据库设计是信息管理系统中的一个基础工作,其目的是提供高的数据存储效率,保证数据库的完整性和一致性,在整个开发工作中占有相当重要的份量。 一般在项目完成后,如果有新的修改或变化,尽可能只修改界面的代码。
6、设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有系统的需求以及将来可能增加的需求。,3.1 数据库的需求分析,用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构以及数据处理的流程,组成一分详尽的数据字典,为后面的具体设计打下基础。 在走访、调查和讨论具体客户对图书馆管理系统的需求后,经过仔细分析,图书管理一般的业务流程可以简单归纳如下:,3.1 数据库的需求分析,首先是管理员登录图书馆管理系统,如果当前管理员是超级管理员,则可以添加、编辑和修改其他一般管理员的信息。如果系统是一个刚刚投入使用的系统,则应该先
7、建立书籍参数,包括书籍类型、索书号和费用类型信息。并且需要建立读者的信息,可以进行添加、编辑和删除读者操作。对于书籍类型、索书号和用户信息,可以输出相应的报表。打印为纸质文件,作为长期的保存。如果有新的书籍上架,可以进行添加书籍信息操作,对于已经添加的书籍信息可以进行查找、编辑和删除操作。对于读者借书还书,可以通过借阅书籍和归还书籍功能进行操作。在每日下班前,可以查询当日的借阅情况。,3.1 数据库的需求分析,针对图书馆管理系统的需求,通过对图书馆管理系统业务流程和数据流程的分析,需要设计如下7个数据表和相应的数据字段。 (1)用户信息表,即系统管理员信息表。包括的字段有:用户账号、用户姓名、
8、密码、状态、地址、电话、手机、E-mail地址、系统管理员权限、图书管理员权限和一般管理员权限。 (2)书籍类型信息表,包括的字段有:书籍类型和描述信息。 (3)索书号信息表,包括的字段有:索书号和描述信息。 (4)费用类型信息表:包括的字段有:费用编号、费用和描述信息。,3.1 数据库的需求分析,(5)书籍信息表,包括的字段有:书籍编号、ISBN号、书籍名称、索书号、书籍类型、书籍描述、作者姓名、出版日期、版本、书籍状态、图片路径和添加日期。这里的图片以图片的所在路径表示。 (6)读者信息表,包括的字段有:读者编号、读者姓名、地址、电话、手机号码、E-mail地址、最大借书量、已借书。 (7
9、)借阅信息表,包括的字段有:借阅号、书籍编号、读者编号、借阅日期、过期日期和费用类型。,3.2 数据库逻辑结构设计,现在需要将上面的数据库概念结构转化为Oracle 9i数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。根据数据库的需求分析和概念结构设计,设计了名称为Library的数据库,数据库由下面多个表组成,各个表的设计结果如表格4.14.7所示。,3.2 数据库逻辑结构设计,表4.1 用户信息表,即系统管理员信息表(SystemUsers),3.2 数据库逻辑结构设计,SQLcreate table SystemUsers (UserID char(10) primary key
10、, UserName varchar2(20), Password char(10), Status char(4), Address varchar2(50), Phone varchar2(20), CellPhone char(20), Email varchar2(30), AdminRights char(2), LibRights char(2), ReaderRights char(2),3.2 数据库逻辑结构设计,为了在程序中检验数据库设计得是否合理,以及测试程序的效果,可以先在数据库中输入一些数据,如图4.4所示。,图4.4 用户信息表,SQL insert into Sys
11、temUsers2 values(Admin,李强,admin,正常,北京朝阳区,010114,13013000001,,是,是,是);SQL insert into SystemUsers2 values(ASP,王海,999,正常,北京中关村,010114,13800138000,,否,是,是);,3.2 数据库逻辑结构设计,表4.2 书籍类型信息表(BookType)。,SQL create table BookType2 (Type char(10) primary key,3 description varchar2(50);,3.2 数据库逻辑结构设计,为了在程序中检验数据库设计得
12、是否合理,以及测试程序的效果,可以先在数据库中输入一些数据,如图4.5所示。,图4.5书籍类型信息表,SQL insert into BookType2 values(COM-002,计算机类书); SQL insert into BookType2 values(Novel-001,写实小说); SQL insert into BookType2 values(Novel-002,科幻小说); SQL insert into BookType2 values(Tool-001,工具书);,3.2 数据库逻辑结构设计,表4.3 索书号信息表(BookCode)。,SQL create tabl
13、e BookCode2 (Code char(10) primary key,3 description varchar2(50);,3.2 数据库逻辑结构设计,为了在程序中检验数据库设计得是否合理,以及测试程序的效果,可以先在数据库中输入一些数据,如图4.6所示。,图4.6索书号信息表,SQL insert into BookCode2 values(TD035C,电脑类图书); SQL insert into BookCode2 values(TE134F,建筑类图书); SQL insert into BookCode2 values(TK117B,能源动力类图书); SQL inser
14、t into BookCode2 values(TP217A,计算机类图书) ;,3.2 数据库逻辑结构设计,表4.4 费用类型信息表(Charges)。,SQL create table Charges2 (ChargeNo char(10) primary key,3 Description varchar2(50),4 Amount number(10,0);,3.2 数据库逻辑结构设计,表4.5 书籍信息表(BookDetails)。,3.2 数据库逻辑结构设计,SQL create table BookDetails2 (SN char(10) primary key,3 ISBN
15、char(20),4 BookName varchar2(50),5 BookCode char(10),6 BookType char(10),7 BookDes varchar2(50),8 AuthorName varchar2 (20),9 PublishDate date,10 Edition char(10),11 BookStatus char(4),12 Picture varchar2(60),13 LibDate date);,3.2 数据库逻辑结构设计,为了在程序中检验数据库设计得是否合理,以及测试程序的效果,可以先在数据库中输入一些数据,如图4.7所示。,图4.7书籍信
16、息表,SQL insert into BookDetails 2 values(C1185,4-568-9996-6,平凡的世界,TE134F,Novel-001,长篇小说,路遥,08-6月-2001,第二版,被借,null,08-5月-2002) ; SQL insert into BookDetails2 values(B1185,4-568-9996-6,VB2005入门到提高,TP217A,COM-002,用于初级读者的书,张无忌,08-6月-2006,第一版,正常,null,08-8月-2006);,3.2 数据库逻辑结构设计,表4.6 读者信息表(ReaderDetails)。,3
17、.2 数据库逻辑结构设计,SQL create table ReaderDetails2 (ReaderNo char(10) primary key,3 ReaderName varchar2(20),4 Address varchar2(50),5 ReaderPhone varchar2(20),6 ReaderCell varchar2(20),7 ReaderEmail varchar2(50),8 IssueTag number,9 IssueTagUsed number);,3.2 数据库逻辑结构设计,为了在程序中检验数据库设计得是否合理,以及测试程序的效果,可以先在数据库中输入
18、一些数据,如图4.8所示。,图4.8读者信息表,3.2 数据库逻辑结构设计,SQL insert into ReaderDetails2 values(J4567,张三峰,北京中关村,09221-5844125,13800138000,,2,1); SQL insert into ReaderDetails2 values(J7788,李平,北京市昌平,010800800800,13800138000,,3,0); SQL insert into ReaderDetails2 values(X1234,李四,北京朝阳区,010-2323333,13013013013,,1,2);,3.2 数据
19、库逻辑结构设计,表4.7 借阅信息表(IssueBook)。,3.2 数据库逻辑结构设计,SQL create table IssueBook2 (IssueNo char(10) primary key,3 SN char(10),4 ReaderNo char(10),5 idate date,6 ddate date,7 itype char(10);,4 创建系统主窗体,多文档窗体界面在很多的数据库信息管理程序中常见。在MDI子窗体中可以进行数据的传递,对MDI子窗体进行多种方式排列,动态增加或删除菜单。,5 系统管理员功能模块,系统管理员功能模块主要包括3大部分:添加书籍参数、安全和
20、用户管理。其中添加书籍参数包括书籍类型参数、索书号信息和费用信息。安全功能包括解冻用户和修改管理员密码的功能。,5.1 添加书籍参数,5.2 用户信息管理,用户信息管理功能包括添加、编辑和删除用户的功能。首先介绍添加用户的功能。创建好的“添加用户信息”的界面如图所示。 在界面中需要输入用户的基本信息,其中包括设置用户的权限。这里权限包括3级,不同级别管理的模块功能范围不同。一般管理员只具有读者信息管理模块的权限。图书管理员具有读者信息管理模块和书籍信息管理模块的权限。系统管理员具有最高的选择,具有系统的功能。,5.3 登录功能,创建好的登录界面如图所示,这里用户输入账号和密码后,单击“登录”按
21、钮,如果通过认证,则用户可以登录系统。,5.4 解冻用户,用户在进行非法操作后将被冻结,并被添加到冻结用户列表中。创建好的“解冻用户”的界面如图所示。选择列表中的用户,单击“解冻”按钮即可以解冻用户。,5.5 修改密码,创建好的“修改密码”界面如图所示。这里用户需要输入用户编号和原来的密码,为了防止发生输入错误需要重复输入新的密码。单击“修改”按钮,即可更新用户的密码。,6 书籍信息管理功能模块,书籍信息管理是图书馆管理系统的核心功能,包括添加、查找、编辑、删除书籍信息,今日借阅查询,借阅书籍和归还书籍功能。 6.1 添加书籍信息 创建好的“添加书籍信息”窗体界面如图所示。在窗体的左边可以添加
22、书籍的基本信息,在窗体的右边可以添加书籍的图片。设置好书籍信息后,单击“添加”按钮即可添加书籍信息。,6 书籍信息管理功能模块,6.2 查找书籍信息 创建好的“查找书籍信息”窗体界面如图所示。这里提供3种查找方式:通过书籍名称、通过ISBN号码和通过作者。输入相应的查找条件,单击“查找”按钮对书籍信息进行搜集,查找的结果将显示在界面的DataGrid控件中。,6 书籍信息管理功能模块,6.3 编辑书籍信息 创建好的“编辑书籍信息”窗体界面如图所示。在这里用户首先输入“书籍编号”信息,然后单击“读取”按钮,相应的书籍将被书籍信息被读取到界面的文本框中。在此基础上,用户可以对书籍信息进行编辑。,6
23、 书籍信息管理功能模块,6.4 今日借阅查询 如果想知道当天借阅的信息,可以通过“今日借阅查询”功能查看借阅信息。创建好的“今日借阅查询”界面如图所示。 这里提供了3种查询条件:借阅号、书籍名称和读者姓名,用户可以任意选择其中一种方式。,6 书籍信息管理功能模块,6.5 借阅书籍 创建好的“借阅书籍”界面如图所示。在这个界面中,管理员要输入书籍信息、读者信息和借阅信息,最好还可以打印借阅条。,6 书籍信息管理功能模块,6.6 归还书籍 创建好的“归还书籍”窗体界面如图所示。在该界面中首先输入借阅号,按回车键,相应的借阅信息会显示在界面上。单击“归还”按钮,即可完成归还书籍操作。,7 读者信息管
24、理功能模块,读者和书籍是图书馆管理系统中两个重要的实体对象。 读者信息管理功能包括添加、编辑和删除读者的功能。创建好的“添加读者信息”窗体如图所示。在这里输入读者相关的信息后,单击“添加”按钮,即可注册新的读者。,8 报表功能模块,报表功能模块包括输入索书号报表,用户报表和书籍类型报表。如图所示为借阅信息的报表,这里将借阅信息列入一个报表中,并且提供了打印的方式。,8 报表功能模块,这些报表创建的方式或过程是类似的,它们都是通过VB 2005中的水晶报表组件生成的。 水晶报表(Crystal Reports)是一个优秀的报表开发工具,其特点是简单、易用和功能强大。 水晶报表用于处理数据库,帮助
25、用户分析和解释重要信息。使用Crystal Reports可以方便地创建简单报表,同时它也提供了创建复杂或专用的报表所需的整套工具。 水晶报表几乎可以从任何数据源生成所需要的报表。内置报表专家在生成报表和完成一般任务的过程中,会一步一步地指导用户进行操作。报表专家通过公式、交叉表、子报表和设置条件格式帮助实现数据的实际意义,揭示可能被隐藏掉的重要关系。,8 报表功能模块,水晶报表的灵活性并未停留在创建报表这一功能上,可以利用各种各样的格式发布报表,包括用word和Excel发布,通过电子邮件甚至Web发布。高级的Web报表功能允许工作组中的其他成员在他们自己的Web浏览器中查看或更新共享报表。
26、 通过将水晶报表的报表处理功能整合到自己的数据库应用程序中,应用程序和Web开发人员可以节省开发时间并满足用户的需求。水晶报表支持大多数流行的开发语言,可以方便地在任何应用程序中添加报表。不论是IT行业的站点管理员,还是营销推广经理,也无论是金融业的数据库管理员还是企业的总裁,水晶报表都堪称是一个功能强大的工具,它可以帮助每一个人分析、解释重要信息。 8.1 创建报表 8.2 设计报表 8.3 引用报表,9 窗口功能模块,表4.8 MDILayout枚举,10 系统的实现,11 小结,本实例介绍了目前图书馆管理系统的一般特性和处理书籍的一般方法,介绍了在图书馆借阅书籍时所要考虑的各种数据之间的联系和依存关系。 在开发技术上采用先进的ADO.NET数据库访问对象模型技术开发了基于Oracle 9i数据库的图书馆管理系统。以模块化的方式划分系统的体系结构。以简单的两层结构方式设计系统的代码,采用多文档界面,重点分析了书籍信息管理模块中的数据流程和操作,使读者了解一般的图书馆中的图书流通的基本情况。 另外还介绍了如何开发水晶报表。水晶报表是一个功能强大的工具,几乎可以从任何数据源生成所需要的报表,它可以帮助每一个人分析、解释重要信息。 本系统的不足之处在于没有预约服务和馆际互借功能。在网络功能上没有提供很好的接口和支持,基本处于单机版状态。,