1/15软件系统分析与设计实验报告学院:计算机科学与技术学院专业:软件工程学号:*********姓名:***实验名称:图书管理系统用例建模时间:2/15一、实验内容与要求本实验要求学生对学校的图书馆管理系统进行需求分析,对系统功能进行用例建模,画出用例图,类图以及相应的时序图。在使用UML对系统建模时,学会使用UML建模工具,熟悉工具中的功能。二、用例分析1、读者“借书还书系统”用例图读者(fromActors)还书(fromUseCases)借书(fromUseCases)续借(fromUseCaseName)预约(fromUseCases)extend1.1、行为者:主要行为者:读者。1.2、前置条件:读者进入图书管理系统。1.3、事件流:1.3.1、主要事件流:1.3.1.1:读者检索所需图书信息,并查看;1.3.1.2:读者检索到所需图书,登录系统,开始借书;1.3.1.3:系统查询图书信息,图书数目是否可借;1.3.1.3.1:图书显示可借,借书成功;3/151.3.1.3.2:图书显示不可借,借书失败;1.3.1.4:进入续借图书界面,续借图书;1.3.1.5:系统查看预约记录,1.3.1.5.1:没有冲突,续借成功;1.3.1.5.2:有冲突,续借失败;1.3.3.1:1.3.1.6:读者归还图书;1.3.1.6.1:归还时间没有逾期,归还成功;1.3.1.5.2:归还时间逾期,逾期处罚,归还成功;1.3.2、备选事件流:1.3.2.1:图书检索信息失败,未检索到图书,重新输入信息检索;1.3.2.2:未曾检索到用户检索的图书,系统显示相关联的信息的图书;1.3.2.3:用户名或密码输入错误,登录系统失败,重新输入用户名或密码登录;1.3.2.4:系统显示图书不可借后,进入图书预约界面,输入信息预约图书;1.3.3、异常事件流:1.3.3.1:读者登录系统失败,未曾注册用户;1.3.3.1.1:返回系统注册用户后,重新登录。1.4、后置条件:退出系统。1.5、1.6、扩展点:无。2、“图书信息管理系统”用例图管理员(fromActors)新书信息录入(fromUseCases)图书信息管理(fromUseCases)include读者信息管理(fromUseCases)逾期处罚(fromUseCases)逾期通知(fromUseCases)预约通知(fromUseCases)信息通知(fromUseCases)extendincludeincludeinclude4/152.1、行为者:主要行为者:管理员;2.2、前置条件:管理员打开图书信息管理系统;2.3、事件流:2.3.1:主要事件流:2.3.1.1:图书管理员输入管理员登录信息,登录系统;2.3.1.2:进入图书信息管理界面,查看已有图书信息,是否有需要购入图书;2.3.1.2.1:录入新购进图书信息,并确认;2.3.1.3:进入读者信息管理界面,管理已有用户信息;2.3.1.4:进入信息通知界面,查看已有用户图书借阅、预约情况;2.3.1.4.1:查看读者所预约图书,自动查询图书信息,确认是否已有可借图书,有则通知读者;2.3.1.4.2:查询读者已借图书信息,根据已借时间及归还时间分类;2.3.1.4.2.1:所借图书即将逾期,启动系统提醒功能;2.3.1.4.2.2:所借图书已经逾期,启动逾期及处罚通知功能;2.3.2:备选事件流:2.3.2.1:管理员用户名或登录名错误,重新登录;2.3.2.2:需要购进新图书,存储信息,通知相关人员;2.3.2.3:读者预约图书没有可借图书,不予通知;2.3.2.4:预约通知提醒后,删除该预约记录;2.3.2.5:读者所借图书距离归还时间仍很久,无需通知;2.3.3:异常事件流:2.3.3.1:登录失败超过一定次数后,系统冻结该用户名,一段时间后可以重用;2.4、后置条件:退出系统;2.5、扩展点:无。三、“图书管理系统”类图及关系5/151、阅读者信息类:1.1、类名:阅读者信息父类;1.2、属性名:1.2.1、private:ID阅读者证件号类型:String;1.3、方法:未定。2、读者类:2.1、类名:读者子类;2.2、属性名:1.2.1、private:ID阅读者证件号类型:String;2.3、方法:未定。3、管理员类:3.1、类名:管理员子类3.2、属性名:1.2.1、private:ID阅读者证件号类型:String;3.3、方法:未定。4、Book类:4.1、类名:book6/154.2、属性名:4.2.1、private:书号图书编号类型:String;4.2.2、private:书名图书名类型:String;4.2.3、private:出版号图书出版编号类型:String;4.2.4、private:出版社名图书出版社名类型:String;4.2.5、private:作者图书作者姓名类型:String;4.3、方法:未定。5、Copy_book类:5.1、类名:copy_book;5.2、属性名:5.2.1、private:书号图书编号类型:String;5.2.2、private:书名图书名类型:String;5.2.3、private:出版号图书出版编号类型:String;5.2.4、private:出版社名图书出版社名类型:String;5.2.5、private:作者图书作者姓名类型:String;5.2.6、private:count图书数量类型:String;5.3、方法:未定。6、借还书记录类关联类:6.1、类名:借还书记录;6.2、属性名:6.2.1、private:书号图书编号类型:String;6.2.2、private:书名图书名类型:String;6.2.3、private:读者姓名类型:String;6.2.4、private:出版社名图书出版社名类型:String;6.2.5、private:作者图书作者姓名类型:String;6.2.6、private:borrowdate所借图书日期类型:Date;6.2.7、private:due_Date图书应还日期类型:Date;6.2.8、private:real_Date图书实还日期类型:Date;6.3、方法:6.3.1、private:getDate()返回值:Date;6.3.2、private:isOverDate()返回值:bool;6.3.3、private:opname()返回值:void;7、预约类:7.1、类名:Reservation;7.2、属性:7.2.1:private:书名预约书名类型:String;7.2.2:private:作者图书作者类型:String;7.2.4:private:读者ID预约者ID类型:String;7.2.4:private:预约时间预约时间类型:Date;7.3、方法:未定。7/15四、图书管理系统时序图及分析1)、时序图内容时序图是显示对象之间交互的图,这些对象是按时间顺序排列的。该图书馆管理系统主要含有以下几个重要的时序图,其他对象的时序图和这些类似。1、借书时序图;2、还书时序图;3、预约时序图。2)、时序图分析1、借书时序图:读者:管理员:借书系统:loan读者copy_bookbookReservation预约需借书目login()show_reader()1:check()borrow()getreader()2:check()getbookinf()3:check()1:isBorrow()bulidinf()2:isBorrow()3:isBorrow()4:isborrow()【借书时序图说明】1、login():读者将需借书目交给管理员,管理员登陆系统。2、show_reader():显示读者的信息的函数。3、check():验证读者是否有借书的权利。4、borrow():读者借书函数。5、getreader():获取读者信息的函数。6、check():检验读者是否符合借书条件函数。7、getbookinf():获取书目信息函数。8、check():检查书籍是否被预约的函数。9、isBorrow():返回未被预约函数。8/1510、builtinf():建立借阅信息函数。11、isBorrow():返回借阅信息函数。12、isBorrow():返回借阅成功函数。13、isBorrow:借阅成功,将书交给读者。借书时,读者先将书拿予管理员,管理员对书籍和读者进行检验,若书籍和读者都符合借书条件,则借书成功。2、还书时序图:读者:管理员还书界面bookloan还书login()getbookinf()getborrowinf()getborrowDate()getnowDate()isOverDate()returnwork()return【还书时序图说明】1、login():读者将书籍交给管理员,管理员登录系统。2、getbookinf():管理员扫描条形码,获取书籍信息函数。3、getborrowinf():获取借阅信息函数。4、getborrowDate():获取借阅时间函数。5、getnowDate():获取现在时间函数。6、isOverDate():是否超出借阅时间函数。9/157、work():处理函数,处理时间差。8、return:消息返回。还书时,读者先将书交给管理员,由管理员扫描书籍,若书籍没有过期等违规现象,还书成功。3、预约时序图:读者图书管理系统copy_bookReservationbooklogin()getbookinf()check()reservation()getbook()build()returnresult【预约图书时序图说明】1、login():登录系统。2、getbookinf():获取图书信息函数。3、check():检查是否有图书可借函数。4、reservation():确定预约图书函数。5、getboook():获取预约图书信息函数。6、built():建立预约信息函数。7、return:消息返回。读者在借书时,发现自己所需要借的书目无法借阅,进入预约界面,建立预约记录。10/15五、状态图【状态图说明】书籍在未变成图书馆在库书籍时,为新加书籍状态。书籍处于在库状态时既可以预订也可以外借,外借后变为借出状态。处于预订状态时也可以外借,超出预订时间期限则从预订状态直接转为可用状态。借阅者在规定的预订时间内也可以考虑取消预订,取消预订后书籍的状态转为可用。外借书籍归还后变为可用状态。六、六、活动图活动图描述的是某流程中的任务的执行,活动图描述活动是如何协同工作的,当一个操作必须完成一系列事情,而又无法确定以什么样的11/15顺序来完成这些事情时,活动图可以更清晰地描述这些事情。。在本图书馆管理系统中,我们主要描述了图书馆系统的借书、还书和预订的活动图。(1)借书活动图【借书活动图说明】管理员首先要扫描读者的借书证,检验证件是否符合图书馆借书条件,若该读者的借书数量还未达到最大规定数量,并且其所借书籍均未属于过期范围,则符合借书条件。则再扫描书籍条形码,检查书籍是否是不可借书籍或者已经被预订,若被预订,则取消预订,方可借书。在这些条件都符合时则更新书籍信息和读者的借阅信息,记录好借书的时间。12/15(2)还书活动图【还书活动图说明】图书管理员对书籍进行扫描,若书籍已经过期,则要求读者还请欠款才能还书,读者缴应交罚款后,更新书目信息和读者信息。13/15(3)预订图书活动图【预订书籍活动图说明】读者先进入系统查询自己所需要的书籍,显示书籍信息,检验书籍是否属于可预订书籍,若符合条件则检查书