摘 要
图书管理系统是智能办公系统(IOA)的重要组成部分,因此,图书管理系统也以方便、快捷的有点正慢慢地进入人们的生活,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工作人员以往繁忙的工作,减小出错的概率,使读者花更多的时间在选择书和看书上。从而使人们有更多的时间来获取信息、了解信息、掌握信息。图书馆管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备、易使用等特点。采用SQL数据库作为后台数据库、SQL编程语言作为前台开发工具,通过对数据库技术进行了较深入的学习和应用,主要完成图书管理系统查询功能的实现。系统运行结果证明,本文所设计的图书管理系统查询功能的实现可以满足学生和教师借阅者、图书管理人员两方面的需求,达到了设计要求。
关键词:图书管理系统;数据库;查询功能;SQL
- 1 -
ABSTRACT
Library management system is the intelligent office systems (IOA) an important part of, so a bit of library management system to quickly and easily is slowly into people's lives, will be completely free of traditional library management, increase efficiency, reduce staff before the busy work, reducing the probability of error, so that readers spend more time on in the choice of books and reading. So as to allow more time for people to get information, learn about information, information. Library management system is a typical management information system(MIS),the establishment and maintenance of database development includes the background and development the two aspects of front-end applications. Data consistency and
integrity requirements established for the former library of strong, good data security. While the latter requires that the application functions, easy to use and so on.
SQLdatabase as a backend database,SQL programming languages as the foreground development tools, through a more in-depth study and application of database technology, mainly implementation of query feature complete library management system. Systems running turned out to this article the design of books management system realization of query functions can meet students and teachers, librarians ' two needs of the borrowing, meet design requirements.
Key words: Library management systems; databases; queries;SQL
- 2 -
目 录
第一章 前言…………………………………………………1 1.1 概述…………………………………………………………1
1.2 图书管理系统………………………………………………1 1.3 研究现状……………………………………………………2 1.4 个性化服务…………………………………………………2
第二章 数据库………………………………………………4
2.1 数据库阶段的特点…………………………………………4 2.2从文件系统发展到数据库系统是信息处理领域的一个重大变化…………………………………………………………………5 2.3数据库模型…………………………………………………5 2.4 数据库体系结构……………………………………………7 2.5 SQL简介……………………………………………………7 2.6 ADO数据访问组件…………………………………………9 2.7数据控制类DataControl…………………………………10 2.8数据访问类DataAccess……………………………………10 2.9 SQL语言在Delphi中的应用………………………………11 第三章 图书管理系统分析…………………………………13 3.1 背景概述……………………………………………………13 3.2 需求分析……………………………………………………14 3.3 可行性分析…………………………………………………15
- 3 -
3.4 系统分析……………………………………………………15 3.5开发环境……………………………………………………16 3.6 功能需求……………………………………………………16 3.7 性能需求……………………………………………………17
第四章 详细设计………………………………………………18 4.1 程序流程图…………………………………………………18
4.2 程序接口描述………………………………………………19 4.3 数据库的设计………………………………………………20
第五章 编码实现………………………………………………22 5.1 程序编码……………………………………………………22 第六章 测试分析报告………………………………………26
6.1测试计划和要点…………………………………………26 6.2 测试用例……………………………………………………26 6.3 测试结果及结论……………………………………………27
致谢………………………………………………………………29 参考文献…………………………………………………………30
- 4 -
第一章 前 言
1.1概述
现在,科学技术的飞速发展把人类社会推向了一个崭新的时代——信息时代。这已是无可争议的事实;信息对社会经济发展的巨大推动作用,使其与物质能源一起并列为现代社会的三大支柱,这已在全社会达到共识。随着对信息作为一种资源来管理的需求日益加强,信息研究领域出现了一种新的管理思想和模式——信息管理。由于信息是普遍存在的,人类信息管理活动的范围也是十分广泛的,信息管理不仅是信息工作的一部分,而且已被认为是现代管理的重要组成部分。
在信息化、知识化的现代社会里,浩如烟海的科技文献信息和图书资料是不可取的社会财富。计算机信息技术和Internet的飞速发展与广泛普及,给我们利用和开发文献息和图书资料赋予了高效率的手段。传统的纸介质发展到纸张、电子、磁记录、光存储等多种介质的大量应用;信息处理和传输的方式由传统的书信进化到文字、声音、图像的网络实时传输。由于网络的应用,图书馆之间相互联机,资源共享,读者被极为丰富的资源所包围。随着时代的发展,传统的基于局域网和纯文本类型的文献信息系统己经不能满足发展的要求,需要赋予图书管理系统先进的技术和手段以向多种数据媒体、资源跨地域分布的数字式图书馆发展,图书管理朝着技术自动化和服务手段多元化方向发展。图书管理信息系统的开发与应用越来越显迫切与重要,因此,开发这样一套图书管理软件成为很有必要的事情。
1.2图书管理系统
图书馆管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强.数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。本文针对目前中小图书管理实际,从系统的开发背景、需求分析、设计原则及开发过程等四个方面进行了全面的阐述,采用Visual Basic6.0和SQL Sserver2000等软件为开发工具,阐述了中小型图书管理软件中所应具有的功能及其设计与实现。
使用计算机软件对图书进行管理,是计算机应用的一部分。以实现图书检索迅速、可靠性高、存储量大、寿命长、成本低等特点,能极大程度地提高图
- 1 -
书管理的效率,也是图书管理信息化、正规化管理的必然趋势。
针对用户对图书资源进行有效利用和管理的功能需求,用建模技术对图书管理资源采用面向对象的描述方式,在具体系统功能实现之前,建立起系统模型是很必要的,这里采用具有可视化、能够柔性实现分析、设计和开发系统的统一建模语言实现系统模型构建。
当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。
基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
1.3研究现状
进入21实际以来,信息技术从根本上推动了图书馆的快速发展,计算机和计算机管理系统已成为图书馆进行图书馆管理的主要设备和系统,国内主要图
- 2 -
书馆已经呈现出网络化、信息化、智能化、和社会化的特征。信息技术在改变人们生产、收集、组织、传递和使用知识信息的方式的同时,也使信息服务的机制、结构以及服务手段发生了巨大的变化。如何将一些先进的信息技术运用到图书馆的管理和服务中,用这些技术来改变图书馆的传统管理模式,多方面、多角度的满足人们获取知识是目前图书馆的工作重点。信息技术的发展和应用不仅改变了图书馆的信息资源的结构和获取信息的方式,同时也促进了图书馆传统功能模式向开放式、网络式的信息服务模式改变,由单一功能向多功能改变,也改变了其服务理念。国内大部分图书馆由于管理人员不多且大多数都不是图书馆管理的专业人员、业务分工也不是很明确,复杂的管理软件对于他们来说太庞大、复杂,所以应用效果不是很好。这就需要开发出一套既操作简便又功能强大的图书馆管理软件来管理图书馆的相关信息。
1.4个性化服务
在网络化时代,人们对信息的需求具有鲜明的个性特征,这是由于其知识背景、职业背景、环境背景等等的不同所形成的,人们带着个性化的需求利用图书馆,图书馆便需要提供个性化服务以迎合这种需求。所谓个性化信息服务,是指能够满足用户的个人信息需求的一种服务,它根据用户的特性提供具有针对性的信息内容或系统功能,在某一特定的网上功能和服务方式中,设定网上信息的来源方式、表现形式、特定网上功能及其他网上服务方式等,主动地向用户提供其可能需要的信息服务。从其定义中我们可以看出,图书馆提供的个性化信息服务具有显性含义:根据个性化的用户提供个性化的信息,也即服务的针对性;同时它也具有隐性含义:并不停留在用户所需要的直接信息上,而是同时提供相关信息,这些信息是用户可能需要但其还没有意识到的,可以说这是服务的拓展性。由于网络的迅速发展,它必将成为图书馆与用户相互交流的有效渠道,用户通过网络向图书馆提交信息需求,图书馆员作为信息导航员通过网络传送用户所需求的信息,在多次的信息交流过程中实现信息服务的个性化。
传统图书馆所提出的特色化服务主要依托于特色化实体馆藏,而在网络环境下,有限的馆藏资源和无限的网络资源共同构成图书馆信息服务的基础,图书馆应该深入加工自己的文献资源,深入到知识单元内部,借助于网上信息资源,建立自己的特色化数据库。因而,当今环境下的特色化服务主要是指特色化数据库提供的信息服务,特色数据库由特色内容和特色技术构成:特色内容是指根据馆藏特点,依据已有的馆藏资源,开发出富有特色的内容体系,这一内容体系应为你无我有,你有我优;特色技术是指要有一定的规模,要有有效
- 3 -
的检索功能,要有多媒体信息,要有互动界面,要能提供全文检索。特色化数据库是服务的内容,它是吸引用户最为关键的因素。除此之外,图书馆还要考虑为用户提供特色化的服务形式,如记录用户的需求信息,为其提供专业或相关专业信息的主动推送服务;建立读者库,促进读者之间的沟通,以读者服务读者。
图书馆提供具有时效性的信息服务才能避免科研工作的延迟、重复,才能使读者最大限度地利用所获取的信息,充分发挥信息的潜在价值。
- 4 -
第二章 数据库
2.1数据库阶段的特点
2.1.1减少数据的重复(Redundancy can be reduced)
当在一个非数据库系统当中,每一个应用程序都有属于他们自己的文件,
由于无法有系统建立的数据,因此常常会造成存储数据的重复与浪费。例如:在一家公司当中,人事管理程序与工资管理程序或许都会使用到职员与部门的信息或文件,而我们可以运用数据库的方法,把这两个文件整理起来,以减少多余的数据,过度地占用存储空间。
2.1.2避免数据的不一致(Inconsistency can avoid)
本项的特色,可以说是延伸前项的一个特点,要说明这样的一个现象,我们可以从下面这个实例来看:若是在同一家公司当中,职员甲在策划部门工作,且职员甲的记录同时被存放在数据库的两个地方,而数据库管理系统却没有对这样重要的情况加以控制,当其中一条数据库被修改时,便会造成数据的不一致,但是,对于一个健全的数据库管理系统而言,将会对这样的情况加以控制,但有时并不需要刻意消除这种情形,应当视该数据库的需求与效率来决定。
2.1.3数据共享(Data shared)
对于数据共享的意义,并不是只有针对数据库设计的应用程序,可以使用数据库中的数据,对于其他撰写好的应用程序,同样可以对相同数据库当中的数据进行处理,进而达到数据共享的目的。
2.1.4强化数据的标准化(Standard can be enforced)
由数据库管理系统,对数据做出统筹性的管理,对于数据的格式与一些存储上的标准进行控制,如此一来,对于不同的环境的数据交换(Data Interchange)上将有很大的帮助,也能提高数据处理的效率。
- 5 -
2.1.5实践安全性的管理(Security restriction can be applied)
通过对数据库完整的权限控制,数据库管理者可以确认所有可供用户存取数据的合法途径渠道,并且可以事先对一些较重要或关键性的数据进行安全检查,以确保数据存取时,能够将任何不当损毁的情形降至最低。
2.1.6完整性的维护(Integrity can be maintained)
所谓完整性的问题,就是要确认某条数据在数据库当中,是正确无误的。
正如(2)所述,若是无法控制数据的不一致性,便会产生完整性不足的问题,所以,我们会发现,当数据重复性高的时候,数据不完整的情形也会增加,当然,若是数据库的功能完整,将会大大地提高数据完整性,也会增加数据库的维护能力与维护简便性。
2.1.7需求冲突会获得平衡(Conflicting requirements can be balance)
在一个较大型的企业当中,用户不同的需求,往往会造成系统或数据库在
设计上的困扰,但是一个合适的数据库系统,可以通过数据库管理员的管理,将会有效地整理各方面的信息,对于一些较重要的应用程序,可以适时地提供较快速的数据存取方法与格式,以平衡多个用户在需求上的冲突。
2.2从文件系统发展到数据库系统是信息处理领域的一个重大变化
在文件系统阶段,人们关注的中心问题是系统功能的设计,因而程序设计处于主导地位,数据只起着服从程序需要的作用。在数据库方式下,信息处理观念已为新体系所取代,数据占据了中心位置。数据结构的设计成为信息系统首先关心的问题,而利用这些数据的应用程序设计则退居到以既定的数据结构为基础的外围地位。
目前世界上已有数百万个数据库系统在运行,其应用已经深入到人类社会生活的各个领域,从企业管理、银行业务、资源分配、经济预测一直到信息检索、档案管理、普查统计等。并在通信网络基础上,建立了许多国际性的联机检索系统。我国20世纪90年代初在全国范围内装备了12个以数据库技术为基础的大型计算机系统,这些系分布在邮电、计委、银行、电力、铁路、气象、民航、情报、公安、军事、航天和财税等行业。
数据库技术还在不断的发展,并且不断地与其它计算机技术相互渗透。数
- 6 -
据库技术与网络通信技术相结合,产生了分布式数据库系统。数据库技术与面向对象技术相结合,产生了面向对象数据库系统。 在数据库技术中有四个名词,其概念应该分清。
(1)数据库(database,DB):DB是统一管理的相关数据的集合。DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性。 (2)数据库管理系统(Database Management System DBMS):DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型和面向对象型DBMS。
(3)数据库系统(Database System DBS):DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。
(4)数据库技术:这是一门研究数据库的结构、存储、管理和使用的软件学科。数据库技术是操作系统的文件系统基础上发展起来的。而DBMS本身要在操作系统的支持下才能工作。数据库不仅用到数据结构的知识,而且丰富了数据结构的内容。在关系数据库中要用到集合论、数理逻辑的理论。因此,数据库技术是一门综合性较强的学科。
2.3 数据库模型
从20世纪50年代中期开始,计算机的应用由科学研究部门逐步扩展到企业、行政部门。至60年代,数据处理成为计算机的主要应用。数据库技术作为数据管理技术,是计算机软件领域的一个重要分支,产生于60年代末。现已形成相当规模的理论体系和实用技术。
模型是对现实世界的抽象。在数据库技术中,我们用模型的概念描述数据库的结构与语义,对现实世界进行抽象,表示实体类型及实体间联系的模型称为“数据模型” 。
目前广泛作用的数据模型可分为两种类型:
一种是独立于计算机系统的模型,完全不涉及信息在系统中的表示,只是
用来描述某个特定组织所关心的信息结构,这类模型称为“概念数据模型” 。要领模型用于建立信息世界的数据模型,强调其语义表达功能,应该概念简单、清晰,易于用户理解,它是现实世界的第一层抽象,是用户和数据库设计人员之间进行交流的工具。这一其中著名的模型是“实体联系模型” 。
另一种数据模型是直接面向数据库的逻辑结构,它是现实世界的第二层抽
象。 这类模型涉及到计算机系统和数据库管理系统,又称为“结构数据模
- 7 -
型” 。例如,层次、网状、关系、面向对象等模型。这类模型有严格的形式化定义,以便于在计算机系统中实现。
(1)层次模型。用树型结构表示实体类型及实体间联系的数据模型。树的结点是记录类型,每个非根结点有且只有一个父结点。上一层记录类型和下一层记录类型间联系是1∶N联系。
层次模型的特点是记录之间的联系通过指针实现,查询效率较高。但层次模型有两个缺点:一是只能表示1∶N联系,虽然有多种辅助手段实现了M∶N联系,但都较复杂,用户不易掌握,二是由于树型结构层次顺序的严格和复杂,引起数据的查询和更新操作也很复杂,因此,编写应用程序也很复杂。 (2)网状模型。用有向图结构表示实体类型及实体间联系的数据模型。。1969年DBTG报告提出的数据模型是网状模型的主要代表。有向图中的结点是记录类型,有向边表示从箭尾一端的记录类型到箭头一端的记录类型间联系是1∶N联系。
网状模型的特点:记录之间联系通过指针实现,M∶N联系也容易实现(每个M∶N联系可拆成两个1∶N联系),查询效率较高。网状模型的缺点是编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。由于层次系统和网状系统的应用程序编制比较复杂,因此,从20世纪80年代中期起,其市场已被关系系统所取代。但是使用这两种模型建立起的许多数据库仍然在正常运转,只是在外层加了个关系数据库语言的接口。网状模型有许多成功的产品,20世纪70年代的产品大部分网状系统,例如,Honeywell公司的IDS/Ⅱ、HP公司的IMAGE/3000、Burroughs公司的DMSⅡ、Umivac公司的DMS1100、Cullinet公司的IDMS、Cimcom公司的TOTAL等
(3)关系模型。关系模型的主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。 关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。关系模型是数学化模型。SQL语言是关系数据库的标准化语言,已得到了广泛的应用。20世纪70年代对关系数据库的研究主要集中在理论和实验系统的开发方面。80年代初才形成产品,但很快得到广泛的应用和普及,并最终取代了层次、网状数据库产品。现在市场上典型的关系DBMS产品有DB2、ORACLE、SYBASE、INFORMIX和微机型产品Foxpro、Access等。
关系模型和网状、层次模型的最大区别是:关系模型用表格数据而不是通过指针链来表示和实现实体间联系。关系模型的数据结构简单、易懂。只需用简单的查询语句就可对数据库进行操作。
- 8 -
关系模型是数学化的模型,可把表格看成一个集合,因此集合论、数理逻辑等知识可引入到关系模型中来。关系模型已是一个成熟的有前途的模型,已得到广泛应用。
(4)面向对象模型。目前,关系数据库的使用已相当普遍,但是,现实世界中仍然存在着许多含有复杂数据结构的应用领域,例如,CAD数据、图形数据等,而关系模型在这方面的处理能力就显得力不从心。因此,人们需要更高级的数据库技术来表达这类信息。面向对象的概念最早出现在程序设计语言中,随后迅速渗透到计算机领域的每一个分支。面向对象数据库是面向对象概念与数据库技术相结合的产物。
面向对象模型能完整地描述现实世界的数据结构,具有丰富的表达能力,但模型相对较复杂,涉及的知识面也广,因此面向对象数据库尚未达到关系数据库那样的普及程度。
2.4 数据库体系结构
数据库的体系结构分三级:内部级(internal),概念级(conceptual)和外部级(external)。这个三级结构有时也称为“三级模式结构”,或“数据抽象的三个级别”,最早是在1971年通过的DBTG报告中提出,后来收入在1975年的美国ANSI/SPARC报告中。虽然现在DBMS的产品多种多样,在不同的操作系统支持下工作,但是大多数系统在总的体系结构上都具有三级模式的结构特征。从某个角度看到的数据特性称为“数据视图”(data view)。
外部级最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。
概念级涉及到所有用户的数据定义,是全局的数据视图。全局数据视图的描述称为“概念模式”。
内部级最接近于物理存储设备,涉及到实际数据存储的结构。物理存储数据视图的描述称为“内模式”。
数据库的三级模式结构是数据的三个抽象级别。它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,这样就减轻了用户使用系统的负担。
三级结构之间往往差别很大,为了实现这三个抽象级别的联系和转换,DBMS在三级结构之间提供两个层次的映象(mappings):外模式/模式映象,模式/内模式映象。此处模式是概念模式的简称。
- 9 -
2.5 SQL简介 2.5.1 SQL
用户对数据库的使用,是通过数据库管理系统提供的语言来实现的。不同的数据库管理系统提供不同的数据库语言。关系数据库管理系统几乎都提供关系数据库标准语言——SQL。
SQL 的全称是Structured Query Language,即结构化查询语言。SQL语句可以从关系数据库中获得数据,也可以建立数据库、增加数据、修改数据。1986年ANSI采用SQL语言作为关系数据库系统的标准语言,后被国际化标准组织(ISO)采纳为国际标准。SQL语言使用方便、功能丰富、简洁易学,是操作数据库的工业标准语言,得到广泛地应用。例如关系数据库产品DB2、ORACLE等都实现了SQL语言。同时,其它数据库产品厂家也纷纷推出各自的支持SQL的软件或者与SQL的接口软件。这样SQL语言很快被整个计算机界认可。 SQL语言是一种非过程化语言,它一次处理一个记录集合,对数据提供自动导航。SQL语言允许用户在高层的数据结构上工作,而不对单个记录进行操作。SQL语言不要求用户指定数据的存取方法,而是使用查询优化器,由系统决定对指定数据存取的最快速手段。当设计者在关系表上定义了索引时,系统会自动利用索引进行快速检索,用户不需知道表上是否有索引或者有什么类型的索引等细节。
SQL语言可以完成许多功能,例如: ● 查询数据
● 在数据库表格中插入、修改和删除记录 ● 建立、修改和删除数据对象 ● 控制对数据和数据对象的存取 ● 确保数据库的一致性和完整性等
2.5.2SQL查询
数据查询是关系运算理论在SQL语言中的主要体现,SELECT 语句是SQL
查询的基本语句,当我们在对一个数据库进各种各样的操作时,使用的最多的就是数据查询,在以SQL为基础的关系数据库中,使用的最多的就是SELECT查询语句。
SELECT语句的完整句法如下: SELECT 目标表的列名或列表达式序列 FROM 基本表和(或)视图序列
- 10 -
[WHERE 行条件表达式] [GROUP BY 列名序列] [HAVING 组条件表达式] [ORDER BY列名 [ASC│DEAC]…]
我在SELECT语句中还使用了大量的保留字和通配符以进行各种各样的条件查询。在系统中有大量的查询按钮,其使用了大量的查询语句,而且这些查询语句大部分使用的是模糊查询,所以大量的使用了模式匹配符LIKE(判断值是否与指定的字符通配格式相符)。在包含LIKE的查询语句中可以使用两个通配符:%(百分号):与零个或多个字符组成的字符串匹配;_(下划线):与单个字符匹配。系统中的条件判断往往包含多个条件,这时就需要使用逻辑运算符NOT、AND、OR(用于多条件的逻辑连接),谓词ALL以及保留字DISTINCT等等。做为SELECT语句还有很多的使用方法,这里就不再叙述。
2.5.3 SQL数据更新
使用数据库的目的是为了有效地管理数据,而数据的插入、删除和修改则
是必不可少的一个功能。在本系统中就大量地使用了数据插入、删除和修改这三种操作,现做一个简单地介绍。 ●数据插入
往数据库的基本表中插入数据使用的是INSERT语句,其方式有两种:一种是元组值的插入,另一种是查询结果的插入。在本系统中使用的是前一种方式,其句法如下:
INSERT INTO 基本表名(列表名)VALUES(元组值) ●数据删除
往数据库的基本表中删除数据使用的是DELETE语句,其句法如下: DELETE FROM 基本表名 [WHERE 条件表达式]
在些作一点说明,删除语句实际上是“SELECT * FROM 基本表名 [WHERE 条件表达式]”和DELETE操作的结合,每找到一个元组,就把它删除。此外,DELETE语句只能从一个基本表中删除元组,WHERE子句中条件可以嵌套,也可以是来自几个基本表的复合条件。 ●数据修改
当需要修改基本表中元组的某些列值时,可以用UPDATE语句实现,其句法如下:
UPDATE基本表名
SET列名=值表达式[,列名=值表达式…] [WHERE条件表达式]
在Delphi中使用SQL语句是很方便的,一般来说,都是通过TQuery组件
- 11 -
来使用SQL语言的。有一点要进行说明,虽然通过TQuery组件来使用SQL语言很方便,但考虑到自己对不同组件的理解程度、个人习惯以及其它各个方面,在本系统中我采用的是ADO组件来对数据库进行操作。最简单的方法比如在TADOQuery组件的SQL属性中就可以键入SQL语句,至于详细的使用方法在后面进行介绍。
2.6 ADO数据访问组件
ADO数据对象(Active Data Objects)实际是一种提供访问各种数据类型的链接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口中,可以使用任何一种ODBC数据源,即不止适合于SQL Server、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLE-DB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。ADO使您的客户端应用程序能够通过OLE DB提供访问和操作在数据库服务器中的数据。ADO支持用于建立C/S和Web的应用程序的主要功能。其主要优点是易于使用、高速度、低内存支出和占用磁盘空间较少。ADO同时具有远程数据服务(RDS)功能,通过RDS可以在一次往返过程中实现将数据从服务器移动到客户端应用程序和Web页、在客户端对数据进行处然后将更新结果返回服务器的操作。
Delphi 6.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环境中完成特定功能的组件。Delphi 6.0通过ADO数据集访问组件,可以不借助BDE数据引擎而是通过微软的OLEDB来访问更为广泛的数据库中的数据。ADO数据集访问组件与常用的数据访问组件是并列的关系。
在系统中我主要使用的是ADOTablet和ADOQuery两个组件。
- 12 -
2.7 数据控制类DataControl
数据控制类负责数据库数据的显示,并把用户对数据的修改传回。这里的绝大多数组件,如DBText, DBEdit, DBMemo, DBImage, DBListBox, DBComboBox, DBCheckBox, DBRadioGroup, DBLookupListBox, DBLookupCombox, DBCtrGrid的功能和对应的非数据感知组件相同,如TEdit框,TRadioGroups单选按钮组等,只不过在显示数据库数据时要用而已。
在系统中主要使用数据网格控件DBGrid和数据库导航器控件DBNavigator。
2.8 数据访问类DataAccess
数据库应用系统中数据访问是一个首要问题,包括单用户和 C/S系统,都必须联系一些数据库和数据表文件。Delphi 6 提供了专门用于数据访问的基类控件。主要包括数据源控件DataSource、客户数据集控件ClientDataSet、数据集提供器控件DataSetProvider等等。
Tdatabase:当一个基于BDE的数据库应用程序需要一个永久数据库连接时,需要定制向一个数据库服务器的连接时,需要事务控制和特殊的数据库别名时就得用到Tdatabase对象。特别是当连接到一个远程的SQL数据库服务器时,如果要利用BDE进行数据库事务处理,那么,TDatabase对象的威力就体现出来了。在一个应用程序中为每一个数据库连接显示的声明Tdatabase对象要根据需要而定,不是必需的。对一个数据库连接,如果没有显示的声明并实例化TDatabase对象,系统就会产生一个带有默认属性的TDatabase对象。 TdataSource对象用于在DataSet对象(包括Tquery,TstoredProc,Ttable等)和数据感知组件之间提供一个连接的纽带,以便在窗体上显示数据库中的数据,在数据库中导航定位与编辑数据集中的数据。如果一个DataSet对象中的数据想在数据感知组件中显示和修改,它就必须和TdataSource对象相联系。同样,一个数据感知组件如果想和数据源相联系以便显示和操纵数据,就必须以TDataSource对象为中介。
用Delphi6作数据库应用开发概括来说如下:先利用数据存取组件和实际的数据库建立连接,并用Tsession对象和Tdatabase对象管理这些连接。然后以Tdatasource对象为中介,用数据感知组件向用户显示数据库的内容并接受用户的查询和修改等操作。
2.9 SQL语言在Delphi中的应用
在Delphi中使用SQL语言非常方便,一般来说,都是通过Tquery组件来
使用SQL语言的。可以在TQuery组件的SQL属性中设置SQL语句。设计程序时,在该组件的属性对话框中选择SQL属性,单击带省略号的按钮,就可以打开
- 13 -
String List Editor对话框,然后我们就可以在对话框中添加SQL语句。还可以使用Delphi的SQL Builder来自动生成SQL语句,这样可以避免手工编写SQL而可能造成的语法错误。
静态SQL语句在程序设计时便已固定下来,它不包含任何参数和变量。
动态SQL语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参数,例如下面的语句是一条动态SQL语句:
Select * From Students Where StudentCode =: 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 * From Students‘); Query1.SQL.Add(‘ Where Name =\"Lucy\" ‘);
在为TQuery部件设置SQL属性时调用Close方法总是很安全的,如果TQuery部件已经被关闭了,调用Close方法时不会产生任何影响。在应用程序中为SQL属性设置新的SQL 命令语句时,必须要调用Clear方法以清除SQL属性中现存的SQL命令语句,如果不调用Clear方法,便调用Add方法向SQL属性中设置SQL命令语句,那么新设置的SQL命令语句会追加在现存SQL命令语句后面, 在程序运行时常常会出现出乎意料的查询结果甚至程序无法运行下去。
在这里要特别注意的,一般情况下TQuery部件的SQL属性只能包含一条完整的SQL语句,它不允许被设置成多条SQL语句。当然有些数据库服务器也支持在TQuery部件的SQL属性中设置多条SQL语句,只要数据库服务器允许这样,
- 14 -
我们在编程时可以为 SQL 属性设置多条SQL语句。
在为TQuery部件设置完SQL属性的属性值之后,也即编写好适当的SQL程序之后,可以有多种方式来执行SQL程序。
在设计过程中,设置完TQuery部件的SQL属性之后将其Active属性的值置为True, 这样便可以执行SQL属性中的SQL程序,如果应用中有与TQuery部件相连的数据浏览部件( 如TDDGrid TDBEdit等)那么在这些数据浏览部件中会显示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语句。而且,在每一次修改完成以后,还应该记得重新将ADOQuery激活。其它的使用方法与TTQuery有许多的相似之处。
建立一个数据库我们有多种选择,现在市场上有各种各样的数据库,而且每一种数据库都有其自身的特点,不能说哪一种更好,只能在其中寻找一种能更好地适应系统需求、更好地满足用户的要求以及适应开发人员的习惯。在本系统中,做为图书仓库管理系统是一个比较小的应用系统,它所产生和处理的数据量也比较小。因此,没有必要使用像SQL Server和Oracle这样的大型数据库。我首先想到的数据库是Borland公司的Paradox数据库。另外,Microsoft
- 15 -
Office中的Access数据库在计算机上的应用比较普及,是开发小型数据库系统的比较理想的选择,所以,在本系统中我选择了Access数据库。
Access做为一个数据库管理系统,它被集成在Microsoft Office中。Access数据库处理的基本结构,采取关系型数据库模式。与其他的数据库系统相比,Access更加简单易学,一个普通的计算机用户可以很快地掌握它。Access 2000的功能十分强大,利用它可以方便地实现对信息保存、维护、查询、统计、打印、交流、发布,而且它可以十分方便地与Office其他组件交流数据,这些功能对一个一般用户而言已经足够了。
- 16 -
第三章 图书管理系统
3.1 背景概述
随着现代科学技术的进步,人类社会正逐渐走向信息化,图书馆拥有丰富的文献信息资源,是社会系统的重要组成部分,在信息社会中作用愈来愈重要,我国图书馆计算机等信息技术的应用起步于20世纪70年代末期,随着改革开放的步伐得迅速发展,特别是90年代以后,我国图书馆信息网络建设取得了较大发展图书馆信息化建设迈向了一个新台阶。
图书馆的信息化从最初的对图书馆业务管理实行信息化发展到对图书馆各个业务流程进行系统和网络话化管理,并建立大规模以个体文献目录联机查询为主的资源共享系统。进入21世纪,充分利用计算机网络和信息技术,逐步实现不同载体的实体文献的信息化管理和多方位的联机查询。图书馆的计算机信息化管理,就是将传统图书馆业务的手工操作转变成由计算机管理,既图书馆的图书期刊、音像资料等各种载体文献的采编、典藏、流通、检索及常规业务管理等工作,利用计算机技术,进行高效、准确的信息化管理。其根本目的是实现区域内及地区、国家、国家间的资源共享。要达到资源共享的目的,必须制定一定的标准,只有各个系统都遵循这些标准,不同的系统间才可以实现联机查询、资源共享的效果。
图书馆管理系统是对一个图书馆中所有图书和读者的管理,这是一个较为繁琐而细致的工作。每个图书馆都需要对图书进行增加、删除、修改等管理工作,图书馆系统还包括读者的借书管理,读者还书管理,借书还书日期的管理,对读者信息和图书信息的查询等等。
整个程序系统由六个模块,即:图书采购模块、图书编目模块、读者管理模块、图书借阅管理模块、期刊管理模块、系统维护模块,系统的功能模块图如图3.1所示:
- 17 -
图3.1 图书管理系统的模块图
3.2 需求分析
常用的图书馆信息管理系统包括系统管理、读者管理、编目、图书流通、
统计、查询等功能。比较先进的能够在一个截面下实现图书、音像、期刊的管理,设置假期、设置暂离锁、暂停某些读者的阅读权、导入导出读者、交换 marc 数据,升级辅助编目库等。此外随着 internet 应用的发展一个完善的系统还应该提供无逢接入 internet 的功能,通过 ie 浏览器让读者使用借阅资料查询、更换密码、预约、资料检索等功能。有些系统还能提供读者自主服务,可以开放一些客户机让读者自行管理密码、查询自己的借阅史、预约资料、检索资料等。
图书信息管理系统是使用计算机实现图书大量信息处理的电子档案管理系统,在本系统中主要满足借书者、图书管理员和系统管理员3方面的需求。对借书者来说主要是查询个人信息、查询图书信息、预定当前正在被别人借阅的图书、借阅图书和返还图书等;图书管理员是系统的主要使用者,负责借书处理和还书处理,当读者预定的图书借出给定预定者后取消图书预定;系统管理员主要负责系统的维护工作,涉及到读者信息管理,图书信息管理,系统状态维护等。系统的功能分析如图3.2所示:
- 18 -
图3.2 图书管理系统的功能分析
3.3 可行性分析
在开发任何一个系统之前都要对系统开发的可行性进行分析,目的是为了
避免盲目投资,减少不必要的损失。可行性分析是在对当前系统有了初步了解的基础上完成的,主要从技术、经济和社会三个方面分析讨论开发系统的可行性。技术可行性是指在现有技术条件下能否满足所提出的系统开发要求,根据现有的计算机软硬件性能、环境条件、辅助设备、基础管理、技术人员的开发能力等方面来衡量现有技术条件能否达到系统目标所提出的要求。经济可行性是根据系统的要求,要实现系统的功能需要投入多少人力和物力资源,投入多少资金,从经济上分析工程是否合算可行。社会可行性是一些社会或人的因素对系统的影响,也就是说在具体的社会环境下,系统能否按照既定的设计方案顺利运转起来,社会可行性是人员、体制、社会环境所形成的限制条件进行研究,了解他们可能对目标系统建立所造成的影响。
从上面介绍的情况可以看出,开发图书管理系统,实现图书管理的计算机化是非常必要的,也是可行的。因为使用计算机化的图书管理系统可以彻底改变管理工作的现状,能提高工作效率,能够提供更准确、及时、实用的信息,能够从根本上解决图书管理中信息滞后、资源浪费等问题。
3.4 系统分析
第一步:对图书管理系统进行详细调查,了解图书管理的处理流程。图书
- 19 -
管理系统的流程一般是这样的,图书管理分为两个模块,管理员和读者模块。管理员对新办图书证的读者进行登记,对新近购买的图书进行编号、入库并进行日常的书籍维护。管理员还要为读者提供借书、还书的服务。读者可以通过读者服务模块进行图书信息查询、读者信息的查询,查看图书馆的图书信息等。
第二步:抽象出图书管理系统的逻辑模型,画出E—R图。如图3.3所示:
图3.3 图书管理系统的逻辑模型
3.5 开发环境
开发环境的选择会影响到数据库的设计,所以在这里给出图书管理系统开
发与运行环境的选择如下:
开发环境:Windows XP
- 20 -
开发工具:Delphi 6
数据库管理系统: SQL Server 2000 数据库服务器: SQL Server 2000 桌面引擎
3.6 功能需求
经过以上详细的用户调查,在现行业务流程和数据分析的基础上,基本可以确定系统设计必须达到的目标。
以下是图书管理系统必须具备的功能:
1.新进图书的登记功能:对于购进的新书,系统必须具备图书信息资料的录入功能。
2.图书的查询修改功能:当图书资料发生变化,如图书丢失或有错误信息输入时,则应能够及时对数据进行修改和补充。
3.借阅的登记,归还的登记功能:系统的主要功能之一,供本校学生借阅图书、归还图书,并进行登记。
4.学生信息的增加、删除和修改功能:系统主要功能之一,建立学生信息,并对其进行维护。
3.7 性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,图书管理系统
应该满足以下的性能需求:
1、系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能。在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作量,使系统的处理能力和响应时间能够满足学校对信息处理的需求。
2、系统的开放性和系统的可扩充性
图书管理系统在开发过程中,应该充分考虑以后的可扩充性。例如用户查询的需求也会不断的更新和完善。所有这些,都要求系统提供足够的手段进行功能的调整和扩充。而要实现这一点,应通过系统的开放性来完成,既系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。
3、系统的易用性和易维护性
图书管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点,就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对
- 21 -
用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。
4、系统的标准性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件。所有这些都要符合主流国际、国家和行业标准。
5、系统的先进性
目前计算系统的技术发展相当快,做为图书管理系统工程,在系统的生命周期尽量做到系统的先进,充分完成企业信息处理的要求而不至于落后。这一方面通过系统的开放性和可扩充性,不断改善系统的功能完成。另一方面,在系统设计和开发的过程中,应在考虑成本的基础上尽量采用当前主流并先进且有良好发展前途的产品。
6、系统的响应速度
图书管理系统系统在日常处理中的响应速度为秒级,达到实时要求,以及时反馈信息。在进行统计分析时,根据所需数据量的不同而从秒级到分钟级,原则是保证操作人员不会因为速度问题而影响工作效率。
- 22 -
第四章 详细设计
经过以上详细的分析,在现行业务流程和数据分析的基础上,我要做的是图书管理系统查询功能的实现。查询(图书编号,借阅证号,图书管理员,学生)。信息查询:即对所有图书的借阅情况,或学生的基本情况和借阅情况进行查询。
4.1程序流程图
依据软件工程的基本原理,详细设计阶段的根本任务是确定应该怎样具体
实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。具体来说就是把经过总体设计得到的各个模块详细的加以描述。
由于本系统采用支持面向对象的Delphi 6作为开发工具,而Delphi 6采用事件驱动的编程机制,所以在此给出软件系统的主程序流程图,如图4.1所示:
- 23 -
开始管理员登陆是否合法Yes显示主界面No选择操作学生管理图书管理借阅管理归还管理管理措施设置管理员注销结束
图4.1 主程序流程图
根据以上主程序的流程图,我们可以得出下面的关于各个模块的程序流程图,如图4.2所示:
- 24 -
开始管理员登陆是否合法Yes选择No学生信息表操作图书信息表操作查询信息借阅图书归还图书退出选择选择查询方式读入书号Yes已借出读入书号超期YesNo罚款No更新数据库Yes退出增加删除修改No确认Yes更新书名书号作者出版社No读入学号输入所需记录要求查找记录显示记录NoYes确认Yes更新数据库Yes继续继续No继续管理员注销结束图4.2 程序流程图
现在,只要做查询功能模块程序。
4.2程序接口描述 4.2.1 外部接口
按Windows应用软件用户界面的规范来设计,使用以对话框为主的用户界
- 25 -
面,便于用户使用。
4.2.2 内部接口
模块间接口采用数据耦合方式,通过参数表传送数据,交换信息。
4.3 数据库的设计 4.3.1 数据库的逻辑设计
在需求分析阶段已完成该系统所有的数据分析。根据该阶段所建立的概念模型,已经得出满足系统设计要求的几个关系描述,该阶段的主要工作就是把前一阶段的成果转化为具体的数据库。下面给出概念结构设计得E-R图如图4.3所示:
图书ISBN号图书名称图书编号图书数量图书类别图书图书作者图书出版社图书编号 4.3查询功能所显示的有关图书信息
实体:图书(图书编号,书名,作者,出版社,定价,图书类别,图书ISBN号,图书数量)
联系:查询(图书编号,借阅证号,图书管理员,学生)
4.3.2 数据库的物理设计
依据数据库的原理,并结合以上E-R图,经过转化,即可进行数据库的物理设计。基于以上数据库的逻辑设计,考虑程序设计的简易性,同时考虑题目的时间,该系统的数据库采用Microsoft SQL Server 2000。本系统决定采用一个数据库,在其下创建数据表,其结构如下:
表4-1 图书信息表的结构
序号 1 2 3 4 字段名称 cBooksID cBooksName cBooksISBN cBooksAuthor 字段说明 图书编号 图书名称 图书ISBN号 图书作者 类型 文本 文本 文本 文本 位数 7 20 15 10 属性 必须非空 必须非空 可为空 可为空 备注 - 26 -
5 6 7 8 9 10 cBooksPublisher cBooksType smBooksPrice iBooksStoreQuan iBooksLeftQuant iBooksTotalQuan 图书出版社 图书类型 图书价格 图书库存量 图书副本数量 图书总数 文本 文本 货币 整数 整数 整数 20 16 可为空 可为空 可为空 可为空 可为空 可为空
- 27 -
第五章 编码实现
5.1程序编码
图书查询界面如图5.1所示:
图5.6 图书信息查询界面
代码如下:
Private Sub cmdQuery_Click()
CheckConnect 'If objRs is open then close it If ConnectToServer = True Then Set objRs = New ADODB.Recordset If optCheck(0).Value = True Then
'This is check if your query by is null If Trim(txtbookID.Text) = \"\" Then
MsgBox \"Please input book ID in order to query vbInformation + vbOKOnly txtbookID.SetFocus
- 28 -
!\
Exit Sub End If
StrSql = \"select * from tBooks where cBooksID='\" & Trim(txtbookID) & \"'\"
GetData StrSql 'Reverence function to ger data If objRs.RecordCount = 0 Then
MsgBox \"This book do not exist,please input another books ID or choose another query way !\ txtbookID.Text = \"\" optCheck(0).Value = False
EnabledSet 'Reference function to set checkbox enabled CheckConnect 'Reference function if objrs is open then close it
Exit Sub End If
optCheck(0).Value = False ElseIf optCheck(1).Value = True Then
'This is check if your query way is null If Trim(txtBookName.Text) = \"\" Then
MsgBox \"Please input book name in order to query !\vbInformation + vbOKOnly txtBookName.SetFocus Exit Sub End If
StrSql = \"select * from tBooks where cBooksName like'%\" & Trim(txtBookName.Text) & \"%'\"
GetData StrSql 'Reference function to get data If objRs.RecordCount = 0 Then
MsgBox \"This book do not exist,please input another book name or choose another query way!\ txtBookName.Text = \"\" optCheck(1).Value = False
EnabledSet 'Reference function to set checkbox enabled
- 29 -
CheckConnect 'Reference function if objrs is open then close it
cmdQuery.Enabled = False Exit Sub End If
optCheck(1).Value = False ElseIf optCheck(2).Value = True Then 'This is check if your query by is null If Trim(txtBookAuthor.Text) = \"\" Then
MsgBox \"Please input bookAuthor name in order to query !\vbInformation + vbOKOnly
txtBookAuthor.SetFocus 'Reference function to ger data Exit Sub End If
StrSql = \"select * from tBooks where cBooksAuthor like'%\" & Trim(txtBookAuthor.Text) & \"%'\"
GetData StrSql 'Reference to get data If objRs.RecordCount = 0 Then
MsgBox \"This author do not exist,please input another author or choose another query way!\ txtBookAuthor.Text = \"\"
EnabledSet 'Reference function to set checkbox enabled CheckConnect 'Reference function if objrs is open then close it
optCheck(2).Value = 0 cmdQuery.Enabled = False Exit Sub End If
optCheck(2).Value = False ElseIf optCheck(3).Value = True Then 'This is check if your query is null If Trim(txtBookPublisher.Text) = \"\" Then
MsgBox \"Please input Publisher name in order to query !\vbInformation + vbOKOnly
- 30 -
txtBookPublisher.SetFocus 'Reference function to get data Exit Sub End If
StrSql = \"select * from tBooks where cBooksPublisher like '%\" & Trim(txtBookPublisher) & \"%'\"
GetData StrSql 'Reference function to get data If objRs.RecordCount = 0 Then
MsgBox \"This publisher do not exist,please input another publisher or choose another query way!\ txtBookPublisher.Text = \"\" optCheck(3).Value = False
EnabledSet 'Reference function to set checkbox enabled CheckConnect 'Reference function if objrs is open then close it
cmdQuery.Enabled = False Exit Sub End If
optCheck(3).Value = False Else
Exit Sub 'If you don't choice query then exit sub End If
Set dgdResult.DataSource = objRs 'change columns name
dgdResult.Columns(0).Caption = \"图书编号\" dgdResult.Columns(1).Caption = \"图书名称\" dgdResult.Columns(2).Caption = \"ISBN号\" dgdResult.Columns(3).Caption = \"作者\" dgdResult.Columns(4).Caption = \"出版社\" dgdResult.Columns(5).Caption = \"类别\" dgdResult.Columns(6).Caption = \"价格\" dgdResult.Columns(7).Caption = \"藏书数量\" dgdResult.Columns(8).Caption = \"库存数量\" 'Bond data to text
- 31 -
txtbookID.Text = objRs.Fields(0).Value txtBookName.Text = objRs.Fields(1).Value txtBookAuthor.Text = objRs.Fields(3).Value txtBookPublisher.Text = objRs.Fields(4).Value End If
cmdQuery.Enabled = False
EnabledSet 'Reference function to set checkbox enabled End Sub
Private Sub Form_Activate()
FormMiddle frmBookQuery 'Reference function to make MDIForm'mddile End Sub
- 32 -
form in
第六章 测试分析报告
有两种基本方法可以用来标识测试用例,即功能测试(黑盒测试)和结构测试(白盒测试)。本次测试我主要采用了功能测试。
功能测试的基本观点是,任何程序都可以看作是将输入定义域取值映射到输出值域的函数。
6.1测试计划和要点
软件测试的本质是针对要测试的内容确定一组测试用例。在讨论之前,我先把要测试各个模块的计划和要点列出:
6.1.1 主模块测试要点
数据库连接情况:正常情况,数据库文件缺少,外部系统异常。 系统设置获取:正常情况,外部系统异常。
对用户输入的响应:合法输入,能够正常调用子模块;
非法输入,系统能否辨别,并作出响应(提出警告); 子模块的异常状况,系统能否及时做出响应。
6.1.2 图书查询模块测试要点
数据库连接正常 数据库数据正常 输入的书号合理合法 输入的书号不合理 输入的书号不合法 数据库数据异常 数据库连接异常
6.2 测试用例
测试用例是为了特定目的(如考察特定程序路径或验证是否符合特定的需求)而设计的测试数据及与之相关的测试规程的一个特定的集合,或称为有效地发现软件缺陷的最小测试执行单元。
根据上一节给出的测试要点,又因为测试是不可能穷举的。所以我们采用
- 33 -
等价划分法来进行对图书管理系统的测试。它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有代表性和完整性。
6.2.1 主模块测试用例
表6-1 主模块测试用例
字段名称 标识符 测试项 输入标准 C1 主模块中的“系统”菜单栏,“业务”菜单栏的功能测试 1.打开主模块,没有任何输入字符,点击相应的菜单栏项目。 2.在数据库文件缺少的情况下,打开主模块。 1.模块未做任何操作,单击“系统”|“退出”命令,能正常退出,无提示信息。 2.在打开相应的子窗体时,未做任何操作,单击“系统”|“退出”命令,能输出标准 正常退出,无提示信息。 3.在打开相应的子窗体时,做相关的增删或修改操作,未保存,单击“系统”|“退出”命令,提示“修改信息未保存,保存修改吗?”单击“Yes”,保存修改,正常退出,单击“No”,不保存修改,并退出。
描 述 6.2.2图书查询模块测试用例
表6-2 图书查询模块测试用例
字段名称 标识符 测试项 描 述 C4 图书查询模块的功能测试 1.打开图书查询模块,没有任何输入字符,点击相应的项目。 2.输入一些正确的书名、作者、出版社,点击“确定”。 输入标准 3.输入一些非法的书名、作者、出版社,点击“确定”。 4.在选择“按书名查询”单选时,输入作者或出版社,点击“确定”。 5.在选择“按作者查询”单选时,输入书名或出版社,点击“确定”。 6.在选择“按出版社查询”单选时,输入书名或作者,点击“确定”。 输出标准
- 34 -
1.模块未做任何操作,单击 “退出”命令,能正常退出,无提示信息。
6.3测试结果及结论 6.3.1测试结果
我们按照6.2节中给出的测试用例的顺序来给出相应的测试结果。
表6-3 主模块测试结果
标识符 测试结果 与预期的偏差 说明的问题
表6-4 图书查询模块测试结果
标识符 测试结果 与预期的偏差 说明的问题
C4 正常操作无任何异常处理出现 无 图书查询模块通过了功能测试 C1 正常操作无任何异常处理出现 无 主模块通过了功能测试 6.3.2缺陷分析及改进
本部分对上述缺陷和其他收集数据进行综合分析 1.缺陷综合分析
缺陷发现效率 = 缺陷总数/执行测试用时 = 2/(5天) = 0.4 /天 用例质量 = 缺陷总数/测试用例总数 ×100% = 2/5 ×100% = 40% 2.对缺陷的改进
在测试用例C2和C3中,发现的缺陷,通过对相关功能编码的改进,已经使测试的结果和预期达到的效果一致。
6.3.3测试结论
1. 测试目标完成 2. 测试已经通过
3. 可以进入下一阶段项目目标
- 35 -
致谢
这次软件工程课程设计,我主要采用作Delphi 6为前台开发工具,Microsoft SQL Severe2000作为后台数据库,结合软件工程设计和数据库编程的有关知识,开发了这个图书管理系统。
通过这次软件工程课程设计,我对于软件工程设计的相关步骤和流程有了更深刻的理解,熟悉并掌握了Microsoft SQL Severe2000和VB6.0的数据库使用,另一方面,也对SQL语言作为嵌入式语言的功能有了更深刻的体会。同时,我也发现自己对于软件工程设计和数据库设计的知识掌握的还不够,设计和编程能力还有待于进一步提高。这次课程设计给了我一个锻炼自己,强化专业知识的机会,通过这次课程设计,我也得以一窥软件工程设计的广袤天地,我相信,只要认真学习,多借鉴别人的经验,多思考,多实践,就一定能够成为一个合格的软件设计人员,能够翱翔在软件开发的天地。
在这里,感谢我的指导老师XXX老师和各位老师的悉心指导。
- 36 -
参考文献
[1] 郑荣贵、黄平、谷会东,Delphi 6.0数据库开发与应用,中科多媒体电子出版社,2002 [2] 伍俊良,Delphi 6控件应用实例教程,北京希望电子出版社,2002 [3] 卢国俊,Delphi 6数据库开发,电子工业出版社,2002 [4] 边萌,Delphi 编程起步,机械工业出版社,2002
- 37 -
因篇幅问题不能全部显示,请点此查看更多更全内容