学校图书馆希望设计一个图书管理系统,管理读者的登记、图书的购入、借出、归还以及注销等。管理人员还可以查询某位读者、某本图书的当前借阅情况、历史借阅记录,并可按照读者角度、图书角度、借阅角度分别进行统计,给出统计报表,以全面掌握图书的流通情况。
基于WEB的图书管理系统是对图书馆的网上管理,提高工作的效率。目标系统在至少应提供一下功能:系统管理员能够实现对系统管理:包括图书,借阅信息等的插入、修改、注销等功能,其中涉及基于以上操作的管理员操作,借阅者操作两个方面。目标系统可以查询某位读者、某本图书的当前借阅情况、历史借阅记录,并可按照读者角度、图书角度、借阅角度分别进行至少应该提供以下功能;证件的确认,借阅者可以查询自己的借阅信息,资料,预订图书等,管理员可以统计,给出统计报表,以全面掌握图书的流通情况。
2.系统的需求分析
2.1技术可行性
2.2经济可行性
2.3系统的具体功能性需求
2.3.1用户分类和特征:
管理员:图书管理系统的管理者,管理读者的登记、图书的购入、借出、归还以及注销。查询某位读者、某本图书的当前借阅情况、历史借阅记录,并可按照读者角度、图书角度、借阅角度分别进行统计,给出统计报表全面掌握图书的流通情况。
读者:借阅图书馆图书的人。查询,借阅,归还图书。
2.3.2功能需求
2.3.3非功能性需求:
(1)性能需求
(2)输入输出需求
输入需求:
输出需求:
(3)故障处理需求
3.用例分析
用例图
在本系统中一共包含了三个参与者:
(1)其中读者的主要用例包括查询读者账户(即查询自己的个人信息以及查询自己的账户和借阅情况)、借书、还书和查询图书信息。
(2)图书管理员的主要用例是查看读者的账户,包括读者的个人信息以及读者的账户和借阅情况。在对书籍的信息进行管理的时候能够查看并添加添加图书的各种信息,修改图书的信息,以及删除图书的信息。在对借书记录和还书记录进行管理时图书管理员可以判断读者的借书情况是否超期,根据超期的情况决定是否需要罚款。
(3)系统管理员有五个用例,管理借阅者信息,包括添加新生信息和删除毕业生信息。在对图书的信息进行管理的时候,也能够添加新书的信息和删除已损坏图书的信息。同时,系统管理员也可以查询现有所有图书的信息,来决定是否需要引进新书。系统管理员也可以管理借书记录和还书记录,主要是当图书管理员遇到问题时,系统管理员也可以实现借还书的功能,另外,图书管理员和系统管理员都继承于图书馆内部人员这个父类。
4.数据库分析与设计
类图
本系统一共设计了七个类:。
读者类:属性包含(1)读者证号(2)密码(3)最大借书数量
(5)查询图书信息(6)交罚款
图书管理员类:属性包含(1)管理员帐号(2)密码
方法包括(1)查询图书信息(2)修改图书信息
书架类:属性包含(1)书架号(2)类型(3)位置(4)存放数量
方法只有存放图书
图书类:属性包含(1)书号(2)书名(3)数量(4)价格(5)出版社
(6)馆藏册数(7)在馆册数
方法包括(1)查看用户个人信息(2)修改用户个人信息
后台系统类:属性包含(1)级别(2)配置
方法包括(1)存储用户个人信息(2)存储图书信息(3)存储借阅信息
Item类:属性包含id
方法包括(1)创建(2)销毁(3)更新(4)显示图书信息(5)显示借阅次数
Person类是读者类和工作人员类的父类,它包含了所有人都有的三个属性:姓名、性别和年龄。读者类和工作人员类继承于Person类,这就简化了这两个子类的属性。
类之间的关系先从图书管理员讲起,图书管理员能够为读者提供服务,因此,二者之间应该是服务与被服务的关系。另外,图书管理员能够管理书架和图书,而且书架与图书之间是存放与被存放的关系,所有的图书都被存放于图书馆的书架中。最后,图书管理员还能够查看Item,Item类有点类似于超市中在购物后产生的小票,当读者在完成整个借阅的操作之后,后台系统会自动生成一个Item,因此,在类图中Item与后台系统之间是一种聚合的关系,而读者也可以查看Item,因为当读者在完成借阅之后,Item便可以证明借书是否成功以及后台系统是否发生故障。
除了图书管理员之外,同样继承于工作人员的系统管理员类也与其他类有着很多联系,比如说系统管理员同样与图书类有着维护与被维护这样的关系,但与图书管理员不同的是,系统管理员只负责通过从后台系统中的添加、修改或者删除来管理图书,而不是像图书管理员一样去管理实体的图书。另外,系统管理员可以管理后台系统,控制后台系统中所存储的信息以及当后台系统在发生一些故障时,系统管理员能够提供及时的维修。
数据表设计
图书表
读者表
读者类型表
正借阅表
已还表
书架表
工作人员表
5.系统主要交互流程设计
借书过程的顺序图:
此时,后台系统调用其Item功能,当图书管理员修改完借阅表之后,后台系统生成一张纸质书单,即类似于超市购物时的小票,图书管理员得到小票确认无误后将纸质小票返回给借阅者,借阅者可以得到实体的图书,整个借阅过程结束。
还书过程的时序图:
读者在进行借书操作时,可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,并查看对应图书的馆藏信息,并根据馆藏信息,产生一个分支判断。若馆藏册数为0,则不可借阅,返回错误信息并拒绝读者的借阅,之后结束整个借书操作。若馆藏册数不为0,则可借阅,后台系统返回可借阅信息。
完成这两个操作之后,借阅者可以得到实体的图书,整个借阅过程结束。
通信图
通信图也叫协作图,可与时序图相互转化。它是动态设计视图,强调参加交互的各个对象的组织,通信图只对相互之间有交互的对象和这些对象那个之间的关系建模,忽略了其它对象和关联。
协作图的组成部分
对象:用长方形框表示对象。
连接:使用实线标记两个对象之间的连接。
消息:由标记在连接上方的带有标记的箭头表示。
活动图:
状态图:
读者在进行借书与还书操作之前首先需要通过注册来验证身份,学校中的图书馆借阅者以学生为主,学生在登记学生信息之后一直处于未注册的状态。通过图书馆管理员对其进行注册操作,读者的状态才由未注册转向已注册。另外,读者在已注册的状态下也可以修改个人信息,此时借阅者的状态不变。
注册完之后的读者在身份验证成功之后就可以进入到系统,进行图书信息和自己个人信息的查询。已注册的读者此时处于可借阅的状态,若读者借书数量小于等于10本时,在办理借阅手续之后就可以对图书馆中的图书进行借阅。在取完实体书之后,借阅者便进入一个未还书的状态。
若借阅者处于未还书状态超过2个月,则借阅者进入欠款状态,若借阅者处于未还书状态不超过2个月,则借阅者依旧处于未欠款状态。当借阅者在欠款状态时,需要进行还款,还款之后返回到未欠款状态。通过还书,借阅者进入已还书的状态。
此时可选择继续借阅或者是直接结束,若是通过继续借阅返回,则需要进行判断,当读者借书数量小于等于10本时,才可以继续借阅,若是读者借书数量大于10本,则直接结束,无法再借。
读者从未登记到还书成功时的状态图:
图书管理书籍状态图
图书管理借阅者状态
6.系统实现
基于vue.js、element-ui搭建一个前后端分离的的图书管理系统。具体有以下特点:
2.系统首页
3.图书界面
4.图书编辑界面
5.图书章节界面
6.作者管理界面
7.新增作者界面
8.编辑作者界面
9.字典配置界面
10.用户管理界面
11.新增用户界面
12.菜单权限界面
13.个人中心界面
14.角色管理界面
7.总结
通过开发这个设备管理系统学到了很多java全栈知识,例如ssm框架、git分支、数据库、前端等等知识点,使我进步了许多,对后端开发有了一个全新的认识,主要是把基础设施代码和业务代码尽可能的分开,各自不要干扰,而且能把BEAN都统一到springcontainer里面去,这样,bean的生老病死都由spring来管理,开发者就只需要关心业务怎么实现就好了,别一会实现功能,中间还要来段事务处理,后面还要加个数据库错误处理啥的。总而言之一句话,spring解决的问题就是尽可能的业务代码归业务代码,基础设施代码(日志、事务,异常,对外接口......)归基础设施代码,搞定解耦的问题,希望在以后的学习生涯中可以了解更高效的技术,从浅入深,环环相扣,每一步都会对照着官方文档结合自己的见解进行讲解,同时也会编码实现,理论与实践相结合。
本文主要介绍状态图和活动图。一.状态图状态(state)是指在对象的生命期中的某个条件或状况,在此期间对象将满足某些条件、执行某些活动或等待某些事件。所有对象都具有状态,状态是对象执行了一系列活动的结果,当某个事件发生后,对象的状态发生变化。状态图(statechart...
0、初识:??状态机时展示状态与状态转换的图,通常一个状态机依附于一个类,状态机有两种可视化方式,分别为状态图和活动图,今天这篇博客就总结下关于这两个图学习和认识;活动图:1、是什么??活动:是某件事情正在进行的状态,可以是现实生活中正在进行中的某一工作或事项,也可以是软件系统中某个类对象的一个操作;??活动图:用于描述系统动态...
本例基于android平台下OpenGLES3.0绘制圆点、直线和三角形目录顶点着色器片段着色器基于sdk绘制彩色三角形基于ndk绘制彩色三角形顶点着色器上述顶点着色器的描述:第一行表示:着色器的版本,OpenGLES2.0版本可以不写。第二行表示:输入一个名为vPosition的4分量向量,layout(location=0)表示这个变量的位置是顶点属性0。第三行表...
问题描述在本机windows下已经安装了git,sourcetree虽然已经添加上了账户,但在拉取代码时仍然提示验证失败修改SourceTree的一般设置在窗口选择工具–选项–一般,对原始的SSH客户端的默认PuTTY/Plink修改为OpenSSH...
Iamtryingtowriteaquerythatwillreturnboththefirsthiremaleforeachdepartment.SofarI'vegotthefollowing:ThisjustgivesmethenamesofMenwhoarethefirsthiredintheirdepartme...
ikeepgettingthiserrorivebeenlookingatitforadaynowandimjustbeat.iwaswonderingifanyonecanhelpme.thisistheerrorChannel.Connect.FailederrorNetConnection.Call.Failed:HTTP:...
RecentlyI'vespottedaverydisturbingissue.I'vegotthefollowingpythoncode:Theindex.htmldjangotemplatelookslikethis:WhenI'mrunningthecodeabovelocallywiththeGAESDK,I'vegotth...
I'mreceivingthefollowingerroronmyiOSdevice:ExecutionEngineException:AttemptingtoJITcompilemethod'System.Linq.OrderedEnumerable1
ProblemIwouldliketocreateaUser-DefinedFunctioninJavathatcanbecalledasaJavamethodwithinachainofApacheSparkoperators.I'mhavingtroublefindingJavaexamplesthatdon'trequire...