




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
分布式图书管理系统目 录目 录 .1摘 要 .2引 言 .2一 本设计的概述 .3(一) 本设计的目的与结构概述 . 3(二) 设计技巧 . 3(三) 系统结构 .3二 多层数据库理论 . 4(一) 多层数据库应用程序.4(二) 三层数据库应用程序的创建概述及关键组件介绍 .4三 数据库开发工具简介. 5(一) C+ Builder6及数据库相关组件简介. 51. C+ Builder6的数据库工具和组件.52. MS SQL Server2000数据库简介 . 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对数据收集、处理等功能。同时本设计考虑到现代图书馆数据服务器和各终端的一对多的实际情况,在对MS SQL Server2000数据库管理系统、SQL语言原理、C+ Builder6应用程序设计及相关数据库技术进行了较深入的学习后实现了分布式的三层构架,主要完成了对图书管理系统的需求分析、数据库模式分析、功能模块分析,并由此设计了数据库结构、中间层应用服务器与前台应用程序。系统运行结果证明,本设计可以满足现代图书馆数据管理的需要。关键词:数据库,SQL语句,MS SQL Server2000,C+ Builder6,数据库组件,BDE Administrator0.引言在当今飞速发展的信息时代。各行各业都离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。利用计算机的海量存储和高速运算进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。大部分还依赖人工处理,往往存在数据信息处理工作量大,容易出错;并且数据繁多,容易丢失,不易查找。总的来说,缺乏系统,规范的信息管理手段。基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。一 本设计的概述本设计是一个设计简单但功能全面的分布式数据库管理系统,主要功能是会员和图书资料的输入、管理以及借书、还书两大功能模块,最后还应用TDBChart控件进行了图书统计。为此分别设计了Member、Book、BookClass和Loan4张数据表,主要用到的数据库连接控件是TTable和TQuery控件。(一) 本设计的目的与结构概述本设计以目前大学图书馆管理为背景,根据其需求,对该图书馆信息管理系统的功能分析如下:1. 图书馆的会员分为本科生和研究生,前后两者的最大借阅数分别是4本和8本。2. 图书馆的图书分为可借阅和不可借阅两种,而且可借书籍中又划分借阅等级。3. 会员能预约图书,也可以取消预约。4. 能增加和删减会员并能维护会员资料。5. 能增加新的图书和删除过旧的图书并能对现有图书进行统计和维护。(二) 设计技巧本系统设计用所要使用的一些编程技巧如下:1. 多层数据库应用程序的创建2. 安装与管理MS SQL Server2000服务器3. 通过SQL语句来创建数据表4. 利用远程数据模块为分布式应用程序集中管理数据5. 利用TDatabase控件来屏蔽数据库登入口令6. 利用TDataSetProvider控件与数据库服务器通信,并为客户端应用程序提供数据7. 利用TDCOMConnection控件远程连接数据库8. 利用TClientDataSet控件从应用服务器中的一个数据提供者获取数据9. 利用TDBChart控件创建统计图表(三) 系统结构后台数据库服务器MS SQL Server应用服务器主窗体MainForm远程数据模块客户端应用程序主窗体MainForm数据模块各 功 能 模 块请求数据返回数据2.多层数据库理论(一) 多层数据库应用程序一个多层客户/服务器应用程序是被分割在不同机器上协同运行的逻辑单元。多层应用程序通过区域甚至是通过Internet与其他程序共享数据和通信,它们有了许多优点,如集中控制的商业逻辑和瘦客户端应用程序。一个多层应用程序其最简单的模式有时称为“三层模式”,可分为三部分:1. 客户端应用程序。运行在用户机器上,提供用户界面。2. 应用程序服务器。位于可连接到所有客户端的网络中央,并提供公共的数据服务。3. 远程数据库服务器。提供关系数据库管理系统。在这种经典的结构中,数据库服务器是指Oracle、DB2、Sybase、MS SQL Server等产品。应用服务器与客户端可自由选择各种载体,如由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,即BDE Administrator。在使用C+ Builder连接到Paradox等数据库时,主要是通过在BDE Administrator中建立一个代表数据库的别名(alias),然后在C+ Builder中使用这个别名来连接并访问该别名所代表的数据库。而在该别名中,必须设置所连接的数据库所使用的驱动程序、使用什么种类的通信协议、使用的语言驱动程序以及其他一些非常重要的参数。如果正确地设置了别名的内容,就可以在C+ Builder中连接并存取这个数据库。2. MS SQL Server2000数据库简介SQL Server2000 是microsoft 公司推出的SQL Server 数据库管理系统的最新版本,该版本继承了SQL server 7.0 版本的优点,同时又比它增加了许多更先进的功能,具有使用方便、可伸缩性好与相关软件集成程度高等优点。SQL Server的所有功能,都可以基于系统已经建立好的一些对象来达成。虽然C+ Builder6也集成了InterBase服务器和Database Desktop,但基于多层数据库应用程序结构的考虑,我认为应该让开发工具和后台数据库相分离,尽可能让任意的开发工具做出来的应用服务器和客户端都可以适用于后台数据库。所以我选择了性能和稳定并重的MS SQL Server2000数据库。4. 建立后台数据库(一) 后台数据库的建立和数据表的设计因为使用的是MS SQL Server数据库,我通过企业管理器来建立数据库。这里说明一下,SQL Server数据库的名称按照默认(local)设置,计算机名为TOSHIBA,数据库用户名为sa,密码为空。通过右键新建数据库选项建立一个新的数据库,命名为Library。1. 创建数据表根据系统所需求的功能,将本系统需要用到的数据表结构定义如下:Member(会员资料)字段名类型大小说明MemberIdint4主键,会员编号Namechar10会员姓名ReBookint4最大可借数Addrvarchar15住址Telchar8寝室电话ExpireDatesmalldatetime4有效期限BookClass(图书类别)字段名类型大小说明ClassIdint4主键,图书类别编号ClassNamevarchar30图书类别名称LoanLevelchar6可借等级Book(图书)字段名类型大小说明BookIdint4主键,图书编号BookNamevarchar50图书名称ClassIdint4图书类别编号Languagechar4编写语言Authorvarchar30作者群ISBNchar10国际书号CopyNoint4册数PubYearsamllint2出版年份InDatedatetime8入馆时间KeyWordvarchar30关键词Loan(借书)字段名类型大小说明BookIdint4主键,图书编号MemberIdint4会员编号BorrDatedatetime8借书时间DueDatedatetime8到期时间(二) 为后台数据库建立BDE别名虽然通过SQL Server建立了后台数据库Library,但为了通过Tdatabase控件访问该数据库而不是通过ODBC连接,仍需要通过BDE Administrator为后台数据库建立别名。运行BDE Administrator,通过菜单栏Object中的New选项新建一个数据库别名,在Database Driver Name中我选择SQL Server然后点确定(图一)。为新出现的数据库接点命名为Library,并在窗体后边设置其连接属性如下所示(图二): (图一) (图二)通过上面的设置,当后面选用Tdatabase控件时,就可以在其Alias Name属性中找到前面定义的Library数据库,而以后所有的数据库连接控件全部通过Tdatabase控件访问后台数据库,这就降低了数据库出错的可能性和维护的难度。至此,后台数据库的配置和数据表的建立工作已经结束。5.图书管理系统应用程序设计(一) 建立中间层应用程序服务器创建应用程序服务器与创建大多数数据库应用程序很相似,区别主要在于应用程序服务器包括了一个数据集提供者。要创建一个应用程序服务器,首先需要在C+ Builder中新建一个工程并保存它,然后再打开该工程并通过File菜单中的New子菜单中的Other命令打开New Items对话框,切换到Multitier标签页,通过双击Remote Data Module图标在新工程中加入一个远程数据模块。如前面所述,该数据模块提供DCOM、HTTP和Sockets三种连接COMAutomation服务器的方法,这里我选用最常见的DCOM连接方法。在新打开的New Remote Data Module Object对话框中必须要填写的是CoClassName一项。该项为远程数据模块提供一个类名,它是应用程序所创建的从TCRemoteDataModule派生的类名,它同时也是应用程序服务器接口的名字。这个名字的命名必须符合C+ Builder的命名规则,这里我按照后台数据库名称为其命名为Library,这样在单元的头文件中向导就会声明一个执行类(ILibraryImpl)来实现Ilibrary。Threading Model项规定了如何将客户的请求传送给远程数据模块的接口,这里选择默认的Apartment线程模式。在Description中输入“图书馆信息管理系统应用程序服务器”作为描述,该对话框最下方还有一个选项Generate Event Support Code,选中该项以建立一个分离界面(interfase)来专门处理事件。最终单击确定按钮以建立远程数据模块(图三)。 现在需要在新建的远程数据模块中添加数据连接控件,但真正连接后台数据库的是TDatabase控件,其他所有的数据连接控件都直接或间接地连接到该控件以实现连接数据库的目的。同时因为连接的后台数据库每次连接都有Datebase Login对话框要求输入正确的用户名和密码,我选择设置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并按照下表设置以上控件的属性:远程数据模块中关键控件属性表控件属性属性值Database1AliasNameLibraryDatabaseNameLoginMemberTableDatabaseNameLoginTableNamedbo.MemberBookTableDatabaseNameLoginTableNamedbo.BookClassTableDatabaseNameLoginTableNamedbo.BookClassLoanTableDatabaseNameLoginTableNamedbo.LoanMemberQueryDatabaseNameLoginSQLSelect * from MemberBookQueryDatabaseNameLoginSQLSelect * from BookLoanQueryDatabaseNameLoginSQLSelect * from LoanMemberProviderDataSetMemberTableBookProviderDataSetBookTableClassProviderDataSetClassTableLoanProviderDataSetLoanTableQMemProviderDataSetMemberQueryOptionspoAllowCommandTextQBookProviderDataSetBookQueryOptionspoAllowCommandTextQLoanProviderDataSetLoanQueryOptionspoAllowCommandText需要注意的是TDataSetProvider控件的Options属性的poAllowCommandText被设置为true时,才能设置其CommandText属性,否则将出现异常。最终的设计如下(图五):至此一个功能强大的中间层应用服务器就创建好了。为了使后期设计的客户程序能够访问该应用服务器,必须将该应用服务器注册。注册的过程很简单,只需单击F9键或者选择Run|Run菜单,让该应用程序运行一次就可。下面开始设计前端客户端应用程序。(二) 建立客户端应用程序创建多层数据库应用程序的客户端,应该按照以下步骤进行: 在项目中加入一个新的数据模块,但如果客户端很简单或者后台数据表不复杂,用到的数据库控件不多,则可直接加入到主窗体中。 在新建的数据模块中放置一个连接控件,其类型取决于想要使用的通信协议。 设置连接控件的属性,以指定要建立连接的应用程序服务器。 设置应用程序所需要的其他连接控件属性。 在数据模块中放置需要的TClientDataSet控件,并将每个控件的RemoteServer属性设置为前面放置的连接组件的名字。 为每一个TClientDataSet控件设置其ProviderName属性。如果连接控件在设计时连接到应用程序服务器,可以从ProviderName属性的下拉列表中选择有效的应用程序服务器提供者。 按照创建其他数据应用成的类似方法创建客户端应用程序。使用客户端数据集的一些特定功能来支持与应用程序服务器的提供者控件之间的交互。1. 客户端主窗体的设计新建一个项目,将默认名为Form1的窗体更名为MainForm。在该窗体中加入一个TMainMenu控件,命名为MainMenu1。然后通过菜单编辑器,在其中加上如下所示菜单:Caption=文件(Name=FileMenu)Caption=会员管理(Name=MemberMenu)Caption=图书管理(Name=BookManageMenu)Caption=操作(Name=OperationMenu)Caption=借书(Name=LoanMenu)Caption=还书(Name=RetBookMenu)Caption=统计(Name=StatMenu)这样仅仅完成了主窗体菜单的设计,而因为并没有设计和挂接上各功能模块,所以点击这些菜单项并没有什么反应。由于本系统涉及8个数据表,并且需要使用的数据库控件很多,所以我选择在客户端建立一个数据模块来统一管理所有的数据连接控件,这样就实现了中间层应用程序和客户端的数据模块的双向通信。2. 在客户端应用程序加入数据模块选择File菜单的New子菜单中的数据模块命令(Data Module),在当前项目中加入一个数据模块,命名为DdataModule1。然后像建立中间层应用服务器数据模块那样在其中加入一个TDCOMConnection控件,将该控件的ComputerName设置成运行上面注册了应用服务程序的计算机的计算机名或IP地址。然后选择ServerName属性项,在它的属性值栏中下拉列表框,这时C+ Builder就到由ComputerName指定的计算机上去寻找一数据库提供者控件,找到以后就显示在列表框中。用户还可以在ServerGUID属性中键入服务器对象的GUID,不过当设置ServerName属性时,如果C+ Builder可以确定GUID,它将自动输入该属性。这里我选择上面注册的loca.Library,然后将此控件的Connected属性值设置为true,这时C+ Builder就会运行前面创建好了的应用程序服务器。接着在DataModule1中加入7个TClientDataSet控件与3个TDataSource控件,分别命名为MemberDataSet、QMemDataSet、ClassDataSet、BookDataSet、QBookDataSet、LoanDataSet、QLoanDataSet、MemberSource、ClassSource、BookSource,并按照下表设置其属性。DataModule1中关键控件属性表控件属性属性值DCOMConnection1ComputerNameTOSHIBA(根据应用服务器名设置)LoginPromptfalseServerNameloca.LibraryQMemDataSetRemoteServerDCOMConnection1ProviderNameQMemProviderClassDataSetRemoteServerDCOMConnection1ProviderNameClassProviderBookDataSetRemoteServerDCOMConnection1ProviderNameBookProviderLoanDataSetRemoteServerDCOMConnection1ProviderNameLoanProviderQLoanDataSetRemoteServerDCOMConnection1ProviderNameQLoanProviderMemberDataSetRemoteServerDCOMConnection1ProviderNameMemberProviderQBookDataSetRemoteServerDCOMConnection1ProviderNameQBookProviderMemberSourceDataSetQueryMemDataSetClassSourceDataSetClassDataSetBookSourceDataSetBookDataSet这里使用的TClientDataSet控件都与TDataSetProvider控件相连,这样可以方便维护和查错。到此客户端主窗体和数据集已经建立,剩下的工作就是为主窗体各菜单设计不同的功能模块来实现原定的系统功能。完成后的客户端数据集如下图(图六)。3. 会员管理模块会员登记模块要实现添加新图书馆会员的功能,而且会员有两种:本科生和研究生。不同会员有借阅等级之分:在可外借的图书中,本科生最大借阅数为4本,而研究生最大借阅数为8本。会员的统一资料有:会员编号、会员姓名、会员类型、寝室住址、寝室电话和有效期等对应Member表的待录入资料。选择File菜单的New子菜单的Form命令新建一个窗体,将窗体命名为MemberForm。在该窗体中加入1个TPageControl控件,通过其右键New Page菜单新增两个页面。在TabSheet1中加入5个TEdit控件与1个TComboBox控件,分别命名为MemberIdEdt、MemberNameEdt、TelEdt、AddrEdt、DateEdt与RightBox。最后再在Panel1中加入6个TLabel控件和5个TBtton控件,分别命名为UpBtn、DownBtn、InserBtn,DelBtn与UpdateBtn。在TabSheet2中加入1个TEdit控件与1个TComboBox控件,分别命名为SearchEdt与SearchBox。再加入一个TButton控件(SearchBtn)和一个TDBGrid控件。最后设置以上控件属性如下表:MemberForm窗体中关键控件属性表控件名称属性属性值TabSheet1Caption会员资料录入TabSheet2Caption会员资料查询RightBoxItems本科生研究生SearchBoxItems会员编号会员姓名DBGrid1DataSourceDM-MemberSource这样就同时完成了会员登记与会员资料查询模块的界面设计工作,这里共有两处关键代码:增加或删除一个会员资料并最终更新到后台数据库;2.在后台数据库中按照SearchBox与SearchEdt中的查询条件对会员资料进行查询。下面分别给出关键代码段:创建InserBtn控件的OnClick事件响应函数,在其中加入以下代码,以实现采集用户输入信息:/-try DM-MemberDataSet-Insert(); DM-MemberDataSet-FieldByName(MemberId)-Value =MemberIdEdt-Text; DM-MemberDataSet-FieldByName(Name)-Value =MemberNameEdt-Text; if(RightBox-Text=本科生) DM-MemberDataSet-FieldByName(Borrow_Right)-Value =4; else if(RightBox-Text=研究生) DM-MemberDataSet-FieldByName(Borrow_Right)-Value =6; else Application-MessageBox(必须输入会员类型,错误,MB_OK); return; DM-MemberDataSet-FieldByName(Tel)-Value =TelEdt-Text; DM-MemberDataSet-FieldByName(Addr)-Value =AddrEdt-Text; DM-MemberDataSet-FieldByName(ExpireDate)-Value =StrToDate(DateEdt-Text); catch(EConvertError& e) Application-MessageBox(该会员编号已经存在,输入错误,MB_OK); return; /-创建DelBtn控件的OnClick事件响应函数,加入以代码用以删除当前的会员资料:/-if(DM-MemberDataSet-Eof !=true) if(MessageDlg(确认要删除该记录么?,mtInformation, TMsgDlgButtons()mbOK MemberDataSet-Delete();/-在完成本地会员资料的录入工作后,我们还需要调用MemberDataSet的ApplyUpdates方法用本地的数据更新后台数据库,可以创建UpdateBtn的OnClick事件响应函数如下:/-DM-MemberDataSet-ApplyUpdates(-1);/- 查询模块我们选用MemberTable的Locate方法来实现,创建TabSheet2中的SearchBtn控件的OnClick事件响应函数如下:/-TLocateOptions Opts; Opts ItemIndex) case 0: DM-MemberDataSet-Locate(MemberId,SearchEdt-Text,Opts); break; case 1: DM-MemberDataSet-Locate(Name,SearchEdt-Text,Opts); break; default: Application-MessageBox(请选择查询条件,错误,MB_OK); break;/-最后要把该模块挂接到MainForm窗体的“会员管理”菜单上,创建MemberMenu的OnClick函数如下:(以下各模块挂接到MianForm都采用相同方法)/- TNewMemberForm *NewMemberForm = new TNewMemberForm(this); NewMemberForm-ShowModal(); delete NewMemberForm;/-到此,会员管理模块的设计就结束了。这里介绍一下客户端和应用服务器的数据传送原理:客户端数据集代表了保存在内存数据包中的数据。这个数据包是该客户端数据集的Data属性值。然而默认时,编辑的数据没有保存在Data属性中,而是将(用户或程序所做的)插入、删除和修改保存在一个内部的更新日志中,它是由Data属性表示的。当一个客户端应用程序连接到一个应用程序服务器时,客户端数据集使用一个由应用程序服务器传送来的数据的本地副本,用户的客户端应用程序的数据感知控件里查看并编辑这些副本。如果服务器限制在客户端数据集可用,用户的编辑操作将受到限制。用户的修改由客户端数据集临时存储于一个内部维护的更新日志,更新日志的内容就像Delta属性中的数据包一样存储。要使Delta属性中的更新成为永久,客户端数据集必须应用它们到后台数据库。对客户端数据集数据的本地副本所做的修改直到客户端应用程序为数据集调用了ApplyUpdates方法后,才被发送到应用程序服务器。ApplyUpdates带有更新日志中的修改值,并作为一个数据包(Delta)传送给应用程序服务器。客户端数据集负责解决产生错误的记录。ApplyUpdates调用Reconcile方法写入更新到后台数据库。4. 图书管理模块本功能维护图书的类别编号与名称,并管理每一类下的图书。该模块的功能和会员管理模块完全相同,为了方便起见,我们采用C+Builder的DataControl组件来代替手工编写代码。该模块所涉及的数据表为BookClass和Book。在当前项目中新增加一个窗体,将新窗体命名为BookForm。同样在其中加入1个TPageControl控件,通过其右键New Page菜单新增3个页面。在TabSheet1中加入2个TDBEdit控件(ClassNoEdt与ClassNameEdt)与1个TDBComboBox控件(ClassBox),再加入3个TLabel控件与5个TButton控件(UpBtn、DownBtn、InsertBtn、DelBtn与ReBtn)。在TabSheet2中加入10个TDBEdit控件(BookIdEdt、BookNameEdt、ClassEdt、LanguageEdt、AuthorEdt、CopyNoEdt、ISBNEdt、KeyEdt、YearEdt与DateEdt)与1个TDBLookupBox控件(ClassLookupBox),再加入10个TLabel控件与5个TButton控件(UpBtn2、DownBtn2、InsertBtn2、DelBtn2与UpdateBtn)。最后在TabSheet3中加入1个TEdit控件(SearchEdt)、1个TComboBox控件(SearchBox)、1个TButton控件(SearchBtn)与1个TDBGrid控件.并像上面的设计一样设置其关键控件的属性如下表:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业互联网平台入侵检测系统高效数据传输优化报告
- 2025年多式联运信息平台在物流仓储中的应用优化与行业协同发展分析
- 2025年网络文学IP衍生品市场分析报告:文化价值与娱乐产业的协同发展
- 2025年婴幼儿配方食品营养配方优化对婴幼儿感官体验影响报告
- 2025年肿瘤精准医疗临床实践中的个体化治疗计划制定报告
- 现代铁路政策与法规课件
- 2025年一级建造师考试建筑工程管理专项试题及答案
- 2025年教师资格证考试(中学)教育知识与能力专项训练押题试卷版
- 2025年高考数学真题解析与专项训练解题思路全解析
- 新中国以来中国民俗的变迁
- 人教版六年级数学上册【全册教案】
- 合同法风险防范培训
- 管理会计学(第6版) 课件 郭晓梅 第1-3章 管理会计导论、成本性态分析与变动成本计算法、作业成本计算法
- 2024版门面租赁合同书范本下载
- 中小学教师专业技术岗位聘任考核方案
- 2024-2025学年高三上学期《为什么要上一个好大学?》主题班会课件
- 职业技术学校物联网应用技术专业调研报告
- GB/T 43934-2024煤矿土地复垦与生态修复技术规范
- 2023年某技术有限公司技术规范
- 秋季传染病预防课件幼儿园
- 江苏农牧科技职业学院单招《英语》考试参考题库(含答案)
评论
0/150
提交评论