图书管理系统(12软件工程S1莫帆201258019030)1.系统需求分析1.1图书管理系统的需求分析为了能够更好的适应社会的发展,本系统是为了方便图书馆的业务管理而实现的系统。本系统涉及读者信息管理、借阅信息管理、图书信息管理等多方面的信息管理,系统的使用对象为图书管理员和读者。可以有效的提高图书馆的工作效率,减轻图书馆管理员的工作负担。是现代化、科技化、数字化图书馆的高级产物,顺应了时代的发展和步伐。1.2图书管理系统的功能需求(1)注册账户在图书管理系统中,图书管理员要为每个读者建立借阅账户,记录读者的个人信息和图书借阅信息。读者个人账户建立成功后,给读者发借阅卡,可以通过图书管理员借阅、归还图书,也可以通过相应的终端查询个人的借阅信息,检索图书。(2)用户登录在图书管理系统中,读者登录后可以修改个人信息(如登陆密码,或其他个人信息等),查询个人借阅信息和检索图书。在图书管理系统中,管理员登录后可以查询读者信息、图书信息;增加、删除图书;增加、删除读者用户;管理借出、归还图书记录;(3)借阅图书读者借阅图书时,先输入借阅证卡号、密码,验证借阅证的有效性及是否可续借,无效则向读者提示原因,如“卡号不对”、“密码不对”等;有效则显示读者的基本信息,例如读者的个人资料、已经借阅的图书信息等;读者通过图书管理员向系统提出借阅请求,管理员操作管理终端,登记读者新借阅图书的相关信息。(4)归还图书读者归还图书时,也需验证借阅卡号、密码等信息,验证借阅证的有效性,若不对,系统给出相关的提示;通过系统验证后,显示读者基本信息及图书借阅信息;读者向图书管理员递交归还的图书,管理员验证无误后,删除读者该书的借阅信息;若读者超期归还,则先向管理员递交图书滞纳费用,归还图书;(5)管理图书图书馆图书资料变更,如新购进图书或图书被损毁不能再使用时,图书管理员要相应的将图书信息入库或注销;同理,若有新增读者帐户或需要注销读者帐户的,图书管理员应通过系统管理终端进行记录。综上所述,一个典型的图书管理系统应包含图书信息管理、借阅信息管理、读者信息管理三部分数据管理。其功能模块如下:【功能模块说明】1.图书管理系统:这是一个整体的系统,用于图书,读者,书籍信息。2.借阅图书管理:这个功能主要用于与借阅图书有关的相关操作的处理和管理。用于管理借书、还书信息。3.读者用户信息管理:这个功能主要用于管理读者用户的基本信息,包括对读者的增删查改功能。4.书籍信息管理:这个功能主要用于管理图书的相关操作,用与查询图书库数据,增加、注销图书。5.借书管理:读者向图书馆借阅图书,并操作与借书有关的相关信息。图书管理系统登录借阅图书信息管理读者用户信息管理书籍信息管理借书管理还书管理增加读者用户删除读者用户查询读者信息修改读者用户图书数据库增加新书注销图书6.还书管理:读者向图书馆归还图书,并操作与还书有关的相关信息。7.增加读者用户:用于读者的信息管理,并操作与增加用户有关的相关信息。8.增加读者用户:用于读者的信息管理,并操作与删除用户有关的相关信息。9.增加读者用户:用于读者的信息管理,并操作与查询用户有关的相关信息。10.增加读者用户:用于读者的信息管理,并操作与修改用户有关的相关信息。11.图书数据库:用于记录图书的一些基本信息。12.增加图书:用于图书馆新进图书时,向图书数据库增加图书相关信息的操作。13.注销图书:用于图书馆处理损坏或丢失图书时,向图书数据库删除图书相关信息的操作。2.系统的用例图2.1图书管理系统中的用例图简述本系统根据功能可以确定有两个参与者,分别是读者和图书管理员(1)读者用例图:主要描述用户注册,用户信息查看,修改。用户借书、还书时的相关操作,以及用户查询书籍的相关信息。(2)管理员用例图:管理员可以通过登录系统进行各项功能操作,包括对书籍和用户的增删查改。包括借书、还书和逾期还书、丢失图书的相关处理。读者用例图【用例图说明】(1)登录用例,用于登录系统,核实身份信息,给予读者的本系统相关操作权限。(2)查询书籍用例,用于查询自己感兴趣的书籍,系统显示书籍的相关信息。(3)预定书籍用例,用于记录自己想要借阅的书籍,方便直接去管理员处借书。(4)借书用例,用于读者向管理员借阅图书,从借书到取书的全过程。(5)还书用例,用于读者向管理员归还图书,记录客户还书的相关信息。其中包括丢失处理、逾期处理用例,用于借书超期和丢失读书时罚款的相关操作。(6)查询、修改个人信息用例,用于查看自己的个人信息,修改密码等相关信息。图书管理员用例图【用例图说明】(1)登录用例,用于登录系统,核实身份信息,给予管理员本系统的所有操作权限。(2)查询书籍用例,用于查询系统数据库中是否有可以借阅的书籍。(3)借书处理用例,用于管理员把书借给读者,从借书到给书的全过程。(4)还书处理用例,用于处理读者归还的图书,判断读者是否逾期,丢失图书,并执行相对应的操作。(5)管理读者用例,用于管理读者的基本信息,实现对读者的增删查改功能。(6)管理书籍用例,用于管理书籍的基本信息,实现对书籍的增删查改功能。更改数据库中的书籍信息。3.系统的类图3.1类图的生成1)Reader类主要用于描述读者基本信息的类,它的属性包括读者ID、读者姓名、读者密码、读者性别、地址、电话、借阅数量、状态2)Borrow类主要用于描述读者的借书还书信息记录的类,它的属性包括借阅信息ID、读者ID、图书在数据库中的信息、借书时间、还书时间3)Book类主要用于描述书籍基本信息的类,它的属性包括书籍的编号、名称、作者、出版社、价格、图书ISBN编号、书籍数量等4)ReaderType类主要用于描述读者类别信息的类,它的属性包括读者类别ID、类别名、最大借书数量(我设置的10本)、最大借书天数(我设置的60天)、逾期每天应缴金额5)BookType类主要用于描述读者类别信息的类,它的属性包括读者类别ID、类别名6)Store类主要用于描述图书在图书馆中的存放位置信息的类,它的属性包括图书位置信息ID、图书编号、图书位置信息描述、状态7)Reserve类主要用于描述读者预定图书信息的类,它的属性包括预定图书ID、读者ID、图书在数据库中的信息、预定时间等类图之间的关系4.系统的顺序图针对图书管理系统的需求及用例,该系统的顺序图主要包括3个部分:借书的顺序图还书的顺序图5.系统的状态图登录系统后显示系统界面,读者可以进入查询页面查询图书信息。管理员则进入管理员页面,可以进行查询、管理书籍信息和管理用户信息的相关操作。当读者要借书时,验证读者信息,把书籍信息添加进读者信息,读者就借书成功。当读者要还书时,扫描图书,正常则直接归还,更新读者信息。若逾期或丢失则做出罚款后,更新相关信息还书成功。6.系统的活动图活动图描述的是某流程中的任务的执行,活动图描述活动是如何协同工作的,当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情。下面描述了图书馆系统的借书、还书和预订的活动图。借书活动图还书活动图7.系统的部署图8.生成Java代码利用StarUML进行正向工程以后,生成7个JAVA文件。生成的Java源代码完全符合Java的语法规则,并且结构清晰。具体代码如下所示:(1)book.java//////GeneratedbyStarUML(tm)JavaAdd-In////@Project:Untitled//@FileName:Book.java//@Date:2015/1/13//@Author:////publicclassBook{privateStringB_ID;privateStringB_name;privateStringT_ID;privateStringP_ID;privateStringauthor;privateStringisbn;privateDateR_date;privateDoubleprice=0;publicintquantity=1;publicvoidadd(){}publicvoidupdate(){}publicvoiddelete(){}publicvoidquerybyname(){}publicvoidquerybyid(){}publicvoidquerybyauthor(){}publicvoidquerybyall(){}}(2)BookType.java//////GeneratedbyStarUML(tm)JavaAdd-In////@Project:Untitled//@FileName:BookType.java//@Date:2015/1/13//@Author:////publicclassBookType{privateStringT_ID;privateStringT_name;publicvoidadd(){}publicvoiddelete(){}}(3)Borrow.java//////GeneratedbyStarUML(tm)JavaAdd-In////@Project:Untitled//@FileName:Borrow.java//@Date:2015/1/13//@Author:////publicclassBorrow{privateStringBR_ID;privateStringR_ID;privateStringbarCode;privateDateoutDate;privateDateinDate;}(4)Reader.java//////GeneratedbyStarUML(tm)JavaAdd-In////@Project:Untitled//@FileName:Reader.java//@Date:2015/1/13//@Author:////publicclassReader{privateStringR_ID;privateStringR_name;privateStringR_password;privateByteR_sex;privateStringR_address;privateIntegerR_phone;privateDateR_date;privateStringRT_ID;privateStringR_quantity=0;privateStringR_status;publicvoidadd(){}publicvoidupdate(){}publicvoiddelete(){}publicvoidlock(){}(5)ReaderType.java//////GeneratedbyStarUML(tm)JavaAdd-In////@Project:Untitled//@FileName:ReaderType.java//@Date:2015/1/13//@Author:////publicclassReaderType{privateStringRT_ID;privateStringRT_name;privateintmaxquantity=10;privateintmaxDays=60;privateDoublefinePerDay;publicvoidadd(){}publicvoidupdate(){}publicvoiddelete(){}}(6)Reserve.java//////GeneratedbyStarUML(tm)JavaAdd-In////@Project:Untitled//@FileName:Reserve.java//@Date:2015/1/13//@Author:////publicclassReserve{privateStringRE_ID;privateStringR_ID;privateStringbarCode;privateDateRE_Date;publicbooleanisConformmed;}(7)Store.java//////GeneratedbyStar