图书馆管理系统分析设计
1、
系统简介
本系统为一个小型的图书管理系统,需完成以下工作: (1) 借书、还书
(2) 在图书馆中增加或删除一本书 (3) 按照作者或者专业领域查找一批书 (4) 找出被某位读者借出的一批书 (5) 找出最近借出某本书的读者
系统的用户有两类:图书管理员和普通读者。功能(1)(2)(5)只供图书管理员使用,功能(4)只能供读者查找自己借出的书,功能(3)为管理员和读者的共同功能。
本系统需满足以下限制:
(1) 图书馆中所有未借出的书可供读者随时借阅 (2) 在同一时刻,一本书不能既被借出又可供阅读 (3) 一个读者一次借出图书的数目不能超过预定值
2、 用例分析与设计
从以上系统简介内容中可以看出,本系统有以下几类参与者: 图书管理员Admin 读者Reader 读卡器CardReader 服务器System
在上述参与者中,图书管理员和读者与系统进行交互,通过对交互场景进行归类和抽象,本系统应具有以下用例:
借书lendBook 还书returnBook 增加图书addBook 删除图书delBook
按作者、专业检索图书findBook_Author 按读者检索图书findBook_Reader 按书检索读者findReader_Book
2.1 生成用例图
由以上用例分析可生成用例图,如图2.1所示
图2.1 系统用例图
2.2 用例的顺序图
为了使每个用例的操作流程更简洁明了,本系统采用UML的顺序图来对每个用例进行细化,如下所示。
1、 借书
图2.2 借书顺序图
函数说明:
InsertCard():刷卡 ReadCard():读卡
ifMax()判断借书数量是否达到上限 ReturnReaderInfo()返回读者信息 Return(true):该读者可继续借书 lendBook():输入借书信息 Update()更新数据库
2、 还书
图2.3 还书顺序图
函数说明:
BookInfo():输入还书信息 Update():更新数据库
ReturnReaderInfo():返回读者信息
3、 增加图书
图2.4 增加图书顺序图
函数说明:
addBook():输入增加的图书信息 ifAllowsAdd():判断是否允许添加 Update():更新图书信息 Return(true):返回添加成功
4、 删除图书
图2.5 删除图书顺序图
函数说明:
delBook():输入删除的图书信息 ifAllowsDel():判断是否可以删除 ifSure():是否确定删除 Return(true)5:确定删除 Update():更新图书信息 Return(true)7:返回删除成功
5、 按作者检索图书
图2.6 按作者或专业检索图书顺序图
函数说明:
findBook_Author():管理员或读者选择按作者或专业检索图书 Author(String):输入作者或专业信息 returnBookInfo():返回图书信息
6、 按读者检索图书
管理员部分:
图2.7 按读者检索图书顺序图
读者部分
图2.8 读者检索个人借阅图书顺序图
函数说明:
findBook_Reader():选择按读者检索图书 ReaderId():输入读者编号
ReaderIdandPass():输入读者编号密码 returnBookInfo():返回书籍信息
7、 按书检索读者
图2.9 按图书检索读者顺序图
函数说明:
findReader_Book():选择按图书检索读者 BookID():输入图书编号
returnReaderInfo():返回读者信息
3、 概念模型和顶层架构设计
3.1 概念模型设计
图3.1 系统概念模型——分析类图
说明:
表示控制类表示实体类表示边界类
3.2 顶层架构设计
用户交互层CardCardReaderAdminWindowsReaderWindows业务逻辑层lendBookreturnBookaddBookdelBookfindReader_BookifMaxfindBook_AuthorfindBook_ReaderSessionOperation网络服务层System
图3.2 系统顶层架构
4、 用户界面设计
4.1 界面变化分析
根据管理员的功能分析,与管理员相关的主要界面有以下10个: Admin Welcome: 管理员主界面 findReader_Book:按读者检索图书界面 lendBook:借书界面 returnBook:还书界面 addBook:增加图书界面 delBook:删除图书界面
findBook_Author:按作者或专业查找图书界面 findBook_Reader:按读者检索图书界面 UserInfo:显示读者信息界面 BookInfo:显示图书信息界面 各界面之间的转换如状态图4.1所示
图4.1 管理员屏幕变化状态图
根据读者的功能分析,与读者相关的主要界面有以下5个: Reader Welcome: 读者主界面
findBook_Author:按作者或专业查找图书界面 findBook_Reader:按读者检索图书界面 InputPass:读者验证账户名密码界面 BookInfo:显示图书信息界面 各界面之间的转换如状态图4.2所示
Reader Welcome继续继续findBook_ AuthorfindBook_Reader继续密码错误,重新输入BookInfo密码正确InputPass
图4.2 读者屏幕变化状态图
4.2 界面的类图表示
针对每个屏幕的结构及功能,采用类图对其进行详细说明,如下所示。 1、 借书界面
此界面包含一个图书编号文本框、一个读者编号文本框、一个借书按钮以及一个取消按钮,如图4.3所示
<
图4.3 借书界面的结构类图
2、 还书界面
此界面包含一个图书编号文本框、一个还书按钮以及一个取消按钮,如图4.4所示
<
图4.4 还书界面结构类图
3、 增加图书界面
此界面包含一个图书编号文本框、一个图书名称文本框、一个图书作者文本框、一个增加按钮以及一个取消按钮,如图4.5所示
<
图4.5 增加图书界面结构类图
4、 删除图书界面
此界面包含一个图书编号文本框、一个删除按钮以及一个取消按钮,如图4.6所示
<
图4.6 删除图书界面结构类图
5、 按作者或专业查找图书界面
此界面包含一个作者姓名本框、一个查找按钮以及一个取消按钮,如图4.7所示
<
图4.7 按作者或专业查找图书界面结构类图
6、 按图书查找读者界面
此界面包含一个图书编号文本框、一个查找按钮以及一个取消按钮,如图4.8所示
<
图4.8 按图书查找读者界面结构类图
7、 按读者查找图书界面
此界面包含一个读者编号文本框、一个查找按钮以及一个取消按钮,如图4.9所示
<
图4.9 按读者查找图书界面结构类图
8、 读者验证账户名密码界面
此界面包含一个读者编号文本框、一个读者密码文本框、一个查找按钮以及一个取消按钮,如图4.10所示
<
图4.10 读者验证账户名密码界面结构类图
4.3 界面包图的设计
1、管理员界面包图
管理员界面<
图4.11 管理员界面包图
2、读者界面包图
读者界面<
图4.12 读者界面包图
5、 类设计
5.1 类的属性和操作设计
经过分析,系统主要的类、类的属性及操作以及它们之间的关系如图5.1所示。
图5.1 系统类图
5.2 类的行为模型设计
单单用类图对类进行描述并不能表示各实体类的动态行为,在这里我们进一步用状态图对书籍和读者两个实体类进行分析
1、书籍的类的状态图
图5.2 书籍类状态图
状态图说明:
NewBook:新书状态;书籍在新增后进入此状态 Available:可借阅状态 Lened:已借出状态 Delete:已删除状态
书籍在刚增加后进入新书状态,可供借阅;在发生借阅事件后进入已借出状态;当书籍归还,又转化为可供借阅状态;删除后进入已删除状态。
ifMax( False )addReaderNewReaderifMax(True)DeletedelBook图5.2 读者类状态图
状态图说明:
NewReader:新读者账户
AvailableReturnUnAvailable
Available:可借阅状态 UnAvilable:不可借阅状态 Delete:已删除状态
新增的读者为新读者账号状态,可借阅图书;当借书数量达到最大值时转化为不可借阅状态;当有图书归还后又进入可借阅状态;当账号被删除,转化为已删除状态。
6、 小结
以上就是本小组经过详细分析、精心设计的一个图书管理系统。经过小组的讨论以及分工合作,使得我们每个人对该系统有了比较全面的了解。我们采用UML分析方法对系统进行分析设计,通过对用例的分析、概念模型和顶层架构的分析、界面设计以及类的分析设计让整个系统的架构更加清晰明了。在描述各个架构及功能时我们采用了各种图,包括状态图,类图,包图,顺序图等等,全面而详细的将图书管理系统整体到部分功能形象地展示出来。UML统一建模课程是我们组成员设计的知识基础,通过对rose软件的实践应用,成功地完成本次软件设计的具体工作。