时间:2023-03-22 17:30:51
序论:好文章的创作是一个不断探索和完善的过程,我们为您推荐十篇图书馆管理系统论文范例,希望它们能助您一臂之力,提升您的阅读品质,带来更深刻的阅读感受。
本系统利用处理数据库的功能,实现对图书馆信息的管理。主要功能为管理有关读者、出版社、书籍、借阅和管理者的信息等。
本系统的结构分为读者信息管理模块、出版社信息管理模块、书籍信息管理模块、借阅信息管理模块、管理者管理信息模块、报表显示模块和查询处理模块。
1.2数据需求
根据系统的需求,首先将要记录的信息分类,要记录的信息如下。
=1\*GB2⑴读者信息:包括证号、姓名、联系方式、已借书数目、读者类别和能否借书等。
=2\*GB2⑵出版社信息:包括名称、地址、网址、E-mail等。
=3\*GB2⑶书籍信息:包括书号、丛书系列、作者、责任编辑、字数、定价、出版时间、主题分类、二级分类、馆内借阅分类、总册数、库存量、出版社和书名等。
=4\*GB2⑷借阅信息:包括借阅日期、应归还日期、实际归还日期、能否续借、书号和证号等。
=5\*GB2⑸管理者信息:包括管理者名称、对应密码和对应权限等。
根据这些需要,本系统需要“读者信息”表,“出版社信息”表,“书籍信息”表,“借阅信息”表和“管理者信息”表。
1.3事务需求
经过实际考察、咨询和分析,高等院校图书管理系统主要应该具有以下功能模块,如1.1图。
=1\*GB2⑴在读者信息管理部分,要求如下。
可以浏览读者信息。
可以对读者信息进行维护,包括添加及删除等操作。
=2\*GB2⑵在出版社信息管理部分,要求如下。
可以浏览出版社信息。
可以对出版社信息进行维护,包括添加及删除等操作。
=3\*GB2⑶在书籍信息管理部分,要求如下。
可以浏览书籍信息。
可以对书籍信息进行维护,包括添加及删除等操作。
=4\*GB2⑷在借阅信息管理部分,要求如下。
可以浏览借阅信息。
可以对借阅信息进行维护操作。
=5\*GB2⑸在管理者信息管理部分,要求如下。
显示当前数据库中管理者情况。
对管理者信息维护操作。
SHAPE\*MERGEFORMAT
图1-1系统业务逻辑关系
1.4系统开发平台
前台:
1、硬件要求:
CPU:Pentium42.0GHz以上IBM兼容机
内存:512MB以上容量
显卡:32MB或以上显存之AGP接口显卡
2、软件要求:
操作系统:MicrosoftWindows2000/XP
开发工具:2003
数据库服务器:
1、硬件要求:
CPU:Pentium42.8GHz以上IBM兼容机
内存:1024MB以上容量
显卡:32MB或以上显存之AGP接口显卡
2、软件要求:
操作系统:MicrosoftWindows2000Server
数据库服务器:MicrosoftSQL2000Server
网络设备:
2块网卡:客户机D-LinkDFE-650TX,服务器IntelPCLA8460B。
路由器:一台SOHO路由器TL-R402M
1.5网络拓扑结构
本设计采用客户机/服务器(C/S)体系,数据的储存管理功能较为透明性,可以合理均衡事务的处理,充分保证数据的完整性和一致性。
SHAPE\*MERGEFORMAT
图1.2C/S模式结构
第2章设计与实现
数据库主要着重于数据对象的属性和数据对象之间的关系的分析。一般采用E-R图,即实体-关系模型来分析数据对象的属性和数据对象之间的关系。
2.0系统流程图
在本系统中准备通过如下窗体来实现数据维护的功能。
(1)主窗体:管理着各个子窗体。
(2)“读者信息”子窗体:管理读者信息。
(3)“管理者信息”子窗体:管理用户信息。
(4)“出版社信息”子窗体:管理出版社信息。
(5)“书籍信息”子窗体:管理书籍信息。
(6)“借阅信息”子窗体:管理借阅信息。
(7)“报表窗体”子窗体:显示数据报表。
(8)“综合查询”子窗体:执行用户自定义的查询。
系统流程图如图3.1所示:
图2.1系统流程图
2.1E-R模型设计
2.1.1实体列表
实体
描述
读者
所有借阅者,查阅者,由证件号标识
出版社
图书馆所有图书所属出版社,由出版社编号标识
书籍
图书馆所有图书,由刊号标识
借阅
书号、证号、借阅日期、应归还日期等属性,由方式标识
系统管理员
系统维护人员
2.1.2系统的E-R模型
该图书管理系统的E-R模型,如下图所示
图2.2图书管理系统E-R图
2.2设计数据库
2.2.1创建数据库
(1)在服务器资源管理器中的任一节点右击。
(2)执行快捷菜单中的“新建数据库”命令,并在打开的“创建数据库”对话框中输入数据库名Library,选中“使用WindowsNT集成安全性”单选按钮。
(3)单击“确定”按钮,则新建的数据库就会出现在服务器上。
2.2.2创建数据表
创建数据库后,为Library数据库添加数据表,步骤如下。
(1)在服务器资源管理器中右击数据库Library下的“表”文件夹。在弹出的快捷菜单中执行“新建表”命令,出现表设计器。
(2)添加表的字段和其他详细资料。各表数据结构如下表所示。
表2-1出版社信息
列名
数据类型
长度
主键
出版社名称
varchar
50
Yes
出版社地址
varchar
50
网址
char
50
char
50
表2-2读者信息
列名
数据类型
长度
主键
证号
int
4
Yes
姓名
varchar
20
联系方式
varchar
50
已借书数目
int
4
读者类别
int
4
能否借书
bit
1
密码
varchar
6
表2-3借阅信息
列名
数据类型
长度
主键
书号
char
10
Yes
证号
int
4
Yes
借阅日期
datetime
8
应归还日期
datetime
8
实际归还日期
datetime
8
续借
bit
1
表2-4书籍信息
列名
数据类型
长度
主键
书号
char
10
Yes
丛书系列
nchar
50
作者
nchar
50
字数
int
4
定价
money
8
出版时间
datetime
8
主题分类
nchar
50
二级分类
char
50
馆内借阅分类
int
4
总册数
int
4
库存量
int
4
出版社
varchar
50
书名
varchar
50
表2-5管理者信息
列名
数据类型
长度
主键
用户名称
char
20
Yes
密码
char
20
权限
int
4
2.2.3连接数据库
为数据库Library和本系统之间建立一个数据连接。
(1)在服务器资源管理器中右击“数据连接”节点。在弹出的快捷菜单中执行“添加连接”命令,打开DataLinkProperties对话框。切换到Provider选项卡,选中列表框中的MicrosoftOLEDBProviderforSQLServer项。单击“下一步”切换到Connection选项卡。
(2)在其中的第一个下拉列表框中选择数据库所在服务器名称。输入登录服务器信息后选择数据库Library,然后单击TestConnection按钮。如果测试成功,单击“确定”按钮。
2.3主窗体设计
创建一个新的“Windows应用程序”类型的项目,名为“图书馆管理”。将默认创建的窗体命名为“主窗体”,把“主窗体”作为本系统中的主界面。
在窗体中添加两个Pannel控件,7个Button控件和7个Linklabel控件。
2.3.1设计登录界面
设计登录界面,创建一个新的”Windows窗体”,名为登录,作为本系统的登录界面.在登录窗体上添加两个Label控件,两个Button控件和两个TextBox控件,添加控件后的窗体如图所示。
2.3.2添加数据组件
在工具箱中单击“数据”选项卡,添加OleDbDataAdapter组件。
(1)在工具箱中单击OleDbDataAdapter组件,在窗体任意位置拖动出一个虚框矩形后释放左键弹出“数据适配器配置向导”对话框。
(2)单击“下一步”,在打开的对话框中选择前面建好的数据连接,然后单击“下一步”。
(3)选中“使用SQL语句”,然后单击“下一步”进入“生成SQL语句”对话框。
(4)在其中的多行文本框直接输入SQL语句“SELECT管理者信息.*FROM管理者信息”。
(5)单击“下一步”按钮,进入“查看向导结果”,单击“完成”按钮完成数据适配器配置。
配置数据适配器后,在主窗体上就会自动添加一个OleDbConnection控件。
2.3.3生成数据集
生成数据集的步骤如下:
(1)单击OleDbDataAdapter控件“属性”对话框中的“生成数据集”链接,打开“生成数据集”对话框。
(2)在其中选中“新建”单选按钮,并在其后面的文本框中输入“Lib管理者信息”。
(3)在“选择要添加到数据集中的表”列表框中列出了前面添加的OleDbDataAdapter组件所连接的表,选中该表名前面的复选框。
(4)选中“将此数据集添加到设计器”复选框,单击“确定”按钮
这样,将生成一个名称为“Lib管理者信息”的数据集,该数据集以文件形式存储,文件名为“Lib管理者信息.xsd”。而在项目中,添加了一个DataSet组件,名为“objLib管理者信息”。
在解决方案资源管理器中右击该项目,在弹出快捷菜单中单击“属性”菜单项。在打开的“属性页”对话框中的“启动对象”下拉列表框中选择“主窗体”选项。单击“确定”按钮,这样该项目启动时,就会从主窗体开始启动。
2.3.4设计代码
在程序运行过程中,如果想通过单击LinkLabel控件或Button控件进入系统中的各个功能模块(如显示读者信息等),就会弹出一个对话框要求输入用户名和密码.单击"确认"按钮,程序就会到数据库的"管理者信息"表中查找该用户名和密码是否存在.如果存在,允许进入功能模块.
完成登录功能的主要代码集中在UserCheck函数中.在程序运行过程中,在登录窗体的"用户姓名"和"用户密码"文本框中输入用户名和密码后,单击"确认"按钮就会触发UserCheck函数并执行其中的代码.如果UserCheck函数返回True,那么允许用户的操作;否则拒绝用户的操作请求.
在UserCheck函数中首先定义Login类型的变量dlg_Login,然后通过ShowDialog方法来显示登录窗体.如果用户在登录窗体中输入用户姓名和密码,并且单击了"确认"按钮,那么自动调用一个自定义函数LoadDataSet(),由此函数进行数据加载.如果出错,显示错误信息,回滚整个事务.
2.4读者信息
在当前项目中添加一个“Windows窗体”,将窗体命名为“读者信息”。
2.4.1设计显示界面
在窗体上添加1个GroupBox控件,9个Button控件,5个TextBox控件,1个CheckBox控件和7个Label控件。
各按钮控件是为了执行相应的操作。各TextBox控件和CheckBox控件用来显示数据集中的数据,这个功能通过设置DataBindings属性来实现。
2.4.2添加数据组件
向窗体添加OleDbConnection组件,命名为OleDbConnection1后将其选中,在“属性”对话框的ConnectionString栏单击,选择所建数据库Library。
添加OleDbDataAdapter组件和生成数据集的方法步骤如2.3.2及2.3.3。
设置各TextBox控件的DataBinding属性来实现对数据集中数据的显示(以Edit证号为例)。
(1)选中“Edit证号”控件单击“属性”对话框。
(2)单击DataBinding属性前面的+号打开该属性的详细列表。
(3)设置Text属性:在该属性后面栏中单击并选择所对应字段。
(4)设置其他TextBox控件的DataBinding属性。
2.4.3功能实现
显示数据,添加读者,保存更改,记录定位的实现。
“管理者信息”,“出版社信息”,“书籍信息”,“借阅信息”和该模块的设计思路及方法步骤完全一致,在此从略。
2.5显示报表
在当前项目中添加一个“Windows窗体”,命名为“报表窗体”,该模块显示当前数据库中读者信息和借阅信息的报表。
在窗体上添加一个CrystalReportViewer1,它充当报表显示的窗体,然后在窗体中添加一个菜单,菜单中包括两个子菜单项—“读者信息”和“借阅信息”。
在程序运行中,如果单击“读者信息”菜单项,就会自动在窗体上显示“读者信息报表.rpt”:如果单击“借阅信息”命令就会自动在窗体上显示“借阅信息报表.rpt”报表。
2.5.1添加读者信息报表
(1)在开发环境中选择菜单“项目”中的“添加新项”对话框中选择CrystalReport选项。
(2)在“名称”文本框中输入报表名“读者信息报表.rpt”,单击“打开”按钮,就会弹出入图所示的“CrystalReport库”对话框。
(3)在其对话框中选择“使用报表专家”单选按钮,在“选择专家”列表框中选择“标准”选项,单击“确定”按钮,进入下一步。
(4)在弹出的“标准报表专家”对话框中,选择“可用的数据源”列表框中的OLBDB(ADO)选项,就会弹“OLEDB(ADO)”对话框。选择OLBDB提供程序为MicrosoftOLEDBProviderforSQLServer,单击“下一步”按钮,显示“连接信息”对话框。
(5)在其中设置连接信息,单击“完成”按钮,返回“标准报表专家”对话框。
(6)选择数据源为OLEDB(ADO)中的Library数据库,并且选中其中的“读者信息”表。单击“插入表”按钮,把“读者信息”表插入到报表中,单击“下一步”按钮。
(7)在“字段”选项卡中单击“全部添加”按钮,把“读者信息”表中的所有字段添加到报表中,单击“完成”按钮就完成报表的设计。
设计完成的“读者信息报表”如图所示。
2.5.2添加借阅情况报表
添加借阅情况报表的过程与添加读者信息报表过程大致相同,不同之处在于插入到报表中的数据表为“读者信息”。
2.6综合查询的实现
在程序运行过程中,单击主窗体的“综合查询”按钮,就会弹出一个对话框。在其中设置查询条件,根据查询条件从记录集中筛选出所需记录。
为此需要在项目中添加一个窗体“综合查询”。
还需要设置“CmbBox运算符”控件的Items属性。单击窗体上“CmbBox运算符”控件,然后在“属性”对话框中单击Items栏,就会出现一个按钮,单击按钮,在打开的窗口中如图2.2所示设置字符串集合编辑器字符串。
SHAPE\*MERGEFORMAT
图2.2所示设置字符串集合编辑器
设置完毕,单击确定按钮。
2.6.1添加数据组件
在窗体上添加一个OleDbDataAdapter组件,使用数据适配器配置向导对其进行配置。选择数据连接后输入SQL语句“SELECT出版社信息.*FROM出版社信息”。
同样再为窗体添加四个OleDbDataAdapter组件,
在"生成SQL语句"对话框的多行文本框中分别输入SQL语句“SELECT读者信息.*FROM读者信息”,“SELECT管理者信息.*FROM管理者信息”,“SELECT借阅信息.*FROM借阅信息”,“SELECT书籍信息.*FROM书籍信息”,然后单击“完成”按钮,Name属性分别设置为OleDbDataAdapter2,OleDbDataAdapter3,OleDbDataAdapter4,OleDbDataAdapter5完成数据适配器的配置。
生成数据集的步骤如下。
(1)在OleDbDataAdapter1组件的“属性”对话框中单击“生成数据集”超链接,打开“生成数据集”对话框,选中“新建”按钮并在后面文本框中输入“Lib综合查询”。
(2)在“选择要添加到数据集中的表”列表框中,选中5个表前面的复选框。
(3)选中“将此数据集添加到设计器”复选框,单击“确定”按钮。
这样,将生成一个名称为“Lib综合查询”的数据集,该数据集以文件的形式存储,文件名为“Lib综合查询.xsd”。而在项目中,添加一个DataSet组件,名称为“objLib综合查询”。
设计完成的数据集如图2.4所示。
图2.3综合查询数据集
第3章系统测试
3.1开发与测试环境
本系统使用语言进行开发。需要FrameworkSDKv1.1的支持。适用内存不低于256M配备有Windows2000,Windows2003,WindowsXP系统的计算机。
3.3程序调试情况
在数据连接时一定要注意窗体和相应显示控件的绑定关系。在把系统从一台计算机移植到另一台计算机时一定要把数据文件library.mdf和library_log.LDF同时移植,并对相应的提供服务的SQLServer服务器进行相应的修改,否则数据正确连接并显示。
3.4功能显示
运行程序后首先显示主窗体,如图3.2所示。
图3.2主界面
单击“输入/查看读者信息”,就会弹出如图3.3所示登录框。
SHAPE\*MERGEFORMAT
图3.3登录界面
在登录对话框中输入用户姓名和密码,单击“确认”按钮,就会对用户身份进行认证,如果认证通过,那么就会弹出如图3.4所示的读者信息管理窗体。
图3.4读者信息管理窗体
在“读者信息”窗体中可以对读者信息进行维护操作,例如浏览读者信息,添加记录和删除记录等。
单击“输入/查看书籍信息”,就会显示“书籍信息”窗体,在该窗体中可以对书籍信息进行维护操作。书籍信息维护窗体如图3.5所示。
图3.5书籍信息窗体
单击“输入/查看借阅信息”,就会显示“借阅信息”窗体,在该窗体中可以对出版社信息进行维护操作。出版社信息维护窗体如图所示。
图3.6借阅信息窗体
单击“输入/查看出版社信息”,就会显示“出版社信息”窗体,在该窗体中可以对借阅信息进行维护操作。借阅信息维护窗体如图3.7所示。
图3.7出版社信息窗体
单击“输入/查看管理者信息”,结果如图3.8所示。
图3.8管理者信息窗体
在主窗体上单击“显示报表”,那么就可以查看反映读者信息和借阅信息的报表,借阅信息的报表如图所示。
SHAPE\*MERGEFORMAT
图3.9报表窗体
如果用户在运行的主窗体上单击“综合查询”,那么就可以查看针对不同的数据表进行查询操作。选择查询依据为“出版社信息”表查看其中的所有信息,结果如图3.10所示。
SHAPE\*MERGEFORMAT
图3.10综合查询窗体
3.5结论
在这个系统的开发过程中,值得注意的几点有:
(1)数据报表的实现.报表是数据库应用程序的重要组成部分,通过报表,可以把数据库中内容经过组织以后生动地展示给用户,提供的CrystalReport可以大大提高报表的设计效率。
(2)复杂查询的实现。在程序运行过程中,单击窗体中的“综合查询”按钮,就会弹出一个对话框,在该对话框中设置查询条件,根据查询条件从记录集中筛选出所需记录,所指定的查询条件包括查询的依据,排序的依据,运算符等等。
第4章结束语
通过做课程设计,有几点感想,归纳如下。
1.扎实的理论基础。如果不掌握它们,很难写出高水平的程序。而这一点又是我们所缺乏的。
2.不钻牛角尖。当遇到障碍的时候,暂时远离电脑,当重新开始工作的时候,也许会发现那些难题现在竟然可以迎刃而解。
3.多与别人交流。三人行必有我师。
4.良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。如果注释和代码不一致,那就更加糟糕。
最后,特别要感谢老师在软件工程和数据库课程中认真负责的教学,才使得我能结合所学的知识完成这一课程设计。
论文关键词C/SSQL2000数据库VB
论文摘要:本文完成了一个基于Client/Server模式的高校图书管理系统的设计与实现。运用结合MicrosoftSQLServer2000开发的登录模块主要用于验证用户身份,进行有效的操作。从主界面模块在验证后进入每个子模块进行各个子系统的具体功能操作。在整个系统设计中充分利用了模块化的设计思想和开发方法。
参考文献
二十一世纪是信息高度交流与发展的时代,面计算机系统则在信息时代扮演着极为重要的脚色,随着计算机的不断发展,计算机以渗透到各个领域,图书馆也不例外,图书馆的计算机化以不容迟缓。
图书馆在正常运营中总是面对大量的读者信息、书籍信息以及两者相互作用产生的借书信息、还书信息。需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利于提高管理效率。作者针对图书馆手工管理的现状,经过详细系统的调查,阐明了图书管理系统的需求和功能,为图书馆管理信息系统的开发打下坚实基础。
一、图书管理系统的需求分析
当决定要开发一个信息系统时,首先要对信息系统的需求进行分析,需求分析要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其他系统元素的接口细节,定义软件的其他有效性需求。
获得当前系统的处理流程,在此首先假设当前系统是手工处理系统。手工处理流程大致是这样的。读者将要借的书和借阅证交给工作人员,工作人员将每本书附带的描述书信息的卡和读者借阅证一起放在一个小格栏,并在借阅证和每本书上贴的借阅信息。这样借书过程就完成了。还书时读者将要还的图书交给工作人员,工作人员图书信息找到相应的书卡和借阅证,并填写相应的还书信息。
抽象出当前系统的逻辑模型。在理解当前系统“怎么做”的基础上,抽取其“做什么”的本质,从而从当前系统的物理模型抽象出当前系统的逻辑模型。在物理模型中有许多物理因素,随着分析工作的深入,有些非本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的物理因素就成为不必要的负担,因而需要对物理模型进行分析,区分出本质的和非本质的困素,去掉那些非本质的困素即可获得反映系统本质的逻辑模型。
建立目标系统的逻辑模型。分析目标系统与当前系统逻辑上的差别,明确目标系统到底要“做什么”,从而从当前系统的逻辑模型导出目标系统的逻辑模型。在对上述流程进行分析后,我们对新的图书处理流程进行整理,图书馆借还书过程如下:
借书过程:读者从架上选到所需图书后,将图书和借书卡交管理人员,管理人员用码阅读器将图书和借书卡上的读者条码2码读入处理系统。系统根据读者条码从读者文件和借阅文件中找到相应记录;根据图书上的条码从图书文件中找到相应记录,读者如果有如下列情况之一将不予办理借书手续。
①读者所借阅图书已超过该读者容许的最多借书数目。
②该读者记录中有止借标志。
③该读者还有已超过归还日期而仍未归还的图书。
④该图书暂停外借。
若读者符合所有借书条件时,予以借出。系统在借阅文件中增加一条记录,记入读者码、图书条码、借阅日期等内容。
还书过程:还书时读者只要将书交给管理人员,管理员将书上的图书条码读入系统,系统从借阅文件上找到相应记录,填上还书日期后写入借阅历史文件,并从借阅文件上删去相应记录,同时系统对借还书日期进行计算并判断是否超期,若不超期则结束过程,若超期则计算出超期天数、罚款数、并打印罚款通知书,记入罚款文件。同时在读者记录上作止借标记。当读者交来罚款收据后,系统根据读者条码查罚款文件,将相应记录写入罚款历史文件,并从罚款文件只删除该记录,同时去掉读者文件中的止借标记。
为了对图书管理系统做完整的描述,还需要对上面得到的逻辑模型做一些补充.首先采用图形的方式描述图书管理系统的用户界面,这样做的目的是保证整个系统的用户界面的一致性,同时也有国助于后续的开发人员更好地理解系统需要实现的功能.其次,说明图书管理系统的一些特珠性能要求。如借书、还书服务花费的时间一次不得大于5分钟等。
前面着重对借还书流程进行了说细的阐述,下面介绍图书管理系统的总体功能要求。简单的图书管理系统主要包括下面的功能:
>借书处理:完成读者借书这一业务流程。
>还书处理:完成读者还书这一业务流程。
>罚款处理:解决读者借书超期的罚款处理。
>新书上架:输入新书资料。
>旧书淘汰:删除图书资料。
>读者查询:根据读者号,查询读者借阅情况。
二、图书管理系统的功能分析
系统功能分析是在系统开发的总体任务的基础上完成。图书馆管理信息系统需要完成功能主要有:
有关读者种类标准的制定、种类住处的输入,包括种类编号、种类名称、借书数量、借书期限、有效期限、备注等。
读者种类信息的修改、查询等。
读者基本信息的输入,包括读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、电子邮件地址、办证日期、备注等。
读者基本信息的查询、修改,包括读者编号、读者姓名、读者种类、读者性别、工作单位、家庭住址、电话号码、电子邮件地址、办证日期、备注等等。
书籍类别标准的制定、类别信息的输入,包括类别编号、类别名称、关键词、备注信息等。
书籍信息的输入,包括书籍编号、书籍名称、书籍名称、书籍类别、作者姓名、出版社名称、出版日期、书籍页书、关键词、登记日期、备注信息等。
借书信息的输入,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、备注信息等。
借书信息的查询、修改,包括借书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、备注信息等。
还书信息的输入,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期、备注信息等。
还书信息的查询和修改,包括还书信息编号、读者编号、读者姓名、书籍编号、书籍姓名、借书日期、还书日期、备注信息等。
参考文献
[1]EWinemiller,J.Roff,着.VisualBasic6.0数据库开发.清华大学出版社,1999.
因此本人结合开入式图书馆的要求,对MSSQLServer2000数据库管理系统、SQL语言原理、Delphi应用程序设计,Delphi数据库技术进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块划分、数据库模式分析,并由此设计了数据库结构和应用程序。系统运行结果证明,本文所设计的图书管理系统可以满足借阅者、图书馆工作人员和高级管理员三方面的需要。
第一章对数据库应用系统开发和图书管理系统进行了简明的介绍,并分析了开发图书管理系统所应进行的工作。
第二章对数据库的设计和SQL语言的使用进行了系统分析,为深入理解数据库应用打下了基础。
第三章学习了具体的开发工具Delphi6.0,对其数据库组件,SQL语言在Delphi中的应用等数据库编程关键技术进行了系统的介绍。
第四章分析了图书管理信息系统的应用需求,按照数据库设计理论一步一步地给出了系统需求说明书、局部ER图、全局ER图、系统关系模式,子模式,利用MSSQLServer2000建立了数据库
第五章进行了具体的程序设计,具体划分了三类用户的操作权限,设计了了三个操作界面。实现了数据库表的浏览,记录的添加、删除和修改,报表的生成,实现了多数据库表的连接操作,实现了多条件查询和模糊查询,并灵活实现了对不可更新查询结果集的更新操作,实现了主从表操作,实现了密码维护功能,最后,系统还可以导入数据库以对任意同结构的数据库进行操作。
设计充分利用Delphi6、MSSQLServer2000数据库技术的强大力量,提高了编程效率和可靠性。
关键词:数据库,SQL语言,MSSQLServer,Delphi6,
数据库组件,图书管理,窗体,listview组件
目录
摘要………………………………………………………………………………I
第一章绪论……………………………………………………………………1
§1.1数据库应用系统开发简介………………………………………………1
§1.2图书管理系统………………………………………………………4
§1.3本文所做的主要工作……………………………………………………6
第二章数据库理论基础…………………………………………………………7
§2.1数据库系统设计及范式分析……………………………………………7
§2.2SQL语言介绍…………………………………………………………………11
2.2.1SQL基础…………………………………………………………………11
2.2.2SQL语句…………………………………………………………………12
第三章应用系统开发工具…………………………………………………16
§3.1Delphi6.0VCL组件的体系结构………………………………………16
§3.2数据库组件介绍……………………………………………………………17
§3.3SQL语言在Delphi中的应用……………………………………………18
§3.4MSSQLServer简述……………………………………………………22
第四章图书管理系统设计分析…………………………………………24
§4.1应用需求分析……………………………………………………………24
§4.2系统功能模块划分………………………………………………………29
§4.3系统数据库设计…………………………………………………………29
第五章图书管理系统应用程序设计……………………………………37
§5.1系统窗体模块组成…………………………………………………………37
§5.2数据模块窗体的设置………………………………………………………37
§5.3启动画面的实现……………………………………………………………38
§5.4用户登录窗体的的实现………………………………………………………39
§5.5用户密码认证窗体的的实现…………………………………………………39
§5.6借阅者服务模块的实现……………………………………………………40
5.6.1图书查询功能的实现…………………………………………………41
5.6.2借阅者登录功能的实现…………………………………………………42
5.6.3借阅者借阅情况功能的实现……………………………………………43
5.6.4借阅者个人资料维护功能的实现………………………………………47
§5.7工作人员-图书借阅/归还模块的实现………………………………………49
5.7.1工作人员进行图书借阅功能实现………………………………………50
5.7.2工作人员进行图书归还功能实现………………………………………53
§5.8图书馆管理员模块的实现……………………………………………54
5.8.1图书馆管理员图书管理功能的实现……………………………………55
5.8.2图书馆管理员工作人员和管理员管理功能的实现……………………58
5.8.3图书馆管理员修改图书类别及统记功能的实现………………………60
5.8.4图书馆管理员借阅者管理功能的实现…………………………………62
5.8.5图书馆维护借阅者管理功能的实现…………………………………62
5.8.6图书馆身份维护功能的实现………………………………………64
5.8.7图书馆借阅者统计功能的实现…………………………………65
5.8.8图书馆统计借阅过期记录功能的实现…………………………67
§5.9系统信息显示的实现…………………………………………………68
第六章结束语………………………………………………………………69
致谢………………………………………………………………………………70
参考书目……………………………………………………………………………70
第一章绪论
§1.1数据库应用系统开发简介
在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。
数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。
数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,30多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。并且,近年来,随着WorldWideWeb(WWW)的猛增及Internet技术的迅速发展,使得数据库技术之时成为最热门技术之一。
1.1.1数据库
如图1.1显示了数据库系统的主要组件。数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。它主要包括四个要素:用户数据、元数据、索引和应用元数据。
1.1.1.1用户数据
目前,大多数主流数据库管理系统把用户数据表示为关系。现在把关系看作数据表。表的列包含域或属性,表的行包含对应业务环境中的实体的记录。并非所有的关系都同样符合要求,有些关系比其它关系更结构化一些。第二章描述了一个用以产生良好结构关系的过程,称作规范化。
为了对比结构差的关系和结构好的关系之间的差别,以本文所设计的图书管理系统中的图书和图书借阅者关系为例来说明,假若设计关系R1(借书证号,姓名,性别,身份编号,身份证,联系电话,图书编号,图书名称,图书类别,作者,出版社,出版日期,备注,价格,数量);这个关系的问题出在它有关于两个不同主题的数据,就是图书借阅者和图书。用这种方式构成的关系在进行修改时,会出现问题。因为一个图书借阅者可能借阅多本书,如果某个图书借阅者的某个字段(如联系电话)出现变更,它所借阅的图书记录(可能多个)也就必须变化,这是不好的。因此数据用两个关系表示更好。现在如果某图书借阅者改变了它的联系电话,只有关系(表)user的对应行需要改变。当然,要想产生一个,显示图书名称及其借阅者联系电话的报表,就需要将这两个表的行结合起来。结果表明,将关系分别存储,在生成报表的时候将它们结合起来,比把它们存储在一个合成的表中更好。
user(借书证号,姓名,性别,身份编号,身份证,联系电话,)
book(图书编号,图书名称,图书类别,作者,出版社,出版日期,备注,价格,数量)
1.1.1.2元数据
数据库是自描述的,这就意味着它自身包含了它的结构的描述,这种结构的描述称作元数据。因为DBMS产品是用来存储和操纵表的,所以大多数产品把元数据以表的形式存储,有时称作系统表。这些系统表存储了数据库中表的情况,指出每一个表中有多少列,那一列是主关键字,每一列的数据类型的描述,它也存储索引、关键字、规则和数据库结构的其他部分。
在表中存储元数据不仅对DBMS是有效的,对用户也是方便的,因为他们可以使用与查询用户数据同样的查询工具来查询元数据。本文第二章所介绍的SQL语言可以同时用于元数据和用户数据。
1.1.1.3索引
第三种类型的数据改进了数据库的性能和可访问性,这种数据经常称作开销数据,尽管有时也采用其他类型的数据结构,如链表,但它主要还是索引。索引可以用来排序和快速访问数据。下面以本人的图书管理信息系统中的book表为例来说明。
假定数据在磁盘上是按’图书编号’的递增顺序排列的,用户想打印一个按’图书名称’排序的图书数据报表。为此,所有的数据都需要从源表中提取出来并排序,除非表很小,否则这是一个很费时的过程。或者,可以在‘图书名称’字段上创建一个索引,该索引的条目按照‘图书名称’排序,这样,该索引的条目可以读出来,并用来按顺序访问book数据。
索引用于快速访问数据。例如,一个用户只想访问book表中‘图书类别’值为‘01’的那些学生。如果没有索引,则必须搜索整个源表;但有了索引之后,可以找到索引条目,并使用它来挑选所有合适的行。
索引对排序和查找是有帮助的,但要付出代价。book表中的行每次改变时,索引也必须改变,这意味着索引并非随意的,应该在真正需要时保存。
1.1.1.4应用元数据
存储在数据库中的第四种数据是应用元数据,它用来存储用户窗体、报表、查询和其他形式的查询组件。并非所有的DBMS都支持应用组件,支持组件的DBMS也不一定把全部组件的结构作为应用元数据存储在数据库中。然而,大多数现代的DBMS产品存储这种数据作为数据库的一部分。一般来说,数据库开发人员和用户都不直接访问应用元数据,想反,他们通过DBMS中的工具来处理这些数据。
MSSQLServer2000中就支持窗体、存储过程等应用元数据。
1.1.2数据库管理系统
数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。DBMS是数据库系统的核心组成部分。对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。MSSQLServer2000就是一种关系型数据库管理系统。
关系模型。关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。
关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。
如图1.1所示,DBMS的特点和功能可以分为三个子系统:设计工具子系统、运行子系统和DBMS引擎。
设计子系统有一个方便数据库及其应用创建的工具集。它典型地包含产生表、窗体、查询和报表的工具。DBMS产品还提供编程语言和对编程语言的接口。
运行子系统处理用设计子系统开发的应用组件。它所包含的运行处理器用来处理窗体和数据库的数据交互,以及回答查询和打印报表等。
DBMS引擎从其他两个组件接受请求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。DBMS引擎还涉及事务管理、锁、备份和恢复。
1.1.3创建数据库
1.1.3.1数据库模式
数据库模式定义了数据库的结构、表、关系、域和业务规则。数据库模式是一种设计,数据库和应用正是建立在此基础上的。
域是一列可能拥有的值的集合。必须为每一个表的每一定域。除了数据的物理格式外,还需要确定是否有些域对表来说是唯一的。
数据库模式的最后一个要素是业务规则,它是对需要反映在数据库和数据库应用程序中的业务活动的约束。业务规则是模式的一个重要部分,因为他们指定了无论什么数据变化到达DBMS引擎,允许的数据值必须满足的约束。不管无效的数据变化请求是来自窗体的用户、查询/修改请求还是应用程序,DBMS都应该拒绝。
遗憾的是,不同的DBMS产品用不同的方法实施业务规则。在某些情况下,DBMS产品不具备实施必要业务规则的能力,必须以代码形式把它们编入应用程序。
1.1.3.2创建表
1.1.3.3定义联系
1.1.4应用组件
数据库应用包括窗体、查询、报表、菜单和应用程序。
§1.2图书管理系统
当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。
数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。
基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
§1.1系统所做工作
1)了解应用开发工具的现状
2)DelPHi6.0编程基础
3)MSSQLServer基础
4)设计数据库;设计界面
5)开发数据库。数据库实现的一些功能有
l数据和数据说明的醒目显示;
l多条件的查询、多条记录的检索、模糊查询;
l数据文件某种存储格式导入数据窗体,经过数据完整性校验存入数据库;
l数据库安全性的设计;
l数据库的设计、数据接口、界面的设计。
§1.3本文所作工作
绪论部分对数据库应用系统的结构、开发进行了简要介绍,分析了图书管理信息系统设计的特点和任务。
第二章介绍了数据库的设计和范式分析,并系统介绍了SQL语言,为设计和理解应用程序做了铺垫。
第三章对系统介绍了Delphi6.0的数据库编程技术、SQL语言在Delphi6.0中的应用、MSSQLServer基础。
第四章分析了图书管理系统的应用需求,设计了系统的数据库结构,并根据需求对系统功能进行了划分和细化。
第五章根据第四章的设计结果利用MSSQLServer2000和Delphi6.0进行了具体的应用程序设计。
总结部分介绍了设计体会和编程体会,并指出了系统设计中的不足和改进的方向。
第二章数据库理论基础
一个成功的信息管理系统,是建立在许多条件之上的,而数据库是其中一个非常重要的条件和关键技术。
信息管理系统所涉及的数据库设计分五个步骤:数据库需求分析、概念设计、逻辑设计、物理设计与加载测试。
(1)数据库需求分析的任务是将业务管理单证流化为数据流,划分主题之间的边界,绘制出DFD图,并完成相应的数据字典。
(2)概念设计的任务是从DFD出发,绘制出本主题的实体-关系图,并列出各个实体与关系的纲要表。
(3)逻辑设计的任务是从E-R图与对应的纲要表出发,确定各个实体及关系的表名属性。
(4)物理设计的任务是确定所有属性的类型、宽度与取值范围,设计出基本表的主键,将所有的表名与字段名英文化(现在很多软件能支持中文字段,如MSSQLServer,我就是用的中文字段名),实现物理建库,完成数据库物理设计字典。
(5)加载测试工作贯穿于程序测试工作的全过程,整个录入、修改、查询、处理工作均可视为对数据库的加载测试工作。
要设计出一个好的信息管理系统数据库,除满足系统所要求的功能外,还必须遵守下列原则:
²基本表的个数越少越好。
²主键的个数越少越好。键是表间连接的工具,主键越少,表间的连接就越简单。
²字段的个数越少越好。
²所有基本表的设计均应尽量符合第三范式。
数据库的设计中,如何处理多对多的关系和如何设计主键,是两个有着较大难度、需要重点考虑的问题。下面我们着重从SQL应用、数据库设计范式和查询优化等方面来分析本课题的系统关键技术和实现难点并加以解决。
§2.1数据库系统设计及范式分析
信息系统的主要任务是通过大量的数据获得管理所需要的信息,这就必须存储和管理大量的数据。因此建立一个良好的数据组织结构和数据库,使整个系统都可以迅速、方便、准确地调用和管理所需的数据,是衡量信息系统开发工作好坏的主要指标之一。
2.1.1数据库系统设计
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类、分组系统和逻辑层次组织起来,是面向用户的。数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
数据库设计的步骤是:
(1)数据库结构定义:目前的数据库管理系统(DBMS)有的是支持联机事务处理CLTP(负责对事务数据进行采集、处理、存储)的操作型DBMS,有的可支持数据仓库、有联机分析处理CLAP(指为支持决策的制定对数据的一种加工操作)功能的大型DBMS,有的数据库是关系型的、有的可支持面向对象数据库。针对选择的DBMS,进行数据库结构定义。
(2)数据表定义:数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:属性名称、类型、表示形式、缺省值、校验规则、是否关键字、可否为空等。关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程度应根据应用环境和条件来决定。数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。
(3)存储设备和存储空间组织:确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。
(4)数据使用权限设置:针对用户的不同使用要求,确定数据的用户使用权限,确保数据安全。
(5)数据字典设计:用数据字典描述数据库的设计,便于维护和修改。
为了更好地组织数据和设计出实际应用数据库,应该注意如下问题:
规范化地重组数据结构:对数据进行规范化表达,这在后面将会具体讨论。
关系数据结构的建立:在进行了数据基本结构的规范化重组后,还必须建立整体数据的关系结构。这一步设计完成后数据库和数据结构设计工作基本完成,只待系统实现时将数据分析和数据字典的内容代入到所设计的数据整体关系结构中,一个规范化数据库系统结构就建立起来了。
建立关系数据结构涉及三方面内容:确定关联的关键指标项并建立关联表;确定单一的父系记录结构;建立整个数据库的关系结构。
(1)链接关系的确定
在进行了上述数据规范化重组后,已经可以确保每一个基本数据表(我们简称为表)是规范的,但是这些单独的表并不能完整地反映事物,通常需要通过指标体系整体指标数据才能完整全面地反映问题。也就是说在这些基本表的各宇段中,所存储的是同一事物不同侧面的属性。那么计算机系统如何能知道哪些表中的哪些记录应与其它表中的哪些记录相对应,它们表示的是同一个事物呢?这就需要在设计数据结构时将这种各表之间的数据记录关系确定下来。这种表与表之间的数据关系一般都是通过主或辅关键词之间的连接来实现的。因为在每个表中只有主关键词才能唯一地标识表中的这一个记录值(因为根据第三范式的要求,表中其它数据字段函数都依赖于主关键词),所以将表通过关键词连接就能够唯一地标识出某一事物不同属性在不同表中的存放位置。
(2)确定单一的父子关系结构
所谓确定单一的父系关系结构就是要在所建立的各种表中消除多对多(以下用M:N来表示)的现象,即设法使得所有表中记录之间的关系呈树状结构(只能由一个主干发出若干条分支,而不能有若干条主干交错发出若干条分支状况)。所谓的“父系”就是指表的上一级关系表。消除多对多关系可以借助于E-R图的方法来解决,也可以在系统分析时予以注意,避免这种情况的发生。
消除这种M:N情况的办法也很简单,只需在二表之间增加一个表,则原来M:N的关系就改成了M:1,1:N的关系了。
确定数据资源的安全保密属性:
一般DBMS都提供给我们自己定义数据安全保密性的功能。系统所提供的安全保密功能一般有8个等级(0-7级),4种不同方式(只读、只写、删除、修改),而且允许用户利用这8个等级的4种方式对每一个表自由地进行定义。
定义安全保密性的方法一般有如下几种:
a.原则上所有文件都定义为4级,个别优先级特别高的办公室(终端或微机的入网账号)可定义高于4级的级别,反之则定义为低于4的级别。
b.统计文件(表)和数据录入文件一般只对本工作站定义为只写方式,对其它工作站则定义为只读方式。
c.财务等保密文件一般只对中工作站(如财务科等)定义为可写、可改、可删除方式,对其它工作站则定义为只读方式,而且不是每个人都能读,只有级别相同和高级别者才能读。
2.1.2数据库设计范式分析
建立起一个良好的数据指标体系,是建立数据结构和数据库的最重要的一环。一个良好的数据指标体系是建立DB的必要条件,但不是充分条件。我们完全可以认为所建指标体系中的一个指标类就是关系数据库中的一个基本表,而这个指标类下面的一个个具体指标就是这个基本表中的一个字段。但如果直接按照这种方式建库显然还不能算最佳。对于指标体系中数据的结构在建库前还必须进行规范化的重新组织。
a.数据组织的规范化形式
在数据的规范化表达中,一般将一组相互关联的数据称为一个关系(relation),而在这个关系下的每个数据指标项则被称为数据元素(dataelement),这种关系落实到具体数据库上就是基本表,而数据元素就是基本表中的一个字段(field)。规范化表达还规定在每一个基本表中必须定义一个数据元素为关键字(key),它可以唯一地标识出该表中其它相关的数据元素。在规范化理论中表是二维的,它有如下四个性质:
l在表中的任意一列上,数据项应属于同一个属性(如图中每一列都存放着不同合同记录的同一属性数据)。
l表中所有行都是不相同的,不允许有重复组项出现(如图中每一行都是一个不同的合同记录)。
l在表中,行的顺序无关紧要(如图中每行存的都是合同记录,至于先放哪一个合同都没关系)。
l在表中,列的顺序无关紧要,但不能重复(如图中合同号和合同名谁先谁后都没关系,但二者不可重复或同名)。
在对表的形式进行了规范化定义后,数据结构还有五种规范化定义,定名为规范化模式,称为范式。在这五种范式中,一般只用前三种,对于常用系统就足够了。而且这五种范式是“向上兼容”的,即满足第五范式的数据结构自动满足一、二、三、四范式,满足第四范式的数据结构自动满足第一、二、三范式,……,依此类推。
第一范式(firstnormalform,简称1stNF)就是指在同一表中没有重复项出现,如果有则应将重复项去掉。这个去掉重复项的过程就称之为规范化处理。在本文所讨论的开发方法里,1stNF实际上是没有什么意义的。因为我们按规范化建立的指标体系和表的过程都自动保证了所有表都满足1stNF。
第二范式(secondnormalform,简称2ndNF)是指每个表必须有一个(而且仅一个)数据元素为主关键字(primarykey),其它数据元素与主关键字一一对应。例如,在图l9.7中如果我们将合同号定义为主关键字(其它数据元素中的记录数据都有可能重名,故不能作为主关键字),故只要知道了一个合同记录的合同号,就可以唯一地在同一行中找到该合同的任何一项具体信息。通常我们称这种关系为函数依赖(functionaldepEndence)关系。即表中其它数据元素都依赖于主关键字,或称该数据元素唯一地被主关键字所标识。
第三范式(thirdnormalform,简称3rdNF)就是指表中的所有数据元素不但要能够唯一地被主关键字所标识,而且它们之间还必须相互独立,不存在其它的函数关系。也就是说对于一个满足了2ndNF的数据结构来说,表中有可能存在某些数据元素依赖于其它非关键宇数据元素的现象,必须加以消除。
为防止数据库出现更新异常、插入异常、删除异常、数据冗余太大等现象,关系型数据库要尽量按关系规范化要求进行数据库设计。
§2.2SQL语言介绍
2.2.1SQL基础
SQL(StructuredQueryLanguage,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。使用SQL的常见关系数据库管理系统有:Oracle、Sybase、MicrosoftSQLServer、Access、Ingres等等。虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如"Select"、"Insert"、"Update"、"Delete"、"Create"和"Drop"常常被用于完成绝大多数数据库的操作。MSSQLServer就是用的Transact-SQL。
SQL语言有着非常突出的优点,主要是:
n非过程化语言
n统一的语言
n是所有关系数据库的公共语言
非过程化语言:SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。
SQL不要求用户指定对数据的存放方法,这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。
统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。
SQL为许多任务提供了命令,其中包括:
n查询数据
n在表中插入、修改和删除记录
n建立、修改和删除数据对象
n控制对数据和数据对象的存取
n保证数据库一致性和完整性
以前的数据库管理系统为上述各类操作提供单独的语言,而SQL将全部任务统一在一种语言中。
所有关系数据库的公共语言:由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。
2.2.2SQL语句
SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:
DML(DataManipulationLanguage,数据操作语言):用于检索或者修改数据;
DDL(DataDefinitionLanguage,数据定义语言):用于定义数据的结构,比如创建、修改或者删除数据库对象;
DCL(DataControlLanguage,数据控制语言):用于定义数据库用户的权限。
DML组可以细分为以下的几个语句:
SELECT:用于检索数据;
INSERT:用于增加数据到数据库;
UPDATE:用于从数据库中修改现存的数据;
DELETE:用于从数据库中删除数据。
DDL语句可以用于创建用户和重建数据库对象。下面是DDL命令:
CREATETABLE,ALTERTABLE,DROPTABLE,CREATEINDEX,DROPINDEX
下面是一个简单SQL语句的例子:
我们使用SQL语句来从Book中检索‘借书证号’为‘000001’的借阅者姓名:
SELECT姓名FROMBookWHERE借书证号=‘000001’
2.2.2.1DDL与DML
数据定义语言DDL:它是用来创建和修改数据库结构的一种语句,包括Create、Alter和Drop语句。
数据操作语言DML:包括数据查询与数据更新。数据查询主要是由Select语句完成,这一点不再赘述。而数据更新所造成的风险大大超过数据查询。数据库管理系统必须在更改期内保护所存储的数据的一致性,确保有效的数据进入数据库,数据库必须保持一致性,DBMS还必须协调多用户的并行更新,以确保用户和它们的更改不至于影响其它用户的作业。
用于修改数据库内容的SQL语句主要有以下三个:
(1)Insert,向一个表中加入新的数据行
(2)Delete,从一个表中删除数据行
(3)Update,更改数据库中已经存在的数据
Insert标准语法:
INSERTINTOtable_name(col1,col2...)VALUES(value1,value2...)
下例要将借书证号为‘000001’作为一个新的借书情况加入借书情况表OWNER中
InsertInto
owner(借书证号,图书编号,借书日期)
values(‘000001’,‘00000001’,‘2002-9-12’)
Insert语句还可以将多行数据添加到目标表中去,在这种形式的Insert语句中,新行的数据值不是在语句正文中明确地指定的,而是语句中指定的一个数据库查询。添加的值来自数据库自身的行,在某些特定的状态下,这是非常有用的。多行Insert语句为拷贝数据提供了一种紧凑而高效的方法,但我在自已做的图书管理系统中没有使用这种方法,我在系统中是使用循环依照上面的用法来完成多个记录的插入。
Update语句用于更新单表中选定行的一列或多列的值。要更新的目标表在语句中定义,Set子句则指定要更新哪些列并计算它们的值。Update语句总是包含Where语句,而且Update语句比较危险,所以您必须明确地认识到Where语句的重要性,Where语句被用来指定需要更新的行。
标准语法:
UPDATEtable_name
SETcolumnname1=value1
[,columname2=value2]...
WHEREsearch_condition
Delete语句标准语法:
DELETEFROMtablenameWHEREcondition
2.2.2.2复杂操作实现
在信息管理系统中,我们往往会遇到归类、汇总、映射、索引、子查询等复杂操作,相应的支持与实现如下:
uGROUPBY方法
GROUPBY子句语法为:
SELECTcolumn1,SUM(column2)
FROM"list-of-tables"
GROUPBY"column-list";
这个GROUPBY子句将集中所有的行在一起,它包含了指定列的数据以及允许合计函数来计算一个或者多个列。
在本人的系统中在显示数据时用到了此语句来对查询所得的内容排序然后再显示。
u组合条件和布尔运算符
以下的SQL语句中就含有组合条件:
SELECTcolumn1,SUM(column2)
FROM"list-of-tables"
WHERE"condition1"AND"condition2";
下面是一个示例:
SELECT身份描述
FROMID,user
WHEREID.身份编号=USER.身份编号anduser.借书证号=’000001’;
这条SQL语句是从user、id表中查找借阅证号为000001的借阅者的身份描述,第三条语句中如果其中有一个条件为假,那么就什么都没有显示。
uUNION子句
有些时候,需要一起浏览多个查询的结果、组合它们的输出,我们可以使用UNION关键字。
第三章应用系统开发工具
§3.1Delphi6.0VCL组件的体系结构
Delphi类可以粗略地分成两部分:一部分是组件类,这些组件类通常以某种方式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象(非可视组件除外);另一部分是功能类,这此功能类的对象通常出现在程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。在Delphi中,每一个类的祖先都是Tobject类,整个类的层次结构就像一棵倒挂的树,在最顶层的树根即为Tobject类。这样,按照面向对象编程的基本思想,就使得用户可用Tobject类这个类型代替任何其它类的数据类型。实际上在Delphi的类库中,Tobject类派生出了为数相当众多的子类,它们形成了一个庞大的体系,通常情况下,如果不自行开发组件,就不必了解整个类的体系结构,只用到类层次树的叶结点就足够了。
这一小节简略介绍一下Delphi6.0中VCL(可视化组件库)组件的体系结构。凡是做过程序开发的人都知道从来没有单纯的数据应用程序,也就是说,数据库应用程序必须和用户界面(可以是图形界面,也可以是命令接口)元素相结合,只讲界面或只讲数据库本身都构不成数据库应用程序,因而用Delphi6.0开发数据库应用程序就隐含着界面开发。Delphi6中的VCL组件可用图3-1来说明。
组件在Delphi程序的开发中是最显眼的角色。大家知道,在编写程序时一般都开始于在组件面板上选择组件并定义组件间的相互作用。但也有一些组件不在组件面板上,例如Tform和Tapplication(典型的非可视组件)。组件是Tcomponents派生出来的子类,可以流的形式存放在DFM文件中,具有事件和Publish属性。
窗口组件类是窗口化的可视化组件类,在Delphi的类库中占有最大的份额。在实际编程中,窗口组件类的对象都有句柄,可以接受输入焦点和包含其它组件。
图形组件与窗口组件并列,是另一大类组件。图形组件不是基于窗口的,因而不能有窗口句柄,不能接受输入焦点和包含其它组件。从图8-43中可以看出,图形组件的基类是TgraphicControl,在实际编程中,它们必须寄生于它们的宿主——窗口组件类的对象,由它们的拥有者负责其显示,而且它们还能触发一些和鼠标活动相关的事件。图形控件最典型的例子是Tlabel和TspeedButton。由此可以看出图形组件的功能很弱,图形组件的用处何在呢?其实使用图形组件的最大好处在于节省资源,正是因为它们的功能较弱,所以使用的系统资源就要少。在一个应用程序中,如果能在不影响其功能的前提下合理大量地使用图形组件,将会大减少程序对系统资源的消耗。
非可视组件是与可视组件相并列的另一类组件,非可视组件在程序运行中是不可见的(除各种对话框组件之外,事实上有人认为对话框组件不能归入非可视组件,应该是另一种介于可视与非可视之间的组件)。
最后要说明一下,常说的控件实际上是一种组件。也就是说组件这个概念要大于控件,控件在内涵上包含于组件中。控件由Windows系列操作系统提出并使用,而组件是Borland和其它厂商在对Windows控件做了必要的扩展之后提出来的概念,它们是在不同时期由不同的厂商提出的概念。
§3.2数据库组件介绍
用Delphi6开发数据库应用,重点是和各种数据库组件打交道,能和数据库挂钩的组件对象有5种,它们是:Session(数据库会话)、Database(数据库)、Dataset(数据集)、DataSource(数据源)、Datacontrol(数据控制组件,也叫data-controls即数据感知组件)。其中前面4种统称为数据访问(DataAccess)组件。这些组件的相互关系如图3-2所示。
ADO组件Delphi6.0包含了可以用来访问Microsoft公司的ActiveXDataObjects(ADO)格式数据库的组件。ADO是Micrsoft公司关于各种类型数据的高等界面,后来逐渐演变成满足所有数据访问需要的完整解决办法。ADO的对象模型是所有数据访问接口对象模型中最简单的一种。Microsoft公司用来访问ADO数据的应用程序界面技术是OLEDB。OLEDB是一种底层编程接口,用来访问许多不同类型的数据源,其中包括消息、文件系统以及其他一些非传统的数据源。OLEDB是一个由ComponentObjectModel(COM)接口组成的集合,用来隐藏创建数据访问服务过程中的细节。OLEDB提供了访问任何数据资源的方法,包括相互关联的数据库和相互不关联的数据库、Email和文件系统、文本和图形以及用户定义的数据对象。
Delphi的ADO组件无需依靠BDE而是使用ADO技术,提供了可以通过数据控制组件访问数据的新方法。唯一的要求是在使用ADO组件时必须运行ADO/OLE-DB。ADO组件的使用使得DELPHI在访问数据的类型和采用的技术方面都有了很大的突破。
数据模块设计窗口数据模块设计窗口是用来设计和维护数据模块的。数据模块设计窗口中包含了所有以.DTI作为文件扩展名的DataDiagram文件的信息。DTI文件在编译时不起任何作用。
§3.3SQL语言在Delphi中的应用
在Delphi中使用SQL语言非常方便,一般来说,都是通过Tquery或TADOquery组件来使用SQL语言的。可以在Tquery或TADOquery组件的SQL属性中设置SQL语句。设计程序时,在该组件的属性对话框中选择SQL属性,单击带省略号的按钮,就可以打开StringListEditor对话框,然后我们就可以在对话框中添加SQL语句。还可以使用Delphi的SQLBuilder来自动生成SQL语句,这样可以避免手工编写SQL而可能造成的语法错误。
静态SQL语句在程序设计时便已固定下来,它不包含任何参数和变量。
动态SQL语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参数,例如下面的语句是一条动态SQL语句:
Select*FromBookWhere图书编号=:bookCode;
其中的变量bookCode便是一个参数变量,它由一个冒号引导,在程序运行过程中,必须要为该参数赋值,该条SQL语句才能正确执行,每次运行应用程序时可以为该参数变量赋予不同的值。为参数赋值有三种方法:
①根据参数在SQL语句中出现的顺序,设置TADOQuery组件的parameters属性值为参数赋值。
②直接根据SQL语句中各参数的名字,调用ParamByName方法来为各参数赋值。
③将TADOQuery组件的DataSource属性设置为另一个数据源,这样将另一个数据源中与当前TADOQuery组件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。利用这种方法也能实现所谓的连接查询,创建主要—明细型数据库应用。
在使用动态SQL语句编程时,常常用到一个很重要的方法Prepare,调用Prepare方法之后,Delphi会将带参数的SQL语句传送给与其对应的数据库引擎,对动态SQL语句进行语法分析和优化。虽然在用动态SQL语句编程时,调用Prepare方法并不是必须的,但是调用Prepare方法后,会极大地提高动态SQL语句的执行性能,特别是当要反复多次执行同一条动态SQL语句时,其优越性会更加明显。如果在应用程序中执行一条SQL语句之前并没有显式地调用Prepare方法,每次在执行SQL语句时,Delphi会隐含地调用Prepare方法以准备这个查询。
TadoQuery部件还有一个Prepare属性,这是一个布尔型属性,当其属性值为True时,表明该查询已被准备好了(SQL语句已被传送到数据库引擎中),当我们使用参数编辑器ParametersEditor来为动态SQL语句中的参数赋值时,当设置完相应的参数值并退出参数编辑器时,Delphi会隐含地调用Prepare方法以准备好查询。
当SQL语句执行完之后,要想准备下一个查询,首先必须调用Close方法,然后才能调用Prepare方法准备下一个查询。一般来说,在一个应用程序中应该调用一次Prepare方法,常常在窗体的OnCreate事件处理过程中调用Prepare方法,然后用上述介绍的方法为参数赋值,最后调用Open方法或ExecSQL方法执行SQL语句,以完成查询。
当然在调用Prepare方法准备好一个查询时,会消耗一些数据库资源,因而每当一个查询执行完毕之后,要养成调用UnPrepare方法以撤消查询的好习惯。在运行程序过程中,通过程序改变TQuery或TADOquery部件的SQL属性值时,Delphi会自动地调用Close方法和UnPrepare方法,以撤消查询。
在程序运行过程中,要想设置Tquery或TADOquery部件的SQL属性,必须首先调用Close方法,关闭TQuery或TADOquery部件,然后再调用Clear方法清除SQL属性中现存的SQL命令语句,最后再调用Add方法为SQL属性设置新的SQL命令语句。例如:
datamodule4.adoquery2.close;
datamodule4.adoquery2.sql.clear;
datamodule4.adoquery2.sql.add(''''SELECT借书证号,密码FROM[user]WHERE(借书证号=:tt)'''');
datamodule4.adoquery2.parameters[0].value:=username;
datamodule4.adoquery2.open;
在为TQuery或TADOquery部件设置SQL属性时调用Close方法总是很安全的,如果TQuery或TADOquery部件已经被关闭了,调用Close方法时不会产生任何影响。在应用程序中为SQL属性设置新的SQL命令语句时,必须要调用Clear方法以清除SQL属性中现存的SQL命令语句,如果不调用Clear方法,便调用Add方法向SQL属性中设置SQL命令语句,那么新设置的SQL命令语句会追加在现存SQL命令语句后面,在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。
在这里要特别注意的,一般情况下TQuery或TADOquery部件的SQL属性只能包含一条完整的SQL语句,它不允许被设置成多条SQL语句。当然有些数据库服务器也支持在TQuery或TADOquery部件的SQL属性中设置多条SQL语句,只要数据库服务器允许这样,我们在编程时可以为SQL属性设置多条SQL语句。
在为TQuery或TADOquery部件设置完SQL属性的属性值之后,也即编写好适当的SQL程序之后,可以有多种方式来执行SQL程序。
在设计过程中,设置完TQuery或TADOquery部件的SQL属性之后将其Active属性的值置为True,这样便可以执行SQL属性中的SQL程序,如果应用中有与TQuery或TADOquery部件相连的数据浏览部件(如TDDGridTDBEdit等)那么在这些数据浏览部件中会显示SQL程序的执行结果。
在应用程序运行过程中,通过程序调用TQuery或TADOquery组件的Open方法或ExecSQL方法可以执行其SQL属性中的SQL程序。Open方法和ExecSQL方法是不一样的。Open方法只能用来执行SQL语言的查询语句(Select命令),并返回一个查询结果集,而ExecSQL方法还可以用来执行其它常用的SQL语句(如INSERT,UPDATE,DELETE等命令),例如:
Query1.Open(这样会返回一个查询结果集)
如果调用Open方法,而没有查询结果时,会出错。此时应该调用ExecSQL方法来代替Open方法。如:
Query1.ExecSQL(没有返回结果)
当然在设计应用程序时,程序设计人员是无法确定TQuery或TADOquery组件中的SQL语句是否会返回一个查询结果的。对于这种情况应当用Try…Except模块来设计程序。在Try部分调用Open方法,而在Except部分调用ExceSQL方法,这样才能保证程序的正确运行。
例如:
Try
Query1.Open
Except
Query1.ExecSQL
End
通过Tquery或TADOquery组件可以获得两种类型的数据:
u“活动”的数据
这种数据就跟通过TTable部件获得的数据一样,用户可以通过数据浏览部件来编辑修改这些数据,并且当调用Post方法或当焦点离开当前的数据浏览部件时,用户对数据的修改自动地被写回到数据库中。
u非活动的数据(只读数据)
用户通过数据浏览部件是不能修改其中的数据。在缺省情况下,通过TQuery部件获得的查询结果数据是只读数据,要想获得“活动”的数据,在应用程序中必须要设置Tquery或TADOquery组件的RequestLive属性值为True,然而并不是在任何情况下(通过设置RequestLive的属值True)都可以获得“活动”的数据的,要想获得“活动”的数据,除了将TQuery部件的RequestLive属性设置为True外,相应的SQL命令还要满足以下条件。
本地SQL语句查询情况下,要得到可更新的数据集,SQL语句的限制为:
n查询只能涉及到一个单独的表
nSQL语句中不能包含ORDERBY命令
nSQL语句中不能含聚集运算符SUM或AVG
n在Select后的字段列表中不能有计算字段
n在Select语句WHERE部分只能包含字段值与常量的比较运算,这些比较运算符是:Like,>,<,>=,<=。各比较运算之间可以有并和交运算:AND和OR
当通过SQL语句查询数据库服务器中的数据库表:
n查询只能涉及到一个单独的表
nSQL语句中不能包含ORDERBY命令
nSQL语句中不能含聚集运算符SUM或AVG运算
另外,如果是查询Sybase数据库中的表,那么被查询的表中只能有一个索引。
如果在应用程序中要求TQuery或TADOquery组件返回一个“活动”的查询结果数据集,但是SQL命令语句不满足上述约束条件时,对于本地数据库的SQL查询,BDE只能返回只读的数据集。对于数据库服务器中的SQL查询,只能返回错误的代码。当Tquery或TADOquery组件返回一个“活动”的查询结果数据集时,它的CanModIfy属性的值会被设置成True。
§3.4MSSQLServer简述
SQLServer是一个后台数据库管理系统,它功能强大操作简便,日益为广大数据库用户所喜爱。越来越多的开发工具提供了与SQLServer的接口。SQLServer是一个关系数据库管理系统,它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的。于1988年推出了第一个OS/2版本,在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。
SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统的最新版本,该版本继承了SQLServer7.0版本的优点,同时又比它增加了许多更先进的功能、具有使用方便、可伸缩性好与相关软件集成程度高等优点。可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。MSSQLServer不但可以应用于大中型数据库管理中,建立分布式关系数据库,并且也可以开发桌面数据库。事实上,SQLServer数据库处理的基本结构,采取关系型数据库模式,尽管如此,相信大家都可以轻易的发现,在SQLServer的数据库处理方式,则是使用面向对象的操作方式与精神,也就是说,SQLServer的所有功能,都可以基于系统已经建立好的一些对象来达成,是相当OO(面向对象)的一个系统结构。
SQLServer企业管理器是SQLServer的主要管理工具,它提供了一个遵从MMC标准的用户界面,使用户得以:
·定义SQLServer实例组。
·将个别服务器注册到组中。
·为每个已注册的服务器配置所有SQLServer选项。
·在每个已注册的服务器中创建并管理所有SQLServer数据库、对象、登录、用户和权限。
·在每个已注册的服务器上定义并执行所有SQLServer管理任务。
·通过唤醒调用SQL查询分析器,交互地设计并测试SQL语句、批处理和脚本。
·唤醒调用为SQLServer定义的各种向导。
·
第三章图书管理系统设计分析
§4.1应用需求分析
图书管理系统需要满足来自三方面的需求,这三个方面分别是图书借阅者、图书馆工作人员和图书馆管理人员。图书借阅者的需求是查询图书馆所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看、维护并生成催还图书报表。
图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,若查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码。这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。
图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并打印生成相应的报表给用户查看和确认。
图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行,但是,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。并且还应具有生成催还图书报表,并打印输出的功能。
在本系统中由于没有打印机设备供试验,所以预先把报表打印改成报表预览。
设计不同用户的操作权限和登陆方法
对所有用户开放的图书查询
借阅者维护借阅者个人部分信息
借阅者查看个人借阅情况信息
维护借阅者个人密码
根据借阅情况对数据库进行操作并生成报表
根据还书情况对数据库进行操作并生成报表
查询及统计各种信息
维护图书信息
维护工作人员和管理员信息
维护借阅者信息
处理信息的完整性
对借阅过期的图书生成报表
图4-2图书管理系统数据库应用需求的总结
根据以上所做的需求分析,并略掉一些细节(如不考虑用户的登录;对记录的维护),得出以下的三层数据流图。
§4.2系统功能模块划分
系统功能框图如图4-10所示。
§4.3系统数据库设计
4.3.1概念设计
在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模式。然后再把概念模式转换成逻辑模式。将概念设计从设计过程中独立开来,使各阶段的任务相对单一化,设计复杂程度大大降低,不受特定DBMS的限制。
利用ER方法进行数据库的概念设计,可分成三步进行:首先设计局部ER模式,然后把各局部ER模式综合成一个全局模式,最后对全局ER模式进行优化,得到最终的模式,即概念模式。
(1)设计局部ER模式
实体和属性的定义:
图书(图书编号,图书名称,作者,出版社,出版日期,备注,价格,数量,)
借阅者(借书证号,姓名,性别,身份证,联系电话,密码)
身份(身份编号,身份描述,最大借阅数)
图书类别(图书类别编号,类别描述)
ER模型的“联系”用于刻画实体之间的关联。一种完整的方式是对局部结构中任意两个实体类型,依据需求分析的结果,考察局部结构中任意两个实体类型之间是否存在联系。若有联系,进一步确定是1:N,M:N,还是1:1等。还要考察一个实体类型内部是否存在联系,两个实体类型之间是否存在联系,多个实体类型之间是否存在联系,等等。联系定义如图4-5所示。解释如下:
u一个借阅者(用户)只能具有一种身份,而一种身份可被多个借阅者所具有;
u一本图书只能属于一种图书类别(类别),而一种图书类别可以包含多本图书;
u一个用户可以借阅多本不同的书,而一本书也可以被多个不同的用户所借阅。
(2)设计全局ER模式
所有局部ER模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有局部ER模式,而且必须合理地表示一个完整、一致的数据库概念结构。
1)确定公共实体类型
为了给多个局部ER模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。在这一步中我们仅根据实体类型名和键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选。
2)局部ER模式的合并
合并的原则是:首先进行两两合并;先和合并那些现实世界中有联系的局部结构;合并从公共实体类型开始,最后再加入独立的局部结构。
3)消除冲突
冲突分为三类:属性冲突、结构冲突、命名冲突。
设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模型。
3)全局ER模式的优化
在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。
综上所述,“图书管理系统”的全局ER模式如图4-13所示。
4.3.2关系数据库的逻辑设计
由于概念设计的结果是ER图,DBMS一般采用关系型(本人所使用的MSSQLServer就是关系型的DBMS),因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。
(1)导出初始关系模式
book(图书编号#,图书名称,图书类别#,作者,出版社,出版日期,备注,价格,数量)class(图书类别#,类别名)user(借书证号#,姓名,性别,身份编号#,身份证,联系电话,密码)ID(身份编号#,身份描述,最大借阅数)Owner(借书证号#,图书编号#,借书日期)
图4-14关系模式集
(2)产生子模式
子模式是用户所用到的那部分数据的描述。除了指出用户用到的数据外,还应指出数据与概念模式中相应数据的联系,即指出概念模式与子模式之间的对应性。
借书子模式(借书证号#,姓名,图书编号#,图书名称,借书日期)
图4-15部分子模式
(3)根据设计中出现的问题本人在写系统时还加入了两个关系模式:
1、ownertemp:用于工作人员在处理借书、还书工作时临时存储借书、还书信息,以便打印报表时使用。
2、keyer:用于存储工作人员和图书馆管理员的用户名和密码及权限,以便工作人员或图书馆管理员进入相应的功能模块时进行验证用户的身份。
4.3.3数据库的实现
我选用MicrosoftSQLServer2000(企业版)数据库来进行数据库的逻辑设计。首先创建七个基本数据库表如表4-1-4-7所示,然后根据全局ER图,建立各个表之间的联系,如图4-8所示。
表4-1借阅者基本信息表的结构(User)
表4-2图书信息表的结构(Book)
表4-3图书类别信息表的结构(Class)
表4-4借阅者身份信息表的结构(ID)
表4-5借阅情况信息表的结构(Owner)
表4-6借阅情况临时存储信息表的结构(Ownertemp)
注:在owner表和ownertemp表中加入了索引字段,用来唯一标识一条借书记录,并且设置为标识,标识种子为1。
表4-7工作人员和管理员信息表的结构(Keyer)
图4-8数据库表间联系图
第五章图书管理系统应用程序设计
§5.1系统窗体模块组成
§5.2数据模块窗体的设置
在编写数据库应用程序时,经常要遇到这样的情况,即好多组件、窗体同时访问相同的数据源,如果为每一个组件或者窗体都设置一个数据源将是十分耗时的工件,而且要保证这些数据源的确是相同的也需花一番功夫。那么,能不能将这些数据源集中管理,最好是做成一个统一的模块,需要时就将该模块引入而不必直接操作数据源本身呢?数据模块(DataModule)是解决这个问题最好的答案。简单说来,数据模块是用来集中管理数据源的一个窗体,该窗体可被需要的地方随时引入。
但本人在开发这个系统时,开始使用了一下数据模块,但在使用过程中却碰到了一些问题。并且考虑这个系统使用到的TADOQuery控件比较多,如果使用数据控件可能会带来管理上的麻烦,如弄混各个数据控件的作用。还考虑到使用动态生成ADOQuery可能会更节省资源。所以在本人的系统中,开始做的第一个模块“借阅者个人模块”中还稍微使用了一下数据模块。但在后面做的两个模块中大多都是用动态生成ADOQuery来实现的。并且由于SQL语句是动态加入的所以datamodule中的控件也不会多。
§5.3启动画面的实现
启动画面是为了给用户一个良好的印像,加深软件的亲和力,没有实际的功能,在Form1窗体中加入了Image和Time组件。启动画面的窗体略,主要的源代码如下:
§5.4用户登录窗体的的实现
本窗体是为三种不同的用户(一般用户,工作人员,管理员)提供选择以进入不同的模块,满足不同用户的需求。源代码比较简单,略。
§5.5用户密码认证窗体的的实现
本窗体是为了让工作人员或图书馆管理员按照用户名和密码进行登录,并且跟据用户名检查Keyer表中的“权限”字段,以分辩进入图书馆管理人员模块还是进入工作人员模块。窗体界面、源代码如下
§5.6借阅者服务模块的实现
借阅者服务窗体的功能主要是图书的查询,个人借阅情况查看及个人部分信息的修改。界面图如下:
5.6.1图书查询功能的实现
在本系统中,任何人都有权限使用查询功能,不做任何限制。界面如下,
由于实现的查询功能有多种,如按图书编号、图书名称等字段进行完全体配查找和部分体配的模糊查找,还有按多个条件进行逻辑与或是逻辑或的多条件查找。其中实现的方法者差不多,所以只给出多条件查找的代码,如下:
5.6.2借阅者登录功能的实现
这个功能的实现与工作人员和管理人员登录功能实现的方法大致一样,并且还要简单。是从User表中查到到借阅证号与密码,看与用户输入的是否一致。如果一致,那么用户就可查看自已的借阅情况并维护自己的部分信息。源代码与借阅者登录界面都略。
5.6.3借阅者借阅情况功能的实现
当借阅者正确登录到系统后,此功能将被激活,使用户能查看到自身的借阅情况。在此系统中,信息的显示一般用ListView来实现,只在较少的情况下用到了DBgrid,因为我觉得ListView更好实现,并能使信息数据对用户的完全分离。
在这里跟据借阅者的不同要求实现借阅情况的查询,有检查所有的借阅情部、某本书的借阅情况、和根据已借阅天数的来查询。其中根椐借阅天数来查询更有代表性,有方式一和方式二。以下给出此功能的源代码
按借阅天数查询方式一
按借阅天数查询方式二
5.6.4借阅者个人资料维护功能的实现
此功能实现当前借阅者部份资料的修改,但借书证号和身份类别这样的信息不允许修改,这是图书馆管理员模块的功能。在此界面中点击修改按钮将出现“修改”窗体(Form8),点击修改密码按钮将出现groupbox8,在这里进行密码修改。关键源代码如下。
这里给出个人部分信息修改的源代码:
这里给出密码修改的源代码:
5.7工作人员-图书借阅/归还模块的实现
5.7.1工作人员进行图书借阅功能实现
在这个功能中,工作人员输入借阅者的借阅证号和所要借阅的图书的图书编号,然后点击借阅按钮就可进行图书借阅。考虑到实际中可能会出现只知图书名而不知图书编号的情况,在此界面下方加入了一个转换功能,可以把图书名称转换成图书编号,再进行图书借阅。
在借阅完成后会生借阅报表以便借阅者检查和确认,借阅报表的打印效果如下图,实现比较简单,略去实现过程。
5.7.2工作人员进行图书归还功能实现
在此功能中,工作人员根据借阅者的借书证号和归还的图书编号进行图书的归还工作。并且根据现实中可能会出现的只知图书名不知图书编号的归还情况,所以加入了按书籍名称进行归还的功能。这个功能是图书借阅功能中把图书名称转换成图书编号的一种改进方法,这样就不用如借阅功能中一样要先转换再借阅了。归还完成后,同样会打印出归还报表以便用户检查和确认。
5.8图书馆管理员模块的实现
5.8.1图书馆管理员图书管理功能的实现
在这个功能中可以在(*图书编号)中输入图书编号,点查找按钮后就会在各个相应的组件中显示出信息,或按图书名称模糊查找到所要的记录,在各个相应的组件中显示第一条记录的信息,也可在下端的ListView组件中点击某一条记录,在各个相应的组件中也会显示所选记录的信息。在入库功能中只要不是相同的图书编号并且带*号提示的字段不为空就可插入新的图书记录。删除则删除那些Book表中的图书记录,如果借出还可依用户要求连带删除owner表中的记录。因为图书修改与图书入库的功能与工作人员记录修改和工作人员记录添加的实现过程一样,所以下面仅给出删除功能的源代码,如下
5.8.2图书馆管理员工作人员和管理员管理功能的实现
在此功能中可以加入工作人员或是管理员,或是修改他们的密码、权限。
在此功能中如果选中ListView中的记录,则在右边相应的组件中显示出信息,并且管理员还可对这些记录进行修改或加入新的记录。并且也可以点删除按钮删除选中的一条或多条记录。删除功能与图书记录的删除一般,所以下面只给出添加与修改的实现过程。
5.8.3图书馆管理员修改图书类别及统记功能的实现
在此窗体中能对图书的类别进行删除,添加和修改,这模块的功能的实现过程与图书记录的删除,添加和修改一样的,但是这个窗体还能跟据图书类别进行统计,还可根据Book表和owner表统计出图书总数目,库存图书数目,借出图书数目及借阅过期的图书数目。在这里给出统计图书总数目,库存图书数目,借出图书数目及借阅过期的图书数目的实现过程中的几个函数和过程
5.8.4图书馆管理员借阅者管理功能的实现
查询借阅者可根据借阅者的借书证号或姓名或身份编号查找到借阅者的信息,也可以实行模糊查找,这个功能的实现与前面图书查找的实现过程一般,就不再详细说明。
5.8.5图书馆维护借阅者管理功能的实现
此功能能对借阅者信息进行查看添加、删除、修改。在这里给出刷新按钮的实现过程
5.8.6图书馆身份维护功能的实现
近年来,随着科学技术的飞速发展,个人数字图书馆作为传统图书馆的新形式,在计算机和网络技术的推动下应运而生。那么,什么是个人数字图书馆呢?
总体来说就是在自己的计算机上,为实现读书治学的目的,使杂乱无章的信息资源变成有组织的信息集合,通过免费的或基本免费的软件,将网上的有关信息资源,通过该管理软件进行存取,在软件内完成编辑管理,根据个人需求,供其有效利用。个人数字图书馆的意义在于,通过这一软件系统,对于个人知识储备的数字化整合可以顺利完成,用户能够自己创建、维护、使用该软件系统。
这一新形式的个人数字图书馆与传统图书馆比较,突出的特点是:
(1)数字化。使纸质资料的文献形态改变,使其数字化。曾经的纸质图书存放时间较长后,其一、积少成多,体积增大,内容增多,越来越不利于文献资料的整理和保存,其二、随着时间的推移,部分资料由于保管不善肯定会发生丢失损毁,旧资料查找时也是一个大工程,那么如何处理这些破旧书刊纸质资料?去粗存精选择性保管显然不是最理想的方法,那么使其数字化可以妥善保存,不遗失资料的同时更加能够便于查找。
(2)数据库化。当今,互联网上供人免费下载的数字资源日益增多,大家将自己感兴趣的文件和资料下载到本地电脑的文件夹中,供日后查阅或使用。但是文件夹不具有数据库结构,并不能有效的进行检索文件,当我们下载的文件日益增多的时候,无法有效的管理这些下载的文件,那么,就可以通过个人数字图书馆对其进行统一管理,在需要时通过搜索引擎,快速准确的查找到目标文件,无论文档文件还是图片文件或是视频文件,均可自动识别并打开后台运行,操作简单,使用方便。
(3)检索功能增强化。因为个人数字图书馆的使用者们并不是专业的情报学工作人员,无法精确的对于所需检索的内容进行输入,所以,要快速准确的查找到文献资料,在检索功能的设置上要加强,即使是模糊的搜索关键词也一样能迅速的找到需要的文献资料。基本的检索功能中至少具有字段检索、单项检索、截词检索、全库扫描检索等,并且,各种类型的文件要在统一的检索界面,使用方便查找快捷,检索历史随时保存便于随时调用。
2 个人数字图书馆论文管理系统在高校应用的可行性研究与分析
在高校设立个人数字图书馆论文管理系统,不仅为学生读者带来很大方便,同时在系统设计初期的可行性研究与分析中得出其具有很多的优势,下面将通过3个方面详述分析。
(1)高校图书馆丰富的信息资源,配合校园内完善的网络环境。丰富的馆藏资源,电子文献资料较全,是高校图书馆馆藏的重要特点,面向高校大学生,购买了种类丰富的各类论文数据库供学生学习查阅,同时自建论文数据资料库,为学生查阅下载论文资料提供了很大的方便。另外,高校的现代化设施建设完善,如学生宿舍的高速网络、图书馆的电子阅览室、校园全网无线覆盖等,这些设施为个人数字图书馆的建设提供了坚实的基础和现实保障。
(2)借鉴国内外成功的案例,为我们提供了宝贵经验。美国康奈尔大学图书馆曾成功开发个人数字图书馆平台――My liberty。用户可以自行通过该平台搜集电子资源,既可以来自公共网络的任何地方,也可以来自校园网络的内部门户,在这个平台上管理、编辑、下载,打造属于自己的个人图书馆。在国内,浙江大学也曾成功开发“我的图书馆”,系统功能如:新书通告、数字资源定制、搜索引擎、书签功能、个人信息保护等。虽然开发项目不是完全相同,但这些成功的案例都具有一定的可借鉴性。
(3)数量稳定的受众用户群。高校庞大的用户群体都具有高学识、高素质,比较熟练掌握计算机应用、网络通讯知识、文献检索知识等,他们无论是论文创作还是课题研发,都需要强大的学术资料支持,这一软件系统可以为他们提供高水平、多层次的个性化信息服务,相信广大师生都能够广泛的参与其中,构成稳定的软件系统的受众群体。
3 个人数字图书馆论文管理系统的开发构想
根据个人数字图书馆的基本研究发现,个人数字图书馆的数字化、数据库化特点,以及高等学校的软硬件设施和环境,以及推广使用面向的目标群体,非常便于个人数字图书馆论文管理系统的开发与利用。
一、图书馆管理系统应用的必要性
过去,大多数学校图书馆都是封闭式管理,通过卡片登记借阅信息,只能实现有限的流通,有的甚至不能正常对学生开放,使得图书馆不能发挥应有的作用;即使是实现了正常流通的,也不能提供领导管理上需要的各种信息如本馆各种资料分布及借阅(流通)情况。
目前,我国学校图书馆办馆的要求及领先标志就是藏书全部开放,师生共享开架借阅。这种借阅方式是当前适合我国国情的发挥图书馆应有作用的最佳方式,也是素质教育的最好体现。它充分发挥了图书馆的功效,最大限度地为读者服务,这也是图书馆自动化管理的最终目标。实现这一目标,必须有现代化的管理手段和管理体制。为此,各地教育主管部门都逐步提出学校要采用图书馆管理系统,从而实现人工管理达不到的一些功能并发挥图书馆的最大效益。而随着越来越多的学校采用了现代化的管理软件进行管理,进一步提升了学校管理的现代化水平,从而在竞争中处于有利位置,也对其他兄弟学校起到了示范和促进作用。自身发展的需要和上级部门的要求以及竞争的需要决定了学校采用图书馆管理系统的必要性。
以计算机技术、存储技术、通讯技术为主要内容的现代信息技术的发展,使人类进入了一个崭新的信息时代。作为信息资源存储、传递的专业机构,图书馆如何在新的技术条件下,适应形势发展,发挥自身优势,开拓信息渠道,更好地为用户服务,是一个新课题。也必将对现有的图书馆产生全面而深远的影响。因此,正确认识信息时代对图书管理工作的要求,使图书馆工作变得更加便利和高效,使资源共享更容易实现,为读者提供更加优质的服务十分重要。
在信息时代,各种冠以“数字图书馆”之类说法的图书馆现代化论断到处可见。那么什么是图书馆的现代化呢?判断一个图书馆的现代化程度,应该从图书馆最本质的特性判断。图书馆具有信息资源的收集保存、加工整理并使之有序化及传递信息资源的功能。这一点是书店和网站都无法做到的,也是图书馆最本质的特性,是图书馆赖以生存的基础。判断图书馆的现代化程度,也应该从这个最本质的特性来判断。
二、成熟的图书管理系统决定因素
任何一套图书馆管理系统至少必须具备这样一些功能:对图书进行编目也就是采集信息并上架、图书检索(查找)、图书流通(借还)。然而仅仅有这些功能是不能称为真正的现代化的管理型图书馆管理系统的。笔者认为,一套系统是否成熟还决定于以下几个方面:
1、符合相关的标准
例如教育部最新颁布的《教育管理信息化标准》规范、我国图书馆界通用的CNMARC格式标准、目前通用的《中图法四》等。
《教育管理信息化标准》的颁布将为教育部门对教育数据进行总体的规划和组织,建立起统一的数据平台提供有力的技术保证;它将带动教育管理信息存储、访问、更新、传递方式的变革,进一步减轻学校人力资源和财政管理的负担。
CNMARC是在UNI-MARC(国际通用MARC)的基础上发展起来的,它有479个字段,这些字段是针对能着录多种文献类型及多文种文献而制定的,数据格式结构复杂繁多,使用时,用其所有字段,只需结合着录的文献类型与文种等实际情况选择适用的机读目录格式字段形成数据。
中图法全称是《中国图书馆分类法》,是我国建国后编制出版的一部具有代表性的大型综合性分类法。其编制始于1971年,先后出版了四版。自1999年第四版起更名为《中国图书馆分类法》,简称不变,英文译名为ChineseLibraryClassification,英文缩写为CLC。由于国家图书馆1975年以后的文献(善本除外)都采用中图分类法,馆藏目录检索系统也提供“中图分类号”检索字段,了解中图分类法有助于读者准确地查询到需要的文献资源
2、开发工具及所采用的数据存放格式要求先进
有些人认为只要看看功能和界面是否令人满意就行了,其他的与我们没有多少关系,实际上开发工具及方式和数据格式的存放方式决定了系统的稳定性和性能以及未来的可升级维护性。目前国内绝大多数系统在Windows下运行,最先进流行的开发工具是美国Borland公司的Delphi及Microsoft公司的VC++,后台数据库一般采用微软的SQLServer或Sybase大型数据库产品。
3、功能是否强大
目前,一般主流的系统包括系统管理、读者管理、编目、流通、统计、查询等功能。比较先进的能够在一个界面下实现图书、音像、期刊的管理,设置假期、设置暂离锁(提高安全性)、暂停某些读者的借阅权、导入导出读者、交换MARC数据、升级辅助编目库等。此外,由于学校校园网络的逐步建立,一个完善的系统还应提供无缝接入校园网的WEB功能,通过IE浏览器让读者使用借阅资料查询、更换密码、预约、资料检索等功能。有些系统还能提供读者自助服务,可以开放一些客户机让读者自行管理密码、查询自己的借阅史、预约资料、检索资料等。
4、要有足够的安全性
安全性一般涉及到操作权限控制和数据自动备份两方面。主流系统都实现了由管理员分配各操作员可使用的功能并设置其密码,各操作员均需先登录系统然后再操作各种允许使用的功能。一个完善的系统还应对各操作员的登录、退出及重要操作记录在操作日志中。同时还应提供完善的自动备份服务,以实现数据的全自动按计划备份,从而最大限度地保障您的数据安全。
5、要有足够大的辅助编目库
在对图书进行编目也就是信息采集时,如果我们通过扫描图书的ISBN号条码就能得到大多数书的书名、作者、出版社等各种标准信息,则我们的编目准确性和效率将会得到极大的提高。这就要求有一个比较完善的准确的辅助编目库。这也是一个容易被学校忽视而软件开发商有意回避的问题。
6、要具有完善的规则
除了能够设置读者的借阅规则外,还应自动实现一些图书馆界通用的管理规则,例如有在借资料的读者是不能被删除的,有以下情况的读者是不能借阅的:某类书的借阅数已达到最大值、有超期资料、有未缴罚款、被暂停借阅等。
7、简单易用
一个好的系统应具有清楚的操作界面,最简化的操作过程。日常工作中操作员通过手持式条码阅读器应该可以完成绝大部分工作。需要注意的是有些系统将精力花在华丽的界面上,而忽视了用户真正需要的是实用的完善的功能。
8、有先进的体系结构
当前主流系统采用客户机服务器(Client/Server)+浏览器/服务器(Browser/Server)模式,所有信息均存放在数据库服务器上,各客户机通过网络与数据库服务器通讯,WEB服务通过ADO模型访问数据库服务器,数据与应用安全地隔离,可确保数据存放的安全性。当然在具体选择中还需考虑是否得到主管部门例如省电教馆等推荐及性价比等。
随着数字化技术的飞速发展,人类正迈向一个以数字化技术革命为中心的新时代。这一新时代最明显的特征便是全球范围内的网络革命。这场革命催生出的数字化信息网络,大大改善了我们所处的信息环境,信息的类型和形式变得更加复杂,人类信息传播的途径及获取信息的方法,都发生了前所未有的变化,它不仅改变了图书馆信息服务的方式,同时也对图书馆的情报用户提出了严峻的挑战。
三、图书管理系统现代化程度的标准
1、信息资源收集的现代化
现代社会信息资源丰富,信息污染也很严重,给图书馆信息资源的收集带来了极大麻烦。传统图书馆时期,由于各种信息资源极大部分由正规渠道获得,经过图书期刊编辑人员的认真校对,信息质量相对可靠。而现代化信息的载体以及出版发行方式发生了很大变化,各种光盘、印刷品、网上信息、声像读物等良莠不齐。这就要求图书馆采编人员掌握多方面的信息源,运用现代化的各种手段,对各种信息做出尽可能正确的判断
2、信息加工整理的现代化
在传统图书馆时期,文献资源的分类加工整理比较简单,所揭示的文献信息深度有限,对文献的内在性质、内容的揭示基本没有。图书馆应用计算机进行分类编目,给文献内容的揭示带来了一定的改进,但无实际性的改革。计算机所具有的快速处理数据的能力远远没有发挥出来。信息加工的目的是为了使信息资源有序化,以便于更好地查找和使用文献信息,如果在文献信息加工整理上不能实现统一标准的规范,图书馆现代化的物质基础就不存在
3、图书馆服务的现代化
服务是图书馆的生命。图书馆所做的一切工作,只有一个目的,就是做好图书馆的读者服务工作。服务的现代化包括两个方面,一是图书馆工作人员服务的现代化,二是服务手段的现代化。
观念的现代化要求我们改变原来重管理轻服务的思想,把以读者为中心真正落到实处,发挥图书馆工作人员的主观能动性,积极收集各种文献信息资源。在现代化图书馆时期,判断一个图书馆的大小是以图书馆获取信息的能力,提供服务的能力来决定的由于现代化的图书馆是一个有机的网络,各种信息资源许多都是公开的、共享的.只要有一定的专业技能和一切以读者为中心的服务观念,图书馆的服务工作可以比传统时期有一个质的飞跃。
判断服务手段的现代化也应该用“一切以读者为中心”这一图书馆的服务宗旨来判断。如果图书馆提供的文献资源必须使用电脑才能得到,这对读者来说就是服务不好,因为他的要求没有得到满足。现代化服务手段真正的含义应该是图书馆根据读者不同需要,提供适合各种不同类型的服务方式。
总之,我们通过对图书管理系统的分析,对管理系统在其他情况下的应用,有了一个基础性的了解与掌握。同时,对热门图书的科学管理,进一步提高其利用率,不断满足读者日益旺盛的阅读需要,有着十分积极的现实意义。
【参考文献】
[1]顾俐.图书馆图书管理系统的设计.《中国科技信息》.2007.11.
[2]孙丽莉.图书管理系统论.《中国科技信息》.2007.1.
[3]马慧生、王树芬.对我校图书馆数字化的建议.《桂林航天工业高等专科学校学报》.2005.10.3.
[4]张霞.数字图书管理系统及其相关技术探究.《安阳大学学报:综合版》.2003.3.
1知识管理与信息管理
1.1信息
信息管理的概念是20世纪70年代在国外首先提出来的。美国东北大学的E.M.Trauth认为:信息管理分为3个不同的技术领域,即数据库管理、记录管理、数据处理管理。通常将这3个领域称为信息管理。信息管理的概念又分为“广义”和“狭义”两个方面。从狭义上讲,信息管理就是对信息的管理,即对信息进行组织、控制、加工、规划等,并将其引向预定的目标;从广义上讲,信息管理的对象不只是信息,还包括与信息有关的人、机构、设备、环境等。对这些要素进行合理的组织和控制,以实现信息及有关资源的合理配置,从而有效地满足社会的信息需求。
信息管理是利用信息资源的基础,是信息经济的起点。图书馆通过对信息的搜集、检索、组织和传播,将各种各样的信息从分散到集中,从无序到有序,从存储到传播和利用,从宏观上实现馆际之间的信息资源协调与共享管理,方便人们能够在特定时间获取所需要的特定信息。
1.2知识管理
知识管理强调以人为中心,以信息和信息技术为基础,以知识创新为目的,将知识看作是一种可开发资源的管理思想,从结构上看,它可分人力资源的管理和信息管理两个方面。
(1)人力资源管理是知识管理的核心内容。知识管理思想第一次将信息和具有创新能力的人,共同作为关注的对象,并且特别关注具有创新能力的人。这与仅仅关注于物、技术、事物的传统管理方式完全不同。知识管理的本质特征就是把人作为第一要素加以重视。著名的知识学教授IrujjroNonaka曾说:“只有人类才能在知识创新的过程中扮演核心角色,无论计算机的信息处理能力有多大,它们终究不过是人类的一种工具”。可见,人既是知识创新的主体,又是知识的载体,因此说对人的管理是知识管理的核心内容。
具体而言,人力资源管理是一种以“人”为中心,将人看作是最重要的资源的现代管理思想,其管理模式就是“以事就人”,以人为主,旨在使人适其所,人尽其才,使组织的成长配合个人能力的发展,使组织的目标与个人的目标有机地统一,它反映的是“人才决定企业前途”的经营理念。
(2)信息和信息技术是知识管理的基础。第一,信息是知识创新的前提,知识只有通过信息载体的流动才能产生价值。知识是人脑的产物,是在信息基础上通过人脑的
思维和重新整合才得以形成,正如国外学者Churchman所定义的;如果把知识看成是信息的集合,则无异于剥夺了其最核心的部分,知识存在于人而不是信息集合中,知识是人对一系列相关信息所产生的反应。第二,信息技术是知识管理的工具。随着网络技术的快速发展,信息的传播速度、传播广度都有极大的提高。同时,现代技术的应用也为信息的广泛传播和有序化管理提供了最大的便利。这使知识管理中所必须具备的信息交流和共享成为可能。
(3)知识管理的最终目的是要以现有知识为基础,结合实际进行创新,寻求信息处理能力与人的知识创新能力的最佳结合,在整个管理过程中最大限度地实现知识共享,以期将最恰当的知识在最恰当的时间传递最恰当的人,使他们能做出最恰当的决策。
2图书馆从信息管理转向知识管理的必要性
(1)在信息时代,图书馆的信息服务是以提供一次、二次文献为主,是基于用户简单提问和基于文献物理获取的服务,为用户克服因信息分散而造成的检索困难提供索引指南,提供文献的线索或单个的文献实物。信息管理主要围绕信息的组织、检索和传递展开,管理的内容仅局限于对信息的管理,而忽视对“人”的管理。信息技术成为整个管理的核心,它在信息的搜集、检索、组织与传播和管理中起着非常重要的作用。
在知识经济时代,不同用户群体的知识需求各不相同,图书馆的知识信息资源体系的内容也各具特色。用户特定的知识需求还决定了图书馆的类型和性质,即图书馆为谁服务和如何服务的问题。在图书馆的知识管理活动中,始终是以用户群体的知识需求为对象的,类型的划分也是以用户和其目标或功能等为重要基础的。不同类型的图书馆
体现不同用户群体的知识需求,图书馆本身具有激发用户知识需求的功能,图书馆的管理活动对用户知识需求具有促进或制约作用。
(2)图书馆的发展受制于社会政治经济的进步,它通过开展相应的管理活动服务于社会的用户群体,满足用户各方面的知识需求,而作为图书馆系统重要组成部分的用户及其知识需求对图书馆管理活动的开展也有着重要的影响。人们在生产、生活、学习中对与物质能源同等重要的知识需求越来越强烈,需求量愈来愈大。这种知识需求对此阶段的图书馆管理影响巨大,表现在:系统论、控制论、信息系统理论、信息资源管理等理论应用于图书馆管理中;以计算机技术、通讯技术、网络技术为核心的现代信息技术综合运用于图书馆馆藏信息的收集、处理、检索和传递;突出馆藏信息资源的综合开发和应用。所有这一切对图书馆管理工作的开展产生极大影响,充分发挥了图书馆的教育和情报等职能,突出了图书馆在知识经济社会中的作用。正是因为图书馆在信息管理阶段的发展,为图书馆进入知识管理阶段创造了重要条件。显然,人们的需求变化对搜集、处理、传播和提供信息服务为己任的图书馆向知识管理过渡起着决定性的促进作用。图书馆必须实施先进的知识管理方式来满足用户群体的这种需求。
(3)在知识经济社会,用户对信息的需求呈现出广泛化、综合性、深度化、时效化和专门化的特点,部分用户的需求趋向专深,对信息的需求更具个性化。而知识管理更侧重于对新知识的生产、创造,通过对知识的管理,抛弃了信息管理中被动处理信息资源的工作模式,它与用户的知识交流、共享、创新和应用的全过程相融合,从而成为用户知识创新的核心推动力,给科研、生产工作带来新的活力。知识管理过程中的知识服务不只局限于利用片面的信息来满足用户的需求,而是从用户的目标和环境出发,以面向解决方案为重点,对用户的需求进行系统分析,根据个人、群体或机构千差万别的特殊需求提供从知识捕获、析取、重组、创新、集成到应用的全程一体化服务。将分散在本领域及相关领域的专业知识加以集成,从中提炼出对用户的研究、开发与创新有用的知识精品”供其使用,提高知识的获取和实施效率,使得知识管理与服务朝着智能化的方向发展,将知识管理从理论变成了实践。
3图书馆以用户为中心实施知识管理的内容及策略
目前政府的知识管理问题已提到议事日程。1997年在多伦多召开的主题为“知识与发展”的国际会议上,成立了包括60个国际组织在内的“世界知识合作联盟”,国际图书馆协会联合会(IFLA)也申请加入。这说明,图书馆的知识管理活动已融入整个社会知识管理系统,并得到了社会认可。在知识经济时代,图书馆又将承担起知识创新,知识传播和知识应用的重任,致力于提高整个国家和民族的文化素质,科技素质,以推动社会不断发展进步。
3.1图书馆应该形成一种上下级一致,平等交流、知识共享的气氛,才能便于图书馆事业的蓬勃发展
3.1.1设立知识主管CKO和信息主管CIO
知识主管由馆长担任,负责图书馆知识管理目标,计划和措施的制定,监督知识管理的实施。信息主管可由精通业务的信息专家担任,负责信息技术的开发和应用。
3.1.2调整图书馆结构
从传统的纵向等级结构转向扁平型网状结构。根据工作性质设立各种类型的业务主管,取消行政级别。馆内各部门、各成员对知识资源的占有和交流是平等的。
3.1.3建立一个有利于激发馆员创造力和知识发挥的奖励竞争机制。
3.2信息资源管理,建立知识仓库,创建知识共享体系
在21世纪,图书馆将充分利用现代化信息、技术,整合馆内各种信息资源,有效发挥知识导航的功能,成为馆内服务与网上服务相结合的高度现代化的知识网络,图书馆将成为社会的知识中心。
3.2.1资源数字化
在资源建设方面,图书馆将更加重视知识管理在资源配置中的应用。图书馆发展的重心移向网络,开发网上信息的描述、管理和服务技术。利用现代网络技术将更多的特色资源和常用资源数字化,通过数据的应用和普及,对网络信息资源进行组织研究,使之更加有序化,最终形成知识仓库,供用户决策使用。
“馆藏资源数字化”和“社会资源馆藏化”的有机揉合并优化,构成了知识经济环境下图书馆知识管理的两个重要内容。“馆藏资源数字化”就是将本馆已入藏的非电子化文献数字化,包括书目数据库建设,特色数据库建设,信息系统建设和各种载体文献全文数字化。因此,图书馆资源既有一次文献,又有二、三次文献。“社会资源馆藏化”是指对网络信息资源进行组织,使之有序化,最终形成知识库,根据用户的实际需求,为用户提供最直接,最高效率的知识信息服务。在网络环境中,可存取的信息资源是未来图书馆信息服务的资源基础。
3.2.2馆藏虚拟化
图书馆资源的概念突破了时空的限制——不拘泥于自身的馆藏,可将其他图书馆的资源作为自身可以取用的资源既虚拟馆藏。在全球范围内利用图书馆的信息搜索技术的优势,以海量信息中获取读者所需的有效信息,向读者提供时效性报务,极大地拓展了图书馆为读者服务的潜力。