基于UML的高校图书管理系统分析与设计

更新时间:2024-01-16 22:04:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于UML的高校图书管理系统分析与设计

1. 概述

随着现代科学技术的发展和社会的进步,各大高校的图书馆规模也不断扩大,与此同时,图书的种类和数量以及有关图书的各种信息也迅速的增加,这一庞大的信息量也对图书馆的信息管理技术提出了更高的要求。为了避免图书管理上的混乱,降低管理费用,提高工作效率,给读者提供更方便、快捷的服务,图书管理系统必须引入信息化和自动化的管理方式,对图书资料进行集中、统一、高效率的管理。

1.1 问题的提出

随着Internet技术的飞速发展,现在各高校已经把计算机引入了图书馆,开始了信息化的管理方式,这给予了学生极大的便利,学生可通过图书馆可以获得丰富的文献资料。和传统的图书管理方式相比,计算机和 Internet的使用也大大提高了图书馆对书籍的管理效率,为读者提供了更方便、更快捷的服务。与此同时服务理念也由以书籍为中心变为以广大师生的信息需求为中心,但是图书馆的网络信息服务还远远没有跟上网络建设的步伐,所提供的服务也远远不能满足高校师生的信息需求。高校图书馆应当有着先进的现代信息设备,完善的管理和服务,并且有稳定和特定的高素质读者用户群,更应该深入开展图书馆多元化信息服务,以更好地满足高校师生不同的信息需求。

目前高校图书馆网络信息服务内容都是浅层次的,主要还是集中在资料的“提供”上,比如动态信息和催还信息的发布只是停留在计算机上,没有充分利用现在飞速发展的通讯技术,使借阅者不能及时得到相应的信息。高校图书馆存在的诸多问题,已经不能满足广大师生群体对信息的需求,因此使得资源的共享性受到相当大的限制。

1.2 目的及主要内容

以下是我结合高等学校的特点和实际情况,设计了一个基于网络结构的高校图书管理系统,能为广大的学生群体提供更方便、更加多元化的信息服务;利用 UML统一建模语言并借助于 Rose工具对图书管理系统进行建模,使系统模型直观、简洁、科学,提高了系统开发的质量。主要内容包括基于UML的高校图书管理系统的模型分析及设计。并使用基于MVC的一体化开发过程,对高校图书管理系统进行了系统设计及分析。

2. UML的高校图书管理系统分析

所谓需求分析就是对一个系统的功能的描述,确定系统到底需要做什么或希望系统所具有的功能。

2.1 图书管理系统的需求分析

图书馆是为读者提供丰富文献资源的大型机构。对于高校图书馆而言,它面对的核心服务群体是广大

第 1 页 共 18 页

的学生(也可以称之为借阅者或读者)。因此,图书馆应该以学生为中心来提供更加多元化的服务。图书管理系统是对书籍的借阅及读者信息进行统一管理的系统,具体应包括以下几个功能: (1)对于读者而言,他们对系统的要求主要有:

? 能够按各种方式(例如书名、编号、作者、出版社、年份等)浏览图书馆的藏书情况;

? 能够按各种方式(例如年级、专业、书名、编号、作者、出版社、年份等)查询所需参考书籍; ? 能够方便地借阅图书、续借图书、预约图书、归还图书;

? 能够及时获知有关图书馆的最新动态信息,如新书通报、最新公告、借阅时间调整情况等等; ? 能够及时获知所借阅的书籍到期的消息;

? 能够查询和修改自己的基本资料、借阅书籍的情况;

(2)对于图书管理员来说,他对图书管理系统的要求主要有: ? 能够方便地对借阅者的信息进行查询; ? 能够方便地处理借书和还书操作;

? 能够方便地处理书籍的预约和取消预约的操作;

? 将通讯技术和网络技术相结合,及时发布一些重要信息,例如学生借阅的书籍到期的通知、馆内新到

书籍的信息等等,以便学生能够随时获知书籍的借阅情况和图书馆的最新藏书情况; (3)对于系统管理员来说,他们对图书管理系统的要求主要有: ? 能够方便地对书籍进行录入、修改、注销等等; ? 能够方便地录入、修改、注销借阅者的账户信息; ? 能够方便地查询借阅者的借阅信息和书籍信息;

? 将通讯技术和网络技术相结合,随时发布一些重要消息,例如学生借阅的书籍到期的通知、馆内新到

的书籍信息等等,并且能够随时获知学生或教职工的借书信息。

2.2 图书管理系统的业务流程分析

通过高等学校图书馆的实地调查,高校图书管理系统的业务流程主要有如下几点: (1)借阅者借阅图书流程

借阅者在图书馆找到所需书籍后,向图书管理员出示借书证,工作人员利用扫描设备扫描借书证号以验证借阅者的合法性和他的借阅权限,只有当借阅者身份合法,并且借阅数量未超出限制范围时,才能继续借阅。然后工作人员再扫描图书条码,查看该图书是否存在预约,若存在,则借阅者不能借阅此图书;若不存在,则借阅成功。

(2)借阅者续借图书流程

借阅者所借的图书是有一个时间限制的,如果到期后,借阅者还没有看完或者看完了还想继续再看,那么他就得必须续借,续借也是有次数和时间限制的。如有的图书馆规定的借阅期限是30天,每人只能续借一次,续借后的借阅期限也是30天。续借时,借阅者只需等待图书管理员扫描图书条码,查看所续借的图书是否超过所续借次数,如果没有超过续借次数,则更新读者信息数据库、书籍信息数据库,续借工作完成。

(3)借阅者归还图书流程

借阅者归还图书的流程比较简单,只需将书籍给图书管理员,图书管理员扫描图书条码。若图书超期,则向借阅者按照规定收取相应的罚款;若一切正常,则归还结束。

(4)读者查询信息的流程

读者在未登陆系统的情况下可以查询图书馆的藏书情况。如果登陆系统,还可以查询自己的借阅信息、修改自己的相关信息以及预约图书等。

(5)系统管理人员对系统信息的维护和管理流程

系统管理员主要的操作是实现对系统的维护,具体包括对借阅者的信息、书目信息、书籍信息的维护

第 2 页 共 18 页

和管理等,如增加、更新、删除借阅者信息、书目信息以及书籍信息。

2.3 图书管理系统的功能描述

经过上述对图书管理系统的需求分析,可以将高校图书管理系统的使用人员划分为读者、图书管理员和系统管理员三类。其中,读者主要查询图书信息和个人借阅信息等;图书管理员主要查看图书信息、用户借阅信息和读者借书、还书管理,并利用网络和通信技术及时向读者发布新到书籍的信息和催还信息;系统管理员主要管理和维护读者信息、书目信息和书籍信息等,并为读者提供多个大学图书馆的链接地址,读者可根据自己的需要进行选择。

根据上述对高校图书管理系统的需求分析,该系统主要包括下面几个部分: (1)系统维护模块

该模块的功能主要包括:系统用户身份的分类、录入、修改与删除;书籍和书目信息的录入、修改、删除;动态信息的发布、修改和删除等。

(2)图书管理人员管理模块

图书管理人员管理模块的功能主要包括:处理图书的借阅、预约、返还;读者信息的查询;动态信息的发布和浏览等。

(3)读者查询模块

读者查询管理:书目和书籍信息的查询;个人借阅情况查询;借阅者个人信息部分限制修改;动态信息的浏览等。

系统的模块结构图如图 3-1所示。

图书管理系统 系统管理员 系统管理员登录 图书管理员 图书管理员登录 动态信息管理 书目、书籍信息管理 借阅者信息管理 动态信息浏览 预约管理 动态信息浏览 图 1 系统的模块结构图

动态信息浏览 借书管理 还书管理 借阅信息查询 个人资料修改 书籍信息查询 借阅者 借阅者登录 第 3 页 共 18 页

3. 基于MVC的高校图书管理系统设计

3.1 UML用例图描述用户需求(OOA模型)

1.系统的用例图

用例是对一组序列动作的描述,系统执行这些动作将对用例的参与者产生可以观察的结果。用例模型图是从用户的角度出发对如何使用系统的描述。创建系统的用例图,首先要确定参与者,通过对系统功能模块的分析,系统的参与者主要有三类:借阅者、图书馆管理员和图书管理系统维护者。

(1)有关借阅者的用例图,如图 2所示。

修改个人信息预约书籍<>查询书籍信息<><>借阅书籍<><>查询借阅信息<>借阅者<>归还书籍<>缴纳罚金<>登录系统浏览动态信息

图 2 借阅者的用例图

(2)有关图书管理员的用例图,如图 3所示。

第 4 页 共 18 页

收取罚金处理书籍预约<><>动态信息浏览<>处理书籍归还<><>动态信息发布图书管理员<><><>登录系统处理书籍借阅借阅者信息查询

图 3 有关图书管理员的用例图

(3)系统管理员进行系统维护的用例图,如图 4所示。

增加书目管理动态信息动态信息浏览更新书目<><>删除书目<><><><>查询用户信息<>查询书目信息<><>系统管理员<><>登录系统增加用户删除用户修改用户信息

图 4 有关系统管理员的用例图

第 5 页 共 18 页

2. 系统的顺序图

顺序图是按时间顺序描述系统中对象之间的交互。高校图书管理系统中的顺序模型图较多,比如有借阅者借书、还书、查询书籍信息和预订书籍的顺序图、图书馆管理员处理书籍借阅、归还的顺序图、系统管理员添加书籍、添加借阅者信息、添加书目的顺序图以及删除或更新书目和借阅者账户的顺序图等等。

3.系统的协作图

顺序图是从时间上展现对象之间的交互,协作图是从空间角度描述对象之间的交互,它强调的是交互的语境和参与交互的对象的整体组织,两者是语义等价的。

4.系统的状态图

状态图描述的是单个对象所处的可能状态以及不同状态之间的转化,它显示了一个对象从创建到摧毁的整个生命周期。在高校图书管理系统中,比较明确的状态模型图主要有书籍的状态图和借阅者账户的状态图。

5.系统的活动图

活动图是一种比较粗粒度的事件流程图,它显示了工作步骤、判定点和分支。高校图书管理系统的活动模型图可以分别从借阅者、图书管理员和系统管理员的角度设计,下面主要介绍一下图书管理员的活动图,如图5所示。

登录系统得到书籍借出书籍超出期限 收取罚金未超出期限 未超出借书量 超出借书量 更新书籍信息和读者的借阅信息

图5 图书管理员的活动图

3.2基于MVC的设计(OOD模型)

1. 体系结构设计

图书借阅系统主要用于图书馆工作人员对图书信息进行管理,并提供对图书的查阅、借阅、归还以及续借等功能,为图书馆提供了管理工具,同时让学生可以浏览、查询图书信息等,提高了整体运作效能。

本系统分为三部分实现,通过使用的技术来区分:Web Service部分,Remoting部分,B/S部分。如图6所示。

? 查看借阅者借阅的图书信息、借阅图书、归还图书由Remoting实现。 ? 浏览、查询图书信息在B/S上实现。.

? 跨学校间的图书信息浏览使用Web Service实现。

第 6 页 共 18 页

图6学校图书借阅系统结构图

所涉及到的数据库主要有图书的借书状态信息(TBL_BorrowInfo)和图书本身的信息(TBL_BookInfo),具体结构如图7:

图7 学校图书借阅系统数据库结构图

第 7 页 共 18 页

2. 领域问题软件结构设计 对OOD模型进行细化.

(1)对OOA模型按分层结构进行细化的时序图

时序图是按时间顺序描述系统中对象之间的交互。高校图书管理系统中的顺序模型图较多,比如有借阅者借书、还书、查询书籍信息和预订书籍的顺序图、图书馆管理员处理书籍借阅、归还的顺序图、系统管理员添加书籍、添加借阅者信息、添加书目的顺序图以及删除或更新书目和借阅者账户的顺序图等等。

下面以对图书管理员处理图书借阅的时序图为例进行绘制,如图8所示。

:图书管理员:借出窗口:书目:书籍:借阅者:借出书籍1:登录系统()2:查询书目()3:查找书籍(书目)4:Available5:鉴定借阅者()6:建立预约()

图8 图书管理员处理图书借阅的时序图

(2)客户层(图书管理员登录界面) 表单输入drawing.jsp,原形如图9所示:

图9 图书管理员借阅者登录界面

第 8 页 共 18 页

(3)图书管理员的相关操作设计及功能实现

①管理借书

当有学生借书时,图书馆管理员往往要进行核对,确定该学生是否可以借书或者有书尚未归还等,学生则需要提供所借图书的信息。在整个借书的过程中可能会涉及到的信息通常有学生个人信息(用户ID、姓名、性别、班级、照片等)和图书信息(图书编号、书名、出版日期、ISBN、作者、出版社、字数、页数、图书种类、版本等)。

图10 借书管理

控件说明

控件 用户信息 ID 无 姓名 无 性别 男 女 班级 无 无 设定值 groupBox1 label1 txtIDA label2 txtNameA label3 rbMaleA rbFemaleA label4 txtClassA pbPhoto 类型 GroupBox Label TextBox Label TextBox Label RadioButton RadioButton Label TextBox PictureBox 第 9 页 共 18 页

功能 盛放与用户信息相关的控件 显示“ID:”字样 输入用户ID 显示“姓名:”字样 输入姓名 显示“性别:”字样 将性别选为男性 将性别选为女性 显示“班级:”字样 输入班级 显示用户照片

确定 取消 借书 图书编号 无 借书 取消 借书情况 btnConfirmA1 btnCancelA1 groupBox2 label5 txtBookIDA btnConfirmA2 btnCancelA2 dgBorrowInfoA Button Button GroupBox Label TextBox Button Button DataGrid 根据用户ID检索该用户的信息 取消检索用户,清空输入的信息 盛放与借书功能有关的控件 显示“图书编号:”字样 输入图书编号 执行借书功能 取消借书,清空输入的信息 显示用户借书情况 功能:当用户需要借书时,管理员在“ID”框输入借阅者的ID号,按“确定”按钮,如果系统中有

该用户则返回该用户的相关信息,包括个人资料及借书情况等。如果没有则弹出“没有这个用户!”对话框。如果用户存在,在“图书编号”框内输入要借阅的图书编号,按“借书”按钮,如果输入的图书编号正确,并借该书没有被借出,则弹出“借书成功!”对话框;如果书已借出,则弹出“借书失败!”对话框。如果输入的图书编号不正确,则会弹出“没有这本书!”对话框。

②管理还书

还书通常只需要将要还的书交给图书馆工作人员,工作人员会根据图书的编号从借书记录中消去该记录,一般不需要向图书馆工作人员提供个人信息。“图书编号”是整个还书过程中唯一要处理的数据。

图11 还书管理

控件说明 控件 还书 设定值 groupBox3 类型 GroupBox 第 10 页 共 18 页

功能 盛放与还书功能相关的控件

图书编号 无 检索/还书 取消 出错信息 图书信息 ISBN 无 出版社 无 图书名 无 作者 无 是否逾期 是 否 用户信息 姓名 无 班级 无 性别 男 女 借书情况 label6 txtBookIDB btnBorrow btnCancelB lblAlertMessageB groupBox4 label8 txtISBNB label9 txtPublisherB label10 txtBookNameB label11 txtAuthorB label12 rbOverTimeYB rbOverTimeNB groupBox5 label13 txtNameB label14 txtClassB label15 rbMaleB rbFemaleB dgBorrowInfoB Label TextBox Button Button Label GroupBox Label TextBox Label TextBox Label TextBox Label TextBox Label RadioButton RadioButton GroupBox Label TextBox Label TextBox Label RadioButton RadioButton DataGrid 显示“图书编号:”字样 输入图书编号 检索图书或执行还书功能 取消检索或取消还书 提示没有这本书或者此书未借出 盛放与图书信息有关的控件 显示“ISBN:”字样 显示图书的ISBN号 显示“出版社:”字样 显示图书的出版社信息 显示“图书名:”字样 显示图书的书名 显示“作者:”字样 显示图书的作者 显示“是否逾期:”字样 被选中时表示图书已逾期 被选中时表示图书尚未逾期 盛放于用户信息有关的控件 显示“姓名:”字样 显示用户姓名 显示“班级:”字样 显示用户班级 显示“性别:”字样 被选中时表示还书用户为男性 被选中时表示还书用户为男性 显示该用户的借书情况 功能:当用户需要还书时,输入图书编号,按“检索”按钮获取该书的情况,如果书未借出或者输入的图书编号有误时,出错信息标签会显示“没有这本书或者此书未借出”字样;否则该出错标签隐藏,并显示此书的相关信息和解决此书者的借书情况,同时“检索”按钮的按钮文字变为“还书”。单击“还书”按钮即可进行还书操作,借书情况将随之更新。

③管理续借

续借一本书的过程和还书很相似,同样只需要提供图书的编号,图书馆工作人员即可根据该编号进行续借操作,不需要提供用户资料。不过和还书不同的是,续借必须在借书的一个月内进行,如果一本书借

第 11 页 共 18 页

出的时间超过了一个月就没法再续借了。图书馆工作人员会根据输入图书编号返回的情况进行判断是否可以续借。

图12 续借管理

控件说明 控件 续借 图书编号 无 检索/续借 取消 出错信息 图书信息 ISBN 无 出版社 无 图书名 无 设定值 groupBox6 label7 txtBookIDC btnReborrow btnCancelC lblAlertMessageC groupBox8 label25 txtISBNC label24 txtPublisherC label23 txtBookNameC 类型 GroupBox Label TextBox Button Button Label GroupBox Label TextBox Label TextBox Label TextBox 第 12 页 共 18 页

功能 盛放与续借功能相关的控件 显示“图书编号:”字样 输入图书编号 检索图书或执行续借功能 取消检索或取消还书 提示没有这本书或者此书未借出 盛放与图书信息有关的控件 显示“ISBN:”字样 显示图书的ISBN号 显示“出版社:”字样 显示图书的出版社信息 显示“图书名:”字样 显示图书的书名

作者 无 是否逾期 是 否 用户信息 姓名 无 班级 无 性别 男 女 借书情况 label22 txtAuthorC label21 rbOverTimeYC rbOverTimeNC groupBox7 label20 txtNameC label19 txtClassC label18 rbMaleC rbFemaleC dgBorrowInfoC Label TextBox Label RadioButton RadioButton GroupBox Label TextBox Label TextBox Label RadioButton RadioButton DataGrid 显示“作者:”字样 显示图书的作者 显示“是否逾期:”字样 被选中时表示图书已逾期 被选中时表示图书尚未逾期 盛放于用户信息有关的控件 显示“姓名:”字样 显示用户姓名 显示“班级:”字样 显示用户班级 显示“性别:”字样 被选中时表示还书用户为男性 被选中时表示还书用户为男性 显示该用户的借书情况 功能:当用户需要续借时,输入图书编号,按“检索”按钮获取该书的情况,如果书未借出或者输入的图书编号有误时,出错信息标签会显示“没有这本书或者此书未借出”字样;否则该出错标签隐藏,并显示此书的相关信息和解决此书者的借书情况,同时“检索”按钮的按钮文字变为“续借”。单击“续借”按钮即可进行续借操作,借书情况将随之更新。

(4)图书管理员的登录陆数据处理.jsp的内部逻辑 登录陆数据处理: 关键点两点:数据库连接;记录登陆信息及信息处理;

1.数据库连接:

public class lib_system_Conn extends Object{

public lib_system_Conn(){

}

private Connection conn = null; private ResultSet rs; String re = \;

//设置你的数据库ip

String dbip = \; //设置你的数据库用户名和密码: String use = \; String pass = \; //设置您的数据库名

String dbName = \;

public java.sql.Connection getConn(){ try{

第 13 页 共 18 页

Class.forName(\).newInstance(); String url

=\+dbip+\+dbName+\+use+\+pass+\e=true&characterEncoding=GBK\ ; }

//在Mysql建立lib_system数据库,之后将与数据操作相关数据与该数据库相连;

conn= DriverManager.getConnection(url); }

catch(Exception e){ e.printStackTrace(); }

return this.conn ; }

2.记录登陆信息及信息处理:

当用户点击“登陆”按钮之后,数据将提交到登陆数据处理.jsp页面。 取得帐号密码这两个从页面传入的值,然后跟数据库当中管理员表中的账号和密码比较。如果正确的话,在JSP的SESSION中存入一个标记属性,表示当前已经有管理员登陆了。处理完毕后,跳转到管理页面,如果失败,则提示登陆失败,并重新进入到登陆页面。 具体的逻辑如下:

<%

String username=ParamUtil.getString(request,\//取得用户名

String password=ParamUtil.getString(request,\//取得密码 String erroMsg=\//错误码

if(username!=null&&password!=null) try {

SkinUtil.login(request,response,admin_ID,admin_password);

//在JSP的session中存如一个标记属性,表示当前已经有管理员登陆了

Session.setAttribute(“admin_ID”,admin_ID);

}

第 14 页 共 18 页

response.sendRedirect(\

catch(UserNotFoundException e) { }

erroMsg=\错误的用户名和密码\

response.sendRedirect(\

else{ } %>

(5)图书管理员图书借阅数据处理内部逻辑

out.println(\请填写好你的个人信息!\

If(strEdit.equals(“1”)){

If(学生超额|学生不存在){

ifSuccess=false;

}else{

If(!bb.IsValid(hash)){

//新增操作

Int intdel[]=bb.addBorrow(hash); If(intdel==null){

ifSuccess=false;

}else{

For(int i=0;i

}

}

第 15 页 共 18 页

%><% If(intdel[i]!=1)

ifSuccess=false;

If(!ifSuccess){

%><%

}else{ }

}

执行的过程如下:

首先要验证学生信息是否存在和学生的欠款是否超额,也就是说学生是否可以借书,图书是否在馆等,在 确定合法之后调用bb.addBorrow(hash)来完成借阅流程。流程其实就是对几个表进行增改的操作。

关于addBorrow(hash)的算法: public int[] addBorrow(Hashtable hash)

String strXSID = \学生ID String strBOOKID = \图书ID String strDQSJ = \到期时间 String strXJCS = \续借次数

//根据学生证件号取的学生ID

//根据学生ID取得规则ID,然后取得可以借阅天数,

sql=\

第 16 页 共 18 页

%><%

{

System.out.println(\批量处理新增借阅。。。。。。\String sql=\

int intID = makeID(\String strID=String.valueOf(intID);

String strZJH = ds.toString((String)hash.get(\证件号 String strTXM = ds.toString((String)hash.get(\条形码 String strJYSJ = ds.toString((String)hash.get(\借阅时间

+\

+\Hashtable hashReId=(Hashtable)searchOneData(sql); strXSID=ds.toString((String)hashReId.get(\String strKJYSJ=ds.toString((String)hashReId.get(\

//根据条形码取得图书ID

sql=\

Hashtable hashBKID=(Hashtable)searchOneData(sql); strBOOKID = ds.toString((String)hashBKID.get(\

//新增操作 createStatement(); clearBatch();

sql=\

+\

+\

}

addBatch(sql);

sql=\借出' where BOOKID=\addBatch(sql);

sql=\addBatch(sql);

int result[]=executeBatch(); closeStm(); return result;

+\

而对于取消按钮事件,由于要实现取消借阅,所以需要调用delBorrow(String id)来取消借

第 17 页 共 18 页

阅操作;算法如下:

public int[] delBorrow(String id)

}

return result;

createStatement(); clearBatch();

sql=\addBatch(sql);

sql=\可借' where BOOKID=\addBatch(sql);

int result[]=executeBatch(); closeStm(); {

System.out.println(\批量处理取消借阅。。。。。\String sql=\

sql=\Hashtable hash=(Hashtable)searchOneData(sql); String strBOOKID=(String)hash.get(\

4. 总结

UML作为面向对象的可视化标准建模语言,采用多种图形符号表示系统中的对象以及它们之间的各

种关系,可以从不同的角度描述待开发的系统,使系统的功能具体化、形象化,从而为更好地理解业务流程提供有效的交流形式。

面向MVC的一体化开发过程就是突破以往的方法,按着每个用例的执行链进行,规律性强、易掌握;软件结构按6层结构划分,既做到了代码的解耦,也与MVC模式和执行链完美统一;各执行链设计完成后,找出一些重用的对象后重新封装;如每条链都用到的DAO部分;如果采用Model2,可以仿照 Struts结构,采用一个Servlet,然后用过滤器来配置各条执行链。由于时间的限制和本人能力的限制,还有许多工作没有完成,下一步打算继续完善如下工作:

(1)继续学习UML和面向MVC的一体化开发过程的相关知识;

(2)继续完善该系统的UML设计和面向MVC的一体化开发过程的步骤; (3)在完成系统设计的基础上进行系统实现。

第 18 页 共 18 页

本文来源:https://www.bwwdw.com/article/25fo.html

Top