图书馆管理系统的设计与实现论文Word文件下载.docx
《图书馆管理系统的设计与实现论文Word文件下载.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统的设计与实现论文Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
2.1
Delphi6.0简介
…………………………
2.2
Delphi6.0控件
2.2.1
ADO数据访问组件
………………………
2.2.2
数据控制类DataControl………………
2.2.3
数据访问类DataAccess……………
2.2.4
SQL语言在Delphi中的应用
………
第三章系统总体设计
…………………………
3.1系统需求分析
3.2系统概要设计
…………………………
3.2.1
系统结构设计
…………………
3.2.2
数据库设计
……………………
3.2.2.1
ER图设计…………………
3.2.2.2
数据库表格设计……………
3.3系统详细设计………………………………
第四章系统应用程序设计
4
.1
系统窗体模块组成………………………
4.2
数据模块窗体设置………………………
4.3
主窗体功能模块的实现…………………
4.4
入库、出库窗体模块的实现……………
4.5
查询功能的实现…………………………
4.6
系统登陆窗体模块的实现………………
4.7
用户管理功能的实现……………………
4.7.1
用户管理主窗体
………………
4.7.2
密码修改窗体模块的实现………
4.7.3
用户注册窗体模块的实现
…
4.7.4
用户注销窗体模块的实现
…
结束语…………………………………………
致谢……………………………………………
参考文献
……………………………………
第一章
引
言
§
课题来源
随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。
随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。
书籍做为人类的精神食粮,在现代社会中越来越受到重视,大量的书籍出现在市场上,人们有了各种各样不同的选择。
与此同时,为了管理大量的图书,图书仓库也大量的出现,仓库的管理问题也就提上了日程。
随着图书的大量增加,其管理难度也越来越大,如何优化仓库的日常管理也就成为了一个大众化的课题。
在计算机飞速发展的今天,将计算机这一信息处理利器应用于仓库的日常管理已是势必所然,而且这也将为仓库管理带来前所未有的改变,它可以带来意想不到的效益,同时也会为企业的飞速发展提供无限潜力。
采用计算机管理信息系统已成为仓库管理科学化和现代化的重要标志,它给企业管理来了明显的经济效益和社会效益。
主要体现在:
极大提高了仓库工作人员的工作效率,大大减少了以往入出存流程繁琐,杂乱,周期长的弊端。
基于仓库管理的全面自动化,可以减少入库管理、出库管理及库存管理中的漏洞,可以节约不少管理开支,增加企业收入。
仓库的管理的操作自动化和信息的电子化,全面提高了仓库的管理水平。
随着我国改革开放的不断深入,经济飞速的发展,企业要想生存、发展,要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,仓库管理的全面自动化、信息化则是其中极其重要的部分。
为了加快仓库管理自动化的步伐,提高仓库的管理业务处理效率,建立仓库管理系统已变得十分心要。
入库、库存、出库还是现在企业图书仓库管理的常规基本模式,虽然,最近又出现了很多新的管理模式,如:
基于零库存思想的沃尔玛特管理方式,但这些新的思想在中国大部分企业的管理中还是难以实现的。
所以如何设计好仓库管理系统,尽可能地减少仓库管理的重复性和低效性就成为当前最为重要的问题。
图书仓库管理的核心是入库、库存和出库之间的联系,如何处理好三者之间的关系是系统最为关键的部分。
另外,员工信息和供应商信息管理也是仓库管理中一个必不可少的部分,它提供着与入库和出库相关的地一些信息,使得整个系统更加完整,更加实用。
通过对仓库管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今图书仓库管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。
1.2开发工具的选择
自Java诞生以来,随着Internet技术的普及和应用需求的变化,以第四代语言为主的应用开发产品发生了较大的变化,它们不仅已成为人们开发应用的开发工具,而且很多产品已发展成为一种强有力的应用开发环境。
这些新型的开发工具通常以一种集成软件包的形式提供给开发人员,被称为Studio(工作室)或Suite(程序组)。
例如,微软的VisualStudio6.0,Borland公司的Delphi6.0等数据库辅助开发工具。
现在,市场上可以选购的应用开发产品很多,流行的也有数十种。
目前在我国市场上最为流行、使用最多、最为先进的可用作企业级开发工具的产品有:
Microsoft公司的VisualBasic6.0版
Microsoft公司的VisualC++6.0版
Borland公司的Delphi6.0版
在目前市场上这些众多的程序开发工具中,有些强调程语言的弹性与执行效率;
有些则偏重于可视化程序开发工具所带来的便利性与效率的得高,各有各的优点和特色,也满足了不同用户的需求。
然而,语言的弹性和工具的便利性是密不可分的,只有便利的工具,却没有弹性的语言作支持,许多特殊化的处理动作必需要耗费数倍的工夫来处理,使得原来所标榜的效率提高的优点失去了作用;
相反,如果只强调程语言的弹性,却没有便利的工具作配合,会使一些即使非常简单的界面处理动作,也会严重地浪费程序设计师的宝贵时间。
而Delphi是一个非常理想选择。
Delphi6是操作系统中快速应用开发环境的最新版本。
它也是当前Windows平台上第一个全面支持最新Web服务的快速开发工具。
无论是企业级用户,还是个人开发者,都能够利用Delphi6轻松、快捷地构建新一代电子商务应用。
Delphi6是惟一支持所有新出现的工业标准的RAD环境,包括XML(扩展标记语言)/XSL(可扩展样式语言),SOAP(简单对象存取协议)和WSDL(Web服务器描述语言)等。
Delphi6是可视化的快速应用程序开发语言,它提供了可视化的集成开发环境,这一环境为应用程序设计人员提供了一系列灵活而先进的工具,可以广泛地用于种类应用程序设计。
在Delphi6的集成开发环境中,用户可以设计程序代码、运行程序、进行程序错误的调试等,可视化的开发方法降低了应用程序开发的难度。
Delphi的基础编程语言是具有面向对象特性的Pascal语言,即ObjectPascal。
ObjectPascal具有代码稳定、可读性好、编译速度快等优点,并将面向对象的概念移植到了Pascal语言中,使这种基础语言有了新的发展空间。
使用Delphi6.0,我们几乎可以作任何事情,还可以撰写种各种类型的应用程序,动态链接库(DLL)、CON、或CORBA对象,CGI/ISAPI程序,MicrosoftBackOffice应用程序。
程序的规模小到简单的个人数据库应用,大到复杂的企业的多层次分布式系统,都可以使用Delphi进行开发,其友好的集成开发界面,可视化的双向开发模式,良好的数据库应用支持高效的程序开发和程序运行,备受广大程序开发人员的好评。
尤其是Delphi对数据库应用的强大支持,大大提高了数据库应用软件开发的效率,缩短了开发周期,深受广大数据库应用程序设计人员的喜爱。
Delphi为数据库应用开发人员提供了丰富的数据库开发组件,使数据库应用开发功能更强大,控制更灵活,编译后的程序运行速度更快。
本文所做工作
引言部分介绍了本系统的课题来源以及对数据库开发工具的选择。
第二章介绍了数据库的发展,关系数据库,数据库体系结构,并系统介绍了SQL语言,为设计和理解应用程序做了铺垫。
第三章系统介绍了Delphi6.0及其部分控件,SQL语言在Delphi6.0中的应用,以及Access等。
第四章是本文的主体,按照软件工程的要求,从需求分析开始,经过概要设计最后到详细设计,完成对整个系统的设计。
第五章根据第四章的设计结果利用Access2000和Delphi6.0进行了具体的窗体和应用程序设计。
总结部分介绍了设计体会和编程体会,并指出了系统设计中的不足和改进的方向
第二章
数据库开发工具
2.1Delphi6.0简介
Delphi类可以粗略地分成两部分:
一部分是组件类,这些组件类通常以某种方式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象(非可视组件除外);
另一部分是功能类,这此功能类的对象通常出现在程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。
在Delphi中,每一个类的祖先都是Tobject类,整个类的层次结构就像一棵倒挂的树,在最顶层的树根即为Tobject类。
这样,按照面向对象编程的基本思想,就使得用户可用Tobject类这个类型代替任何其它类的数据类型。
实际上在Delphi的类库中,Tobject类派生出了为数相当众多的子类,它们形成了一个庞大的体系,通常情况下,如果不自行开发组件,就不必了解整个类的体系结构,只用到类层次树的叶结点就足够了。
凡是做过程序开发的人都知道从来没有单纯的数据应用程序,也就是说,数据库应用程序必须和用户界面(可以是图形界面,也可以是命令接口)元素相结合,只讲界面或只讲数据库本身都构不成数据库应用程序,因而用Delphi6.0开发数据库应用程序就隐含着界面开发。
Delphi6中的VCL组件可用图3-1来说明。
组件在Delphi程序的开发中是最显眼的角色。
大家知道,在编写程序时一般都开始于在组件面板上选择组件并定义组件间的相互作用。
但也有一些组件不在组件面板上,例如Tform和Tapplication(典型的非可视组件)。
组件是Tcomponents派生出来的子类,可以流的形式存放在DFM文件中,具有事件和Publish属性。
窗口组件类是窗口化的可视化组件类,在Delphi的类库中占有最大的份额。
在实际编程中,窗口组件类的对象都有句柄,可以接受输入焦点和包含其它组件。
图形组件与窗口组件并列,是另一大类组件。
图形组件不是基于窗口的,因而不能有窗口句柄,不能接受输入焦点和包含其它组件。
从图8-43中可以看出,图形组件的基类是TgraphicControl,在实际编程中,它们必须寄生于它们的宿主——窗口组件类的对象,由它们的拥有者负责其显示,而且它们还能触发一些和鼠标活动相关的事件。
图形控件最典型的例子是Tlabel和TspeedButton。
由此可以看出图形组件的功能很弱,有读者会问图形组件的用处何在呢?
其实使用图形组件的最大好处在于节省资源,正是因为它们的功能较弱,所以使用的系统资源就要少。
在一个应用程序中,如果能在不影响其功能的前提下合理大量地使用图形组件,将会大减少程序对系统资源的消耗。
非可视组件是与可视组件相并列的另一类组件,非可视组件在程序运行中是不可见的(除各种对话框组件之外,事实上有人认为对话框组件不能归入非可视组件,应该是另一种介于可视与非可视之间的组件)。
2.2Delphi6.0控件
用Delphi6开发数据库应用,重点是和各种数据库组件打交道,当然也要使用其它的一些组件,现在就我在系统设计中所使用的重要组件给与简单介绍。
ADO数据访问组件
ADO数据对象(ActiveDataObjects)实际是一种提供访问各种数据类型的链接机制。
ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口中,可以使用任何一种ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。
ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。
ADO使您的客户端应用程序能够通过OLEDB提供访问和操作在数据库服务器中的数据。
ADO支持用于建立C/S和Web的应用程序的主要功能。
其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。
ADO同时具有远程数据服务(RDS)功能,通过RDS可以在一次往返过程中实现将数据从服务器移动到客户端应用程序和Web页、在客户端对数据进行处然后将更新结果返回服务器的操作。
Delphi6.0继续对Microsoft的ADO访问能力的支持。
这种能力是通过一组新组件实现的,这些组件是在企业版的ADO组件页中,在组件面版的ADO页上可以找到这些组件。
利用在前面章节提到的TdataSet抽象类,ADO组件可以不通过BDE而直接实现ADO连接。
这意味着只需要很少的代码就可以实现该连接并且性能得到提高。
利用ADO数据访问组件,可以只使用ADO结构与数据库取得联系并对其中的数据进行操作,而在这些过程中完全不需要使用BDE。
大多数的ADO连接和数据集组件都是与基于BDE的连接和数据集组件相类似的。
TADOConnection组件与基于BDE的应用程序中的Tdatabase组件类似。
TADOTable与Ttable,TADOQuery与Tquery,以及TADOStoreProc和TstoredProc之间都具有这种类似的对应关系。
使用这些ADO组件的方式与我们常使用的数据访问组件(基于BDE)都有许多相同之处。
TTADODataSet没有直接的BDE对应组件,但它提供了许多与Ttable和Tquery相同的功能。
同样,TADOCommand也没有相对应的BDE组件,它是在Delphi/ADO环境中完成特定功能的组件。
Delphi6.0通过ADO数据集访问组件,可以不借助BDE数据引擎而是通过微软的OLEDB来访问更为广泛的数据库中的数据。
ADO数据集访问组件与常用的数据访问组件是并列的关系。
在系统中我主要使用的是ADOTablet和ADOQuery两个组件。
数据控制类DataControl
数据控制类负责数据库数据的显示,并把用户对数据的修改传回。
这里的绝大多数组件,如DBText,DBEdit,
DBMemo,DBImage,DBListBox,DBComboBox,DBCheckBox,DBRadioGroup,DBLookupListBox,DBLookupCombox,DBCtrGrid的功能和对应的非数据感知组件相同,如TEdit框,TRadioGroups单选按钮组等,只不过在显示数据库数据时要用而已。
在系统中主要使用数据网格控件DBGrid和数据库导航器控件DBNavigator。
数据访问类DataAccess
数据库应用系统中数据访问是一个首要问题,包括单用户和C/S系统,都必须联系一些数据库和数据表文件。
Delphi6提供了专门用于数据访问的基类控件。
主要包括数据源控件DataSource、客户数据集控件ClientDataSet、数据集提供器控件DataSetProvider等等。
Tdatabase:
当一个基于BDE的数据库应用程序需要一个永久数据库连接时,需要定制向一个数据库服务器的连接时,需要事务控制和特殊的数据库别名时就得用到Tdatabase对象。
特别是当连接到一个远程的SQL数据库服务器时,如果要利用BDE进行数据库事务处理,那么,TDatabase对象的威力就体现出来了。
在一个应用程序中为每一个数据库连接显示的声明Tdatabase对象要根据需要而定,不是必需的。
对一个数据库连接,如果没有显示的声明并实例化TDatabase对象,系统就会产生一个带有默认属性的TDatabase对象。
TdataSource对象用于在DataSet对象(包括Tquery,TstoredProc,Ttable等)和数据感知组件之间提供一个连接的纽带,以便在窗体上显示数据库中的数据,在数据库中导航定位与编辑数据集中的数据。
如果一个DataSet对象中的数据想在数据感知组件中显示和修改,它就必须和TdataSource对象相联系。
同样,一个数据感知组件如果想和数据源相联系以便显示和操纵数据,就必须以TDataSource对象为中介。
用Delphi6作数据库应用开发概括来说如下:
先利用数据存取组件和实际的数据库建立连接,并用Tsession对象和Tdatabase对象管理这些连接。
然后以Tdatasource对象为中介,用数据感知组件向用户显示数据库的内容并接受用户的查询和修改等操作。
SQL语言在Delphi中的应用
在Delphi中使用SQL语言非常方便,一般来说,都是通过Tquery组件来使用SQL语言的。
可以在TQuery组件的SQL属性中设置SQL语句。
设计程序时,在该组件的属性对话框中选择SQL属性,单击带省略号的按钮,就可以打开StringListEditor对话框,然后我们就可以在对话框中添加SQL语句。
还可以使用Delphi的SQLBuilder来自动生成SQL语句,这样可以避免手工编写SQL而可能造成的语法错误。
静态SQL语句在程序设计时便已固定下来,它不包含任何参数和变量。
动态SQL语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参数,例如下面的语句是一条动态SQL语句:
Select
*
From
Students
WhereStudentCode=:
StudentCode;
其中的变量StudentCode便是一个参数变量,它由一个冒号引导,在程序运行过程中,必须要为该参数赋值,该条SQL语句才能正确执行,每次运行应用程序时可以为该参数变量赋予不同的值。
为参数赋值有三种方法:
①根据参数在SQL语句中出现的顺序,设置TQuery部件的Params属性值为参数赋值。
②直接根据SQL语句中各参数的名字,调用ParamByName方法来为各参数赋值。
③将TQuery部件的DataSource属性设置为另一个数据源,这样将另一个数据源中与当前TQuery部件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。
利用这种方法也能实现所谓的连接查询,创建主要—明细型数据库应用。
在程序运行过程中,要想设置TQuery部件的SQL属性,必须首先调用Close方法,关闭TQuery部件,然后再调用Clear方法清除SQL属性中现存的SQL命令语句,最后再调用Add方法为SQL属性设置新的SQL命令语句。
例如:
Query1.Close{关闭Query1)
Query1.SQL.Clear{清除SQL属性中的SQL命令语句}
Query1.SQL.Add(‘Select*FromStudents‘);
Query1.SQL.Add(‘WhereName="
Lucy"
‘);
在为TQuery部件设置SQL属性时调用Close方法总是很安全的,如果TQuery部件已经被关闭了,调用Close方法时不会产生任何影响。
在应用程序中为SQL属性设置新的SQL命令语句时,必须要调用Clear方法以清除SQL属性中现存的SQL命令语句,如果不调用Clear方法,便调用Add方法向SQL属性中设置SQL命令语句,那么新设置的SQL命令语句会追加在现存SQL命令语句后面,在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。
在这里要特别注意的,一般情况下TQuery部件的SQL属性只能包含一条完整的SQL语句,它不允许被设置成多条SQL语句。
当然有些数据库服务器也支持在TQuery部件的SQL属性中设置多条SQL语句,只要数据库服务器允许这样,我们在编程时可以为SQL属性设置多条SQL语句。
在为TQuery部件设置完SQL属性的属性值之后,也即编写好适当的SQL程序之后,可以有多种方式来执行SQL程序。
在设计过程中,设置完TQuery部件的SQL属性之后将其Active属性的值置为True,这样便可以执行SQL属性中的SQL程序,如果应用中有与TQuery部件相连的数据浏览部件(如TDDGridTDBEdit等)那么在这些数据浏览部件中会显示SQL程序的执行结果。
在应用程序运行过程中,通过程序调用TQuery部件的Open方法或ExecSQL方法可以执行其SQL属性中的SQL程序。
Open方法和ExecSQL方法是不一样的。
Open方法只能用来执行SQL语言的查询语句(Select命令),并返回一个查询结果集,而ExecSQL方法还可以用来执行其它常用的SQL语句(如INSERT,UPDATE,DELETE等命令),例如:
Query1.Open(这样会返回一个查询结果集)
如果调用Open方法,而没有查询结果时,会出错。
此时应该调用ExecSQL方法来代替Open方法。
如:
Query1.ExecSQL(没有返回结果)
当然在设计应用程序时,程序设计人员是无法确定TQuery部件中的SQL语句是否会返回一个查询结果的。
对于这种情况应当用Try…Except模块来设计程序。
在Try部分调用Open方法,而在Except部分调用ExceSQL方法,这样才能保证程序的正确运行。
Delphi中用ADOQuery来使用SQL语句同样十分方便。
在ADOQuery组件中首先通过ConnectionString属性值来联接数据源,然后就通过双击SQL…属性值来写入SQL语句。
在Delphi中调用数据库,就可以调用ADOQuery组件,通过修改其中的SQL…属性中的SQL语句来实现对数据库的各项操作。
值得注意的是,ADOQuery组件只有在激活的情况下才可以被正确地使用,这样就提出了一个问题,也就是说,在每次修改ADOQuery组件的SQL…属性时都必须先行进行关闭,待清除掉SQL…中所有的SQL语句后才可以添加新的SQL语句。
而且,在每一次修改完成以后,还应该记得重