软件工程课设程序设计
组长:郭宇豪:主要负责系统设计部分,设计图,设计流程校对
组员:王世宇:主要负责对象设计以及功能实现
李杰:负责动态模型设计以及模型实现
1.系统设计
系统可分为5个子系统:书籍信息录入系统、读者信息录入系统、借阅情况录入系统、计算扣款金额系统、人员及图书信息查询系统
书籍信息录入系统:图书管理员录入书籍的书号、名称,修改录入,形成图书表。
读者信息录入系统:系统管理员录入读者的个人信息,修改录入,形成读者表。
借阅情况录入系统:图书管理员在读者借阅图书时录入信息,修改录入,形成借阅表。
计算扣款金额系统:图书管理员按读者借书时间、还书时间和借阅时长判断读者是否需要扣费,然后生成信息到历史借阅表中。
人员及图书信息查询系统:读者可以根据自己的读者号查询自己的个人信息;图书管理员可以根据自己的管理员号查询自己的个人信息;所有人都可以登录之后查询图书的信息。
2.对象设计
本系统中一共有三个参与者:
其中读者的主要用例包括查询读者账户:查询自己的个人信息以及查询自己的账户和借阅情况、借书、还书和查询图书信息。
图书管理员的主要用例是查看读者的账户,包括读者的个人信息以及读者的账户和借阅情况。在对书籍的信息进行管理的时候能够查看并添加添加图书的各种信息,修改图书的信息,以及删除图书的信息。在对借书记录和还书记录进行管理时图书管理员可以判断读者的借书情况是否超期,根据超期的情况决定是否需要罚款。
系统管理员有五个用例,管理借阅者信息,包括添加新生信息和删除毕业生信息。在对图书的信息进行管理的时候,也能够添加新书的信息和删除已损坏图书的信息。同时,系统管理员也可以查询现有所有图书的信息,来决定是否需要引进新书。系统管理员也可以管理借书记录和还书记录,主要是当图书管理员遇到问题时,系统管理员也可以实现借还书的功能。
图书管理员和系统管理员都继承于图书馆内部人员这个父类
本系统一共设计了七个类:
读者类:属性包含(1)读者证号 (2)密码 (3)最大借书数量
方法包括(1)借书 (2)还书 (3)查看用户账户 (4)查看借书数量 (5)登录系统
(6)查询图书信息 (7)交罚款
图书管理员类:属性包含(1)管理员帐号 (2)密码
方法包括(1)查询图书信息(2)修改图书信息
书架类:属性包含(1)书架号 (2)类型(3)位置(4)存放数量
方法 (1) 存放图书
图书类:属性包含(1)书号(2)书名(3)数量(4)价格(5)出版社
(6)馆藏册数(7)在馆册数
系统管理员类:属性包含 值班时间
方法包括(1)查看用户个人信息(2)修改用户个人信息
后台系统类:属性包含(1)级别(2)配置
方法包括(1)存储用户个人信息(2)存储图书信息(3)存储借阅信息
事物(Item)类:属性包含 id
方法包括(1)创建(2)销毁(3)更新(4)显示图书信息(5)显示借阅次数
图书管理员类和系统管理员类是工作人员类的子类,图书管理员在继承了其父类的属性和操作以外还自己添加了管理员帐号和密码这两个属性,添加了查询图书信息和修改图书信息这两个操作。系统管理员在继承了父类的基础以外还添加了值班时间这个属性,以及查看用户个人信息和修改用户个人信息这两个操作。
读者类和工作人员类是人员类的子类,读者在继承了其父类的属性和操作以外还自己添加了读者证号、密码和最大借书数量这几个属性,添加了借书、还书、查看用户账户、查看借书数量、登录系统、查询图书信息和交罚款这些操作。工作人员在继承了其父类的属性和操作以外还自己添加了工资和管理范围这两个属性,添加了登录账户、查询用户借阅信息、管理借书记录、管理还书记录、查看用户账户这些操作。
人员类是读者类和工作人员类的父类,它包含了所有人都有的三个属性:姓名、性别和年龄。读者类和工作人员类继承于人员类。
图书管理员能够为读者提供服务,因此,二者之间应该是服务与被服务的关系。另外,图书管理员能够管理书架和图书,而且书架与图书之间是存放与被存放的关系,所有的图书都被存放于图书馆的书架中。最后,图书管理员还能够查看事物类,事物类有点类似于超市中在购物后产生的小票,当读者在完成整个借阅的操作之后,后台系统会自动生成一个事物。
系统管理员可负责通过从后台系统中的添加、修改或者删除来管理图书,而不是像图书管理员一样去管理实体的图书。系统管理员可以管理后台系统,控制后台系统中所存储的信息以及当后台系统在发生一些故障时,系统管理员能够提供及时的维修。
3.动态模型设计
借书过程的时序图:
上图表示了读者在进行借阅操作时的一系列变化,读者在进行借书操作之前,首先需要输入自己的信息包括帐号和密码,显示器将这些信息发送给数据库,在数据库中将读者的帐号和密码进行比对,进行身份验证,并将验证的结果返回给读者。如果身份验证成功则用户登录成功,反之读者登录失败。
读者可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,后台系统查看对应图书的馆藏册数,并根据馆藏信息,返回该图书是否可借阅。若可借阅,则图书管理员可在此时修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间。
此时,后台系统调用其事物类功能,当图书管理员修改完借阅表之后,后台系统生成一张纸质书单,即类似于超市购物时的小票,图书管理员得到小票确认无误后将纸质小票返回给借阅者,借阅者可以得到实体的图书,整个借阅过程结束。
还书过程的时序图:
用户在还书的时候也需要登录,在登录的时候,首先需要输入自己的信息包括帐号和密码,显示器讲这些信息发送给数据库,在数据库中将用户的帐号和密码进行比对,进行身份验证,并将验证的结果返回给用户。如果身份验证成功则用户登录成功,反之用户登录失败。
借阅者在登录成功之后,可以向图书管理员发送还书请求,图书管理员在接收到还书请求之后,需要进入后台系统查看该借阅者是否超期借阅,后台系统返回超期的信息,若借阅者还书的时间超过了应还的时间,后台系统则自动生成一张扣款账单,由图书管理员返回给借阅者。
之后借阅者需要支付扣款的金额,支付完毕后,图书管理员需要修改借阅信息,即进入后台数据库的借阅表删除这条借阅信息,后台系统自动将删除的借阅信息添加到后台数据库的历史借阅表中。另外,后台系统还需要修改图书的馆藏册数,将所还图书的馆藏册数加一,并返回馆藏信息。
最后,借阅者可以归还实体的图书,图书管理员将会请求生成一张还书书单,后台系统启用其事物类功能生成一张还书书单并返回给读者,整个还书操作结束。
进行借书操作时的活动图:
读者在进行借书操作时,可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,并查看对应图书的馆藏信息,并根据馆藏信息,产生一个分支判断。若馆藏册数为0,则不可借阅,返回错误信息并拒绝读者的借阅,之后结束整个借书操作。若馆藏册数不为0,则可借阅,后台系统返回可借阅信息。
图书管理员在后台系统返回可借阅信息之后修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间,与此同时,后台系统调用其Item功能,当图书管理员修改完借阅信息之后,后台系统生成一张纸质书单。
完成这两个操作之后,借阅者可以得到实体的图书,整个借阅过程结束。
读者从未登记到还书成功时的状态图:
读者在进行借书与还书操作之前首先需要通过注册来验证身份,学校中的图书馆借阅者以学生为主,学生在登记学生信息之后一直处于未注册的状态。通过图书馆管理员对其进行注册操作,读者的状态才由未注册转向已注册。另外,读者在已注册的状态下也可以修改个人信息,此时借阅者的状态不变。
注册完之后的读者在身份验证成功之后就可以进入到系统,进行图书信息和自己个人信息的查询。已注册的读者此时处于可借阅的状态,若读者借书数量小于等于规定数量时,在办理借阅手续之后就可以对图书馆中的图书进行借阅。在取完实体书之后,借阅者便进入一个未还书的状态。
若借阅者处于未还书状态超过规定时间,则借阅者进入欠款状态,若借阅者处于未还书状态不超过2个月,则借阅者依旧处于未欠款状态。当借阅者在欠款状态时,需要进行还款,还款之后返回到未欠款状态。通过还书,借阅者进入已还书的状态。
此时可选择继续借阅或者是直接结束,若是通过继续借阅返回,则需要进行判断,当读者借书数量小于等于规定数量时,才可以继续借阅,若是读者借书数量大于规定数量本,则直接结束,无法再借。
总结:我们完成的作业在真正的实用性方面还有很长的路要走,不过此次设计让我们对软件工程中软件的设计流程有了大致了解,尤其时软件的设计步骤,设计前的准备等关键流程,为了更符合实际要求,我们在今后的学习中可以更加完善它。