论文029分布式图书管理系统.docx
- 文档编号:8581184
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:31
- 大小:101.41KB
论文029分布式图书管理系统.docx
《论文029分布式图书管理系统.docx》由会员分享,可在线阅读,更多相关《论文029分布式图书管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
论文029分布式图书管理系统
分布式图书管理系统
目 录
目录……………………………………………………………………….………1
摘要……………………………………………………………………...….…….2
引言…………………………………………………………………...…….….…2
一本设计的概述……………………………………………….…………...….…..3
(一)本设计的目的与结构概述…………………………………….……...…..3
(二)设计技巧..………………………………………………….…...…………3
(三)系统结构……………………………………………….…………….…….3
二多层数据库理论…………………………………………...……………..….…4
(一)多层数据库应用程序…………………………………….…………..….….4
(二)三层数据库应用程序的创建概述及关键组件介绍……….………..……4
三 数据库开发工具简介………………………………………………...…………5
(一)C++Builder6及数据库相关组件简介……………………………….....…5
1.C++Builder6的数据库工具和组件……………………….……………...…5
2.MSSQLServer2000数据库简介 ……………………..………………...…5
四建立后台数据库………………………………….………….…….……………5
(一)后台数据库的建立和数据表的设计………………...………………….….5
1.创建数据表………………………………………..………………………..5
(二)为后台数据库建立BDE别名………………..….……………………...…6
五图书管理系统应用程序设计……………………….………………………..….7
(一)建立中间层应用程序服务器………………..………………………………7
(二)建立客户端应用程序…………………..……………………………….…..9
1.客户端主窗体的设计…………………………………..……………………9
2.在客户端应用程序加入数据模块…………………..…………………..…9
3.会员管理模块………………………………………………………………10
4.图书管理模块………………………………………………………………13
5.借书模块……………………………………………………………………15
6.还书模块……………………………………………………………………18
7.图书统计模块……………………………………………………………..…20
(三)调试与心得…………………………………………………….……………21
致 谢…………………………………………………………….…….…………..…21
参考书目………………………………………………………………..……………21
分布式图书管理系统
摘要:
图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
本设计通过对高校图书馆管理系统的模拟,实现了MIS对数据收集、处理等功能。
同时本设计考虑到现代图书馆数据服务器和各终端的一对多的实际情况,在对MSSQLServer2000数据库管理系统、SQL语言原理、C++Builder6应用程序设计及相关数据库技术进行了较深入的学习后实现了分布式的三层构架,主要完成了对图书管理系统的需求分析、数据库模式分析、功能模块分析,并由此设计了数据库结构、中间层应用服务器与前台应用程序。
系统运行结果证明,本设计可以满足现代图书馆数据管理的需要。
关键词:
数据库,SQL语句,MSSQLServer2000,C++Builder6,数据库组件,BDEAdministrator
0.引言
在当今飞速发展的信息时代。
各行各业都离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
利用计算机的海量存储和高速运算进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
大部分还依赖人工处理,往往存在数据信息处理工作量大,容易出错;并且数据繁多,容易丢失,不易查找。
总的来说,缺乏系统,规范的信息管理手段。
基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
一本设计的概述
本设计是一个设计简单但功能全面的分布式数据库管理系统,主要功能是会员和图书资料的输
入、管理以及借书、还书两大功能模块,最后还应用TDBChart控件进行了图书统计。
为此分别设计了Member、Book、BookClass和Loan4张数据表,主要用到的数据库连接控件是TTable和TQuery控件。
(一)本设计的目的与结构概述
本设计以目前大学图书馆管理为背景,根据其需求,对该图书馆信息管理系统的功能分析如下:
1.图书馆的会员分为本科生和研究生,前后两者的最大借阅数分别是4本和8本。
2.图书馆的图书分为可借阅和不可借阅两种,而且可借书籍中又划分借阅等级。
3.会员能预约图书,也可以取消预约。
4.能增加和删减会员并能维护会员资料。
5.能增加新的图书和删除过旧的图书并能对现有图书进行统计和维护。
(二)设计技巧
本系统设计用所要使用的一些编程技巧如下:
1.多层数据库应用程序的创建
2.安装与管理MSSQLServer2000服务器
3.通过SQL语句来创建数据表
4.利用远程数据模块为分布式应用程序集中管理数据
5.利用TDatabase控件来屏蔽数据库登入口令
6.利用TDataSetProvider控件与数据库服务器通信,并为客户端应用程序提供数据
7.利用TDCOMConnection控件远程连接数据库
8.利用TClientDataSet控件从应用服务器中的一个数据提供者获取数据
9.利用TDBChart控件创建统计图表
(三)系统结构
后台数据库服务器
MSSQLServer
应用服务器
主窗体
MainForm
远程数据
模块
客户端应用程序
主窗体
MainForm
数据模块
各功能模块
Ñ
Ò
请求
数据
Ñ
Ò
返回
数据
Ò
Ñ
2.多层数据库理论
(一)多层数据库应用程序
一个多层客户/服务器应用程序是被分割在不同机器上协同运行的逻辑单元。
多层应用程序通过区域甚至是通过Internet与其他程序共享数据和通信,它们有了许多优点,如集中控制的商业逻辑和瘦客户端应用程序。
一个多层应用程序其最简单的模式有时称为“三层模式”,可分为三部分:
1.客户端应用程序。
运行在用户机器上,提供用户界面。
2.应用程序服务器。
位于可连接到所有客户端的网络中央,并提供公共的数据服务。
3.远程数据库服务器。
提供关系数据库管理系统。
在这种经典的结构中,数据库服务器是指Oracle、DB2、Sybase、MSSQLServer等产品。
应用服务器与客户端可自由选择各种载体,如由JAVA、C++Builder、VC甚至PHP和XML等创建。
应用程序服务器包括业务逻辑和操纵数据的工具,而客户端的主要任务就是向用户提供交互界面。
这里特别要说明的是在多层数据库应用程序中,真正操纵后台数据库的是中间层应用服务器。
实际操作中是由客户对应用服务器发出查询请求,应用服务器按照请求把后台数据库中的数据调出传送到客户段,而客户对这些数据的改动都只是对本地数据的更新,只有用户调用TClientDataSet控件的ApplyUpdates()方法,这些更新后的数据才会被打包发往中间层应用服务器并由应用服务器控制后台数据库更新数据。
(二)三层数据库应用程序的创建概述及关键组件介绍
建立分布式多层数据库应用程序主要用到C++Builder四个主要控件:
远程数据模块(DataModule)、TDataSetProvider控件、TDCOMConnection控件和TClientDataSet控件。
远程数据模块(DataModule),类似于标准数据模块,不同之处是它不是帮助把数据传输到当前应用程序,而是传输到网络上的某一个位置。
也就是说,它将一个简单的数据模块转换成一个COM对象,因此可以从一个远程服务器通过DCOM来访问数据模块。
TDataSetProvider控件驻留在远程数据模块上,就如同TTable对象驻留于一个标准数据模块上一样。
不同地是前者在网络上传输一个表。
TDataSetProvider对象也可以作为属性包含于TTable对象和TQuery对象中,但是如果作为单独的组件来访问它们,将更加灵活和稳定。
远程数据模块的工作是让客户端应用程序应用服务器上的TDataSetProvider。
客户端应用程序首先连接到远程数据模块,然后查询远程数据模块以寻找服务器上可获得的TProvider列表。
在客户端,使用下面的控件来访问服务器所提供的数据。
TDCOMConnection控件给客户机提供连接服务器的能力。
具体地说,它通过COM接口,该COM接口为远程数据模块所支持。
它与TSocketConnection控件与TWebConneciton控件所不同的是它们的连接方式不同。
后两者分别实现的是TCP/IP与HTTP协议接口。
TClientDataSet控件连接TDCOMConnection控件,并附于服务器上的提供者。
它们在想要连接一个远程数据集时,给予客户应用程序数据源以插入的能力。
可以说TClientDataSet与TQuery或TTable的作用是一样的,不同仅在于它从远程站点上提供数据。
以下步骤说明了一个基于MIDAS的多层应用程序的一般创建顺序:
①用户启动客户端应用程序,客户端连接到应用程序服务器。
若应用程序服务器还没有运行,则被启动,客户端从应用程序服务器接收到一个IappServer接口。
②客户端从应用程序服务器请求数据,客户端可以一次请求所有数据,也可通过会话请求数据块。
③应用程序服务器获得数据,为客户端打包数据,并将数据包返回给客户。
④客户端将数据包解码,并显示数据。
⑤用户与客户端应用程序交互时,数据被更新。
这些修改被客户端存于更新日志中。
⑥客户端对应用程序服务器进行更新。
为了更新,客户端将更新日志封装,并把它作为数据包发送到服务器。
⑦应用程序服务器把数据包解码,在一个事务内传送更新。
若某个记录未被传送到服务器,应用程序服务器将尝试用当前的数据取代客户端的改变,或者将无法传送的记录存储,这个传送记录和缓存问题记录的处理过程被称为“解决”。
⑧当应用程序服务器完成了解决处理后,它把未传送的服务器的记录返回给客户。
⑨客户端处理未解决的记录。
如果错误能被解决,则客户端再进行更新。
⑩客户端刷新来自服务器的数据。
3.开发工具简介
(一)C++Builder6及数据库相关组件简介
C++Builder是Borland公司推出的面向对象的Windows应用程序开发工具。
它不仅继承了Delphi简单易用、功能强大和稳定可靠的特性,同时还拥有C++语言语法灵活简洁、执行效率高的优点,是Win32环境下最好的C++开发平台之一。
尤其在数据库应用、分布式计算和网络程序的开发中更能体现出它的开发周期和执行效率的明显优势。
自从C++Builder5开始就对网络数据库有了很大的更新,C++Builder6的推出更是在数据库设计上做了更大的改进,使得C++Builder6在开发网络数据库方面有着极大的技术优势和广阔的市场。
这也是我选择C++Builder6作为此次设计的开发工具的原因。
1.C++Builder6的数据库工具和组件
C++Builder系统文件中有一个管理接口的程序bdeadmin.exe,即BDEAdministrator。
在使用C++Builder连接到Paradox等数据库时,主要是通过在BDEAdministrator中建立一个代表数据库的别名(alias),然后在C++Builder中使用这个别名来连接并访问该别名所代表的数据库。
而在该别名中,必须设置所连接的数据库所使用的驱动程序、使用什么种类的通信协议、使用的语言驱动程序以及其他一些非常重要的参数。
如果正确地设置了别名的内容,就可以在C++Builder中连接并存取这个数据库。
2.MSSQLServer2000数据库简介
SQLServer2000是microsoft公司推出的SQLServer数据库管理系统的最新版本,该版本继承了SQLserver7.0版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好与相关软件集成程度高等优点。
SQLServer的所有功能,都可以基于系统已经建立好的一些对象来达成。
虽然C++Builder6也集成了InterBase服务器和DatabaseDesktop,但基于多层数据库应用程序结构的考虑,我认为应该让开发工具和后台数据库相分离,尽可能让任意的开发工具做出来的应用服务器和客户端都可以适用于后台数据库。
所以我选择了性能和稳定并重的MSSQLServer2000数据库。
4.建立后台数据库
(一)后台数据库的建立和数据表的设计
因为使用的是MSSQLServer数据库,我通过企业管理器来建立数据库。
这里说明一下,SQLServer数据库的名称按照默认(local)设置,计算机名为TOSHIBA,数据库用户名为sa,密码为空。
通过右键新建数据库选项建立一个新的数据库,命名为Library。
1.创建数据表
根据系统所需求的功能,将本系统需要用到的数据表结构定义如下:
Member(会员资料)
字段名
类型
大小
说明
MemberId
int
4
主键,会员编号
Name
char
10
会员姓名
ReBook
int
4
最大可借数
Addr
varchar
15
住址
Tel
char
8
寝室电话
ExpireDate
smalldatetime
4
有效期限
BookClass(图书类别)
字段名
类型
大小
说明
ClassId
int
4
主键,图书类别编号
ClassName
varchar
30
图书类别名称
LoanLevel
char
6
可借等级
Book(图书)
字段名
类型
大小
说明
BookId
int
4
主键,图书编号
BookName
varchar
50
图书名称
ClassId
int
4
图书类别编号
Language
char
4
编写语言
Author
varchar
30
作者群
ISBN
char
10
国际书号
CopyNo
int
4
册数
PubYear
samllint
2
出版年份
InDate
datetime
8
入馆时间
KeyWord
varchar
30
关键词
Loan(借书)
字段名
类型
大小
说明
BookId
int
4
主键,图书编号
MemberId
int
4
会员编号
BorrDate
datetime
8
借书时间
DueDate
datetime
8
到期时间
(二)为后台数据库建立BDE别名
虽然通过SQLServer建立了后台数据库Library,但为了通过Tdatabase控件访问该数据库而不是通过ODBC连接,仍需要通过BDEAdministrator为后台数据库建立别名。
运行BDEAdministrator,通过菜单栏Object中的New选项新建一个数据库别名,在DatabaseDriverName中我选择SQLServer然后点确定(图一)。
为新出现的数据库接点命名为Library,并在窗体后边设置其连接属性如下所示(图二):
(图一)
(图二)
通过上面的设置,当后面选用Tdatabase控件时,就可以在其AliasName属性中找到前面定义的Library数据库,而以后所有的数据库连接控件全部通过Tdatabase控件访问后台数据库,这就降低了数据库出错的可能性和维护的难度。
至此,后台数据库的配置和数据表的建立工作已经结束。
5.图书管理系统应用程序设计
(一)建立中间层应用程序服务器
创建应用程序服务器与创建大多数数据库应用程序很相似,区别主要在于应用程序服务器包括了一个数据集提供者。
要创建一个应用程序服务器,首先需要在C++Builder中新建一个工程并保存它,然后再打开该工程并通过File菜单中的New子菜单中的Other命令打开NewItems对话框,切换到Multitier标签页,通过双击RemoteDataModule图标在新工程中加入一个远程数据模块。
如前面所述,该数据模块提供DCOM、HTTP和Sockets三种连接COMAutomation服务器的方法,这里我选用最常见的DCOM连接方法。
在新打开的NewRemoteDataModuleObject对话框中必须要填写的是CoClassName一项。
该项为远程数据模块提供一个类名,它是应用程序所创建的从TCRemoteDataModule派生的类名,它同时也是应用程序服务器接口的名字。
这个名字的命名必须符合C++Builder的命名规则,这里我按照后台数据库名称为其命名为Library,这样在单元的头文件中向导就会声明一个执行类(ILibraryImpl)来实现Ilibrary。
ThreadingModel项规定了如何将客户的请求传送给远程数据模块的接口,这里选择默认的Apartment线程模式。
在Description中输入“图书馆信息管理系统应用程序服务器”作为描述,该对话框最下方还有一个选项GenerateEventSupportCode,选中该项以建立一个分离界面(interfase)来专门处理事件。
最终单击确定按钮以建立远程数据模块(图三)。
现在需要在新建的远程数据模块中添加数据连接控件,但真正连接后台数据库的是TDatabase控件,其他所有的数据连接控件都直接或间接地连接到该控件以实现连接数据库的目的。
同时因为连接的后台数据库每次连接都有DatebaseLogin对话框要求输入正确的用户名和密码,我选择设置TDatabase的属性来让系统自动记住用户名和密码。
首先在Library中加入一个BDE组件页的TDatabase控件,设置其AliasName属性为我前面建立好的BDE数据库别名Library,并将其DatabaseName属性设置为LibraryNoLogin,最后双击该控件,设置其属性如下(图四):
根据后台数据库的设计和整体功能需求,在Library远程数据模块中加入4个TTable控件、3个TQuery控件和7个TDataSetProvider控件,分别命名为MemberTable、ClassTable、BookTable、LoanTable,MemberQuery、BookQuery、LoanQuery、MemberProvider、BookkProvider、ClassProvider、LoanProvider、QMemProvider、QBookProvider和QLoanProvider并按照下表设置以上控件的属性:
远程数据模块中关键控件属性表
控件
属性
属性值
Database1
AliasName
Library
DatabaseName
Login
MemberTable
DatabaseName
Login
TableName
dbo.Member
BookTable
DatabaseName
Login
TableName
dbo.Book
ClassTable
DatabaseName
Login
TableName
dbo.BookClass
LoanTable
DatabaseName
Login
TableName
dbo.Loan
MemberQuery
DatabaseName
Login
SQL
Select*fromMember
BookQuery
DatabaseName
Login
SQL
Select*fromBook
LoanQuery
DatabaseName
Login
SQL
Select*fromLoan
MemberProvider
DataSet
MemberTable
BookProvider
DataSet
BookTable
ClassProvider
DataSet
ClassTable
LoanProvider
DataSet
LoanTable
QMemProvider
DataSet
MemberQuery
Options
[poAllowCommandText]
QBookProvider
DataSet
BookQuery
Options
[poAllowCommandText]
QLoanProvider
DataSet
LoanQuery
Options
[poAllowCommandText]
需要注意的是TDataSetProvider控件的Options属性的poAllowCommandText被设置为true时,才能设置其CommandText属性,否则将出现异常。
最终的设计如下(图五):
至此一个功能强大的中间层应用服务器就创建好了。
为了使后期设计的客户程序能够访问该应用服务器,必须将该应用服务器注册。
注册的过程很简单,只需单击F9键或者选择Run|Run菜单,让该应用程序运行一次就可。
下面开始设计前端客户端应用程序。
(二)建立客户端应用程序
创建多层数据库应用程序的客户端,应该按照以下步骤进行:
①在项目中加入一个新的数据模块,但如果客户端很简单或者后台数据表不复杂,用到的数据库控件不多,则可直接加入到主窗体中。
②在新建的数据模块中放置一个连接控件,其类型取决于想要使用的通信协议。
③设置连接控件的属性,以指定要建立连接的应用程序服务器。
④设置应用程序所需要的其他连接控件属性。
⑤在数据模块中放置需要的TClientDataSet控件,并将每个控件的RemoteServer属性设置为前面放置的连接组件的名字。
⑥为每一个TClientDataSet控件设置其ProviderName属性。
如果连接控件在设计时连接到应用程序服务器,可以从ProviderName属性的下拉列表中选择有效的应用程序服务器提供者。
⑦按照创建其他数据应用成的类似方法创建客户端应用程序。
使用客户端数据集的一些特定功能来支持与应用程序服务器的提供者控件之间的交互。
1.客户端主窗体的设计
新建一个项目,将默认名为Form1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 论文 029 分布式 图书 管理 系统