图书馆管理系统建模设计基于UML.docx

上传人:b****8 文档编号:10766657 上传时间:2023-02-22 格式:DOCX 页数:28 大小:489.15KB
下载 相关 举报
图书馆管理系统建模设计基于UML.docx_第1页
第1页 / 共28页
图书馆管理系统建模设计基于UML.docx_第2页
第2页 / 共28页
图书馆管理系统建模设计基于UML.docx_第3页
第3页 / 共28页
图书馆管理系统建模设计基于UML.docx_第4页
第4页 / 共28页
图书馆管理系统建模设计基于UML.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

图书馆管理系统建模设计基于UML.docx

《图书馆管理系统建模设计基于UML.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统建模设计基于UML.docx(28页珍藏版)》请在冰豆网上搜索。

图书馆管理系统建模设计基于UML.docx

图书馆管理系统建模设计基于UML

图书馆管理系统建模设计2

-------基于UML

一、图书馆管理系统需求分析

1.1系统目标设计图

系统开发的总目标是实现内部图书借阅管理的系统化、规范化和自动化。

能够对图书进行注册登记,也就是将图书的基本信息(如:

书的编号、书名、作者、价格等)预先存入数据库中,供以后检索。

能够对借阅人进行注册登记,包括记录借阅人的姓名、编号、班级、年龄、性别、地址、电话等信息。

提供方便的查询方法。

如:

以书名、作者、出版社、出版时间(确切的时间、时间段、某一时间之前、某一时间之后)等信息进行图书检索,并能反映出图书的借阅情况;以借阅人编号对借阅人信息进行检索;以出版社名称查询出版社联系方式信息。

提供对书籍进行的预先预订的功能。

提供旧书销毁功能,对于淘汰、损坏、丢失的书目可及时对数据库进行修改。

能够对使用该管理系统的用户进行管理,按照不同的工作职能提供不同的功能授权。

提供较为完善的差错控制与友好的用户界面,尽量避免误操作。

1.2系统功能需求分析

(1)读者管理:

读者信息的制定、输入、修改、查询,包括种类、性别、借书数量、借书期限、备注等。

(2)书籍管理:

书籍基本信息制定、输入、修改、查询,包括书籍编号、类别、关键词、备注。

(3)借阅管理:

包括借书,还书,预订书籍,续借,查询书籍,过期处理和书籍丢失后的处理。

(4)系统管理:

包括用户权限管理,数据管理和自动借还书机的管理

满足以上需求的系统主要包含有一下几个子系统

(1)基本业务功能子系统:

该系统中主要包含了借书还书和预订等功能。

(2)基本数据录入功能子系统:

该子系统主要包含有书籍信息和读者信息录入功能。

(3)信息查询子系统:

包含了多功能的查询书籍信息和读者信息。

(4)数据库管理功能子系统:

主要包含了借阅信息管理功能,书籍信息管理功能和预订信息管理功能。

(5)帮助功能子系统。

下图为该图书馆管理系统的主要功能模块图:

图1:

图书馆管理系统功能模块图

1.3功能描述

(1)借书。

处理借书业务。

(2)还书。

处理还书业务。

(3)书籍预订。

借阅者可以通过网络进行书籍预订。

(4)书籍信息录入。

处理书籍个类信息录入业务。

(5)借阅者信息录入。

对读者信息进行录入。

(6)书籍信息查询。

负责书籍信息的查询。

(7)读者信息查询。

负责数据信息的查询。

(8)借阅信息管理。

书籍借阅信息包括所借书的书名、ISBN以及借书的时间等。

(9)书籍信息管理。

书籍信息包括书籍的名字、ISBN、作者、入库时间以及书籍在相应书目下的编号等。

(10)预订信息管理。

负责管理书籍预订信息。

1.4、图书馆管理系统的数据流图。

如下:

 

 

修改用户表

 

 

修改书籍信息表

修改借、还书表

图2:

图书馆管理系统的DFD图

二、系统的UML建模设计

2.1、UML简介

UML是一种功能强大的、面向对象的可视化系统分析的建模语言,它采用一整套成熟的建模技术,广泛地适用于各个应用领域。

它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠、更完善的系统模型。

从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性.

2.2该图书系统的用例管理分析

该图书馆管理系统的用例图如下:

图3:

图书馆管理系统的用例图

从用例图中我们可以看出管理员和读者之间对本系统所具有的用例。

管理员所包含的用例有:

(1)登录系统:

管理员可以通过登录该系统进行各项功能的操作

(2)书籍管理:

包括对书籍的增删改等。

(3)书籍借阅管理:

包括借书、还书、预订、书籍逾期处理和书籍丢失处理等等。

(4)读者管理:

包含对读者的增删改等操作。

(5)自动借书机的管理。

读者所包含的用例有:

(1)登录系统

(2)借书:

进行借书业务。

(3)还书:

读者具有的还书业务。

(4)查询:

包含对个人信息和书籍信息的查询业务

(5)预订:

读者对书籍的预订业务。

(6)逾期处理:

就是书籍过期后的缴纳罚金等。

(7)书籍丢失处理:

对书籍丢失后的不同措施进行处理。

(8)自动借书机的使用等。

2.3系统的顺序图

顺序图是显示对象之间交互的图,这些对象是按时间顺序排列的。

该图书馆管理系统主要含有以下几个重要的顺序图,其他对象的顺序图和这些也类似。

(1)借书顺序图

(2)还书顺序图

(3)罚款顺序图

1、借书顺序图

图4:

图书馆管理系统借书顺序图

【顺序图说明】

(1)login():

登录系统。

(2)checkstu_card():

对读者信息进行验证,检查是否符合本图书馆借书条件。

(3)showinformation():

显示该读者的基本信息函数。

(4)borrow():

读者借书函数。

(5)getreaders():

取得读者信息函数。

看该读者是否符合借书条件,若符合,则返回可借信息。

(6)gettitle():

取得书目信息。

(7)getreservation():

检验书籍是否被预订函数。

(8)getnoreservation():

书籍没被预订或取消预订函数。

(9)create(borrower,item):

创建书籍外借函数。

借书时,读者先将书拿予管理员,管理员对书籍和读者进行检验,若书籍和读者都符合借书条件,则借书成功。

2、还书顺序图

图5:

图书馆管理系统还书顺序图

【顺序图说明】

(1)login():

登录系统。

(2)getitem():

取得书籍条目信息。

(3)update():

对图书馆书籍条目和借阅者信息进行更新条目。

还书时,读者先将书交给管理员,由管理员扫描书籍,若书籍没有过期等违规现象,则对书目和读者借阅信息进行更新,同时还书成功。

3、罚款顺序图

图6:

图书馆管理系统的罚款顺序图

【顺序图说明】

管理员对书籍进行扫描,若发现书籍已经超过了图书馆规定的还书期限,则按每天一定金额进行罚款,过期天数和罚款金额由系统自动计算。

用户交完罚金后,则对读者借阅信息进行更新。

2.4系统的状态图

图书馆的书籍状态图如图7所示。

【状态图说明】

书籍在未变成图书馆在库书籍时,为新加书籍状态。

书籍处于在库状态时既可以预订也可以外借,外借后变为借出状态。

处于预订状态时也可以外借,超出预订时间期限则从预订状态直接转为可用状态。

借阅者在规定的预订时间内也可以考虑取消预订,取消预订后书籍的状态转为可用。

外借书籍归还后变为可用状态。

图7:

图书馆的书籍状态图

2.5系统的活动图

活动图描述的是某流程中的任务的执行,活动图描述活动是如何协同工作的,当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情。

在本图书馆管理系统中,我们主要描述了图书馆系统的借书、还书和预订的活动图。

1.借书活动图

【借书活动图说明】

管理员首先要扫描读者的借书证,检验证件是否符合图书馆借书条件,若该读者的借书数量还未达到最大规定数量,并且其所借书籍均未属于过期范围,则符合借书条件。

则再扫描书籍条形码,检查书籍是否是不可借书籍或者已经被预订,若被预订,则取消预订,方可借书。

在这些条件都符合时则更新书籍信息和读者的借阅信息,记录好借书的时间。

图8:

图书馆管理系统的借书活动图

2、还书活动图

【还书活动图说明】

图书管理员对书籍进行扫描,若书籍已经过期,则要求读者还请欠款才能还书,读者缴应交罚款后,更新书目信息和读者信息。

图9:

图书馆管理系统的还书活动图

3、预订图书活动图

【预订书籍活动图说明】

读者先进入系统查询自己所需要的书籍,显示书籍信息,检验书籍是否属于可预订书籍,若符合条件则检查书籍是否已经被预订或已经被外借,若都未成立,则读者登录系统,并对该书籍进行预订。

图10:

图书馆管理系统预订书籍活动图

2.6图书管理系统的类图

【类图说明】

(1)reader类是借阅者的类,它的属性很多,包括借阅者的账户ID(reader_id)、姓名(reader_Name)、地址(Address)、班级(class)、所借书籍的书目(borrowed)等。

其中主要操作有借书(addborrowed)和还书(deleteborrowed)和预订(reservation)等。

(2)admin类是管理员类,他有编号和姓名属性,操作主要是书籍的增删改和读者的增删改等等。

(3)Title类是记录书目信息的类,包括书籍的名字(name)、作者(author)、book_id等属性。

(4)Item类是具体某本书的类,属性包括书籍号(id)。

操作包括预订(reserve)、按书目查找(find_on_title)等。

(5)borrow类是某本书的借阅信息类,包括所借阅书籍的ISBN、借阅的时间(date)等。

(6)Reservation类是预订信息类,每个预订信息包括预订日期(date)、所预订书籍的ISBN、预订书籍的用户ID(UserID)等属性。

(7)persistentstore类是书籍永久的存储类,在数据库中的存储数据,其他对与书籍有关的活动都要经过其存储类。

图11:

图书馆管理系统的类图及关系

三、图书馆管理系统数据库建模

考虑到系统的推广性,本系统采用SQLSERVER2000作为数据库。

并且采用PowerDesigner进行数据建模,从而自动生成sql脚本。

3.1、数据库概念设计

1、数据库表设计

(1)管理员表admin:

管理员编号(admin_id),管理员姓名(admin_name),密码(admin_password),登录次数(logins),最后一次登录时间(lastlogin)和权限(right)。

(2)读者表reader:

读者编号(reader_id),读者姓名(reader_name),性别(sex),年龄(age),班级(class),最大借书量(maxborrowed)借书总量(amount)和权限(right)。

(3)书籍表books:

书籍编号(book_id),书名(title),作者(author),出版社(bookconcert),价格(price),出版时间(time),在库总量(amount),剩余量(remain)。

(4)借阅信息表(borrow_information):

书籍编号(book_id),读者编号(reader_id),借书时间(borrow_time),到期时间(end_time),归还时间(return_time).

(5)预订信息表:

读者编号(reader_id),书籍编号(book_id),预订时间(reservation_time),取消预订时间(reservationcanceltime).

(6)书籍类型表booktype:

书籍类型编号(type_id),书籍类型名称(type_name).

(7)用户权限表right:

权限(right)。

2、图书管理系统个实体之间的E-R图

图12:

图书馆管理系统各实体之间的ER图

3、基于powerdesigner的CDM数据库模型

(1)数据库概念数据模型CDM对象如下图,该图显示了各实体的属性及各实体之间的关系。

图13:

图书馆管理系统CDM建模

3.2数据库物理设计

由概念模型生成物理模型的的数据库脚本文件为图书管理.sql文件,代码附下页。

 

附:

由PDM对象自动生成的数据库脚本文件代码如下:

ifexists(select1

fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')

wherer.fkeyid=object_id('books')ando.name='FK_BOOKS_管理书籍_ADMIN')

altertablebooks

dropconstraintFK_BOOKS_管理书籍_ADMIN

go

ifexists(select1

fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')

wherer.fkeyid=object_id('borrow_information')ando.name='FK_BORROW_I_BORROW_IN_BOOKS')

altertableborrow_information

dropconstraintFK_BORROW_I_BORROW_IN_BOOKS

go

ifexists(select1

fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')

wherer.fkeyid=object_id('borrow_information')ando.name='FK_BORROW_I_BORROW_IN_READER')

altertableborrow_information

dropconstraintFK_BORROW_I_BORROW_IN_READER

go

ifexists(select1

fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')

wherer.fkeyid=object_id('login')ando.name='FK_LOGIN_LOGIN_ADMIN')

altertablelogin

dropconstraintFK_LOGIN_LOGIN_ADMIN

go

ifexists(select1

fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')

wherer.fkeyid=object_id('login')ando.name='FK_LOGIN_LOGIN2_READER')

altertablelogin

dropconstraintFK_LOGIN_LOGIN2_READER

go

ifexists(select1

fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')

wherer.fkeyid=object_id('reversation')ando.name='FK_REVERSAT_REVERSATI_BOOKS')

altertablereversation

dropconstraintFK_REVERSAT_REVERSATI_BOOKS

go

ifexists(select1

fromdbo.sysreferencesrjoindbo.sysobjectsoon(o.id=r.constidando.type='F')

wherer.fkeyid=object_id('reversation')ando.name='FK_REVERSAT_REVERSATI_READER')

altertablereversation

dropconstraintFK_REVERSAT_REVERSATI_READER

go

ifexists(select1

fromsysindexes

whereid=object_id('admin')

andname='权限_FK'

andindid>0

andindid<255)

dropindexadmin.权限_FK

go

ifexists(select1

fromsysobjects

whereid=object_id('admin')

andtype='U')

droptableadmin

go

ifexists(select1

fromsysindexes

whereid=object_id('books')

andname='管理书籍_FK'

andindid>0

andindid<255)

dropindexbooks.管理书籍_FK

go

ifexists(select1

fromsysindexes

whereid=object_id('books')

andname='图书类型_FK'

andindid>0

andindid<255)

dropindexbooks.图书类型_FK

go

ifexists(select1

fromsysobjects

whereid=object_id('books')

andtype='U')

droptablebooks

go

ifexists(select1

fromsysobjects

whereid=object_id('booktype')

andtype='U')

droptablebooktype

go

ifexists(select1

fromsysindexes

whereid=object_id('borrow_information')

andname='Association_2_FK'

andindid>0

andindid<255)

dropindexborrow_information.Association_2_FK

go

ifexists(select1

fromsysindexes

whereid=object_id('borrow_information')

andname='Association_1_FK'

andindid>0

andindid<255)

dropindexborrow_information.Association_1_FK

go

ifexists(select1

fromsysobjects

whereid=object_id('borrow_information')

andtype='U')

droptableborrow_information

go

ifexists(select1

fromsysindexes

whereid=object_id('login')

andname='login2_FK'

andindid>0

andindid<255)

dropindexlogin.login2_FK

go

ifexists(select1

fromsysindexes

whereid=object_id('login')

andname='login_FK'

andindid>0

andindid<255)

dropindexlogin.login_FK

go

ifexists(select1

fromsysobjects

whereid=object_id('login')

andtype='U')

droptablelogin

go

ifexists(select1

fromsysindexes

whereid=object_id('reader')

andname='用户权限_FK'

andindid>0

andindid<255)

dropindexreader.用户权限_FK

go

ifexists(select1

fromsysobjects

whereid=object_id('reader')

andtype='U')

droptablereader

go

ifexists(select1

fromsysindexes

whereid=object_id('reversation')

andname='reversation2_FK'

andindid>0

andindid<255)

dropindexreversation.reversation2_FK

go

ifexists(select1

fromsysindexes

whereid=object_id('reversation')

andname='reversation_FK'

andindid>0

andindid<255)

dropindexreversation.reversation_FK

go

ifexists(select1

fromsysobjects

whereid=object_id('reversation')

andtype='U')

droptablereversation

go

createtableadmin(

admin_idintnotnull,

admin_namechar(20)null,

admin_passwordchar(16)null,

loginsintnull,

last_loginchar(10)null,

"right"intnull,

constraintPK_ADMINprimarykeynonclustered(admin_id)

go

createindex权限_FKonadmin(

go

createtablebooktype(

type_idintnull

go

createtablebooks(

book_idintnotnull,

admin_idintnull,

titlechar(20)null,

type_idintnull,

authorchar(40)null,

pricemoneynull,

"bookconcern"char(50)null,

addtimedatetimenull,

amountintnull,

remainintnull,

constraintPK_BOOKSprimarykeynonclustered

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1