您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页图书馆管理系统UML建模与设计

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

来源:爱go旅游网
图书馆管理系统UML建模分析及设计

1.业务建模 系统需求分析

(1)基本数据维护功能:图书馆工作人员对数据做直接操作及维护,包括增加、删除、更改图书信息和读者信息;

(2)基本业务功能:支持读者借书、还书、续借、预留、罚款等业务,并能实时更新数据库中各项记录;

(3)数据库管理功能:支持数据库维护人员对各个分馆所有图书、读者信息集中存放和统一管理;

(4)信息查询功能:对图书信息、读者信息搜索查询;

(5)身份认证功能:系统管理人员需要根据用户名和密码登录系统才能进行管理操作;

(6)及外部系统交互功能:读者缴纳罚款时,可采用校园卡转账方式进行支付; 术语表

(1)名词术语:

图书,读者,读者类型,学生,老师,借阅记录,数据库,维护人员,图书馆工作人员,罚款,校园卡系统; (2)动词术语:

增,删,改,借书,还书,续借,预留,罚款,转账,信息查询,身份认证,更新数据库; 领域类图

借阅记录+借阅日期+借阅人ID+图书编号+数量+归还情况0..n1馆员1..*管理图书0..*+图书编号+图书状态管理学生+学号+所属院系借阅0..51n读者老师+工号0..*10..*+读者ID+读者类型0..1预订记录预订0..3+预约人Id+预约日期+预约书号10..n1属于预订书目+书号+书名+作者+出版社+出版日期+版本号+ISBN+总本书+借出数量+预订数量校园卡系统+缴费图书馆管理系统110..11拥有支付维护罚款+金额+罚款人Id1..*维员

用例描述及用例图 用例图

(1)和“读者”有关用例:

撤销预订图书还书读者续借图书预订图书<><>查看账户信息借书<><><><><>缴纳罚款登录查找图书信息

(2)和“馆员”(图书管理员)有关用例:

馆员添加读者信息添加图书信息删除图书信息<>修改图书信息<><>删除读者信息修改读者信息<><><><>查询图书信息<><><>查询读者信息登录

(3)和“维员”(数据库维护人员)相关用例:

维护数据库维员

(3)和“校园卡系统”相关用例:

转账支付罚款校园卡系统

(4)发起者间关系:

读者老师学生

用例描述

(1)用例名称:读者登录 参及者:读者 步骤:

1.读者把图书卡置于自助机扫描位置,发起用例; 2.机器扫描图书卡信息进行身份验证,登陆成功,显示读者姓名; 前置条件:读者已办理图书卡;

后置条件:机器请读者选择要做操作; 2a重新放置

2a1若图书卡信息读取失败,读者重新放置图书卡,返回步骤1; (2)用例名称:借阅图书 参及者:读者 步骤:

1.读者通过在自助机上选中“借书”功能,发起用例; 2.读者把要借图书置于感应区; 3.机器询问借阅图书数量; 4.读者选择数量;

5.显示当前借阅信息(图书信息,借阅时间,借阅人),询问读者确 认借书;

6.读者核对信息,确认借书;

7.借书完成,机器显示图书信息和应归还日期; 前置条件:读者已登录,借阅图书在馆;

后置条件:生成新借阅记录,同时修改被借图书状态为“借出”; 拓展点: 5a重新放置

5a1若显示信息不符合,读者重新放置归还图书,返回步骤2; 7a超出借书额度

7a1若读者者借书册数超出可借册数,提示“借书失败!已超出

借书额

度,最多可借五本书!”; (3)用例名称:归还图书 参及者:读者 步骤:

1.读者通过在自助机上选中“还书”功能,发起用例; 2.读者把要归还图书置于感应区; 3.机器询问要归还图书数量,给出选项; 4.读者选择数量;

5.机器显示读取到图书信息,询问读者确认还书; 6.读者核对信息,确认还书;

7.还书完成,机器显示图书信息和应归还日期; 前置条件:借阅图书状态是“借出”;

后置条件:借阅记录中图书已归还,修改归还图书状态为“在馆”; 拓展点: 3a重新放置

3a1若没有合适数量可选,读者重新放置归还图书,返回步骤2; 7a超出节约期限

7a1若图书超期,则系统按规定计算罚款金额,并提示“还书失败,请 缴纳罚款!”;

(4)用例名称:查找图书信息 参及者:读者

步骤:

1.读者通过操作自助计算机上搜索页面,发起用例; 2.读者输入图书信息,确认搜索; 3.机器在数据库中查询,显示图书信息; 前置条件:; 后置条件:; 3a查询失败

3a1若无相关信息,机器提示“查询失败,找不到有关信息!”; (5)用例名称:预订图书 参及者:读者 步骤:

1.读者通过在自助机选中图书预订功能,发起用例; 2.读者登录系统;

3.机器检验图书是否为可预订图书,若为可预订图书显示图书副本状态;

4.读者选中未被预定图书;

7.预订完成,机器显示图书信息和预订日期; 前置条件:读者已经正确查询了图书信息; 后置条件:生成新预订记录; 拓展点: 3a不可预订

3a1若图书为不可预订图书,提示“此图书不可预订!”;

4a无可选图书副本

4a1若所有图书副本都已经借出且被预定,机器提供退出登录功能;

(6)用例名称:续借图书 参及者:读者 步骤:

1.读者通过在自助机上选中“续借”功能,发起用例; 2.机器询问要续借图书数量,给出选项; 3.读者选择数量;

4. 读者把要续借图书置于感应区; 5.机器显示读取到图书信息; 6.读者核对信息,确认续借;

7.续借完成,机器显示图书信息和应归还日期;

前置条件:读者已登录系统,要续借图书已被读者借阅且未超期; 后置条件:修改借阅记录借阅时间为当前时间; 拓展点: 4a重新放置

5a1若机器显示图书信息不正确,读者重新放置归还图书,返回步骤2;

7a超出节约期限

7a1若图书超期,则系统按规定计算罚款金额,并提示“续借失败,请缴纳罚款!”;

(7)用例名称:查看账户信息 参及者:读者 步骤:

1.读者选中查看账户信息功能,发起用例;

2.机器显示账户信息(读者信息,已借阅图书信息,归还失败欠费图书信息);

前置条件:读者已登录系统; 后置条件:读者获取信息; 拓展点: 2a账户信息有误

2a1若机器显示信息有误,发起馆员修改账户信息用例,修改成功后返回步骤1;

(8)用例名称:缴纳罚款 参及者:馆员 步骤:

1.馆员用读者图书卡登录系统并选择缴纳罚款功能,发起用例; 2.链接校园卡系统转账支付罚款; 3.支付成功,显示读者信息; 前置条件:读者账户欠费;

后置条件:读者欠费时不可用系统功能项恢复正常可使用; 4a校园卡余额不足

4a1若校园卡余额不足缴纳罚款,提示“余额不足,支付失败”;

(9)用例名称:查询图书信息 参及者:馆员 步骤:

1.馆员选中查询图书信息功能,发起用例;

2.馆员输入图书编码,点击查询按钮。或将图书置于扫描区; 3. 系统搜索图书,机器识别图书条码,显示图书信息; 前置条件:馆员登录系统; 后置条件:无; 3a重新扫描

3a1若系统显示没有图书信息,提示“无选中图书”,馆员重新放置图书,返回步骤2; 3b重新输入

3b1若馆员键入图书编号有误,则系统显示无图书信息或信息有误,馆员重新输入图书编号,返回步骤2; (10)用例名称:添加图书信息 参及者:图书馆管理人员 步骤:

1.馆员选择要添加图书,发起用例; 2.系统显示添加页面; 3.馆员填写添加图书必填信息; 4.添加完成,提交信息;

5.系统进行后台处理,提示添加成功,自动返回添加页面;

6.重复步骤3和4,直至图书添加完成; 前置条件:馆员登录系统; 后置条件:添加图书可正常借出; 4a信息填写不完整

4a1若馆员添加图书时漏填了必填信息,提示“信息不完整,请重新输入!”; 4a图书编号重复

4a1若馆员添加图书时填写图书编号及已有信息重复,提示“图书编号不可用,请重新输入!”; (11)用例名称:修改图书信息 参及者:馆员 步骤:

1.馆员选中要修改图书,发起用例; 2.系统显示图书信息界面; 3.馆员修改图书信息,提交系统;

4.系统后台处理,显示修改成功,自动返回修改页面; 5.重复步骤1,2和3,直至图书添加完成; 前置条件:馆员登录系统,并查询到图书信息; 后置条件:无; 4a修改信息不规范

4a1若馆员输入修改信息不规范(数据类型不匹配、输入文本过长等),系统提示“修改失败,请重新输入”;

4b未作修改

4b1若馆员没有对图书信息作出修改进行提交,系统提示“未做任何修改!”;

4c修改信息为空

4c1若馆员将图书信息改为空进行提交,系统提示“修改失败,信息不能为空!”

(12)用例名称:删除图书信息 参及者:馆员 步骤:

1.馆员选中要删除图书并选择删除功能,发起用例; 2.系统提示删除确认; 3.馆员选中确认删除;

4.删除成功,系统返回删除界面;

前置条件:馆员登录系统,并查询到图书信息; 后置条件:无;

(13)用例名称:添加读者信息; 参及者:馆员 步骤:

1.馆员选中添加读者信息功能,发起用例; 2.系统显示添加账户界面;

3.馆员输入必填信息并进行提交;

3.提交成功,系统提示添加成功,自动返回添加页面;

前置条件:馆员登录系统;

后置条件:添加读者可使用系统功能; 3a读者Id不可用

3a1若输入读者Id不存在或已经失效,提示“账户不可用,添加读者失败!”; 3b读者信息不足

3b1若有馆员没有填必填读者信息,提示“信息不足,添加读者失败!”;

(14)用例名称:修改读者信息 参及者:馆员 步骤:

1.馆员选中要修改读者信息并选中修改功能,发起用例; 2.链接校园卡系统转账支付罚款; 3.支付成功,显示读者信息;

前置条件:馆员登录系统,并查询到读者信息; 后置条件:无;

(15)用例名称:查询读者信息 参及者:馆员 步骤:

1.馆员用读者图书卡登录系统并选择缴纳罚款功能,发起用例; 2.链接校园卡系统转账支付罚款; 3.支付成功,显示读者信息;

前置条件:读者账户欠费;

后置条件:读者欠费时不可用系统功能项恢复正常可使用; 4a校园卡余额不足

4a1若校园卡余额不足缴纳罚款,提示“余额不足,支付失败”; (16)用例名称:删除读者信息 参及者:馆员 步骤:

1.馆员选中要删除读者并选择删除功能,发起用例; 2.系统提示删除确认; 3.馆员选中确认删除;

4.删除成功,系统返回删除界面;

前置条件:馆员登录系统,并查询到读者信息; 后置条件:无;

(17)用例名称:维护数据库

参及者:维员 步骤:

1.维员对数据库中读者信息和图书信息统一管理和维护。 前置条件:维员登录数据库; 后置条件:无;

部分用例活动图:

(1)“借书”

读者选中“借书”询问数量系统选择数量放置图书显示图书信息登录系统确认借书确认更新数据库继续取消提示失败退出提示成功

(2)“删除图书信息”

馆员输入图书编号系统搜索图书信息查询成功显示图书信息查询失败提示失败选中删除操作询问确认删除确认删除删除信息继续更新数据库退出

(3)“登录”

馆员系统输入用户名输入密码验证成功失败进入系统提示登录失败

2.分析

分析类图

由于图书馆管理系统分析模型较复杂,可以把系统分析类(边界类,实体类,控制类)分别存在三个包里:

(1)系统服务包:包含系统提供给读者服务;

<>预订图书边界<><><>借阅图书边界归还图书边界登录边界查询图书信息边界<>查看账户信息边界<><>缴纳罚款边界<>图书<>读者<>借阅记录<><>罚款读者账户<>图书仓库预订图书控制器<>借阅图书控制器<>归还图书控制器<><>登录控制器查看账户信息控制器<>查询图书信息控制器<>支付罚款控制器<>

(2)系统管理包:包含和图书馆管理人员相关分析类;

<>搜索图书边界添加图书信息边界<>修改图书信息边界<>删除图书信息边界<>修改读者信息边界<>添加读者信息边界<>删除读者信息边界<><>馆员<>图书信息<>读者信息<>罚款.修改图书信息控制器<>添加图书信息控制器<>删除图书信息控制器<>搜索图书控制器<>删除读者信息控制器<>添加读者信息控制器<>修改读者信息控制器<>

(3)系统维护包:包含和数据库维护人员相关分析类;

<><><>数据库维护边界维员数据库维护控制器

用例实现:顺序图描述

(1)借阅图书

A.基本事件流

<> : 读者<> : 借阅图书边界 : 借阅图书控制器<><> : 图书仓库<> : 借阅记录1 : borrowBook()2 : findByBarcode()3 : find()46 : findByBarcode7 : borrowBook()5 : find<> : setTitle()<> : 图书10 : setStatus()11 : setExpireDate()12 : addItem()13 : addItem14 : display B.备选事件流

<> : 借阅图书边界<><> : 读者 : 借阅图书控制器<> : 图书仓库1 : borrowBook()2 : findByBarcode()3 : find()46 : showBookInavailable5 : bookUnavalable

(2)预订图书

A.基本事件流

<> : 读者<> : 预订图书边界2 : findByTitle()<> : 预订图书控制器<> : 图书信息1 : subscribeBook()3 : find()4 : checkStatus()5 : find6 : findByTitle7 : subscribeBook()8 : setStatus()9 : subscribeBook

B.备选事件流

<> : 读者<> : 预订图书边界2 : findByTitle()<> : 预订图书控制器<> : 图书信息1 : subscribeBook()3 : find()4 : checkStatus()5 : bookUnavalable6 : showBookInavailable

(3)归还图书

A.基本事件流

<> : 读者信息<> : 归还图书边界 : 归还图书控制器<><>图书信息<>读者账户<> : 借阅记录1 : returnBook()2 : findByBarcode()3 : find()5 : findByBarcode6 : findByCard()4 : find7 : find()9 : showReaderOutOfCredit10 : returnBook()8 : find11 : deleteLoan()12 : addBook()

B.备选事件流

<> : 归还图书边界<><> : 图书信息<> : 读者账户<> : 读者 : 归还图书控制器1 : returnBook()2 : findByBarcode()3 : find()5 : findByBarcode6 : findByCard()4 : find7 : find()9 : showReaderOutOfCredit8 : readerOutOfCredit

(4)登录

A.基本事件流

<> : 读者<> : 登录边界2 : logIN()<> : 登录控制器<> : 读者账户1 : acceptReaderCard()3 : Validate()4 : setStatus()5 : logIn

B.备选事件流

<> : 读者<> : 登录边界2 : logIN()3 : Validate()<> : 登录控制器1 : acceptReaderCard()<>4messageBox6 : showError()5 : logFailed7<>

(5)查看账户信息

A.基本事件流

<> : 读者 : 查看账户信息边界<> : 查看账户信息控制器3 : find()<><> : 读者账户1 : lookReaderAccount()2 : lookReaderAccount()4 : find5 : showReaderAccount

B.备选事件流

<> : 读者 : 查看账户信息边界<> : 查看账户信息控制器3 : find()<><> : 读者账户1 : lookReaderAccount()2 : lookReaderAccount()4 : readerInavailable5 : showNoReaderAccount

(6)缴纳罚款

A.基本事件流

<> : 馆员<> : 缴纳罚款边界 : 支付罚款控制器<><> : 读者<> : 读者信息<> : 罚款1 : IssueFine()2 : IssueFine()3 : findByCard()4 : find5 : isFined()7 : IssueFine6 : isFined8 : getYKTaccount()9 : get<>10 B.备选事件流

<> : 馆员<> : 缴纳罚款边界 : 支付罚款控制器<><> : 读者<> : 读者信息1 : IssueFine()2 : IssueFine()3 : findByCard()4 : find5 : isFined()6 : notFined7 : IssueFine

(7)添加图书信息

A.基本事件流

<> : 馆员 : 添加图书信息边界<> : 添加图书信息控制器<><> : 图书仓库1 : addBookInfor()2 : addBookInfor()3 : isStored()4 : notFound<>5<> : 图书信息6 : setTitle()7 : setCopyNum()8 : setPublisher()9 : insertBookInfor()10 : addBookInfor

B.备选事件流

<> : 馆员 : 添加图书信息边界<> : 添加图书信息控制器<><> : 图书仓库1 : addBookInfor()2 : addBookInfor()3 : isStored()4 : Found5 : bookAlreadyStored

(8)删除图书信息

A.基本事件流

<> : 馆员 : 删除图书信息边界<><> : 删除图书信息控制器<> : 图书仓库1 : deleteBookInfor()2 : deleteBokInfor()3 : findBook()4 : findBook5 : deleteBookInfor()6 : deleteInfor

B.备选事件流

<> : 馆员<><> : 删除图书信息控制器<> : 图书仓库 : 删除图书信息边界1 : deleteBookInfor()2 : deleteBokInfor()3 : isStored()4 : false5 : bookalreadyDeleted

(9)修改图书信息

A.基本事件流

<> : 馆员 : 修改图书信息边界<> : 修改图书信息控制器<><> : 图书信息<> : 图书仓库1 : updateBookInfor()2 : updateBookInfor()3 : setValue()4 : setValue5 : updateBookIbfor()6 : showNewBookInfor

B.备选事件流

<> : 馆员 : 修改图书信息边界<> : 修改图书信息控制器<><> : 图书信息1 : updateBookInfor()2 : updateBookInfor()3 : setValue()4 : valueIllegal5 : updateValueIllegal

(10)添加读者信息

A.基本事件流

<> : 馆员 : 添加读者信息边界<> : 添加图书信息控制器<><> : 读者账户1 : addReaderInfor()2 : addReaderInfor()3 : isExited()<>4 : false5<> : 读者信息6 : setId()7 : setName()8 : setType()9 : insertReaderInfor()10 : addReaderInfor

B.备选事件流

<> : 馆员 : 添加读者信息边界<> : 添加图书信息控制器<><> : 读者账户1 : addReaderInfor()2 : addReaderInfor()3 : isExited()4 : true5 : readerAlreadyExited

(11)修改读者信息

A.基本事件流

<> : 馆员 : 修改读者信息边界<> : 修改读者信息控制器<><> : 读者信息<> : 读者账户1 : modifyReaderInfor()2 : modifyReaderInfor()3 : setReaderInfor()4 : setReaderInfor5 : updateReaderInfor()6 : modifyReaderInfor

B.备选事件流

<> : 馆员 : 修改读者信息边界<> : 修改读者信息控制器<><> : 读者信息1 : modifyReaderInfor()2 : modifyReaderInfor()3 : setReaderInfor()4 : ReaderInforIllegal5 : showReaderInforIllegal

(12)删除读者信息

A.基本事件流

<> : 馆员 : 删除读者信息边界<> : 删除读者信息控制器<><> : 读者账户1 : deleteReader()2 : deleteReader()3 : isExited()4 : true5 : deleteReaderAccount()6 : deleteReader

B.备选事件流

<> : 馆员<><><> : 读者账户 : 删除读者信息边界 : 删除读者信息控制器1 : deleteReader()2 : deleteReader()3 : isExited()4 : false5 : readerAccountAlreadyDeleted

(13)搜索图书

A.基本事件流

<> : 馆员<> : 搜索图书边界 : 搜索图书控制器<><> : 图书仓库1 : searchBook()2 : searchBook()3 : searchByTitle()4 : searchByTitle14)维护数据库

A.基本事件流5 : showBookInfor()

<><> : 数据库维护边界 : 维员1 : baseMaintaining()<> : 数据库维护控制器<><> : 图书仓库 : 图书信息<><> : 读者账户 : 读者信息2 : startBaseMaintaining3 : queryBookInforAmount()4 : returnloop[[0.bookAmount]]5 : isValid()6 : queryReaderInforNumber()7 : returnloop[[0,readerNumber]]8 : isValid()

细化领域类图

给类增添属性和操作:

<>读者信息<>图书信息<>-cardID: string-adress: string-name: string-telephone: string-loan: 图书+reservation: 图书+读者()+isFined()+getName()+setName()+getCardID()+setCardID()+getLoan()+addLoan()+deleteLoan()+getLoanAmount()+getReservation()+addReservation()+seleteReservation()+getAdress()+setAdress()+getTelephone()+setTelephone()+borrowBook()+findReader()+reserveBook()+returnBook()+IssueFine()+viewAccount()+lohIn()+isValid()-copyNum: int-name: string-author: string-ISBN: string-publishTime: string-type: string+图书信息()+findTitle()+getAvaliableBook()+getTitle()+getBook()+getNumOfReservation()+addReservation()+delReservation()+addBook()+delBook()+getNumOfBook()+removeBook()+setName()+getName()+getCopyNum()+setCopyNum()+getAuthor()+setAuthohr()+GetISBN()+setISBN()+getType()+setType()+getPublishTime()+setPublishTime()+isValid()读者账户<><>图书仓库图书-readers: 读者信息-number: int+读者账户()+getReader()+findReader()+insertReader()+removeReader()+updateReader()+getNumber()+setNumber()-titles: 图书信息-amount: int+图书仓库()+getTitle()+findTitle()+insertTitle()+updateTitle()+delTitle()+getAmount()+setAmount()-copyId: int-title: 图书信息-loan: 读者-stadio: string+图书()+findByBarcode()+create()+setStadio()+hasLoan()+getLoan()+setLoan()+getId()+setId()+getTitle()+setTitle()<>借阅记录<>罚款-reader: 读者-book: 图书信息-borrowDate: string+借阅记录()+addLoan()+deleteLoan()+getReader()+setReader()+getBook()+setBook()+getBorrowDate()+setBorroowDate()<>-account: 读者信息-amount: double-book: 图书信息+罚款()+createFine()+clearFine()+getAmount()+getBook()+getAccount()+setAccount()<>读者-cardID: string-pinNumber: string-yikatongAccount: int+getYKTaccount()+findByCard()<>馆员维员-Id: string-pincode: string-Id: string-pinCode: string增添类及类间关系:

(1)系统服务包中界面类、控制类及实体类间关系:

<>借阅记录<>图书1..*1<>图书信息11*110..1<><>借阅图书界面+borrowBook()读者借阅图书控制器+findByBarcode()+findByCard()+borrowBook()<><><>图书仓库11读者信息<>归还图书控制器+findByBarcode()+findByCard()+returnBook()<>归还图书边界+returnBook()<>预订图书边界预订图书控制器+findByTitle()+reserveBook()<><><><>读者账户登录边界登录控制器+logIn()+acceptReaderCard()查看账户信息边界+findReaderAccount()+showReaderAccount()<>查看账户信息控制器+findReaderAccount()<>(2)系统管理包中界面类、控制类及实体类间关系:

<>搜索图书边界+searchBook()搜索图书控制器+searchBook()<><>图书仓库1添加图书信息边界<><>添加图书信息控制器+addBookInfo()<>馆员+addBookInfo()<>1<>修改图书信息边界+updateBookInfo()<>修改图书信息控制器+updateBookInfo()<><>图书信息删除图书信息边界+delBookInfo()<>删除图书信息控制器+delBookInfo()<>读者缴纳罚款边界+IssueFine()支付罚款控制器+IssueFine()<>-cardID-pinNumber-yikatongAccount+getYKTaccount()+findByCard()11<>读者信息<>罚款删除读者信息边界+delReaderInfo()<><>删除读者信息控制器+delReaderInfo()<><>读者账户馆员-Id: string-pincode: string修改读者信息边界+ModReaderInfo()<>修改读者信息控制器+ModReaderInfo()<><>读者信息添加读者信息边界+addReaderInfo()<>添加读者信息控制器+addReaderInfo()<>(3)系统维护包中界面类、控制类及实体类间关系:

<>维员<><>读者信息读者账户数据库维护控制器<>+baseMaintain()<><><>数据库维护边界+baseMaintain()图书信息图书仓库

3.设计

状态图

(1)以“借阅图书”用例为例:

等待扫描借书卡读者放置借书卡等待读取图书取消读者放置图书取消验证验证失败

详细类设计:

为类图增添两个及数据库相关类:持久储存类PerStore和OID类。如图所示:

OIDPerStroe+oid: OID+read()+write()+load()<>图书仓库<><>借阅记录读者账户 系统总体组件图

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务