图书馆信息管理系统.docx
《图书馆信息管理系统.docx》由会员分享,可在线阅读,更多相关《图书馆信息管理系统.docx(35页珍藏版)》请在冰豆网上搜索。
![图书馆信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-2/7/1d9468bb-39db-446b-8760-9791065a6748/1d9468bb-39db-446b-8760-9791065a67481.gif)
图书馆信息管理系统
摘要
随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。
管理信息西戎是一个不断发展的新型学科,企业要生存要发展,要高效率地把企业活动有机地组织起来,就必须加强企业管理,即加强企业内部的各种资源(人、财、物等)的有效管理,建立与自身特点相适应的管理信息系统。
图书馆管理系统是典型的嘻嘻管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据库一致性和完整性强,数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
因此本人结合开入式图书馆的要求,对SQLServer数据库、SQL语言原理、VisualB应用程序设计,数据库技术进行了较深入的学习和应用,主要完成对图书管理系统的需求分析、功能模块化分、数据库模式分析,并由此设计了数据库结构和应用程序。
系统运行结果证明,本文所设计的图书管理系统可以满足借阅者、操作员(user)、图书馆工作人员(osa)和高级管理员(admini)三方面的需要。
关键词:
SQL语言;数据库组件:
图书馆里;窗体
目录
摘要I
ABSTRACTII
目录1
第一章 绪 论2
1.1 数据库应用系统开发简介2
第二章 数据库理论基础6
2.1 数据库系统设计6
第三章 应用系统开发工具9
3.1 Delphi6.0 VCL组件的体系结构9
第4章概要设计14
4.1系统功能图14
4.2功能模块说明15
第5章详细设计及运行结果16
5.1主函数16
5.2储存模块17
5.3查询模块18
5.4排序模块19
第6章设计源代码20
6.1图书录入模块20
6.2图书删除模块21
6.3图书修改模块22
6.4借出书模块24
6.5统计模块25
6.6排序模块26
6.7添加商品信息27
结束语29
参考文献30
第一章 绪 论
1.1 数据库应用系统开发简介
在数据库应用系统开发之前,对开发数据库的基本概念应当了解,对数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。
数据库应用系统开发的目标是建立一个满足用户长期需求的产品。
开发的主要过程为:
理解用户的需求,然后,把它们转变为有效的数据库设计。
把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。
数据库技术在计算机软件邻域研究中一直是非常重要的主题,产生于60年代,30多年来数据库技术得到了迅速发展,并已形成较为完整的理论体系和一大批实用系统。
并且,近年来,随着World Wide Web(WWW)的猛增及Internet技术的迅速发展,使得数据库技术之时成为最热门技术之一。
1.1.1 数据库
数据库由DBMS(数据库管理系统)处理,DBMS则由开发人员和用户通过应用程序直接或间接地使用。
它主要包括四个要素:
用户数据、元数据、索引和应用元数据。
1.1.1.1 用户数据
目前,大多数主流数据库管理系统把用户数据表示为关系。
现在把关系看作数据表。
表的列包含域或属性,表的行包含对应业务环境中的实体的记录。
并非所有的关系都同样符合要求,有些关系比其它关系更结构化一些。
第二章描述了一个用以产生良好结构关系的过程,称作规范化。
为了对比结构差的关系和结构好的关系之间的差别,以本文所设计的图书管理系统中的图书和图书借阅者关系为例来说明,假若设计关系R1(借书证号,姓名,性别,身份编号,身份证,联系电话,图书编号,图书名称,图书类别,作者,出版社,出版日期,备注,价格,数量);这个关系的问题出在它有关于两个不同主题的数据,就是图书借阅者和图书。
用这种方式构成的关系在进行修改时,会出现问题。
因为一个图书借阅者可能借阅多本书,如果某个图书借阅者的某个字段(如联系电话)出现变更,它所借阅的图书记录(可能多个)也就必须变化,这是不好的。
因此数据用两个关系表示更好。
现在如果某图书借阅者改变了它的联系电话,只有关系(表)user的对应行需要改变。
当然,要想产生一个,显示图书名称及其借阅者联系电话的报表,就需要将这两个表的行结合起来。
结果表明,将关系分别存储,在生成报表的时候将它们结合起来,比把它们存储在一个合成的表中更好。
1.1.1.2 元数据
数据库是自描述的,这就意味着它自身包含了它的结构的描述,这种结构的描述称作元数据。
因为DBMS产品是用来存储和操纵表的,所以大多数产品把元数据以表的形式存储,有时称作系统表。
这些系统表存储了数据库中表的情况,指出每一个表中有多少列,那一列是主关键字,每一列的数据类型的描述,它也存储索引、关键字、规则和数据库结构的其他部分。
在表中存储元数据不仅对DBMS是有效的,对用户也是方便的,因为他们可以使用与查询用户数据同样的查询工具来查询元数据。
本文第二章所介绍的SQL语言可以同时用于元数据和用户数据。
1.1.1.3 索引
第三种类型的数据改进了数据库的性能和可访问性,这种数据经常称作开销数据,尽管有时也采用其他类型的数据结构,如链表,但它主要还是索引。
索引可以用来排序和快速访问数据。
下面以本人的图书管理信息系统中的book表为例来说明。
假定数据在磁盘上是按’图书编号’的递增顺序排列的,用户想打印一个按’图书名称’排序的图书数据报表。
为此,所有的数据都需要从源表中提取出来并排序,除非表很小,否则这是一个很费时的过程。
或者,可以在‘图书名称’字段上创建一个索引,该索引的条目按照‘图书名称’排序,这样,该索引的条目可以读出来,并用来按顺序访问book数据。
索引用于快速访问数据。
例如,一个用户只想访问book表中‘图书类别’值为‘01’的那些学生。
如果没有索引,则必须搜索整个源表;但有了索引之后,可以找到索引条目,并使用它来挑选所有合适的行。
索引对排序和查找是有帮助的,但要付出代价。
book表中的行每次改变时,索引也必须改变,这意味着索引并非随意的,应该在真正需要时保存。
1.1.2 数据库管理系统
数据库管理系统(DBMS)是指数据库系统中管理数据的软件系统。
DBMS是数据库系统的核心组成部分。
对数据库的一切操作,包括定义、更新及各种控制,都是通过DBMS进行的。
DBMS总是基于某种数据模型,可以把DBMS看成是某种数据模型在计算机系统上的具体实现。
根据数据模型的不同,DBMS可以分成层次型、网状型、关系型、面向对象型等。
MS SQL Server2000就是一种关系型数据库管理系统。
关系模型。
关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。
关系模型是由若干个关系模式组成的集合。
关系模式相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表格。
关系模型和层次、网状模型的最大判别是用关键码而不是用指针导航数据,表格简单用户易懂,编程时并不涉及存储结构,访问技术等细节。
关系模型是数学化模型。
SQL语言是关系数据库的标准化语言,已得到了广泛的应用。
如图1.1所示,DBMS的特点和功能可以分为三个子系统:
设计工具子系统、运行子系统和DBMS引擎。
设计子系统有一个方便数据库及其应用创建的工具集。
它典型地包含产生表、窗体、查询和报表的工具。
DBMS产品还提供编程语言和对编程语言的接口。
运行子系统处理用设计子系统开发的应用组件。
它所包含的运行处理器用来处理窗体和数据库的数据交互,以及回答查询和打印报表等。
DBMS引擎从其他两个组件接受请求,并把它们翻译成对操作系统的命令,以便读写物理介质上的数据。
DBMS引擎还涉及事务管理、锁、备份和恢复。
1.1.3 创建数据库
1.1.3.1 数据库模式
数据库模式定义了数据库的结构、表、关系、域和业务规则。
数据库模式是一种设计,数据库和应用正是建立在此基础上的。
域是一列可能拥有的值的集合。
必须为每一个表的每一列确定域。
除了数据的物理格式外,还需要确定是否有些域对表来说是唯一的。
数据库模式的最后一个要素是业务规则,它是对需要反映在数据库和数据库应用程序中的业务活动的约束。
业务规则是模式的一个重要部分,因为他们指定了无论什么数据变化到达DBMS引擎,允许的数据值必须满足的约束。
不管无效的数据变化请求是来自窗体的用户、查询/修改请求还是应用程序,DBMS都应该拒绝。
遗憾的是,不同的DBMS产品用不同的方法实施业务规则。
在某些情况下,DBMS产品不具备实施必要业务规则的能力,必须以代码形式把它们编入应用程序。
1.2 图书管理系统
当今时代是飞速发展的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好图书馆信息而设计的。
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。
数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统,规范的信息管理手段。
尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。
数据处理手工操作,工作量大,出错率高,出错后不易更改。
图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。
如要对很长时间以前的图书进行更改就更加困难了。
基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
第二章 数据库理论基础
一个成功的信息管理系统,是建立在许多条件之上的,而数据库是其中一个非常重要的条件和关键技术。
管理系统所涉及的数据库设计分五个步骤:
数据库需求分析、概念设计、逻辑设计、物理设计与加载测试。
(1) 数据库需求分析的任务是将业务管理单证流化为数据流,划分主题之间的边界,绘制出DFD图,并完成相应的数据字典。
(2) 概念设计的任务是从DFD出发,绘制出本主题的实体-关系图,并列出各个实体与关系的纲要表。
(3) 逻辑设计的任务是从E-R图与对应的纲要表出发,确定各个实体及关系的表名属性。
(4) 物理设计的任务是确定所有属性的类型、宽度与取值范围,设计出基本表的主键,将所有的表名与字段名英文化(现在很多软件能支持中文字段,如MS SQL Server,我就是用的中文字段名),实现物理建库,完成数据库物理设计字典。
(5) 加载测试工作贯穿于程序测试工作的全过程,整个录入、修改、查询、处理工作均可视为对数据库的加载测试工作。
数据库的设计中,如何处理多对多的关系和如何设计主键,是两个有着较大难度、需要重点考虑的问题。
下面我们着重从SQL应用、数据库设计范式和查询优化等方面来分析本课题的系统关键技术和实现难点并加以解决。
2.1 数据库系统设计
数据库设计主要是进行数据库的逻辑设计,即将数据按一定的分类分组系统和逻辑层次组织起来,是面向用户的。
数据库设计时需要综合企业各个部门的存档数据和数据需求,分析各个数据之间的关系,按照DBMS提供的功能和描述工具,设计出规模适当、正确反映数据关系、数据冗余少、存取效率高、能满足多种查询要求的数据模型。
数据库设计的步骤是:
(1) 数据库结构定义:
目前的数据库管理系统(DBMS)有的是支持联机事务处理CLTP(负责对事务数据进行采集、处理、存储)的操作型DBMS,有的可支持数据仓库、有联机分析处理CLAP(指为支持决策的制定对数据的一种加工操作)功能的大型DBMS,有的数据库是关系型的、有的可支持面向对象数据库。
针对选择的DBMS,进行数据库结构定义。
(2) 数据表定义:
数据表定义指定义数据库中数据表的结构,数据表的逻辑结构包括:
属性名称、类型、表示形式、缺省值、校验规则、是否关键字、可否为空等。
关系型数据库要尽量按关系规范化要求进行数据库设计,但为使效率高,规范化程度应根据应用环境和条件来决定。
数据表设计不仅要满足数据存储的要求,还要增加一些如反映有关信息、操作责任、中间数据的字段或临时数据表。
(3) 存储设备和存储空间组织:
确定数据的存放地点、存储路径、存储设备等,备份方案,对多版本如何保证一致性和数据的完整性。
(4) 数据使用权限设置:
针对用户的不同使用要求,确定数据的用户使用权限,确保数据安全。
(5) 数据字典设计:
用数据字典描述数据库的设计,便于维护和修改。
2.2 SQL语言介绍
2.2.1 SQL基础
SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。
SQL通常使用于数据库的通讯。
ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。
SQL语句通常用于完成一些数据库的操作任务,比如在数据库中更新数据,或者从数据库中检索数据。
使用SQL的常见关系数据库Oracle、 Sybase、 Microsoft SQL Server、 Access、 Ingres等等。
虽然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。
但是,标准的SQL命令,比如"Select"、 "Insert"、 "Update"、 "Delete"、 "Create"和 "Drop"常常被用于完成绝大多数数据库的操作。
MS SQL Server 就是用的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.2 SQL语句
SQL功能强大,是一种完备的数据处理语言,不仅用于数据库查询,而且用于数据库中的数据修改和更新,概括起来,它可以分成以下几组:
DML(Data Manipulation Language,数据操作语言):
用于检索或者修改数据;
DDL(Data Definition Language,数据定义语言):
用于定义数据的结构,比如 创建、修改或者删除数据库对象;
DCL(Data Control Language,数据控制语言):
用于定义数据库用户的权限。
DML组可以细分为以下的几个语句:
SELECT:
用于检索数据;
INSERT:
用于增加数据到数据库;
UPDATE:
用于从数据库中修改现存的数据;
DELETE:
用于从数据库中删除数据。
DDL语句可以用于创建用户和重建数据库对象。
下面是DDL命令:
CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX,DROP INDEX
下面是一个简单SQL语句的例子:
我们使用SQL语句来从Book中检索‘借书证号’为‘000001’的借阅者姓名:
SELECT 姓名 FROM Book WHERE 借书证号 = ‘000001’
第三章 应用系统开发工具
3.1 Delphi6.0 VCL组件的体系结构
Delphi类可以粗略地分成两部分:
一部分是组件类,这些组件类通常以某种方式出现在组件面板上,当用户从组件面板上点取一个类的图标后,在程序中就自动生成了该类的对象(非可视组件除外);另一部分是功能类,这此功能类的对象通常出现在程序代码中,起着不可代替的作用,但是这些功能类在组件面板上是找不到的。
在Delphi中,每一个类的祖先都是Tobject类,整个类的层次结构就像一棵倒挂的树,在最顶层的树根即为Tobject类。
这样,按照面向对象编程的基本思想,就使得用户可用Tobject类这个类型代替任何其它类的数据类型。
实际上在Delphi的类库中,Tobject类派生出了为数相当众多的子类,它们形成了一个庞大的体系,通常情况下,如果不自行开发组件,就不必了解整个类的体系结构,只用到类层次树的叶结点就足够了。
这一小节简略介绍一下Delphi 6.0中VCL(可视化组件库)组件的体系结构。
凡是做过程序开发的人都知道从来没有单纯的数据应用程序,也就是说,数据库应用程序必须和用户界面(可以是图形界面,也可以是命令接口)元素相结合,只讲界面或只讲数据库本身都构不成数据库应用程序,因而用Delphi 6.0开发数据库应用程序就隐含着界面开发。
Delphi6中的VCL组件可用图3-1来说明。
窗口组件类是窗口化的可视化组件类,在Delphi的类库中占有最大的份额。
在实际编程中,窗口组件类的对象都有句柄,可以接受输入焦点和包含其它组件。
图形组件与窗口组件并列,是另一大类组件。
图形组件不是基于窗口的,因而不能有窗口句柄,不能接受输入焦点和包含其它组件。
从图8-43中可以看出,图形组件的基类是TgraphicControl,在实际编程中,它们必须寄生于它们的宿主——窗口组件类的对象,由它们的拥有者负责其显示,而且它们还能触发一些和鼠标活动相关的事件。
图形控件最典型的例子是Tlabel和TspeedButton。
由此可以看出图形组件的功能很弱,图形组件的用处何在呢?
其实使用图形组件的最大好处在于节省资源,正是因为它们的功能较弱,所以使用的系统资源就要少。
在一个应用程序中,如果能在不影响其功能的前提下合理大量地使用图形组件,将会大减少程序对系统资源的消耗。
非可视组件是与可视组件相并列的另一类组件,非可视组件在程序运行中是不可见的(除各种对话框组件之外,事实上有人认为对话框组件不能归入非可视组件,应该是另一种介于可视与非可视之间的组件)。
最后要说明一下,常说的控件实际上是一种组件。
也就是说组件这个概念要大于控件,控件在内涵上包含于组件中。
控件由Windows系列操作系统提出并使用,而组件是Borland和其它厂商在对Windows控件做了必要的扩展之后提出来的概念,它们是在不同时期由不同的厂商提出的概念。
3.2 数据库组件介绍
用Delphi6开发数据库应用,重点是和各种数据库组件打交道,能和数据库挂钩的组件对象有5种,它们是:
Session(数据库会话)、Database(数据库)、Dataset(数据集)、DataSource(数据源)、Data control(数据控制组件,也叫data-controls即数据感知组件)。
其中前面4种统称为数据访问(Data Access)组件。
这些组件的相互关系如图3-2所示。
ADO组件 Delphi6.0包含了可以用来访问Microsoft公司的ActiveX Data Objects(ADO)格式数据库的组件。
ADO是Micrsoft公司关于各种类型数据的高等界面,后来逐渐演变成满足所有数据访问需要的完整解决办法。
ADO的对象模型是所有数据访问接口对象模型中最简单的一种。
Microsoft公司用来访问ADO数据的应用程序界面技术是OLE DB。
OLE DB是一种底层编程接口,用来访问许多不同类型的数据源,其中包括消息、文件系统以及其他一些非传统的数据源。
OLE DB是一个由Component Object Model(COM)接口组成的集合,用来隐藏创建数据访问服务过程中的细节。
OLEDB提供了访问任何数据资源的方法,包括相互关联的数据库和相互不关联的数据库、Email和文件系统、文本和图形以及用户定义的数据对象。
Delphi的ADO组件无需依靠BDE而是使用ADO技术,提供了可以通过数据控制组件访问数据的新方法。
唯一的要求是在使用ADO组件时必须运行ADO/OLE-DB。
ADO组件的使用使得DELPHI在访问数据的类型和采用的技术方面都有了很大的突破。
数据模块设计窗口 数据模块设计窗口是用来设计和维护数据模块的。
数据模块设计窗口中包含了所有以.DTI作为文件扩展名的Data Diagram文件的信息。
DTI文件在编译时不起任何作用。
3.3 SQL语言在Delphi中的应用
在Delphi中使用SQL语言非常方便,一般来说,都是通过Tquery或TADOquery组件来使用SQL语言的。
可以在Tquery或TADOquery组件的SQL属性中设置SQL语句。
设计程序时,在该组件的属性对话框中选择SQL属性,单击带省略号的按钮,就可以打开String List Editor对话框,然后我们就可以在对话框中添加SQL语句。
还可以使用Delphi的SQL Builder来自动生成SQL语句,这样可以避免手工编写SQL而可能造成的语法错误。
静态SQL语句在程序设计时便已固定下来,它不包含任何参数和变量。
动态SQL语句,也被称作参数化的语句,在其中间包含着表示字段名或表名的参数,例如下面的语句是一条动态SQL语句:
Select * From Book Where 图书编号 =:
bookCode;
其中的变量bookCode便是一个参数变量,它由一个冒号引导,在程序运行过程中,必须要为该参数赋值,该条SQL语句才能正确执行,每次运行应用程序时可以为该参数变量赋予不同的值。
为参数赋值有三种方法:
①根据参数在SQL语句中出现的顺序,设置TADOQuery组件的parameters属性值为参数赋值。
②直接根据SQL语句中各参数的名字,调用ParamByName方法来为各参数赋值。
③将TADOQuery组件的DataSource属性设置为另一个数据源,这样将另一个数据源中与当前TADOQuery组件的SQL语句中的参数名相匹配的字段值赋给其对应的参数。
利