# library-system **Repository Path**: xm_fighting/library-system ## Basic Information - **Project Name**: library-system - **Description**: 图书借阅系统 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-09-06 - **Last Updated**: 2022-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 图书借阅系统 ## 1.绪论 1.1 选题背景 ------------  随着网络技术的高速发展,计算机应用的普及,为了能更高效的满足读者和管理员的需求,利用计算机对图书馆的日常工作进行管理势在必行。这就需要一个行之有效的图书借阅系统 。图书借阅系统是为了实现图书管理系统化、规范化、自动化,运用eclipse及MySQL开发的应用软件。它将计算机操作及借阅图书融到图书管理系统的实际运用中,使日常手工借阅的复杂方法和过程被计算机简单、易行的操作所替代。 1.2 创新点 ---------- 作为计算机应用的一部分,使用计算机对图书信息进行管理,具有着手工管理所无法比拟的优点,例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性高、寿命长、成本低、便于打印等。 ## 2.系统开发技术及开发工具简介 2.1 java程序设计语言简介 ------------------------ [Java](https://baike.baidu.com/item/Java/85979)是一门[面向对象](https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1)编程语言,不仅吸收了[C++](https://baike.baidu.com/item/C++)语言的各种优点,还摒弃了C++里难以理解的[多继承](https://baike.baidu.com/item/%E5%A4%9A%E7%BB%A7%E6%89%BF)、[指针](https://baike.baidu.com/item/%E6%8C%87%E9%92%88)等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程  。 Java具有简单性、面向对象、[分布式](https://baike.baidu.com/item/%E5%88%86%E5%B8%83%E5%BC%8F/19276232)、[健壮性](https://baike.baidu.com/item/%E5%81%A5%E5%A3%AE%E6%80%A7)、[安全性](https://baike.baidu.com/item/%E5%AE%89%E5%85%A8%E6%80%A7)、平台独立与可移植性、[多线程](https://baike.baidu.com/item/%E5%A4%9A%E7%BA%BF%E7%A8%8B)、动态性等特点。Java可以编写[桌面应用程序](https://baike.baidu.com/item/%E6%A1%8C%E9%9D%A2%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F)、[Web应用程序](https://baike.baidu.com/item/Web%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F)、[分布式系统](https://baike.baidu.com/item/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F)和[嵌入式系统](https://baike.baidu.com/item/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F)应用程序等。 图书借阅系统采用java语言设计系统逻辑,实现系统的增删改查等操作。 2.2 Mysql 数据库简介 -------------------- MySQL是一个[关系型数据库管理系统](https://baike.baidu.com/item/%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F),由瑞典MySQL AB 公司开发,目前属于 [Oracle](https://baike.baidu.com/item/Oracle) 旗下产品。MySQL 是最流行的[关系型数据库管理系统](https://baike.baidu.com/item/%E5%85%B3%E7%B3%BB%E5%9E%8B%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F)之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的 SQL 语言是用于访问[数据库](https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93)的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是[开放源码](https://baike.baidu.com/item/%E5%BC%80%E6%94%BE%E6%BA%90%E7%A0%81)这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。 图书借阅系统采用MySQL管理的数据库,系统的增删查改都是针对数据库的操作。 2.3 eclipse工具简介 ------------------- Eclipse 是一个开放[源代码](https://baike.baidu.com/item/%E6%BA%90%E4%BB%A3%E7%A0%81/3969)的、基于[Java](https://baike.baidu.com/item/Java/85979)的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java[开发工具](https://baike.baidu.com/item/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B7)(Java Development Kit,[JDK](https://baike.baidu.com/item/JDK/1011))。 图书借阅系统则采用的是eclipse这个工具,用java编程语言在eclipse中编写。 ## 3.图书借阅系统的设计 3.1 系统可行性分析 ------------------ ### 3.1.1问题定义 主要功能:实现学生系统注册、修改密码、登录、图书查询,借阅,续借,归还等操作。管理员对图书信息的录入、查询、修改、删除等操作。 输出要求:数据实时、准确、快速、完整。 ### 3.1.2 软件系统分析 1. 开发工具:采用java程序设计语言。 2. 设备需求:开发设备为一台PC机,一台服务器;PC机的操作系统为windows 7系统,服务器采用windows server 2008 r2系统;开发软件包含eclipse、mysql等。 3. 系统运行:在网络环境下,由终端设备运行,用户可以进行一系列的操作。 3.2 系统需求分析 ---------------- ### 3.2.1系统功能模块划分 ![](media/系统功能结构图.png) ### 3.2.2 UML需求描述 ![](media/学生端用例图.png) ![](media/管理员端用例图.png) ### 3.2.3 类图 ![](media/类图.png) 3.3详细设计 ----------- ### 3.3.1模块说明 学生端:包含登录、注册、修改密码、查询书籍信息、借阅图书、续借图书、图书归还、退出登录等模块。 管理员端:包含登录、图书录入、查询、修改、删除、退出登录等模块。 ### 3.3.2流程逻辑 ![](media/流程逻辑图.png) ### 3.3.3限制条件 1. 账户不能重复 2. 图书编号不能重复 3. 学生端账户只能是学号 4. 图书编号包含7位 5. 学生端书籍只能续借一次书籍 6. 学生每本书籍只能借阅一本 7. 电话号码必须真实有效,否则无法修改账户面 8. 获取短信验证码的式时间间隔为60秒 9. 图书借阅密码为身份证后6位 ### 3.3.4输入项 1. 登录模块:输入学号和密码 2. 注册模块:输入学生信息及验证码 3. 修改密码模块:输入学号、手机号、新密码、短信验证码 4. 图书查询模块:输入图书数名或图书书名简称 5. 图书借阅模块:输入图书编号、图书借密码 6. 图书续借模块:输入图书编号 7. 图书归还模块:输入图书编号 ### 3.3.5输出项 1. 登录模块:进入首页、重置密码、注册界面 2. 注册模块:返回登录模块 3. 忘记密码模块:返回登录模块 4. 首页模块:学生借阅图书信息,进入查询、借阅、续借、归还、登录界面 5. 查询模块:图书信息或图书不存在 6. 图书借阅模块:图书借阅是否成功 7. 图书续借模块:图书续借是否成功 8. 图书归还模块:图书归还是否成功 3.4 数据流程图(DFD分层图) --------------------------- 图3-12 顶层DFD ![](media/DFD顶层.png) 图3-13 1层DFD ![](media/1层.png) 图3-14 2层DFD ![](media/DFD顶层.png) 3.5数据字典 ----------- 表3-1 student_table | 名字 | Student_table | |------|---------------------------------------------| | 描述 | 记录学生信息 | | 定义 | 学生=学号+姓名+班级+专业+电话+身份证号+地址 | 表3-2 book_table | 名字 | Book_table | |------|--------------------------------------| | 描述 | 记录图书信息 | | 定义 | 图书=编号+名称+作者+出版社+位置+余量 | 表3-3 borrow_table | 名字 | borrow_table | |------|-----------------------------------------------------------| | 描述 | 记录图书借阅信息 | | 定义 | 图书借阅信息=学号+图书编号+借阅时间+归还时间+是否已经续借 | 表3-4 admin_table | 名字 | Admin_table | |------|----------------------| | 描述 | 记录管理员账户信息 | | 定义 | 管理员账户=账号+密码 | 表3-5 login_table | 名字 | login_table | |------|--------------------| | 描述 | 记录学生账户信息 | | 定义 | 学生账户=学号+密码 | 3.6系统E-R图 ------------ 图3-15:系统E-R图 3.7数据库设计 ------------- 表3-6 student_table(学生表) | 字段 | 注释 | 类型 | 长度 | 是否为空 | 备注 | |----------|----------|---------|------|----------|------| | St_id | 学号 | Char | 8 | Not null | ID | | St_name | 姓名 | Varchar | 8 | Not null | | | St_class | 班级 | Varchar | 8 | Not null | | | St_pro | 专业 | Varchar | 30 | Not null | | | St_tel | 电话 | Char | 11 | Not null | | | St_card | 身份证号 | Char | 18 | Not null | | | St_email | 地址 | Char | 6 | Not null | | 表3-7 Book_table(图书表) | 字段 | 注释 | 类型 | 长度 | 是否为空 | 备注 | |----------|--------|---------|------|----------|------| | Bo_id | 书号 | Char | 7 | Not null | 主键 | | Bo_name | 书名 | Varchar | 50 | Not null | | | Bo_wri | 作者 | Varcahr | 20 | | | | Bo_pre | 出版社 | Varchar | 50 | | | | Bo_local | 位置 | Varchar | 20 | Not null | | | Bo_num | 余量 | Int | | | | 表3-8 Borrow_table(借阅表) | 字段 | 注释 | 类型 | 长度 | 是否为空 | 备注 | |-----------|----------|----------|------|----------|------| | St_id | 学号 | Char | 8 | Not null | 主键 | | Bo_id | 书号 | Char | 7 | Not null | 主键 | | Bor_num | 数量 | Int | | | | | Bor_btime | 借阅时间 | datetime | | Not null | | | Bor_rtime | 归还时间 | datetime | | Not null | | 表3-9 Admin_table(管理员表) | 字段 | 注释 | 类型 | 长度 | 是否为空 | 备注 | |---------|------------|---------|------|----------|------| | Ad_id | 管理员账户 | Char | 4 | Not null | 主键 | | Ad_pass | 管理员密码 | Varchar | 20 | Not null | | 表3-10 Login_table(登录表) | 字段 | 注释 | 类型 | 长度 | 是否为空 | 备注 | |---------|------|---------|------|----------|------| | St_id | 学号 | Char | 8 | Not null | 主键 | | Lo_pass | 密码 | Varchar | 20 | Not null | | ## 4.图书借阅系统的实现 4.1 登录模块 ------------ 执行流程图如4-1所示: 图4-1 登录控制流程图 登录界面如图4-2所示: ![](media/87bd29b2010841ce116a3a1f88a5a2e3.png) 图4-2 登录界面 4.2 注册模块 ------------ 执行流程图如图4-3所示: 图4-3 注册控制流程图 注册界面如图4-4所示: ![](media/8c702eb2c188790c4c8170626c7ff9f2.png) 图4-4 注册界面 4.3修改密码模块 --------------- 执行流程图如图4-5所示: 图4-5 学生忘记密码控制流程图 密码重置界面如图4-6所示: ![](media/ca795145834d5bf0d02e38e67e89ca40.png) ![](media/c175bef1a6f5452060a494b810d29efc.png) 图4-6 密码重置界面 4.4查询模块 ----------- 执行流程图如图4-7所示: 图4-7 学生查询控制流程图 查询界面如图4-8所示: ![](media/ddcb248d62ef194878c1c3835c33bc62.png) 图4-8 查询界面 4.5借阅模块 ----------- 执行流程图如图4-9所示: 图4-9 学生借阅控制流程图 借阅界面如图4-10所示: ![](media/ef065d9740de568ee326944b707eb6c2.png) 图4-10 借阅界面 4.6续借模块 ----------- 执行流程图如图4-11所示: 图4-11 学生续借控制流程图 续借界面如图4-12所示: ![](media/1db946ab389a29fe13f16473dac0d8d5.png) 图4-12 续借界面 4.7归还模块 ----------- 执行流程图如图4-13所示: 图4-13 学生归还控制流程图 归还界面如图4-14所示: ![](media/793999e1e573c39e5b1cc7cd7804089d.png) 图4-14 归还界面 ## 5.系统测试 5.1 测试用例 ------------ 表5-1 测试用例 | 系统名称 | 图书借阅系统 | | | | |----------|----------------------------------------------------|--------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|----------| | 功能模块 | 注册、登录、修改密码、查询、借阅、续借、归还等模块 | | | | | 用例编号 | 001 | | | | | 测试目的 | 检测系统是否可用 | | | | | 编号 | 步骤 | 具体操作 | 预期结果 | 实际结果 | | 1 | 检测注册 | 在注册界面输入注册信息和验证码,然后点击登录 | 注册成功 | (符合) | | 2 | 检测登录 | 在登录界面输入账户和密码,点击登录 | 进入首页 | (符合) | | 3 | 检测查询 | 在查询界面输入图书名称或图书名称中的几个字,点击查询 | 图书存在,则显示,图书不存在则不显示 | (符合) | | 4 | 检测借阅 | 在借阅界面输入图书编号点击查询,然后输入借书密码点击确定 | 图书可以借出,则图书用户是否借阅,借阅则提示输入借书密码;图书不可借阅则提示图书不存在或不可借阅。 | (符合) | | 5 | 检测续借 | 在续借界面输入续借的书号,点击续借 | 续借的图书存在借阅中且没有续借时才可以续借,否则不可续借,徐节后提示续借成功 | (符合) | | 6 | 检测归还 | 在归还界面中输入归还图书的编号,点击归还 | 如果归还的图书存在自身借阅中则提示归还成功,否则提示您还没有借阅该图书 | (符合) | | 7 | 修改密码检测 | 在界面中输入账户和手机号点击重置,然后获取短信验证码,输入重置的密码和验证码点击确定 | 重置成功 | (符合) | 5.2测试结果截图 --------------- 1. 注册检测截图 ![](media/8c702eb2c188790c4c8170626c7ff9f2.png) 图5-1注册截图 1. 登录检测截图 ![](media/87bd29b2010841ce116a3a1f88a5a2e3.png) 图5-2 登录截图1 ![](media/3241c698d7ba2bb1af526f12b0201854.png) 图5-3 登录截图2 1. 查询检测截图 ![](media/ddcb248d62ef194878c1c3835c33bc62.png) 图5-4 查询截图 1. 借阅检测截图 ![](media/ef065d9740de568ee326944b707eb6c2.png) 图5-5 借阅截图1 ![](media/7a4f5e9a3396e5660789d57f911584ac.png) 图5-6 借阅截图2 ![](media/1324279b391c800b7e4d47b005a97877.png) 图5-7 借阅截图3 ![](media/c71e276784223fcf8f3b3386c9adc9b4.png) 图5-8 借阅截图4 1. 续借检测截图 ![](media/d7bbeffe742e64fa826ff5698eb47e29.png) 图5-9 续借截图1 ![](media/65ca98eefe5f98f6e170e3c5e37c42ff.png) 图5-10 续借截图2 ![](media/bbc0ed1b12102fe7ab2c5ea060e53af6.png) 图5-11 续借截图3 1. 归还检测截图 ![](media/8c41a98147b81b7b0ebef57b11c8f800.png) 图5-12 归还截图1 ![](media/4ff74376839241461d3f89c34a24986d.png) 图5-13 归还截图2 1. 修改检测截图 ![](media/4d99efd63812ee21485e758cadb5cdc1.png) 图5-14 重置密码1 ![](media/1881bc1916df8a59e0dfa2209adb68c4.png) 图5-15 重置密码2 ![](media/a0ddfb21c3107f35de2eb4089deddacc.png) 图5-16 重置密码3 ## 6.总结 本次Java课程设计我的课题是图书借阅系统,我确定了设计的设计目标以及具体实现方式,包括如何将Java的思想运用到实际系统的详细设计之中。  实验过程中,首先要将系统要实现的功能分为几大模块,然后逐个完成,在此过程中使我加深了对Java的理解。进一步培养我们利用Java语言进行编程和调试程序的能力,熟练掌握Java语言的编辑,编译,调试程序,并将算法转变为程序实现。正确理解各种数据结构的逻辑特性和存储表示和基本操作的算法实现。掌握算法的时间分析和空间分析的技术。针对问题的特点选择合适的数据结构,设计实用高效的算法,提高大家的算法设计的能力和动手实验的技能。  实验过程中,逻辑设计和详细设计两个步骤实现.逻辑设计指的是,对问题描述中涉及的操作对象定义相应的数据类型,并按照以数据结构为中心的原则划分模块,定义主程序模块和各抽象数据类型;详细设计则为定义相应的存储结构并写出各函数的伪码算法.作为逻辑设计的结果,应写出每个抽象数据类型的定义,各主要模块的算法,并画出模块之间的调用关系图;详细设计的结果是对数据结构的基本操作的规格说明做出进一步的求精,写出数据存储结构的类型定义。.  通过这次课程设计,使我灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;提高综合运用所学的理论知识和方法独立分析和解决问题的能力;并用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,提高编程水平,并在此过程中培养我严谨的科学态度和良好的工作作风。熟练掌握数据的存储表示和基本操作的实现,能够利用存储设计算法解决简单的借阅问题。同时在这学期的课程设计中,培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。