基于Java和MySql实现的图书管理系统

Coquettish

发布日期: 2021-02-28 09:29:52 浏览量: 317
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

第一章 课题概述

1.1 选题背景及意义

图书管理系统主要用于图书馆的图书管理、读者管理、借阅信息管理。本图书管理系统以JAVA为开发语言,根据业务逻辑实现了相关功能,利用Swing开发了客户端图形界面,并使用Apache POI实现了报表生成功能。

1.2 实验的主要工作

本文就教普通用户及管理员可以使用的功能与权限进行分析,讲解图书管理系统的设计与实现。

  • 图书管理系统系统的需求分析。从两大角色介绍系统的业务需求,并说明接口需求以及该接口的目的

  • 用户和管理员与系统的交互设计。先描述系统的总体模块设计,然后从两个模块入手,分别介绍各个模块的设计

  • 图书管理系统相关功能的实现。从各个模块入手,介绍该模块的实现,包括用到的技术。使用MySQL技术,完成对数据的存储,查询等。使用Swing技术,完成对系统客户端的开发。使用Apache POI技术完成报表生成功能的开发

  • 图书管理系统的运行。根据不同的角色,按照各个角色的功能,介绍运行的结果

1.3 实验报告的组织结构

本文主要分为以下几个部分:

  • 第一章是绪论:主要介绍图书管理系统研究意义,研究背景,主要工作,章节安排等

  • 第二章是图书馆管理系统的需求分析:按总分总结构介绍系统的需求

  • 第三章是图书管理系统的设计:主要是对各个模块设计的分析,分析系统的功能和层次

  • 第四章是图书管理系统的实现:先描述数据库,接着对各个模块的实现进行介绍,主要包括其中的函数调用和接口

  • 第五章为系统测试:主要是图书管理系统的用例测试与接口测试

第二章 需求分析

2.1 系统总体需求

本课题的目的是为高校开发一个图书管理系统。

系统用例图

整个系统分为2个模块。分别为:用户模块,管理员模块。主要用户分为两类,一个是普通用户,可以通过系统进行信息的填写提交、借书还书、续借缴费、个人信息查询、书籍信息查询等。另一个是管理员角色,通过系统可以帮助用户完成注册注销的功能,并能对图书进行管理(新书登记,旧书作废)。两个层次共同组成了图书管理系统。

2.1.1 用户模块需求

在该模块,涉及的主要角色是用户角色。

用户模块用例图

在用户模块,涉及了登录功能、图书借阅续借归还功能、书籍信息查询功能以及个人信息查询功能,对于用户角色,具体的用例说明如下表:

用例 功能
登录 通过注册的账号密码登录系统。
基础信息填写 填写基本信息,如:邮箱等。
借书 在押金足够的情况下可以借书
还书 还书时应判断是否超时,未超时则退还押金,超时则根据业务规则罚款
续借 未到归还日期时,如有需要可以续借,还书日期延长。
查询用户信息 用户自己查询自己的借书还书情况,押金剩余等等信息。
查询书籍信息 用户通过书籍名称查询书籍

上表详细说明了在模块中,用户的需求,并针对用例图,说明了每个用例的功能。

2.1.2 管理员模块需求

管理员模块用例图

用例 功能
缴费 协助用户进行缴费
新书登记, 将书的相关信息记录入数据库中或从数据库中删除。
旧书作废 作废一定数目的旧书。
登录 通过管理员账号密码登录系统。
查询书籍作者 查询某本书的书籍作者。
查询书籍价格 查询某本书的书籍价格。
查询书籍在库数量 查询某本书的剩余数量。
查询书籍总量 查询某本书的总数量(含在库数量与借出数量)。
查询书籍ISBN码 查询某本书的国际标准书号。
查询书籍编号 查询某本书的图书馆内部编号,这个编号与放置的位置相关。
借书 在押金足够的情况下可以借书
续借 未到归还日期时,用户如有需要可以续借,收到信息后将还书日期延长。
还书 还书时应判断是否超时,未超时则退还押金,超时则根据业务规则罚款。

上表详细说明了在模块中,管理员的作用,并针对用例图,说明了每个用例的功能。

2.2 本章小结

本章主要介绍了系统的需求分析,包括系统功能性需求,并通过使用用例图介绍了2个层次的功能,通过表格分析了用例图。

第三章 图书管理系统系统设计

本系统采用三层C/S架构,并采用了面向对象(OO)的风格。系统分为客户端(Client)和服务器端(Server)两个部分。在服务器端中,主线程负责监听端口及分配服务子线程,子线程利用面向对象中的多态,分别调用客户、管理员的处理函数,并对客户端的请求进行回复。客户端中,客户可以利用图形界面发起请求,客户端会根据服务器的返回信息进行提示,从而完成与客户的交互过程。

3.1 总体系统功能设计

本系统是基于Java开发的图书馆管理系统,用户登陆成功以后进入用户模块,可以完成用户的功能,如:借书还书续借缴费等。管理员登录成功进入管理员模块,可以协助用户完成:注销,缴费,退还押金等,同时还可以查询图书的相关信息并对图书进行管理。考虑到本系统的实际部署场景为图书馆内的自助借还电脑与管理员电脑,本系统仅需支持小规模的用户同时使用即可。本系统的总体设计如图3-1所示。

图书管理系统模块设计图

系统整体分为2个模块,分别是用户模块和管理员模块。用户模块主要包含登录系统,图书借阅管理、书籍信息查询、个人人信息查询功能,方便用户使用图书馆提供的服务;管理员模块主要包括登录系统、用户管理、书籍管理、书籍信息查询、个人信息查询功能;这两个模块组成了整个系统,完成了图书馆管理系统的一系列功能与服务。

3.1.1 用户模块

本项目为用户提供登陆的功能。当用户登录后,可以在界面上可以进行操作,完成图书的查询、借阅、续借、归还。除此之外,用户还可以查看书籍信息与个人信息等。模块中使用TCP Socket通信进行信息交互,将得到的字符串以约定方式解析后通过封装的前端组件进行展示。

3.1.2 管理员模块

本项目中管理员无需注册,登陆后可以协助用户进行缴费、注销等,同时管理员也可以进行借书、还书、续借、用户信息查询、书籍信息查询等操作。除此之外,管理员需要对书籍的信息进行管理,负责书籍的新书登记和旧书作废。此模块中使用TCP Socket通信进行信息交互,将得到的字符串以约定方式解析后通过封装的前端组件进行展示。

3.2 体系结构设计

本系统采用以三层C/S架构为主、面向对象为辅的混杂风格。系统分为客户端(Client)和服务器端(Server)两个部分。在服务器端中,主线程负责监听端口及分配服务子线程,子线程利用面向对象中的多态,分别调用客户、管理员的处理函数,并对客户端的请求进行回复。客户端中,客户可以利用图形界面发起请求,客户端会根据服务器的返回信息进行提示,从而完成与客户的交互过程。

3.3 接口设计

客户端与服务器端通信接口:遵循网络协议,满足局域网的通信需求。同时通过约定请求的消息类型,用于区分不同请求的解析方式与调用不同的方法。

服务器端与MySQL数据库通信接口:利用JDBC与MySQL数据库进行通信,同时构建SQL类用于与数据库交互。SQL类中根据不同的功能提供数据库信息的增加、删除、更改、查询功能。实际调用时,使用SQL的单例化实例,传入相关数据,调用相应的API函数即可。

3.4 本章小结

本章主要介绍了该系统的设计。首先从总体出发,描述的系统的总体模块(用户和管理员),然后从2个模块详细分析他们的功能。在最后,并介绍了整体的设计风格和接口。

第四章 图书管理系统系统的模块设计与实现

4.1 数据库的设计

本系统使用的数据库为MySQL,数据库名为BMS。数据库中有三个表,分别用于存储用户信息、书籍信息、借阅信息。其详细说明如下:

4.1.1 用户信息表(user_information)

  • User_account(String类型):用于存储用户账号

  • Password(String类型):用于存储用户账号密码的实现

  • email_address(String类型):用于存储用户的邮箱地址信息

  • borrow_amount(Int类型):用于存储用户已经借阅的书本数量

  • balance(Double类型):用于存储用户押金账户的余额

4.1.2 书籍信息表(book_information)

  • book_name(String类型):用于存储书籍名字

  • directory_number(String类型):用于存储书籍的目录号

  • ISBN(String类型):用于存储书籍的ISBN码

  • Author(String类型):用于存储书籍的作者名

  • amount_in_library (Int类型):用于存储书籍的在库数量

  • amount(Int类型):用于存储书籍的总数

  • price(Double类型):用于存储书籍的价格

4.1.3 借阅信息表(borrow_information)

  • borrow_user(String类型):用于存储本条借阅信息的借阅人

  • book_name(String类型):用于存储本条借阅信息的书名

  • borrow_date(Date类型):用于存储借出日期

  • should_return_date(Date类型):用于存储书籍的应还日期

  • renew(Boolean类型):用于存储此条借阅信息是否续借过

4.2 用户模块的实现(侧重于服务器端的响应)

通过主线程的start函数,启动服务器的服务,并对8080端口进行监听。当客户端尝试连接时,分配子线程进行响应。

通过A型消息进行登录查证,并根据查证结果回复客户端并及时更新serverThread类中的currentPerson私有数据成员(currentPerson是父类person的指针,可以根据实例对象的不同进行多态调用。)服务器运行过程中会打印日志,用于监控服务器运行状态。

功能实现举例:接受到K型消息时代表客户端发出续借请求,多态调用currentPerson.reBorrow函数即可利用SQL对象向数据库发出修改申请。同时会根据函数返回结果,回复客户端续借申请是否成功。客户端在接受到回复后,进行相应的提示。

4.3 管理员模块的实现(侧重于服务器端的响应)

通过主线程的start函数,启动服务器的服务,并对8080端口进行监听。当客户端尝试连接时,分配子线程进行响应。

通过A型消息进行登录查证,并根据查证结果回复客户端并及时更新serverThread类中的currentPerson私有数据成员(currentPerson是父类person的指针,可以根据实例对象的不同进行多态调用。)服务器运行过程中会打印日志,用于监控服务器运行状态。

功能举例:接收到L型消息时,代表管理员账户申请产生报表。多态调用urrentPerson.createReport函数,在这个函数中调用SQL类示例sql的产生报表函数。执行成功后,服务器回复客户端成功产生报表,客户端会提示管理员到服务器处查看报表。(由于报表中含有大量系统信息,出于安全考虑,我们决定不提供向客户端传送报表的API,以防止信息被简单地盗取。)

4.4 本章小结

本章主要介绍了系统的实现。介绍了实现时使用的关键性技术,并贴出了一些代码,以便理解。在介绍实现时,配上了完成的页面,与完成的页面相结合,更容易理解。

第五章 系统测试

5.1 外部界面测试

用户登录

图书管理系统初始化界面,需要用户名和密码输入,用户和管理员可分别登录到对应个人界面。

5.2 管理员内部界面测试

管理员数据维护,首页默认为新书登记界面。

添加书籍

输入相应信息,点击确认上传按钮。

旧书作废

输入信息,点击确认按钮。

查询用户信息

输入用户名,键入回车,所需信息将在下面显示出来。

查询图书信息

输入书名,键入回车,所需信息将在下面显示出来。

缴费

输入用户信息和缴纳金额,点击确认按钮。

注销

输入要注销的用户名,键入回车,账号即注销,并显示当前余额数,进行相关操作。

注册

输入相应信息,点击确定注册按钮,并提示注册成功。

报表

点击菜单栏的报表按钮,生成报表。

退出

点击后显示退出成功直接返回上一层登陆界面。

5.3 用户界面测试

初始界面状态,用户选择操作菜单里的操作。

借书

用户选择一本可以借的书进行操作,否则会出现书籍被借走的情况。

还书

默认用户的书本还书成功,所以实际会根据实际书本的情况在数据库进行操作。

续借

用户选择要借的书本进行续借,这里也是和还书一个操作。

书籍查询

查询书籍信息,点击确认查询,返回信息。

查询个人信息

点击查询,将用户当前信息返回。

第六章 实验小结

本次实验中,我们设计、架构、实现、测试了图书管理系统,基本完成了实验的要求。从此次实验中我们也有了很多的收获和感悟。

  • 首先,我们明白了前期需求分析对项目后期实现的重大影响,前期的需求分析直接决定了架构风格、架构方式、实现技术的选择等诸多问题。从这次实验中,我们体会到了前期需求分析的重要性,了解了需求分析的基本方法和流程

  • 其次,我们了解到了架构设计对一个系统的重要性。好的架构应该是结构可靠、可用、安全、可修改、可变的,一个好的架构往往能降低后期实现与维护的难度和成本。由于本次的实验没有使用现成的web框架,因此需要我们自行搭建系统的框架。在我们小组成员的努力下,我们认为我们完成的系统框架基本满足具有良好延展性、高内聚低耦合的特点

  • 同时,此次实验中我们实践了上个学期UML课程的相关知识,使用了用例图进行用例分析,使用了包图、类图明确系统架构与接口。这些UML技术的使用,极大地方便我们展现系统的架构,也成功地帮助开发人员理解架构设计与实现方法

  • 最后,我们体会到了架构风格的选取对实现的重要性。我们选取的三层C/S分层架构。不同层之间的解耦合使得不同层之间可以独立开发,最后再进行统一的接口对接和集中测试。这个特点使得开发人员的工作效率极大的提高。事实上,我们的功能层开发进度是略慢于表现层的,但表现层的进度并没有被拖慢,而是提前于计划完成开发,这无疑得益于三层C/S架构层与层之间的解耦合。同时,面向对象(OO)的使用,使得我们系统更加简洁,也使得系统在日后的拓展更为方便

上传的附件 cloud_download 基于Java和MySql实现的图书管理系统.7z ( 8.83mb, 7次下载 )
error_outline 下载需要11点积分

发送私信

童心未泯,是一件值得骄傲的事情

31
文章数
19
评论数
最近文章
eject