基于Java图书馆管理系统毕业设计专科

来源:美国移民 发布时间:2020-11-23 点击:

XX职业技术学院电子信息系毕业论文 图书馆管理系统 学生姓名:
学 号:
专 业:
计算机应用技术 年 级:
班 指导老师:
目录 目录 1 内容摘要:
2 1 绪论 3 1.1毕业设计主要任务 3 1.2目前图书管理系统存在的问题 4 1.3课题意义 4 1.4论文的工作和安排 4 2 图书借阅管理需求分析 5 2.1 可行性分析 5 2.1.1 技术可行性 5 2.1.2.经济可行性 6 2.2 图书借阅管理系统需求概述 6 2.2.1系统目标 6 2.3 图书借阅管理系统需求模型 6 2.3.1功能描述 6 2.3.2主要用例的用例描述 7 3 总体设计 10 3.1 数据库设计 10 3.1.1数据库设计概述 10 3.1.2图书信息表结构设计 11 3.1.3 读者信息表结构设计 12 3.1.4图书借阅归还信息表结构设计 12 3.1.5管理员信息表结构设计 13 3.2 系统总体结构设计 13 3.2.1图书管理系统总体结构图 14 4 程序设计与编码 14 4.1开发平台与工具 14 4.1.1 系统开发平台 14 4.1.2 SQL数据库 15 4.2程序设计 16 4.2.1Java程序访问数据库 16 4.2.2登录模块程序设计 18 4.2.3图书馆管理系统主模块的实现 19 4.2.4系统功能模块的实现 28 4.2.5图书管理功能模块的实现 28 4.2.6读者管理功能模块的实现 29 4.2.7图书借阅统计功能模块的实现 30 4.2.8 关于模块的实现 30 5 软件测试 30 5.1 软件测试的方法与步骤 30 5.2 测试用例设计与测试用例的运行过程及测试结果分析 31 5.3 评价 32 6 结束语 32 6.1 工作成果 32 6.2 收获体会 32 致 谢 34 内容摘要:
随着科学技术的进步,计算机行业的迅速发展,大大提高人们的工作效率。计算机信息处理系统的引进已彻底改变了许多系统的经营管理 。

图书管理系统是学校管理机制中的重要组成部分,通过对图书管理系统的运行管理机制进行调查研究,开发了此图书系统。本系统中解决了学校图书管理事务中的常用基本问题以及相关统计工作。本系统中包含6个功能模块:系统设置,读者管理,图书管理,图书借还,系统查询和更改口令。

本系统使有Java AWT进行界面的设计,使用MVC设计模式,它采用了当今软件设计的最新技术,具有开发效率高、设计灵活、生成的软件界面友好美观等特点。本系统中通过JDBC驱动和数据库进行无缝连接,后端的数据库是MySQL,是一个开源的数据库系统,该数据库具有较高的完整性,一致性和安全性。

关键词:图书管理;
信息管理;
java AWT;
frame 图书馆管理系统设计 1 绪论 1.1毕业设计主要任务 1.实现图书馆对所藏图书的按类别、书名等多方面的查询,最大的方便读者和图书馆工作人员对所需图书的查询;

2.建立图书馆外借读者数据库,实现读者的注册,信息管理和读者的查询。方便工作人员对读者进行有效管理;

3.建立图书馆工作人员数据库,限定每个工作人员对软件操作的权限,最大限度的保护数据库;

4.实现图书馆对新书入库注册,旧书注销和修改的简单处理,并且建立书籍档案,方便进货;

5.实现管理员的图书借阅情况的操作,如图书借阅,图书归还情况。方便管理员更好的管理图书;

6.关于该软件的主题帮助等;

5.实现图书馆 1.2目前图书管理系统存在的问题 1)检索速度慢、效率低 因为图书馆的藏书种类多、数量多,将藏书准确地分门别类,快速检索,手工进行非常困难往往是终于查到了二伟的信息,馆中没有此书或已被别人借走。图书馆的规模越大,这个问题越突出。

2)借书、还书工作量大 借书、还书频率越大,说明图书馆的作用越大,然而随之而来的大量的借书、还书登记、实存图书的更新以及借出图书超期、遗失等的处理,其工作量之大,往往是人工操作所难以胜任的。而且经常会出现这样那样的差错。

3)图书统计工作难、藏书更新不能及时完成。

图书馆的图书应根据科学技术的发展和教学工作的需要及时添加和更新,然而由于藏书数量及图书种类越来越多,加上自然损耗,人为破坏,使图书的统计工作难以及时完成,藏书的更新也就很难有针对性地进行,藏书的知识结构得不到良好地控制。

我校也是一所发展中的高校,近几年的发展速度很快,图书馆的规模和藏书数量也不断的扩大,为了解决海量图书的管理问题,改变传统的管理方式也是迫在眉睫了。

1.3课题意义 随着计算机的广泛应用,其逐步成为现代化的标志。图书馆或者一些企业内部,甚至是书店,在正常运行过程中总是面对大量的读者信息,书籍信息以及两者相互作用产生的借书信息、还书信息。因此需要对读者资源、书籍资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高图书馆或者企业内部对图书存销的自动化的管理,能够更快速的满足读者的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的。

图书管理系统的主要功能是实现图书馆图书借阅和归还的管理的自动化。围绕这一主要功能,本系统涉及到以下核心功能:图书管理,读者管理。除了这些核心功能外,还包括一些基本和辅助功能,它们是:图书借阅操作、图书归还、图书借阅统计、统计操作等。

1.4论文的工作和安排 本次设计的目标是,开发一个图书馆借阅管理系统。借助该系统,管理员通过快捷可靠的数据库管理,方便的管理图书馆的信息资料,规范化的管理读者用户,设定不同用户权限,并能通过互联网向读者提供更为方便的在线查询服务,方便读者的使用,最终达到提高图书馆资源利用效率的目的。

论文设计和实现了图书借阅管理系统系统,可以根据用户的不同权限,对图书馆的的各种信息进行添加、删除、修改或查询操作。论文分为五个部分:
第一章即本章绪论,简述图书馆借阅管理系统这个课题的背景情况以及开发本系统的意义。

第二章为需求分析,本章中明确了系统需要实现的功能,分析了系统的用例,并介绍根据系统的需求选择的开发工具和技术的概况。

第三章是总体设计,详细描述了本系统中数据库的设计情况,并给出了系统总体界面的设计方案。

第四章为程序设计与编码各主要功能模块的实现方法和部分关键代码,同时提供了个主要界面运行的参考图片,以更直观了解系统的实现情况。

第五章是软件测试,测试系统功能实现并对测试结果进行记录分析 第六章为结束语,为此次毕业设计做一个总结,总结所获得的经验和体会。

2 图书借阅管理需求分析 2.1 可行性分析 采用现代化统一的计算机信息网站系统,能够有效优化图书馆管理系统,使其高效的发挥最大作用,能够迅捷的为读者提供相应的服务。开发本系统的可行性研究如下:
2.1.1 技术可行性 技术上的可行性分析主要分析技术条件能否顺利完成开发工作,软、硬件能否满足需要。本系统采用Java AWT开发出友好美观的人机界面,便于用户理解、操作。数据库管理系统采用MySQL,它能够处理大量数据,同时保持数据的完整性、安全性。因此本系统的开发平台已成熟可行。硬件方面,在科技飞速发展的今天,硬件更新速度越来越快,容量越来越大,可靠性越来越高,价格越来越便宜,因此硬件平台也能够满足本系统所需。

2.1.2.经济可行性 鉴于计算机技术发展异常迅猛,在硬件软件配置以及开发技术均以可行的情况下开发这样一个管理系统成本不会很高,但其可以大大提高图书馆的工作效率,也是图书馆管理发展的必然趋势,其必将有比较宽阔的市场,因此改性统在经济可行性上时可行的。

2.2 图书借阅管理系统需求概述 2.2.1系统目标 该系统主要建立一个基于B/S模式的图书馆借阅管理系统,面对当起很多小型图书管理仍是人工管理带来的检索速度慢,效率低,借阅归还图书量大,图书统计工作量大,藏书不能完成及时更新的问题,该系统可以对跟系统的三个用户类型的使用实现: 1.对于图书馆管理员能够在该系统的帮助下轻松完成注销登录、密码修改、系统退出等。

2.对于图书馆工作人员能够实现方便的对图书进行管理,方便的进行读者借阅情况查询,方便的进行借书还书处理等,便捷的对图书信息进行添加、修改、删除,分类管理等操作,对读者信息进行相关添加,修改,分类管理等操作。

3.对于系统管理员可以对图书馆信息进行修改更新操作,对借阅用户进行添加、修改、删除、权限设置等操作,修改维护等操作功能。

2.3 图书借阅管理系统需求模型 2.3.1功能描述 图书借阅管理系统的主要任务是实现管理员迅速检索查询,方便借阅归还图书,图书管理员高效的完成系统的各项基本操作,从图2.1可以看出图书借阅管理系统要完成一下功能: 1. 登录。

图书管理员进入该系统必须登录,身份验证正确了才可以进入该系统,管理员拥有不同的等级。

2. 图书管理功能:
图书统管理员可以对图书注册,图书信息管理功能,包括对图书信息的删除、修改。

3.读者管理功能:
图书管理员可以对读者用户进行读者信息注册,读者信息管理,包括读者信息的修改,删除,权限设置等操作。

4.图书借阅统计功能:
通过对读者查询和图书查询实现图书借阅功能,及图书归还。

5.其他功能 关于该图书馆管理系统的帮助主题。

下面的系统用例图描述了整个系统用户之间的动作联系,及功能模块的概述。

图2.1系统用例图 2.3.2主要用例的用例描述 图书借阅借阅管理系统涉及到的用例包括:图书借阅,图书归还,读书注册,读者信息管理,图书注册,图书信息管理,用户系统管理等,现就系统的主要用例图书借阅,图书归还,图书信息管理进行详细分析。

1)用例“图书借阅” 用例名称 图书借阅 标识符 UC-1 参与者 图书管理员 描述 管理员通过读者编号查询出读者信息,通过编号查询出图书的相关信息,然后借阅将图书转借阅给读者,借阅成功。

前置条件 1. 登录;
2. 登录图书管理系统;
3. 进入图书借阅统计页面;

4. 进入图书借阅页面 后置条件 1. 更新图书借阅列表;

主干过程 1.0 借阅图书 1. 读者请求借阅新地图书,并提供自己的编号 2. 系统显示读者借阅情况的表单 3. 读者提供想借阅的图书的编号 4. 系统存储读者和借阅的图书,并将之存储到数据库中 5. 系统更新借阅列表 分支过程 1.1 选择重置(第3步后分支出来)
1. 读者选择重置 2. 系统刷新该页面 异常 1.0.E.1 读者借阅已满(第2步)
1.读者借阅的数目已经到达自己借阅的上线 2. 系统将错误信息显示在借阅页面 3. 系统重新启动该用例 被包含用例 无 被扩展用例 无 优先级 高 2)用例“图书归还” 用例名称 图书归还 标识符 UC-1 参与者 读者,图书管理员 描述 读者将自己借阅的图书归还图书馆。

前置条件 1. 登录;
2. 登录图书管理系统;
3.进入图书借阅统计页面;

4. 进入图书归还页面 后置条件 1. 更新图书归还列表;

主干过程 2.0 图书归还 6. 读者请求归还借阅的图书并提供自己的编号 7. 系统显示该读者的借阅信息表 8. 使用者填将要归还的图书交给管理员 9. 管理员输入图书编号,系统存储归还信息,并将之存储到数据库中 10. 系统更图书归还列表 分支过程 1.1 选择重置(第3步后分支出来)
1. 读者选择重置 2. 系统刷新该页面 异常 1.0.E.1 读者借阅超时(第4步)
1.该书超出了应该归还的时间范围 2. 系统将罚款信息显示在归还页面 被包含用例 无 被扩展用例 无 优先级 高 3)用例“图书查询” 用例名称 图书信息管理 标识符 UC-3 参与者 图书管理员 描述 图书管理员查看图书编号、作者等信息,然后对图书信息进行修改,和删除操作。

前置条件 1. 登录;

2. 进入图书管理系统;

3. 进入图书管理页面;

4. 进入图书信息管理页面 后置条件 1. 查询页面显示相应的图书的信息 主干过程 图书查询 1. 系统显示所有图书信息 2. 管理员选择要管理的图书信息 3. 读者点击读书名称,可修改图书的信息,也可删除该图书信息 分支过程 输入信息时(第2步后) 1. 系统显示:请选择查询依据 2. 用户进行相应选择 重新查询(第2步后)
1. 系统已经显示了相应图书信息 2. 读者想查询其他图书 异常 5.0.E.1 查询的图书不存在(第2步后)
1. 读者输入的图书信息不能在数据库中查询到 2. 系统显示暂时无该图书信息 3. 重新启动该用例 被包含用例 无 被扩展用例 无 优先级 高 3 总体设计 3.1 数据库设计 3.1.1数据库设计概述 数据库是整个系统的基石,数据库的设计优劣直接影响到整个系统的设计成败,本节对数据库的设计进行专门阐述。

数据库是数据管理的最新技术。十多年来数据库管理系统已从专用的应用程序发展成为通用的系统软件。由于数据库具有数据结构化,最低冗余度,较高的程序与数据独立性,易于扩充,易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。因此不仅大型计算机及中小型计算机,甚至微型机都配有数据库管理系统[6]。

数据库系统的出现使信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段。这样既便于数据的集中管理,又有利于应用程序的研制和维护,提高了数据的利用性和相容性,提高了决策的可靠性。目前,数据库已经成为现代信息系统不可分割的重要组成部分。数据库技术也是计算机领域中发展最快的技术之一。

数据库设计是把现实世界的实体模型与需求转换成数据库的模型的过程,它是建立数据库应用系统的核心问题。数据库及其应用的性能都建立在良好的数据库设计的基础之上,数据库的数据是一切操作的基础,如果数据库设计不好,那么其它一切用于提高数据库性能的方法收效都是有限的。数据库设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理[6]。

设计数据库必须遵循一定的规则,在关系型数据库中,这种规则就是范式,范式是符合某一种级别的关系模式的集合。一般人们设计数据库遵循第三范式。即:数据库表中不包含已在其他表中包含的非主关键字信息。采用范式减少了数据冗余,节约了存储空间,同时加快了增、删、改的速度[6]。

整个系统所包括的信息有图书信息、留言信息、图书借阅信息、图书归还信息、系统用户信息、读者类型信息。可将这些信息抽象为下列系统所需要的数据项和数据结构:
1)图书信息表(编号,图书名称,作者,出版社,出版时间,价格,,ISBN号,库存量)
2)读者信息表(读者编号,姓名,性别,出生年月,身份证号,地址,电话,邮箱,备注)
3)图书借阅归还信息表(借阅记录号,图书编号,读者编号,借阅管理员编号,借阅 时间,归还管理员编号,归还时间)
4)管理员信息表(编号,名称,密码,等级) 注:带下划线表示主键 3.1.2图书信息表结构设计 图书信息表主要用于存储图书馆中所藏图书的相关信息,其中的相关信息是在图书入库时由操作员进行添加完善,此表主要用于读者和图书管理员对馆中图书的查询,系统用户根据图书的某个属性进行查询,便可得知图书的其他相关信息。表的具体结果如下: 表3.1图书信息表bookinfo 字段名称 数据类型 字段长度 是否为空 说明 book_no int 30 No 图书编号(Key)
book_name varchar 30 No 书名 book_author varchar 30 No 作者 book_public varchar 50 No 出版社 book_public_time varchar 100 Yes 出版时间 book_price real Yes 图书价格 book_isbn varchar 50 Yes ISBN编号 book_count varchar 100 Yes 库存 intime date No 图书入库时间 3.1.3 读者信息表结构设计 读者信息表的设计是为了图书馆管理员对读者进行管理,其中读者ID,不同类型证件的号码都是唯一的,是读者在借阅图书时需要输入对读者身份进行识别的信息,读者邮件电话等信息室为了与读者进行联系,便于操作员是对信息才操作的查询。表的具体结构设计如下: 表3.2读者信息表readinfo 字段名称 数据类型 字段长度 是否为空 说明 reader_no int 30 No 读者编号(Key)
reader_name varchar 30 No 读者姓名 reader_sex varchar 2 No 性别 reader_birthday datetime No 出生日期 reader_cardID varchar 18 No 身份证号 reader_address varchar 100 Yes 家庭住址 reader_phone varchar 11 Yes 联系电话 reader_email varchar 50 No 邮箱 reader_memo Varchar 8000 No 备注 3.1.4图书借阅归还信息表结构设计 该表的设计是用于对读者借阅图书进行管理,表中图书编号属性是对借阅图书的唯一性识别标识,读者编号号记录借阅的相应读者,结出时间记录了相应的借阅时间,以及归还时间,操作员是对借阅进行操作的人员的记录方便日后的查询,是否归还标识可查询当起读书是否被归还,表的具体结构设计如下: 表 3.3 图书借阅归还统计信息表 record 字段名称 数据类型 字段长度 是否为空 说明 record_no int 20 No 借阅记录号(Key)
reader_book_no int 30 No 图书编号 record_reader_no int 30 No 读者编号 record_boruser int 10 No 借阅管理员编号 record_bortime datetime Yes 借阅时间 record_renuser int 30 Yes 归还管理员编号 record_rentime datetime Yes 归还时间 3.1.5管理员信息表结构设计 该表的设计用于记录图书管理员信息,管理员可以通过用户名和密码进入该图书管 理系统,对图书和读者进行操作管理。图书管理员又可分为普通管理员和超级管理员。具体结构设计如下: 表 3.4图书归还信息表admin 字段名称 数据类型 字段长度 是否为空 说明 ad_no int 10 No 管理员编号(Key)
ad_name varchar 30 No 用户名 ad_password varchar 12 No 密码 ad_denji int Yes 等级 3.2 系统总体结构设计 该系统在Windows98/2000/XP环境下,主要采用Awt开发工具,MySQL数据库来设计,开发过程与成果应符合GB/T 11457-1995软件工程术语,GB/T 8567-1988计算机软件产品开发文件编制指南等。

3.2.1图书管理系统总体结构图 绘制系统结构图的过程,实际上就是对系统功能模块进行分解设计的过程,即合理地将数据流程图转变为所需要的系统结构图。

系统结构图将会使读者和用户能直观的了解系统的结构模式,理解系统的各个功能的结构,能很好地方便用户使用和理解整个系统。

本系统的结构图如下:
图3.5系统总体结构图 根据需求分析的结果,按照“低耦合、高内聚”的原则,本系统将划分为以下主要功能模块:系统功能模块,图书管理功能模块,读者管理功能模块,图书借阅统计功能模块;
帮助功能模块。

4 程序设计与编码 4.1开发平台与工具 4.1.1 系统开发平台 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。

Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。Java的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是Java企业应用编程接口(Java Enterprise APIs)为企业计算及电子商务应用系统提供了有关技术和丰富的类库。

Java分为三个体系JavaSE标准版,JavaEE企业版,JavaME微型版。

该图书管理系统用的就是J2SE平台 ,即是Java2平台标准版(Java 2 Platform Standard Edition),定位于客户端,是用于工作站、PC机的桌面应用软件的编程平台。它是java中三个编程构架中最基本的一个架构。它简单而强大的编程功能得到很多编程者的厚爱。它推出的UI图形化界面,简单易懂,如在Awt、Swing技术。它推出的Thread多线程机制使代码能够并行执行,充分发挥了CPU的运行效率。程序设计者可以用不同的线程完成不同的子功能,极大地扩展了Java的语言功能。它是程序中具有独立顺序的程序流,它有自己的开始,代码体和结束。线程之间可以共享内存空间和资源。如定时小动画的制作。Java的数据库访问功能使程序具有多元化,通过JDBC和ODBC的数据库访问功能将Java程序与数据库有效的链接。J2SE的事件驱动机制实现了各种“监听器”操作的响应,如ActionListerner,KeyListerner,ItemListerner等。

在开发图书馆借阅管理系统的过程中,应用Myeclipse6.0.1,它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。Myeclipse是功能丰富的J2SE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持Awt、Swing、Thread和SQL等 4.1.2 SQL数据库 SQL全称 是“结构化查询语言(Structured Query Language)”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它 的前身是SQUARE语言。

SQL语言结构简洁,功能强大无论是Oracle ,Sybase,Informix,SQL server这些大型的数据库管理系统,还是像Visual Foxporo,PowerBuilder常用的数据库开发系统,都支持SQL语言作为查询语言。它的主要功能包括四个方面:查询、操纵、定义和控制,因此,它是一个综合的、通用的、功能及强的关系数据库语言。目前MySQL被广泛地应用在系统项目的开发和Internet上的中小型网站开发中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,我们这次的数据库就采MySQL。

开发系统用的系统工具如表4.1所示: 表4.1 系统开发平台和工具 工具名称 用途 JDK 1.6.0_11 MyEclipse MySQL 5.0 SQLYog 6.1 Java 开发工具包 J2EE集成开发环境 小型关系数据库管理系统 MySQL图形化数据库管理工具 4.2程序设计 4.2.1Java程序访问数据库 数据库连接时采用JDBC—ODBC Bridge 链接MySQL。新建一个DBManage类,具体代码实现如下: package model; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /**数据库通信类 该类 提供了通过ODBC的方式访问数据库 */ public class DBManager { private Connection conn=null; private Connection getConnection(){ try { if(conn==null ||conn.isClosed()==true ){ System.out.println(“加载驱动一次,获取数据库连接一次......“); Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); conn=DriverManager.getConnection(“jdbc:odbc:libra“,“sa“,“sa“); } } catch (ClassNotFoundException e) { System.out.println(“加载驱动失败!“); e.printStackTrace(); } catch (SQLException e) { System.out.println(“获得数据库Connection连接失败“); e.printStackTrace(); } return conn; } //负责数据库通信就两类 一类是查询第二类是更新 /** * query方法提供了数据库查询功能调用者需要提供准确的SQL查询语句 如果本函数能准确的执行将返回一个结果集ResultSet对象否则将返回一个NULL * SelectSql代表查询命令 格式select* * return selectSql命令所查询的结果ResultSet对象 */ public ResultSet query(String selectsql){ Connection conn=null; Statement stmt=null; ResultSet rs=null; conn=this.getConnection(); try { stmt=conn.createStatement(); return stmt.executeQuery(selectsql); } catch (SQLException e) { System.out.println(“数据库查询失败!“); e.printStackTrace(); } return null; } /** 负责update的方法 */ public int update(String updatesql){ Connection conn=null; Statement stmt=null; conn=this.getConnection(); try { stmt=conn.createStatement(); return stmt.executeUpdate( updatesql); } catch (SQLException e) { System.out.println(“数据库更新失败!“); e.printStackTrace(); } return 0; } } 4.2.2登录模块程序设计 本模块主要是用户通过图书管理系统的首页登录窗口进入图书系统。用户输入正确的用户名和密码,系统会根据用户的身份进行相应权限划分;
如果登录信息有错误,则系统提示登入错误的信息,图书借阅管理系统的登录主页面如图4.1所示。

图4.1 图书管理系统登录首页 用户在登录页面写好用户名和密码,选择登录,登录成功则跳转到系统的首页,否则提示错误信息[。在服务器端进行用户身份验证的程序流程图如图4.2程序流程图所示:
图4.2用户登录流程图 该登录窗口通过新建一个类Main,进入该图书馆管理系统。具体代码如下:
package main; import model.Lib_User; import view.LoginView; import view.Mainview; /** 图书管理系统的程序入口*/ public class Main { public static void main(String[] args) { LoginView lv=new LoginView () ; } } 该登录窗口的设计标签框,按钮等组件的添加,通过新建一个LoginView类实现。(代码省略)
4.2.3图书馆管理系统主模块的实现 本模块中最主要的是该管理系统的主界面,系统管理员进入该界面进行各种操作。

该系统主界面如下图所示:
图4.3 图书馆管理系统主界面 该界面的实现,通过新建一个Mainview类来实现,具体代码代码如下:
package view; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.ImageIcon; import javax.swing.JDesktopPane; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import model.Lib_User; public class Mainview extends JFrame { protected static final String MQ = null; /* * 窗口菜单栏*/ JMenuBar menuBar=new JMenuBar(); //主窗口中显示子窗口 JInternalFrame的容器 JDesktopPane desktop=new JDesktopPane(); //用来记录当前登录用户信息的javabean Lib_User user=null; /* * 构造器 设置窗口标题 图标 大小 位置 添加组件 关闭事件监听器*/ public Mainview(Lib_User u){ this.user=u; this.setTitle(“欢迎“+user.getAd_name()+(user.getAd_denji()==1?“管理员“:““)+“使用李梅梅图书管理系统“); this.setIconImage(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource(“/Image/library.png“))); this.setSize(800,600); Dimension Screen=Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation((Screen.width-this.getWidth())/2, (Screen.height-this.getHeight())/2); initMainView(); this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); this.addWindowListener(mainViewListener); this.setVisible(true); } //关闭事件监听器 WindowListener mainViewListener=new WindowAdapter(){ public void windowClosing(WindowEvent event){ exitLogin(); } }; /**退出登录:1询问是否确定退出;2用户点击是退出否则不退出*/ public void exitLogin(){ int n=JOptionPane.showConfirmDialog(this,“您确定要退出吗?“,“系统提示“,JOptionPane.YES_NO_OPTION); if(n==JOptionPane.YES_OPTION){ System.exit(0); } } public void initMainView(){ //菜单 JMenu sys_menu=new JMenu(“【系统】“); JMenu book_menu=new JMenu(“【图书管理】“); JMenu reader_menu=new JMenu(“【读者管理】“); JMenu book_borrow=new JMenu(“【图书借阅统计】“); JMenu about_menu=new JMenu(“【-关于-】“); //菜单项开始 //系统子菜单开始 JMenuItem sys_relogin=new JMenuItem(“注销登录“); JMenuItem sys_updatePassword=new JMenuItem(“修改密码“); JMenuItem sys_exit=new JMenuItem(“系统退出“); //图书子菜单开始 JMenuItem book_add=new JMenuItem(“图书注册“); JMenuItem book_manager=new JMenuItem(“图书信息管理“); JMenuItem book_query=new JMenuItem(“-图书查询-“); //读者子菜单开始 JMenuItem reader_add=new JMenuItem(“读者注册“); JMenuItem reader_manager=new JMenuItem(“读者信息管理“); JMenuItem reader_query=new JMenuItem(“-读者查询-“); //图书借阅与归还子菜单 JMenuItem sys_br_borrow=new JMenuItem(“图书借阅“); JMenuItem sys_br_return=new JMenuItem(“图书归还“); JMenuItem sys_br_borrow_count=new JMenuItem(“图书借阅统计“); JMenuItem sys_br_return_count=new JMenuItem(“图书归还统计“); //关于子菜单 JMenuItem sys_help=new JMenuItem(“帮助“); JMenuItem sys_about=new JMenuItem(“-关于-“); //为子菜单设置ActionCommand开始 sys_relogin.setActionCommand(“sys_relogin“); sys_updatePassword.setActionCommand(“sys_updatePassword“); sys_exit.setActionCommand(“sys_exit“); book_add.setActionCommand(“book_add“); book_manager.setActionCommand(“book_manager“); book_query.setActionCommand(“book_query“); reader_add.setActionCommand(“reader_add“); reader_manager.setActionCommand(“reader_manager“); reader_query.setActionCommand(“reader_query“); sys_br_borrow.setActionCommand(“sys_br_borrow“); sys_br_return.setActionCommand(“sys_br_return“); sys_br_borrow_count.setActionCommand(“sys_br_borrow_count“); sys_br_return_count.setActionCommand(“sys_br_return_count“); sys_help.setActionCommand(“sys_help“); sys_about.setActionCommand(“sys_about“); //为子菜单设置ActionCommand结束 //为子菜单添加事件监听器开始 sys_relogin.addActionListener(menuitemActionListener); sys_updatePassword.addActionListener(menuitemActionListener); sys_exit.addActionListener(menuitemActionListener); book_add.addActionListener(menuitemActionListener); book_manager.addActionListener(menuitemActionListener); book_query.addActionListener(menuitemActionListener); reader_add.addActionListener(menuitemActionListener); reader_manager.addActionListener(menuitemActionListener); reader_query.addActionListener(menuitemActionListener); sys_br_borrow.addActionListener(menuitemActionListener); sys_br_return.addActionListener(menuitemActionListener); sys_br_borrow_count.addActionListener(menuitemActionListener); sys_br_return_count.addActionListener(menuitemActionListener); sys_help.addActionListener(menuitemActionListener); sys_about.addActionListener(menuitemActionListener); //为菜单添加菜单项 sys_menu.add(sys_relogin); sys_menu.add(sys_updatePassword); sys_menu.addSeparator(); sys_menu.add(sys_exit); book_menu.add(book_add); book_menu.add(book_manager); book_menu.add(book_query); reader_menu.add(reader_add); reader_menu.add(reader_manager); reader_menu.add(reader_query); book_borrow.add(sys_br_borrow); book_borrow.add(sys_br_return); book_borrow.add(sys_br_borrow_count); book_borrow.add(sys_br_return_count); about_menu.add(sys_help); about_menu.add(sys_about); //为菜单栏添加菜单 menuBar.add(sys_menu); menuBar.add(book_menu); menuBar.add(reader_menu); menuBar.add(book_borrow); menuBar.add(about_menu); //为窗口设置菜单栏 this.setJMenuBar(menuBar); //为组键添加 ImageIcon image=new ImageIcon(this.getClass().getResource(“/image/library.jpg“)); JLabel labimage=new JLabel(image); labimage.setBounds(0,0,image.getIconWidth(),image.getIconHeight()); desktop.add(labimage); this.getContentPane().add(desktop); } ActionListener menuitemActionListener=new ActionListener(){ public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); System.out.println(command); if(command.equals(“sys_relogin“)){ //注消登录 relogin(); return; } if(command.equals(“sys_exit“)){ //系统退出 exitLogin(); return; } //修改密码 if (command.equals(“sys_updatePassword“)){ updatepassword(); return; } if(command.equals(“book_add“)){ BookAdd ba=new BookAdd(); desktop.add(ba); desktop.getDesktopManager().activateFrame(ba); } if(command.equals(“reader_add“)){ Reader_Add Re=new Reader_Add(); desktop.add(Re); desktop.getDesktopManager().activateFrame(Re); } if (command.equals(“book_manager“)){ BookinfoManager BM =new BookinfoManager(); desktop.add(BM); desktop.getDesktopManager().activateFrame(BM); } if(command.equals(“reader_manager“)){ ReaderManager RM=new ReaderManager(); desktop.add(RM); desktop.getDesktopManager().activateFrame(RM); } if (command.equals(“book_query“)){ Bookquery BQ=new Bookquery(); desktop.add(BQ); desktop.getDesktopManager().activateFrame(BQ); } if (command.equals(“sys_br_borrow“)){ Bookborrow BB=new Bookborrow(); desktop.add(BB); desktop.getDesktopManager().activateFrame(BB); } if (command.equals(“sys_br_return“)){ BookReturn BR=new BookReturn(); desktop.add(BR); desktop.getDesktopManager().activateFrame(BR); } if (command.equals(“sys_br_borrow_count“)){ Bookborrowcount BC=new Bookborrowcount(); desktop.add(BC); desktop.getDesktopManager().activateFrame(BC); } if (command.equals(“sys_br_return_count“)){ BookReturncount BC=new BookReturncount(); desktop.add(BC); desktop.getDesktopManager().activateFrame(BC); } if (command.equals(“sys_help“)){ BookHelp BH=new BookHelp(); desktop.add(BH); desktop.getDesktopManager().activateFrame(BH); } }}; //用户修改密码 private void updatepassword() { UpdatePasswordView uv=new UpdatePasswordView(user); desktop.add(uv); desktop.getDesktopManager().activateFrame(uv); } //用户注销登录函数 public void relogin(){ this.setVisible(false); LoginView lv=new LoginView(); } 4.2.4系统功能模块的实现 该系统功能模块主要实现管理员的注销登录、修改密码、系统退出三个功能子模块。其各自操作界面如下所示(代码省略):
1) 注销登录功能界面:
图4.4 注销登录操作界面 2)修改密码功能界面:
图4.5 读者信息管理界面 3)系统退出功能界面:
图 4.6 系统退出界面 4.2.5图书管理功能模块的实现 查询功能模块包括图书注册,图书信息管理和图书查询三个子功能模块。

该模块主要我们主要看一下图书信息管理功能的实现过程。图书注册、图书查询部分省略。图书管理功能模块界面如下:
图4.7 图书注册操作界面 图4.8 图书信息管理操作界面 1)图书注册功能实现了数据库图书信息的更新,新建一个Book_Add类。

2)图书信息管理界面实现该功能中根据管理员不同需求的删除和修改图书信息实现,新建一个类BookinfoManager,具体代码省略:
4.2.6读者管理功能模块的实现 与图书管理模块类似,读者管理模块也分为三个子模块,读者注册、读者信息管理、读者查询。读者信息管理部分也设置了读者删除和修改功能,读者查询部分则能够根据读者编号等进行读者的查询。现就以读者注册和读者管理部分介绍。

图4.8 读者注册操作界面 图4.9 读者信息管理操作界面 1)读者注册功能实现了数据库读者信息的更新,新建一个Reader_Add类,读者注册中包含读者名,性别,出生日期,身份证号,地址,邮箱,电话,备注等图书基本信息,其中电话,备注是备选信息,可以不填。

2)读者信息管理操作实现数据库读者信息的修改、删除操作,对数据库中读者的信息的查询更新。

4.2.7图书借阅统计功能模块的实现 该功能模块可分为图书借阅,图书归还,图书借阅统计和图书归还四个子模块.此处就图书借阅和图书归还模块详细讲解。

1)图书借阅。该子模块实现系统的借阅功能,图书管理员根据读者的编号会显示出读者当前的借阅情况,再提供要借阅的图书编号,图书管理员将信息记录在系统中,借阅成功.如果在借阅时所要借阅的图书不存在或者读者借阅已达借阅图书的上线,则读者不能接续借阅图书,系统将给出相应提示.其操作界面如下图: 图4.11 图书借阅操作界面 图4.12 图书归还操作界面 2)图书归还。该子模块实现系统的图书归还功能,读者向图书管理员提供自己的编号会显示出读者当起的借阅情况,再提供要归还的图书标号,图书管理员将信息记录在系统中,归还成功。

4.2.8 关于模块的实现 关于模块主要是关于该系统的帮助文件,以及该系统中的模块介绍,系统使用帮助等。

5 软件测试 5.1 软件测试的方法与步骤 该系统在本地服务器上进行运行和调试,鉴于对系统的内部结构和处理算法的完全了解以及对系统功能的全面掌握对系统进行白盒测试和黑盒测试。

在开发软件系统的过程中,需要面对错综复杂的问题,因此,在软件生存周期的每个阶段都不可避免地会产生错误。测试目的在于:发现错误而执行一个程序的过程,测试重要发现一个发现其中尚未发现的错误。

本系统的测试阶段信息流程下图所示[15]。

图5.1 测试阶段信息流程图 为了设计出有效地测试方案按照下面准则进行测试:所有测试都应追溯到用户需求;
在完成了需求模型就要着手制定测试计划,在编码之前最所有测试工作进行计划和设计;
运用Pareto原理着重对占出现错误80%的容易出错的20%的模块进行测试,从小规模开始逐步进行大规模测试,通常先重点测试单个程序模块再转向集成的模块簇;精心设计测试方案,尽可能充分覆盖程序逻辑使之达到要求的可靠性[15]。

按照软件工程的观点,软件测试(主要是指多模块程序的测试)共包括4个层次。

1)单元测试。单元测试的用例从单元详细设计中导出。在单元测试中可以采用功能性测试和结构性测试两种。

2)集成测试和确认测试。这一阶段的任务,是通过了单元测试的模块逐步组装起来,通过测试与纠错,最终得到一个满足需求的目标软件。

3)验证测试。在这个测试步骤中所发现的往往是需求规格说明的错误。一般来说,系统测试是功能性测试,不是结构性测试[15]。

在整个测试中,采用了白盒测试和黑盒测试相结合的方法。

5.2 测试用例设计与测试用例的运行过程及测试结果分析 该测试部分我们分为模块测试和集成测试,测试过程省略。

验收测试也是测试过程的很重要一部分。在进行了以上的测试工作后,将整个软件系统作为单一的实体进行测试,测试内容与系统测试基本类似,但它是在用户积极参与下进行的,此测试过程主要使用实际数据,进行测试,验证测试的目的是验证系统确实能够满足用户的需求,经过这个环节的实际数据测试,系统的各个功能实现都达到了系统需求设计的要求。

5.3 评价 测试过程严格按照测试的流程,经过单元测试、子系统测试和系统测试。通过单元测试,查找出了系统各模块内部的错误;
通过子系统测试,发现了模块间相互协调和通信上的错误;
通过系统的集成测试,发现了软件设计过程中存在的错误。通过改正错误的设计和实现部分,保证了图书借阅管理系统可以完成需求分析中制定的需求[16]。

从上面的测试中可以看出,此系统可以完成用户登录、系统设置、图书管理、读者管理、图书借阅查询等功能。图书馆工作人员能够实现方便的对图书进行查询,方便的进行读者借阅情况查询,方便的进行借书还书处理等,便捷的对图书信息进行添加、修改、删除,分类管理等操作,对读者信息进行相关添加,修改,分类管理等操作。测试阶段的工作一方面发现了系统的各种错误,另外一方面也验证了修改后的系统能够实现提高图书馆工作效率的预期目的。

6 结束语 6.1 工作成果 在MyEclipse开发环境下,以J2SE为平台,运用面向对象编程语言和Frame框架和MySQL数据库完成了B/S模式的图书馆借阅管理系统。系统基本上实现了预期的各项功能,达到了任务书中的主要设计内容的各项任务,整个系统也在经过测试和不断地改正之后能够顺利运行。基本上实现了开题报告中的需求设计在程序编写,该系统能够实现: 1. 图书馆工作人员可以实现对图书的注册、修改和删除以及图书信息的查询等操作,方便对图书信息的更新操作。

2. 图书馆工作人员也可以可以实现对读者信息的操作。

3.图书馆工作人员同样也可以实现对图书借阅统计的操作。

6.2 收获体会 经过这些天的不断学习和设计开发加上老师同学的帮助,终于完成了我的毕业设计题目“图书馆借阅管理系统”的开发,在开始阶段我参阅了大量的中外文献,对所开发系统的现状,国际发展情况以及未来发展趋势有了深入的了解; 在整个系统的需求分析过程中对开发前期工作地流程步骤有了深入的掌握;在开发过程我进一步学习了Java的基础语法,在编写过程中也规范了许多编码习惯,数据库设计阶段我尝试了几个不同版本的数据库,它们在配置操作上各有不同,又各有优缺点,在它们的一些基本操作上也有了进一步提高。在配置开发工具过程中对J2SE和MyEclipse的连接部署有了清晰地认识, 对系统开发程序的步骤框架页有了总体性认识。

在整个系统开发的过程中,我学到了很大新的知识,前学过的许多知识点在运用过程中也有了更为深入的分析,这是我大学期间做过的规模最大的项目,在这个过程中也体会到了如何将书本知识转化到实际的应用中。

参考文献 [1] 王立福. 软件工程(第二版)[M]. 北京:北京大学出版社.2002. [2] 张秋余,杨玥. 基于用例的需求建模方法[J]. 计算机工程与设计,2006,19:3539-3541. [3] 张秋余,杨玥. 基于用例的需求建模方法[J]. 计算机工程与设计,2006,19:3539-3541. [4] John W. Satzinger, Robert B. Jackson, Stephen D. Burd. [Z]. 人民邮电出版社, 2008. [5] 王珊,萨师炫.数据库系统概论(第三版)[M]. 北京:高等教育出版社.2002 [6] 张海藩. 软件工程导论(第四版)[M]. 北京:清华大学出版社,2003. [7] 赵景晖. Java语言程序设计[D]. 大连:理工大学出版社,2005. [8] 陈明.Java语言程序设计课程实践.北京:清华大学出版社,2008,03:144-146. [9] 苏年乐.Java+SQL项目开发实践.中国铁道出版社.2003. [10] 尹朝庆. 计算机系统结构教程[M]. 北京:清华大学出版社.2005. 致 谢 很认真的做完了毕业设计,因为它是我大学的最后一次作业了。完成了它我大学生活接近尾声了。回想我的三年大学生活真的很多的收获和感触。在这里的三年时间我从一个懵懂少年成长为一个懂事懂礼懂得做人的人,在这里我不但学到了文化知识,实践动手能力,更形成了我的许多价值观,学会了许多做人做事的道理,除了自己的成长和收获不说,我真的很像感谢很多人。

首先,我要感谢我的父母,是您们的支持与鼓励是我顺利的读完了我的大学;
使您们的教导和点播是我在迷茫的时候不迷失自己;
是您们的言传身教使我懂得了如何与人为善,真爱身边的朋友们;
是您们的实时适度的纠正,是我顺利成长不断进步;
使您们宽和仁和的处事为人,塑造了我豁达开朗的性格,是您们一直以来对我的关怀和爱使我健康的成长,不断地进步,谢谢您们,我亲爱的爸爸妈妈。

还有,我要感谢我的毕业设计指导老师XX老师,是您严谨的治学,适时的督促,不断地知道使我顺利完成了我的毕业设计,在整个毕业设计期间您不断地给与我帮助和指导使我不止完成了我的设计任务还学的了很多相关的专业知识,老师不但经验丰富知识领域宽广而且和善可亲,在完成毕设的过程您不但教授了我很多专业知识,还为我的未来发展学业工作提出了很多宝贵的意见,我们不但是亲切的师生,也是彼此的朋友,在我整个毕业设计的指导过程中您给我的印象就是认真负责,在这里我想对我可敬可亲的黄老师说一声:“谢谢!” 非常感谢我的同学们我的老师们当我在毕业设计过程中遇到问题和困难时,是你们给我提出许多关键性的意见和建议,使我对整个毕业设计的思路有了总体的把握,并耐心的帮我解决了许多实际问题,使我获益良多。是你们教授了我丰富的知识,教会了我学习知识的能力。

谢谢我的母校对我的教育,我将以更加饱满的热情投入到研究生阶段的学习中去,充实自己,完善自己,向着自己的目标不断地前进,用我的所学去实现我心中的梦想!!!

推荐访问:基于java的图书馆管理系统 基于java的学校图书馆管理系统的设计与 基于java的图书馆管理系统的设计与应用 毕业设计基于BS架构的JAVA考试系统的 基于JAVA的餐厅订餐系统的毕业设计 基于java的 基于Java的图书管理系统毕业设计 基于java的毕业设计源代码 基于Java的管理系统毕业设计 基于JAVA的智能计算器毕业设计
上一篇:维修年终总结报告年终工作总结
下一篇:国开(中央电大)专科《计算机应用基础》形考(作业1至3)试题及答案

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有