1、 摘 要图书馆管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端的应用程序的开发两个方面。对于前者要求建立数据的一致性和完整性,对于后者则要用程序功能的完备,易用等的特点。基于上述考虑本系统主要利用 ROSE2003 作前端的应用开发工具 ,利用 UML 建模作为 后台的数据库,利用 WINDOWS98 作为系统平台;而全部采用 Microsoft 的操作系统及其应用开发工具开发的图书管理系统。首先介绍的是开发环境及所用到的基础知识。其次是系统的设计过程,包括系统分析、功能实现和系统的调试、设计过程中遇到的难点问题等,然后综合介绍了标准建模语言 UML。本系统充分利用了
2、 ROSE2003 开发前台应用程序,UML 建模数据库的优势,使系统更加完善。关键词:ROSE2003,UML,图书管理。第一章 标准建模语言 UML 发展情况1.1 现行组织管理体制UML 融合了 Booch、OMT 和 OOSE 方法中的基本概念,而且这些基本概念与其他面向对象技术中的基本概念大多相同,因而,UML 必然成为这些方法以及其他方法的使用者乐于采用的一种简单一致的建模语言;其次,UML 不仅仅是上述方法的简单汇合,而是在这些方法的基础上广泛征求意见,集众家之长,几经修改而完成的,UML 扩展了现有方法的应用范围;第三,UML 是标准的建模语言,而不是标准的开发过程。尽管 UM
3、L 的应用必然以系统的开发过程为背景,但由于不同的组织和不同的应用领域,需要采取不同的开发过程。UML 是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它溶入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。作为一种建模语言,UML 的定义包括 UML 语义和 UML 表示法两个部分。 (1) UML 语义 描述基于 UML 的精确元模型定义。元模型为 UML 的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者能在语义上取得一致,消除了因人而异的最佳表达方法所造成的影响。此外 UML 还支持对元模
4、型的扩展定义。 (2) UML 表示法 定义 UML 符号的表示法,为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用级的模型,在语义上它是 UML 元模型的实例。1.2 UML 标准建模语言的特点标准建模语言 UML 的主要特点可以归结为三点: (1)UML 统一了 Booch、OMT 和 OOSE 等方法中的基本概念。 (2)UML 还吸取了面向对象技术领域中其他流派的长处,其中也包括非 OO 方法的影响。UML 符号表示考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极少使用的符号,也添加了一些新符号。因此,在 UML 中汇入了面
5、向对象领域中很多人的思想。这些思想并不是 UML 的开发者们发明的,而是开发者们依据最优秀的 OO 方法和丰富的计算机科学实践经验综合提炼而成的。 (3)UML 在演变过程中还提出了一些新的概念。在 UML 标准中新加了模板(Stereotypes)、职责(Responsibilities)、扩展机制(Extensibility mechanisms)、线程(Threads)、过程(Processes)、分布式(Distribution)、并发(Concurrency)、模式(Patterns)、合作(Collaborations)、活动图(Activity diagram)等新概念,并清晰地
6、区分类型(Type)、类(Class)和实例(Instance)、细化(Refinement)、接口(Interfaces)和组件(Components)等概念。 因此可以认为,UML 是一种先进实用的标准建模语言,但其中某些概念尚待实践来验证,UML 也必然存在一个进化过程。1.3 标准建模语言 UML 的发展情况尽管目前我国计算机界对 UML 的推崇程度近乎崇拜,但我们应该客观地认识到 UML依然存在许多缺憾甚至是错误,需要进一步完善。一个规范的标准化进程总是很漫长,在对它的修订过程中总会不断发现新问题,发现问题、解决问题是个循环反复的过程,在这个过程中,人们不断改进和完善 UML。本期专
7、题将追随 UML 标准化进程的脚步,介绍它修订过程中的每一个进步和缺憾,从而使读者较为客观地了解到 UML 的现状及未来发展。1.3.1 UML 的现状及未来发展UML 是在多种面向对象建模方法的基础上发展起来的建模语言,主要用于软件密集型系统的建模。它的演化,可以按其性质划分为以下几个阶段:最初的阶段是专家的联合行动,由三位 OO(面向对象)方法学家将他们各自的方法结合在一起,形成 UML 0.9。第二阶段是公司的联合行动,由十几家公司组成的“UML 伙伴组织“将各自的意见加入UML,形成 UML 1.0 和 1.1,并作为向 OMG 申请成为建模语言规范的提案。第三阶段是在OMG 控制下的
8、修订与改进,OMG 于 1997 年 11 月正式采纳 UML 1.1 作为建模语言规范,然后成立任务组进行不断的修订,并产生了 UML 1.2、1.3 和 1.4 版本,其中 UML 1.3 是较为重要的修订版。目前正处于 UML 的重大修订阶段,目标是推出 UML 2.0,作为向 ISO 提交的标准提案。 在多种面向对象建模方法流派并存和相互竞争的局面中,UML 树起了统一的旗帜,使不同厂商开发的系统模型能够基于共同的概念,使用相同的表示法,呈现彼此一致的模型风格。而且它从多种方法中吸收了大量有用(或者对一部分用户可能有用)的建模概念,使它的概念和表示法在规模上超过了以往任何一种方法,并且
9、提供了允许用户对语言做进一步扩展的机制。 UML 在语法和语义的定义方面也做了大量的工作。以往各种关于面向对象方法的著作通常是以比较简单的方式定义其建模概念,而以主要篇幅给出过程指导,论述如何运用这些概念来进行开发。UML 则以一种建模语言的姿态出现,使用语言学中的一些技术来定义。尽管真正从语言学的角度看它还有许多缺陷,但它在这方面所做的努力却是以往的各种建模方法无法比拟的。 从 UML 的早期版本开始,便受到了计算机产业界的重视,OMG 的采纳和大公司的支持把它推上了实际上的工业标准的地位,使它拥有越来越多的用户。它被广泛地用于应用领域和多种类型的系统建模,如管理信息系统、通信与控制系统、嵌
10、入式实时系统、分布式系统、系统软件等。近几年还被运用于软件再工程、质量管理、过程管理、配置管理等方面。而且它的应用不仅仅限于计算机软件,还可用于非软件系统,例如硬件设计、业务处理流程、企业或事业单位的结构与行为建模。目前国内也有不少软件企业在学习并尝试使用 UML。从总体上看,我国计算机界对UML 的了解还相当初步,但是对它的崇拜程度却远远超过了西方发达国家。人们在学习和使用 UML 遇到和国外用户相同的疑难和困惑时,却不太敢怀疑 UML 有什么问题。所以国内几乎没有批评的声音,偶尔有一点,也会立即被捍卫的声音淹没,即使对 UML 一些最明显的缺点和错误也是如此。 相比之下,国际上对 UML
11、的讨论和评价则要客观得多。无论是 Internet 上的意见交流,或是每年一次的 UML 研讨会,还是学术期刊上发表的文章,都是既肯定其成绩,又指出其缺点和错误,并且以积极的态度提出建设性意见。在酝酿 UML 下一次的重大发布和筹划 UML 2.0 作为 ISO 标准提案的最近两年内,围绕 UML 的讨论更为活跃和热烈。 为了使我国计算机界对 UML 目前的状况有较为客观的了解,我们从大量的文献资料中选择了三篇最具权威性的文章,介绍给我国读者。从这组文章中,我们可以得到关于UML 现状及未来发展的重要信息: UML 已经取得重要成功,它已成为在软件工业中占支配地位的建模语言,并在许多领域的软件
12、开发中得到应用。 UML 还存在许多问题,自它产生之日起就从未离开过批评:用户和教师抱怨它内容庞大、难学难教而且太过复杂;学者认为它缺少一个精练的核心和定义良好的外围,有些语义定义得不够精确而且带有二义性;建模实践者认为它缺少支持自己领域建模要求的机制;工具开发商则因为规范本身的不确定性而产生理解上的偏差,它们对 UML 的自行诠释有可能误导用户。 UML 的关键问题是过于庞大和复杂,以及在语言体系结构、语义等方面存在理论缺陷。产生这些问题的一个重要原因是,在形成规范的过程中不得不照顾多种方法流派的观点和多家公司的利益。 为了 UML 的下一次重大发布,UML 2.0 修订的主持者正在广泛收集
13、各方面的意见。各界都给予了很高的关注,提出的意见涉及 UML 的各个方面。其中一个关键问题是 UML是否需要简化,以及如何使之更精练,最终大部分意见是提供一个精练的核心,而把不常用的内容放到定义良好的外围或扩展机制中。此外,UML 2.0 还将对 UML 的底层结构、上层结构和对象约束语言(OCL)做重大改进。1.3.2 标准化的 UML一个规范的标准化进程通常是一个冗长的过程。在 UML 1.3 的最终草案被批准之际,OMG UML 修订任务组和 OMG 分析设计平台任务组联合主席 Cris Kobryn 于 1999 年 10 月在COMMUNICATION OF THE ACM上发表了本
14、文,总结了 UML 的发展历程,并展望了其发展趋势。 在很短的时间内,UML 已经成为软件工业中占支配地位的建模语言。目前它不仅是事实上的建模语言标准,也正在快速地成为法律上的标准。1997 年,OMG 采纳它作为标准建模语言。现在,OMG 正在以 ISO 公共可用规范提交者的身份,申请将 UML 规范作为国际标准。 不过,一个规范的标准化进程通常是正式而漫长的,因为它要满足各种各样的技术规范和商业需求。从商业角度看,标准化的时间尺度通常与尽早使用最新技术的竞争需求是冲突的。从技术角度看,为了力求达成共识,则赞成这种“由委员会设计“的进程。1.3.3 标准化之前的历史早在 1995 年,Gra
15、y Booch 和 Janes Rumbaugh 将他们的面向对象建模方法统一为Unified Method V0.8。一年之后 Ivar Jacobson 加入其中,共同将该方法统一为二义性较少的 UML 0.9。同时,这三位杰出的方法学家被称为“三友(Three Amigos)“。 很快用户也认识到可对软件系统进行可视化、描述、构造和文档化的通用建模语言所带来的益处。他们充满激情地将这种语言的早期草案应用于不同的领域。受用户强烈需求的驱动,建模工具厂商也很快在它们的产品中加入了对 UML 的支持。 与此同时,UML 成了实际上的工业标准。1996 年,一个由建模专家组成的国际性队伍“UML
16、 伙伴组织“开始同“三友“一起工作,计划将 UML 提议作为 OMG 的标准建模语言。 1997 年 1 月,伙伴组织向 OMG 提交了最初的提案 UML 1.0。经过了九个月的紧张修订,于 1997 年 9 月提出了最终提案 UML 1.1,这个提案在 1997 年 11 月被 OMG 正式采纳为对象建模标准。 有必要指出的是,由于比较仓促地通过了 OMG 的提交过程,尽管语言的基层结构和大部分上层结构是合理的,UML 还是容忍了一些不尽如人意的负面因素:活动图的语义及表示法不完整;标准元素臃肿,其中有些元素是为了满足不同的、相互竞争的方法门派的需求而草率加入的,许多标准元素语义贫乏,而且命
17、名和组织也不一致;结构混乱,所提交的规范并没有达到提交者预期的目标-用一种严格的元模型方法实现 4 层元模型结构,相反使用了一种实用但不精确的、松散的元模型方法,不利于 UML 同其他 OMG 规范的结合,比如与 MOF(Meta Object Facility)的结合。 发展进程:OMG 为修订标准而提供的基本机制是提案需求(RFP,Request for Proposals)和修订任务组(RTF,Revision Task Forces) 。 其中 RFP 过程是 OMG 采纳新规范和改进已有规范的主要机制。任务组发布一个 RFP,一个或多个提交团以规范草案作为初始提案响应该 RFP,然后
18、任务组对这些初始提案进行评估,并反馈给提交者,鼓励这些提交者与其竞争对手合作,从而形成最终提案。在任务组完成了对最终提案的评估后,就投票决定推荐众多提案中的哪一个。获得多数赞成票的提案就被送交组织委员会和主管该任务组的技术委员会去批准。 如果一个最终提案获得了所有的批准,它就成为被 OMG 采纳的技术。否则,任务组就有权重新发布一个修改过的 RFP。 在一个规范被采纳后不久,将成立一个修订任务组,负责该规范的修订。1997 年 9月,OMG 采纳 UML 1.1 规范之后不久,特许成立了第一个 UML 修订任务组,负责收集有关评论,并且提出修改建议。 该 RTF 提交的第一个主要产品是一个编辑
19、版本 UML 1.2,它改编了规范,使之与其他OMG 规范更为一致。尽管这一版本纠正了印刷和语法错误,以及某些明显的逻辑上的不一致,但还是没有涉及对重要技术的改进。 该 RTF 的第二个主要的产品是其技术版本 UML 1.3,它修正和改善了 UML 1.1 的遗留问题,并矫正了在此之后发现的许多小错误。该 RTF 一致推荐 OMG 批准其 UML 1.3 最终草案,并于 1999 年 6 月提交了一份最终报告。被推荐的规范随后被提交给组织委员会和平台技术委员会以获得批准。第二章 系统要求3.1 Rational Rose 简介Rational Rose 是由美国的 Rational 公司开发的
20、、面向对象的可视化建模工具。利用这个工具,可以建立用 UML 描述的软件系统模型,而且可以自动生成和维护C+、Java、Visual Basic 和 Oracle 等语言和系统的代码。Rational Rose 包括了统一建模语言(UML) 、面向对象的软件工程(OOSE)及对象建模技术(OMT) 。其中,统一建模语言(UML)是由 Rational 公司的三位世界级的面向对象技术专家 Grady Booch、Ivar Jacobson 和 Jim Rambaugh,通过对早期面向对象研究的设计方法进一步扩展而得到的,它为可视化建模软件奠定了坚实的理论基础。2002 年,Rational 公司
21、被 IBM 收购,Rational 成为 IBM 的第 5 大品牌。2.1.1 Rational Rose 的特点Rational Rose 在建模方面具有以下特点。1. 保证模型和代码高度一致Rose 可以实现真正意义上的正向、逆向和双向工程。在正向工程中,Rose 可以为模型生成相应的代码;在逆向工程中,Rose 可以从用户原来的软件系统导出系统的模型;在双向工程中,Rose 可以真正实现模型和代码之间的循环工程,从而保证模型与代码的高度一致,并通过保护开关使得在双向工程中不会丢失或覆盖已经开发的任何代码。2. 支持多种语言Rose 本身能够支持的语言包括:C+、Visual C+、Jav
22、a、Smalltalk、Ada、Visual Basic、PowerBuilder,也能够为 CORBA 应用产生接口定义语言(IDL)和为数据库应用产生数据库描述语言(DDL) 。为了最大程度地给 Rose 提供便利和实惠,产品被划分为企业版和专家版,用户可以根据自己在开发语言方面的需要灵活选择不同的版本。3. 为团队开发提供强有力的支持Rose 提供的两种方式来支持团队的开发:一种是采用 SCM(软件配置管理)的团队开发方式;另一种是没有 SCM 情况下的团队开发方式。这两种方式为用户提供了极大的灵活性,用户可以根据开发的规模和开发人数,以及资金情况等选择一种方式进行团队开发。 Rose
23、与 ClearCase 和 SourceSafe(微软产品)等 SCM 工具实现了内部集成,只要遵守微软版本控制系统的标准 API-SCC(源代码控制) ,API 的任何版本控制系统均可以集成到 Rose 中作为配置管理工具。4. 支持模型的 Internet 发布Rose 的 Internet Web Publisher 能够创建一个基于 Web 的 Rose 模型的 HTML 版本,使得其他人员能够通过标准的浏览器,如 Netscape Navigator 或 IE 来浏览该模型。5. 生成使用简单且定制灵活的文档 Rose 本身提供了直接产生模型文档的功能,但是如果能够利用 Ration
24、al 文档生成工具 SODA 提供的模型文档模板就可以轻松自如地自动生成 OOA 和 OOD 阶段所需的各种重要文档。值得注意的是,无论是 Rose 自身还是 SODA 所产生的文档均为 WORD 文档,并且在Rose 中可以直接启动 SODA,而 SODA 与 WORD 是无缝集成的。6. 支持关系型数据库的建模利用 Rose 能够进行数据库的建模。Rose 能够为 ANSL、Oracle、SQL Server 、Sybase、 Watcom 等支持标准 DDL 的数据库自动生成数据描述语言。3.2 功能需求分析2.2.1 系统功能需求系统的功能需求包括以下几个方面。1. 借阅者可以通过网络
25、查询书籍信息和预定书籍。2. 借阅者能够借阅书籍和还书。3. 图书管理员能够处理借阅者的借阅和还书请求。4. 系统管理员可以对系统的数据进行维护,如增加、删除和更新书目,增加、删除和更新借阅者账户,增加和删除书籍。满足上述需求的系统主要包括以下几个模块。1. 基本数据维护模块。基本数据维护的模块提供了使用者录入、修改并维护基本数据的途径。例如对借阅者的、书籍的各项信息的更新与修改。2. 基本业务模块。基本业务模块主要用于实现用户借书与还书的管理,例如借阅者可以登陆系统借阅书籍,图书管理员可以取消书籍的预定,当然还可以进行借书还书等操作。3. 数据库管理模块。在系统中所有书籍的信息以及借阅者的账
26、户信息都要统一管理,书籍的借阅情况、预定情况也要进行详细地记录,所以要用统一的数据库平台进行管理。4. 信息查询模块。信息查询模块主要用于查询书籍的信息和借阅者的信息。图书馆管理系统基本数据维护模块基本业务模块数据库管理模块信息查询模块图 2.1 图书馆管理系统的功能需求。2.2.2 基本数据维护模块基本数据维护模块包括如图 2.2 所示的几个方面。基本数据维护模块添加借阅者信息修改更新借阅者信息添加书目信息修改更新书目信息添加书籍信息删除书籍信息图 2.2 基本数据维护模块1. 添加借阅者信息。系统管理员可以添加借阅者账户。2. 修改更新借阅者信息。系统管理员可以修改更新借阅者信息。3. 添
27、加书目信息。系统管理员可以添加书目。4. 修改更新书目信息。系统管理员可以添加书目。5. 添加书籍信息。系统管理员可以添加书籍。6. 删除书籍信息。系统管理员可以删除书籍。2.2.3 基本业务模块基本业务模块包括如图 2.3 所示的几个方面。基本业务模块借书 还书 书籍预定 取消书籍预定图 2.3 基本业务模块1. 借书。处理借书业务。2. 还书。处理还书业务。3. 书籍预定。借阅者可以通过网络进行书籍预定。4. 取消书籍预定。图书管理员可以根据情况取消书籍预定,如果借阅者已经借阅了此书或者借阅者要求取消预定都涉及此项业务。数据库模块包括如图 2.4 所示的几个方面。数据库模块借阅信息管理书籍
28、信息管理账户信息管理书籍预定信息管理图 2.4 数据库模块1. 借阅信息管理。书籍借阅信息包括所借书的书名、ISBN 以及借书的时间等。2. 书籍信息管理。书籍信息包括书籍的名字、ISBN、作者、入库时间以及书籍在相应的书目下的编号等。3. 账户信息管理。账户信息包括借阅者的账户 ID、姓名、地址、邮编和所借书籍的书目等。4. 书籍预定信息管理。负责管理书籍的预定信息。信息查询模块主要是查询数据库中的相关信息,如图 2.5 所示。信息查询模块查询书籍信息查询借阅者信息图 2.5 信息查询库模块1. 查询书籍信息。负责书籍信息的查询。2. 查询借阅者信息。负责借阅者信息的查询。第三章 系统设计3
29、.1 系统的用例图用例图在需求分析阶段有很重要的作用,它是作为参与者的外部拥护所能观察到的系统功能的模型。整个开发过程都是围绕需求阶段的用例进行的。创建用例图之前首先要确定参与者。1. 作为一个图书馆管理系统,首先需要读者(借阅者)的参与,读者可以登陆系统查询所需要的书籍,查到所需要的书籍后课题考虑预订,当然最重要的是借书、还书操作。2. 对于系统来说,读者发起的借书、还书等操作最终还需要图书馆管理员来处理,他们还可以负责图书的预订和预订取消。3. 对于图书馆管理系统来说,系统的维护也是相当重要的。维护操作主要包括增加书目,删除或更新书目,增加书籍和减少书籍等操作。由以上分析可以看出,系统的参
30、与者主要有 3 类:读者(也可以称为借阅者) 、图书馆管理员、图书馆管理系统维护者。3.1.1 借阅者请求服务的用例图借阅者请求服务的用例图包括如下用例,如图 3.1 所示。1. 登录系统。借阅者可以登录系统查询书籍信息、个人借阅信息以及预定书籍等。2. 查询自己的借阅信息。借阅者可以查询自己的借阅信息,例如已借书籍的信息,所借书籍应归还的最后期限等。3. 查询书籍信息。借阅者可以查询书库里的书籍信息,例如自己所需要的书是否存在,书籍的索书号等。4. 预订书籍。借阅者可以预订书籍。5. 借阅书籍。这是最基本的功能。6. 归还书籍。图 3.1 借阅者请求服务的用例图【用例图说明】(1)Serch
31、 for Book:书籍查询用例。(2)Reserve the book:书籍预定用例。(3)Logon the system:登录系统。用户可以登录系统以便进行借阅信息查询以及预定书籍等操作。(4)Query Info:查询借阅信息。(5)Borrow the book:借阅书籍。(6)Return the book:归还书籍。(7)Return with Fine:换书时交纳罚金。如果借阅者所借书籍超过借阅期限未还,还书的时候就要交纳一定的罚金。3.1.2 图书管理员处理借书、还书等的用例图图书管理员处理借书、还书等的用例图包含如下用例,如图 3.2 所示。1. 处理书籍借阅。图书管理员可
32、以处理借阅者的借书请求。2. 处理书籍归还。图书管理员可以处理借阅者的还书请求。3. 删除预订信息。图书管理员可以删除借阅者的书籍预订信息。图 3.2 图书馆管理员处理借书、还书等的用例图【用例图说明】(1)Get book:书籍归还处理。(2)Lend book:书籍借阅处理。(3)Remove Reservation:删除书籍预订信息。(4)Get with Fine:还书时收取罚金。(5)Check user count:检查用户借阅凭证的合法性。图书管理员在借阅者借书的时候要检查用户借阅凭证的合法性。3.1.3 系统管理员进行系维护的用例图系统管理员进行系维护包含图下用例,如图 3.3
33、 所示。1. 查询借阅者信息。系统管理员可以查询借阅者的基本信息和借阅信息。2. 查询书籍信息。系统管理员可以查询书库里的书籍信息。3. 增加书目。系统管理员可以向书库中增加书目。4. 删除或更新书目。系统管理员可以从书库中删除和更新书目。5. 增加书籍。系统管理员可以向书库中增加书籍。6. 删除书籍。系统管理员可以从书库中删除书籍。7. 添加借阅者账户。系统管理员可以向系统中添加借阅者账户。8. 删除或更新借阅者账户。系统管理员可以删除或更新借阅者账户。图 3.3 系统管理员进行系统维护的用例图【用图例说明】(1)Query borrower Info:查询读者信息。(2)Query boo
34、k Info:查询书籍信息。(3)Add Title:增加书目。(4)Remove or Update Title:删除或更新书目。(5)Add book:增加书籍。(6)Remove book:删除书籍。(7)Add borrower:添加借阅者账户。(8)Remove or update Borrower:删除或更新借阅者账户信息。3.2 系统的时序图时序图按时间顺序描述系统元素之间的交互。图书管理系统的时序图主要有如下几个。1. 系统管理员添加书籍的时序图。2. 系统管理员添加借阅者账户的时序图。3. 系统管理员添加书目的时序图。4. 系统管理员删除或更新书目的时序图。5. 系统管理员删
35、除或更新借阅者账户的时序图。6. 系统管理员处理书籍借阅的时序图。7. 系统管理员处理书籍归还的时序图。8. 系统管理员查询书籍信息的时序图。9. 系统管理员预订书籍的时序图。3.2.1 系统管理员添加书籍的时序图图 3.4 系统管理员添加书籍的时序图【时序图说明】1. Add Item(): 添加书籍函数。2. Find(string):根据书籍查找相应书目的函数。3. Create(integer,Title):修改书籍数目的函数。添加书籍时,系统管理员首先与系统的维护窗口互交,查找有没有相应的书目信息。如果有,直接添加,如果没有,要创建新的书目。3.2.2 系统管理员添加借阅者账户的时序
36、图图 3.5 系统管理员添加借阅者账户的时序图【时序图说明】Create(String,String):添加新的借阅者账户的函数。系统管理员要添加新的借阅者账户,首先要与维护窗口交互,维护窗口负责创建一个新的借阅者账户。3.2.3 系统管理员删除书目的时序图【时序图说明】1. Find(string):书目类的查找函数。2. Find on title(Title):查找此书目下书籍信息的函数。3. Destroy:删除书籍信息的函数。4. Destroy:删除书目信息的函数。系统管理员与系统维护窗口交互,查找到相应的书目及书籍信息并删除掉。图 3.6 系统管理员删除书目时的时序图3.2.4
37、图书馆管理员处理书籍借阅的时序图【时序图说明】1. Find(String):查找书目的函数。2. Find item ():查找所需要书籍的函数。3. Find on title (Title):根据书目从数据库中找到书目信息的函数。4. Identify borrower():验证借阅者身份的函数。5. Find(string):根据借阅者的登录账号找到借阅者信息的函数。6. Create(Borrower,item):修改借阅信息的函数。图书管理员首先与系统的借阅窗口交互,然后借阅窗口与书目和书籍信息交互,查看借阅书籍是否可用。如果可用,要验证借阅者借书凭证的有效性,如果有效,则将新的借
38、阅信息存入数据库。图 3.7 图书管理员处理书籍借阅的时序图3.2.5 图书管理员处理书籍归还的时序图图 3.8 图书管理员处理书籍归还的时序图【时序图说明】1. check():检查书籍状况的函数。2. Update():更新书籍类信息的函数。3. Update():更新借阅者借阅信息的函数。图书管理员处理还书时,首先从借阅者手里接过书籍,然后与还书窗口交互,还书窗口负责检查书籍状况,然后更新书籍信息和读者的借阅信息。3.2.6 借阅者查询书籍信息的时序图图 3.9 借阅者查询书籍信息的时序图【时序图说明】Find on title ( ):根据书目查找到相应的书籍信息。3.2.7 借阅者预
39、订书籍的时序图图 3-10 借阅者预订书籍的时序图【时序图说明】1. Login:登录系统的函数。2. Find(String):查找相应书目的函数。3. Reserve( ):预订书籍的函数。借阅者首先与系统的网络模块交互,如果找到要预订的书籍,就将预订信息添加进去。3.3 系统的协作图协作图用来表现系统的对象间的另一种交互,即时间和空间顺序上的交互。虽然和时序图表现的交互方式不同,但系统的时序图和协作图一般描述相同的内容。图书管理系统的协作图主要有如下几个。1. 系统管理员添加书籍的协作图。2. 系统管理员添加借阅者账户的协作图。3. 系统管理员添加书目的协作图。4. 系统管理员删除或更新
40、书目的协作图。5. 系统管理员删除或更新借阅者账户的协作图。6. 图书管理员处理书籍借阅的协作图。7. 图书管理员处理书籍归还的协作图。8. 借阅者查询书籍信息的协作图。9. 借阅者预订书籍的协作图。由于涉及的协作图较多,一些简单的协作图就不在下面列出了。3.3.1 系统管理员添加书籍的协作图【协作图说明】(1)add Item():添加书籍的函数。(2)find(String):根据书籍名查找相应书目的函数。(3)update():修改某类书目下书籍数量的函数。图 3.11 系统管理员添加书籍的协作图3.3.2 系统管理员删除书籍的协作图【协作图说明】(1)remove _item():删除
41、书籍的函数。(2)find(String):根据书籍名查找相应书目的函数。(3)update():修改某类书目下书籍数量的函数。图 3-12 系统管理员删除书籍的协作图3.3.3 图书管理员处理借书的协作图图 3.13 图书管理员处理借书的协作图【协作图说明】(1)Identify borrower():验证借阅者身份的函数。(2)Find reservation():查找预订信息的函数。(3)Find(Borrower,Title):根据借阅者和借阅的书籍名找到相应预订信息的函数。(4)Borrow():处理借书的函数。(5)Update():更新某一书目下书籍数量的函数。(6)Check
42、if max():检查借阅凭证所借书籍数目是否已经超过最大限额的函数。3.3.4 图书管理员处理还书的协作图【协作图说明】(1)Find borrower():查找借阅者信息的函数。(2)Find(string):根据借阅者查找借阅信息的函数。(3)Return back():处理还书的函数。(4)Update():更新书籍数目的函数。图 3.14 图书管理员处理还书的协作图3.3.5 借阅者预订书籍的协作图图 3.15 借阅者预订书籍的协作图【协作图说明】(1)Identify borrower():验证借阅者身份的函数。(2)Find(String):根据书籍名称查找书目信息的函数。(3)
43、Reserve():预订某一书目下的书籍函数。(4)Create(Ttile,Borrower):修改预订信息的函数。3.4 系统的状态图在图书馆管理系统中,有明确状态转换的类有:书籍和借阅者的账户(相当于包含特定个人信息的电子借阅证) 。可以在系统中为这两类事物建立状态图。1书的状态图图 3.16 书的状态图【状态图说明】(1)New book:还未入库的新书。(2)Delete:已经从书库里删除的书。(3)Available:书籍处于可用状态,即可以外借的状态。(4)Reserved:预订状态。(5)Borrowed:借出状态。书籍处于可用(Available)状态时既可以预订也可以外借,
44、外借后变为借阅(Borrower)状态。处于预订(Reserved)状态时可以外借,超出预定时间期限则从预订状态直接转化为可用状态。借阅者在规定的预定时间内也可以考虑取消预订,取消预订后书籍的状态转为可用。外借书籍归还后,变为可用状态。3.5 系统的活动图活动图描述活动是如何协同工作的。当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情。在图书馆管理系统中,有明确活动的类包括:借阅者、图书馆管理员和系统管理员。可以在系统中为这 3 个类建立活动图。1. 借阅者的活动图【活动图说明】(1)Self help service:打开图书馆负责自助服务的计算机。(2)Search for books:查询需要的书籍。(3)Login:登录管理系统。(4)View book information:查看书籍信息。(5)Reserve the book:预订书籍。(6)Exit system:退出系统。(7)Leave computer:离开自助服务的计算机。图 3.17 借阅者的活动图借阅者进行自助服务时,可首先登录系统,然后进行书目查询、书籍信息查询、书