基于UML的高校图书管理系统分析与设计.docx
《基于UML的高校图书管理系统分析与设计.docx》由会员分享,可在线阅读,更多相关《基于UML的高校图书管理系统分析与设计.docx(27页珍藏版)》请在冰豆网上搜索。
基于UML的高校图书管理系统分析与设计
基于UML的大学图书管理系统分析与设计
1.概述
随着现代科学技术的发展和社会的进步,各大大学的图书馆规模也不断扩大,与此同时,图书的种类和数量以及有关图书的各种信息也迅速的增加,这一庞大的信息量也对图书馆的信息管理技术提出了更高的要求。
为了避免图书管理上的混乱,降低管理费用,给读者提供更方便、快捷的服务,图书管理系统必须引入信息化和自动化的管理方式,对图书资料进行集中、统一、高效率的管理。
1.1问题的提出
随着Internet技术的飞速发展,现在各大学已经把计算机引入了图书馆,开始了信息化的管理方式,这给予了学生极大的便利,学生可通过图书馆可以获得丰富的文献资料。
和传统的图书管理方式相比,计算机和Internet的使用也大大提高了图书馆对书籍的管理效率,为读者提供了更方便、更快捷的服务。
与此同时服务理念也由以书籍为中心变为以广大师生的信息需求为中心,但是图书馆的网络信息服务还远远没有跟上网络建设的步伐,所提供的服务也远远不能满足大学师生的信息需求。
大学图书馆应当有着先进的现代信息设备,完善的管理和服务,并且有稳定和特定的高素质读者用户群,更应该深入开展图书馆多元化信息服务,以更好地满足大学师生不同的信息需求。
目前大学图书馆网络信息服务内容都是浅层次的,主要还是集中在资料的“提供”上,比如动态信息和催还信息的发布只是停留在计算机上,没有充分利用现在飞速发展通讯技术,使借阅者不能及时得到相应的信息。
大学图书馆存在的诸多问题,已经不能满足广大师生群体对信息需求,因此使得资源的共享性受到相当大的限制。
1.2目的及主要内容
以下是我结合高等学校的特点和实际情况,设计了一个基于网络结构的大学图书管理系统,能为广大的学生群体提供更方便、更加多元化的信息服务;利用UML统一建模语言并借助于Rose工具对图书管理系统进行建模,使系统模型直观、简洁、科学,提高了系统开发的质量。
主要内容包括基于UML的大学图书管理系统的模型分析及设计。
并使用基于MVC的一体化开发过程,对大学图书管理系统进行了系统设计及分析。
2.UML的大学图书管理系统分析
所谓需求分析就是对一个系统的功能的描述,确定系统到底需要做什么或希望系统所具有的功能。
2.1图书管理系统的需求分析
图书馆是为读者提供丰富文献资源的大型机构。
对于大学图书馆而言,它面对的核心服务群体是广大的学生(也可以称之为借阅者或读者)。
因此,图书馆应该以学生为中心来提供更加多元化的服务。
图书管理系统是对书籍的借阅及读者信息进行统一管理的系统,具体应包括以下几个功能:
(1)对于读者而言,他们对系统的要求主要有:
●能够按各种方式(例如书名、编号、作者、出版社、年份等)浏览图书馆的藏书情况;
●能够按各种方式(例如年级、专业、书名、编号、作者、出版社、年份等)查询所需参考书籍;
●能够方便地借阅图书、续借图书、预约图书、归还图书;
●能够及时获知有关图书馆的最新动态信息,如新书通报、最新公告、借阅时间调整情况等等;
●能够及时获知所借阅的书籍到期的消息;
●能够查询和修改自己的基本资料、借阅书籍的情况;
(2)对于图书管理员来说,他对图书管理系统的要求主要有:
●能够方便地对借阅者的信息进行查询;
●能够方便地处理借书和还书操作;
●能够方便地处理书籍的预约和取消预约的操作;
●将通讯技术和网络技术相结合,及时发布一些重要信息,例如学生借阅的书籍到期的通知、馆内新到书籍的信息等等,以便学生能够随时获知书籍的借阅情况和图书馆的最新藏书情况;
(3)对于系统管理员来说,他们对图书管理系统的要求主要有:
●能够方便地对书籍进行录入、修改、注销等等;
●能够方便地录入、修改、注销借阅者的账户信息;
●能够方便地查询借阅者的借阅信息和书籍信息;
●将通讯技术和网络技术相结合,随时发布一些重要消息,例如学生借阅的书籍到期的通知、馆内新到的书籍信息等等,并且能够随时获知学生或教职工的借书信息。
2.2图书管理系统的业务流程分析
通过大学学校图书馆的实地调查,大学图书管理系统的业务流程主要有如下几点:
(1)借阅者借阅图书流程
借阅者在图书馆找到所需书籍后,向图书管理员出示借书证,工作人员利用扫描设备扫描借书证号以验证借阅者的合法性和他的借阅权限,只有当借阅者身份合法,并且借阅数量未超出限制范围时,才能继续借阅。
然后工作人员再扫描图书条码,查看该图书是否存在预约,若存在,则借阅者不能借阅此图书;若不存在,则借阅成功。
(2)借阅者续借图书流程
借阅者所借的图书是有一个时间限制的,如果到期后,借阅者还没有看完或者看完了还想继续再看,那么他就得必须续借,续借也是有次数和时间限制的。
如有的图书馆规定的借阅期限是30天,每人只能续借一次,续借后的借阅期限也是30天。
续借时,借阅者只需等待图书管理员扫描图书条码,查看所续借的图书是否超过所续借次数,如果没有超过续借次数,则更新读者信息数据库、书籍信息数据库,续借工作完成。
(3)借阅者归还图书流程
借阅者归还图书的流程比较简单,只需将书籍给图书管理员,图书管理员扫描图书条码。
若图书超期,则向借阅者按照规定收取相应的罚款;若一切正常,则归还结束。
(4)读者查询信息的流程
读者在未登陆系统的情况下可以查询图书馆的藏书情况。
如果登陆系统,还可以查询自己的借阅信息、修改自己的相关信息以及预约图书等。
(5)系统管理人员对系统信息的维护和管理流程
系统管理员主要的操作是实现对系统的维护,具体包括对借阅者的信息、书目信息、书籍信息的维护和管理等,如增加、更新、删除借阅者信息、书目信息以及书籍信息。
2.3图书管理系统的功能描述
经过上述对图书管理系统的需求分析,可以将大学图书管理系统的使用人员划分为读者、图书管理员和系统管理员三类。
其中,读者主要查询图书信息和个人借阅信息等;图书管理员主要查看图书信息、用户借阅信息和读者借书、还书管理,并利用网络和通信技术及时向读者发布新到书籍的信息和催还信息;系统管理员主要管理和维护读者信息、书目信息和书籍信息等,并为读者提供多个大学图书馆的链接地址,读者可根据自己的需要进行选择。
根据上述对大学图书管理系统的需求分析,该系统主要包括下面几个部分:
(1)系统维护模块
该模块的功能主要包括:
系统用户身份的分类、录入、修改与删除;书籍和书目信息的录入、修改、删除;动态信息的发布、修改和删除等。
(2)图书管理人员管理模块
图书管理人员管理模块的功能主要包括:
处理图书的借阅、预约、返还;读者信息的查询;动态信息的发布和浏览等。
(3)读者查询模块
读者查询管理:
书目和书籍信息的查询;个人借阅情况查询;借阅者个人信息部分限制修改;动态信息的浏览等。
系统的模块结构图如图3-1所示。
图1系统的模块结构图
3.基于MVC的大学图书管理系统设计
3.1UML用例图描述用户需求(OOA模型)
1.系统的用例图
用例是对一组序列动作的描述,系统执行这些动作将对用例的参与者产生可以观察的结果。
用例模型图是从用户的角度出发对如何使用系统的描述。
创建系统的用例图,通过对系统功能模块的分析,系统的参与者主要有三类:
借阅者、图书馆管理员和图书管理系统维护者。
(1)有关借阅者的用例图,如图2所示。
图2借阅者的用例图
(2)有关图书管理员的用例图,如图3所示。
图3有关图书管理员的用例图
(3)系统管理员进行系统维护的用例图,如图4所示。
图4有关系统管理员的用例图
2.系统的顺序图
顺序图是按时间顺序描述系统中对象之间的交互。
大学图书管理系统中的顺序模型图较多,比如有借阅者借书、还书、查询书籍信息和预订书籍的顺序图、图书馆管理员处理书籍借阅、归还的顺序图、系统管理员添加书籍、添加借阅者信息、添加书目的顺序图以及删除或更新书目和借阅者账户的顺序图等等。
3.系统的协作图
顺序图是从时间上展现对象之间的交互,协作图是从空间角度描述对象之间的交互,它强调的是交互的语境和参与交互的对象的整体组织,两者是语义等价的。
4.系统的状态图
状态图描述的是单个对象所处的可能状态以及不同状态之间的转化,它显示了一个对象从创建到摧毁的整个生命周期。
在大学图书管理系统中,比较明确的状态模型图主要有书籍的状态图和借阅者账户的状态图。
5.系统的活动图
活动图是一种比较粗粒度的事件流程图,它显示了工作步骤、判定点和分支。
大学图书管理系统的活动模型图可以分别从借阅者、图书管理员和系统管理员的角度设计,下面主要介绍一下图书管理员的活动图,如图5所示。
超出期限
图5图书管理员的活动图
3.2基于MVC的设计(OOD模型)
1.体系结构设计
图书借阅系统主要用于图书馆工作人员对图书信息进行管理,并提供对图书的查阅、借阅、归还以及续借等功能,为图书馆提供了管理工具,同时让学生可以浏览、查询图书信息等,提高了整体运作效能。
本系统分为三部分实现,通过使用的技术来区分:
WebService部分,Remoting部分,B/S部分。
如图6所示。
●查看借阅者借阅的图书信息、借阅图书、归还图书由Remoting实现。
●浏览、查询图书信息在B/S上实现。
.
●跨学校间的图书信息浏览使用WebService实现。
图6学校图书借阅系统结构图
所涉及到的数据库主要有图书的借书状态信息(TBL_BorrowInfo)和图书本身的信息(TBL_BookInfo),具体结构如图7:
图7学校图书借阅系统数据库结构图
2.领域问题软件结构设计
对OOD模型进行细化.
(1)对OOA模型按分层结构进行细化的时序图
时序图是按时间顺序描述系统中对象之间的交互。
大学图书管理系统中的顺序模型图较多,比如有借阅者借书、还书、查询书籍信息和预订书籍的顺序图、图书馆管理员处理书籍借阅、归还的顺序图、系统管理员添加书籍、添加借阅者信息、添加书目的顺序图以及删除或更新书目和借阅者账户的顺序图等等。
下面以对图书管理员处理图书借阅的时序图为例进行绘制,如图8所示。
图8图书管理员处理图书借阅的时序图
(2)客户层(图书管理员登录界面)
表单输入drawing.jsp,原形如图9所示:
图9图书管理员借阅者登录界面
(3)图书管理员的相关操作设计及功能实现
①管理借书
当有学生借书时,图书馆管理员往往要进行核对,确定该学生是否可以借书或者有书尚未归还等,学生则需要提供所借图书的信息。
在整个借书的过程中可能会涉及到的信息通常有学生个人信息(用户ID、姓名、性别、班级、照片等)和图书信息(图书编号、书名、出版日期、ISBN、作者、出版社、字数、页数、图书种类、版本等)。
图10借书管理
控件说明
控件
设定值
类型
功能
用户信息
groupBox1
GroupBox
盛放与用户信息相关的控件
ID
label1
Label
显示“ID:
”字样
无
txtIDA
TextBox
输入用户ID
姓名
label2
Label
显示“姓名:
”字样
无
txtNameA
TextBox
输入姓名
性别
label3
Label
显示“性别:
”字样
男
rbMaleA
RadioButton
将性别选为男性
女
rbFemaleA
RadioButton
将性别选为女性
班级
label4
Label
显示“班级:
”字样
无
txtClassA
TextBox
输入班级
无
pbPhoto
PictureBox
显示用户照片
确定
btnConfirmA1
Button
根据用户ID检索该用户的信息
取消
btnCancelA1
Button
取消检索用户,清空输入的信息
借书
groupBox2
GroupBox
盛放与借书功能有关的控件
图书编号
label5
Label
显示“图书编号:
”字样
无
txtBookIDA
TextBox
输入图书编号
借书
btnConfirmA2
Button
执行借书功能
取消
btnCancelA2
Button
取消借书,清空输入的信息
借书情况
dgBorrowInfoA
DataGrid
显示用户借书情况
功能:
当用户需要借书时,管理员在“ID”框输入借阅者的ID号,按“确定”按钮,如果系统中有该用户则返回该用户的相关信息,包括个人资料及借书情况等。
如果没有则弹出“没有这个用户!
”对话框。
如果用户存在,在“图书编号”框内输入要借阅的图书编号,按“借书”按钮,如果输入的图书编号正确,并借该书没有被借出,则弹出“借书成功!
”对话框;如果书已借出,则弹出“借书失败!
”对话框。
如果输入的图书编号不正确,则会弹出“没有这本书!
”对话框。
②管理还书
还书通常只需要将要还书交给图书馆工作人员,工作人员会据图书的编号从借书记录中消去该记录,一般不需要向图书馆工作人员提供个人信息。
“图书编号”是整个还书过程中唯一要处理的数据。
图11还书管理
控件说明
控件
设定值
类型
功能
还书
groupBox3
GroupBox
盛放与还书功能相关的控件
图书编号
label6
Label
显示“图书编号:
”字样
无
txtBookIDB
TextBox
输入图书编号
检索/还书
btnBorrow
Button
检索图书或执行还书功能
取消
btnCancelB
Button
取消检索或取消还书
出错信息
lblAlertMessageB
Label
提示没有这本书或者此书未借出
图书信息
groupBox4
GroupBox
盛放与图书信息有关的控件
ISBN
label8
Label
显示“ISBN:
”字样
无
txtISBNB
TextBox
显示图书的ISBN号
出版社
label9
Label
显示“出版社:
”字样
无
txtPublisherB
TextBox
显示图书的出版社信息
图书名
label10
Label
显示“图书名:
”字样
无
txtBookNameB
TextBox
显示图书的书名
作者
label11
Label
显示“作者:
”字样
无
txtAuthorB
TextBox
显示图书的作者
是否逾期
label12
Label
显示“是否逾期:
”字样
是
rbOverTimeYB
RadioButton
被选中时表示图书已逾期
否
rbOverTimeNB
RadioButton
被选中时表示图书尚未逾期
用户信息
groupBox5
GroupBox
盛放于用户信息有关的控件
姓名
label13
Label
显示“姓名:
”字样
无
txtNameB
TextBox
显示用户姓名
班级
label14
Label
显示“班级:
”字样
无
txtClassB
TextBox
显示用户班级
性别
label15
Label
显示“性别:
”字样
男
rbMaleB
RadioButton
被选中时表示还书用户为男性
女
rbFemaleB
RadioButton
被选中时表示还书用户为男性
借书情况
dgBorrowInfoB
DataGrid
显示该用户的借书情况
功能:
当用户需要还书时,输入图书编号,按“检索”按钮获取该书的情况,如果书未借出或者输入的图书编号有误时,出错信息标签会显示“没有这本书或者此书未借出”字样;否则该出错标签隐藏,并显示此书的相关信息和解决此书者的借书情况,同时“检索”按钮的按钮文字变为“还书”。
单击“还书”按钮即可进行还书操作,借书情况将随之更新。
③管理续借
续借一本书的过程和还书很相似,同样只需要提供图书的编号,图书馆工作人员即可根据该编号进行续借操作,不需要提供用户资料。
不过和还书不同的是,续借必须在借书的一个月内进行,如果一本书借出的时间超过了一个月就没法再续借了。
图书馆工作人员会根据输入图书编号返回的情况进行判断是否可以续借。
图12续借管理
控件说明
控件
设定值
类型
功能
续借
groupBox6
GroupBox
盛放与续借功能相关的控件
图书编号
label7
Label
显示“图书编号:
”字样
无
txtBookIDC
TextBox
输入图书编号
检索/续借
btnReborrow
Button
检索图书或执行续借功能
取消
btnCancelC
Button
取消检索或取消还书
出错信息
lblAlertMessageC
Label
提示没有这本书或者此书未借出
图书信息
groupBox8
GroupBox
盛放与图书信息有关的控件
ISBN
label25
Label
显示“ISBN:
”字样
无
txtISBNC
TextBox
显示图书的ISBN号
出版社
label24
Label
显示“出版社:
”字样
无
txtPublisherC
TextBox
显示图书的出版社信息
图书名
label23
Label
显示“图书名:
”字样
无
txtBookNameC
TextBox
显示图书的书名
作者
label22
Label
显示“作者:
”字样
无
txtAuthorC
TextBox
显示图书的作者
是否逾期
label21
Label
显示“是否逾期:
”字样
是
rbOverTimeYC
RadioButton
被选中时表示图书已逾期
否
rbOverTimeNC
RadioButton
被选中时表示图书尚未逾期
用户信息
groupBox7
GroupBox
盛放于用户信息有关的控件
姓名
label20
Label
显示“姓名:
”字样
无
txtNameC
TextBox
显示用户姓名
班级
label19
Label
显示“班级:
”字样
无
txtClassC
TextBox
显示用户班级
性别
label18
Label
显示“性别:
”字样
男
rbMaleC
RadioButton
被选中时表示还书用户为男性
女
rbFemaleC
RadioButton
被选中时表示还书用户为男性
借书情况
dgBorrowInfoC
DataGrid
显示该用户的借书情况
功能:
当用户需要续借时,输入图书编号,按“检索”按钮获取该书的情况,如果书未借出或者输入的图书编号有误时,出错信息标签会显示“没有这本书或者此书未借出”字样;否则该出错标签隐藏,并显示此书的相关信息和解决此书者的借书情况,同时“检索”按钮的按钮文字变为“续借”。
单击“续借”按钮即可进行续借操作,借书情况将随之更新。
(4)图书管理员的登录陆数据处理.jsp的内部逻辑
登录陆数据处理:
关键点两点:
数据库连接;记录登陆信息及信息处理;
1.数据库连接:
publicclasslib_system_ConnextendsObject{
publiclib_system_Conn(){
}
privateConnectionconn=null;
privateResultSetrs;
Stringre="";
//设置你的数据库ip
Stringdbip="127.0.0.1";
//设置你的数据库用户名和密码:
Stringuse="root";
Stringpass="860409";
//设置您的数据库名
StringdbName="lib_system";
publicjava.sql.ConnectiongetConn(){
try{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
Stringurl="jdbc:
mysql:
//"+dbip+":
3306/"+dbName+"?
user="+use+"&password="+pass+"&useUnicode=true&characterEncoding=GBK";
conn=DriverManager.getConnection(url);
}
catch(Exceptione){
e.printStackTrace();
}
returnthis.conn;
}
}
//在Mysql建立lib_system数据库,之后将与数据操作相关数据与该数据库相连;
2.记录登陆信息及信息处理:
当用户点击“登陆”按钮之后,数据将提交到登陆数据处理.jsp页面。
取得帐号密码这两个从页面传入的值,然后跟数据库当中管理员表中的账号和密码比较。
如果正确的话,在JSP的SESSION中存入一个标记属性,表示当前已经有管理员登陆了。
处理完毕后,跳转到管理页面,如果失败,则提示登陆失败,并重新进入到登陆页面。
具体的逻辑如下:
<%
Stringusername=ParamUtil.getString(request,"admin_ID");
//取得用户名
Stringpassword=ParamUtil.getString(request,"admin_password");
//取得密码
StringerroMsg="";
//错误码
if(username!
=null&&password!
=null)
try
{
SkinUtil.login(request,response,admin_ID,admin_password);
//在JSP的session中存如一个标记属性,表示当前已经有管理员登陆了
Session.setAttribute(“admin_ID”,admin_ID);
response.sendRedirect("login_process.jsp");
}
catch(UserNotFoundExceptione)
{
erroMsg="错误的用户名和密码";
response.sendRedirect("login_process.jsp?
"+response.encodeURL(erroMsg));
}
else{
out.println("请填写好你的个人信息!
");
}
%>
(5)图书管理员图书借阅数据处理内部逻辑
If(strEdit.equals(“1”)){
If(学生超额|学生不存在){
ifSuccess=false;
}else{
If(!
bb.IsValid(hash)){
//新增操作
Intintdel[]=bb.addBorrow(hash);
If(intdel==null){
ifSuccess=false;
}else{
For(inti=0;i%><%
If(intdel[i]!
=1)