1、 摘 要在以信息技术为核心的时代,任何管理工作都离不开信息技术的帮助。如今的图书为了满足人们日益增长的精神文化需求,图书的种类和数量成倍的增加,图书的借阅工作日益频繁。因此,这就需要一个行之有效的图书管理系统来帮助图书馆工作人员更加方便、准确的管理图书的借阅工作。本系统的主要任务就是对图书、读者、借阅信息、查询进行统一管理,满足各类用户的需求。该系统的主要研究内容包括前台应用程序的开发以及后台数据库的建立和管理,对于前者要求应用程序功能的完备、易用。对于后者则要求建立数据的一致性和完整性。基于上述考虑,本系统是基于JAVA语言进行开发的,本系统利用Eclipse作为前端的应用开发工具,利用SQ
2、L Server 2005作为后台的数据库,通过对管理系统模块的研究,提出构造图书信息管理系统的方法,结合其它图书管理业务方面的常识,建立相关数据模型,利用面向对象开发工具对其进行设计与开发,使系统有良好的性能和较高的处理效率。关键词:图书管理系统;数据库;面向对象AbstractIn the era of information technology as the core, any management work rely heavily on information technology to help. Now, in order to satisfy the library spir
3、it culture of people growing demand, the amount and type of books and books have multiplied the uses of the borrowing work increasingly frequent. Therefore, it needs to be an effective books management system management system to help the people who work in libraries is more convenient and accurate
4、management work of the library borrowing. The systems main task is to readers, borrowing books, information query, unified management, and satisfy the needs of the users. This system includes main research and development foreground application of backstage supporters database for the establishment
5、and management of the application requirements, complete functions, easy-to-use, etc. For the latter requires establishing consistency and integrality of data based on the consideration, this system is based on a JAVA language development, this system using the Eclipse as front application developme
6、nt tool that uses SQL Server 2005 as a background, based on the database management system structure, puts forward the module of the library management information system, and by using the method of knowledge, combined with other books management business sense, establish relevant data model, using
7、object-oriented development tool to design and development, make the system has good performance and high efficiency.Key words: The books management system management system;Database;Object-oriented目 录摘要IAbstractII第1章 绪论11.1 课题背景11.2 国内外现状11.3 本系统的主要研究内容11.4 本系统的主要特点2第2章 需求分析32.1 需求分析32.2系统目标32.3系统设
8、计32.3.1 系统的功能结构42.3.2 系统的执行流程图5第3章 系统的数据库设计63.1 数据库分析63.2 数据库需求分析73.3 数据库概念结构设计73.3.1 图书信息实体83.3.2 读者信息实体83.3.3 图书借阅信息实体83.3.4 图书分类实体93.3.5 图书订购实体93.3.6 操作员信息实体93.3.7 库存信息实体103.4 数据库逻辑结构设计10第4章 系统的详细设计与测试134.1 公共模块设计134.1.1 数据库的链接及操作类的编写134.1.2 MenuActions类的编写134.1.3 限制文本框长度类的编写144.1.4 描述组合框索引与内容类的编
9、写154.1.5 在JLable上添加图片类的编写154.2主窗口的设计154.2.1 主窗体概述154.2.2 主窗体技术分析164.2.3 主窗体的实现过程174.3 系统登录模块设计174.3.1 系统登录模块概述174.3.2 系统登录模块技术分析184.3.3 登陆模块实现过程184.4 图书信息管理模块设计194.4.1 图书信息管理模块概述194.4.2 图书信息管理模块技术分析214.4.3 图书信息管理模块实现过程214.4.4 单元测试224.5 图书借阅、归还模块设计224.5.1 图书借阅、归还模块概述224.5.2 图书借阅、归还模块技术分析244.5.3 图书借阅、
10、归还模块的实现过程244.5.4 单元测试254.6 图书查询模块设计264.6.1 图书查询模块概述264.6.2 图书查询模块技术分析264.6.3 图书查询模块实现过程274.7 格式化的文本框274.7.1 使用JFormattedTextField限制整数输入284.7.2 使用JFormattedTextField限制日期输入28结论29参考文献30附录31致谢41IV齐齐哈尔大学毕业设计(论文)第1章 绪 论1.1 课题背景在我国信息化管理系统近年来日趋成熟,在采用计算机技术进行管理之前,图书的图书借阅工作是非常繁琐和复杂的。图书的借阅工作完全依赖于手工操作,不但费时费力而且还经
11、常容易出错。读者在借书的时候首先要有一个借书证,工作人员把读者要借的书的信息卡与读者的借书证放到一起,并且在借书证上填写借阅信息,这就是手工操作时代的借书过程1。这样的借阅工作显而易见,效率非常低,由于工作量大所以数据不但容易丢失,且非常容易出错。总的来说,缺乏系统、规范的信息管理手段。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。读者排队时间大大降低,读者可以花更多的时间在选择书和看书上。而且近年来,随着图书馆的规模逐渐扩大,图书数量也相应的大量增加,有关的图书的各种信息成倍增长。面对如此庞大的信息量,需要一套合理、有效、规范的图书管理系统,对图书资料进行统一、集中的管理。使用
12、本程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,以便全面掌握图书的流通情况2。1.2 国内外现状信息技术的发展为图书馆的发展创造了良好的信息环境,目前社会上信息管理系统发展飞速,越来越多企事业单位引入了信息管理系统来管理信息,各大高校也相继采用了图书管理系统管理图书,取得很大的成效。国外的图书馆自动化系统是随着计算机技术发展而发展的3。并且较早实现了商品化,出现了不少知名公司,例如:美国的INNOPAC、SIRSI、及澳大利亚的HORIZON等,它们的产品技术开发已经很成熟,而国内的发展相对较晚,系统稳定性和安全性存在差距。但国内系统开发吸收了国
13、外经验和技术,在中文书刊信息处理方面有很大优势,在技术方面,差距不明显。虽然国内起点晚,但也采用了流行的开发工具,如JAVA,VB,PB等4。1.3 本系统的主要研究内容本系统应用软件工程的设计思想,按照系统的开发流程完成了一个完整的图书管理系统6。同时,在程序的开发过程中,界面开发方面采用了Swing机制 ,Swing是一个用于开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面,使整个系统的设计思路更加清晰。数据库方面,使
14、用SQL Server 2005,通过Java的JDBC实现连接,JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,可以满足日常中小型规模的数据处理要求。1.4 本系统的主要特点参考一些典型图书管理系统的设计模式,从读者与图书管理员的角度出发,本着以读者借阅图书快捷、方便的原则,要求本系统应具有
15、以下特点:1. 具有良好的系统性能,友好的用户界面;2. 较高的处理效率,便于使用和维护;3. 采用成熟技术开发,使系统具有较高的技术水平和较长的生命周期;4. 系统尽可能简化图书管理员的重复工作,提高工作质量;5. 简化数据查询和统计难度。第2章 需求分析2.1 需求分析在现在信息管理系统尤为重要的时代,图书管理系统是图书馆管理工作中不可缺少的部分,对于图书馆的管理者和使用者来说都非常重要。但长期以来,人们使用传统的手工方式或性能较低的图书系统管理图书馆的日常事务,操作流程比较繁琐,效率相当低4。而一个成功的图书管理系统应提供快速的图书信息检索功能、快捷的图书借阅、归还流程,为管理者与读者提
16、供充足的信息和快捷的数据处理手段。2.2 系统目标根据需求分析的要求,本系统应达到以下目标:1. 界面设计友好、美观;2. 数据存储安全、可靠;3. 信息分类清晰、准确;4. 强大的查询功能,保证数据查询的灵活性;5. 操作简单易行、界面清晰大方;6. 系统安全、稳定;7. 开发技术先进、功能完备、扩张性强;8. 占用资源少、对硬件要求低;9. 提供灵活、方便的权限设置功能,使整个系统的管理分工明确。2.3 系统设计图书管理系统分为4大功能模块,分别为“基础数据维护”、“图书借阅管理”、“新书管理”和“系统维护”。2.3.1 系统的功能结构图书管理基础数据维护图书借阅管理新书订阅管理系统维护读
17、者信息管理图书信息管理图书类别管理图书还书管理图书查询图书借书管理用户管理更改密码新书订购验收新书图2-1 系统功能结构图2.3.2 系统的执行流程图管理员图书管理系统管理员登陆基础数据维护读者信息管理读者添加读者相关信息图书类别管理读者修改删除图书类别添加类别修改图书类别信息图书信息管理图书添加图书修改图书借阅管理图书归还图书借阅图书查询图书相关信息图书管理系统新书订阅管理新书订阅验收新书订购相关信息图书相关信息系统维护管理更改密码用户管理添加用户用户修改删除操作员信息读者图2-2 系统流程图第3章 系统的数据库设计数据库的设计关系到整个软件的成败。当今的企业信息管理系统都是通过数据库来存储
18、信息的,因此数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计不仅可以提高数据存储的效率,保证数据的完整性和一致性,还能增加系统的灵活性。因此建立一个良好的数据组织结构和数据库,使整个系统都可以迅速、方便、准确地调用和管理所需的数据,是衡量信息系统开发工作好坏的主要指标之一。在数据库建立过程中,要注重数据库与系统整体目标的一致性,使他们既相互独立又有紧密联系。用户与数据库接口之间是灵活与友好的,数据库的设计也要简单易行和便于理解。3.1 数据库分析现在主流的数据库主要有Access、SQL Server、Orac
19、le等7。Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。Access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器的假死,或者消耗掉服务器的内存导致服务器崩溃。因为本系统要求大量的用户访问以及大量的数据量,因此Access数据库并不适用本系统。Oracle数据库支持多实例,处理数据效率高,而且是多平台的,在安全性和稳定性方面都不错,但是与SQL Server数据库相比,它的价格却高出很多,而且不易于操作,SQL Server界面直观,易于维护,并且SQL Server是微软公司开发
20、的,因此会对Windows平台的兼容性及结合性会更加友好。由于本系统在Windows平台下开发,因此比Oracle更加适合。考虑到本系统的稳定性与可靠性以及开发程序与用户需求,决定设计该系统的时候选择SQL Server 2005数据库来满足系统的需求。SQL Server 2005具有很强的完整性和可伸缩性,具有较高的性价比。设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个阶段8:1. 需求分析阶段进行数据库设计首先必须准确了解与分析用户需求(包括数据和处理)。需求分析是整个设计过程的基础,是最困难、最耗费时间的一步。作为基本的
21、需求分析是否做得充分与准确,决定了在其上构建数据的速度与质量。需求分析做得不好,甚至会导致整个数据库设计返工重做。2. 概念结构设计阶段概念结构设计是整个数据设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。3. 逻辑结构设计阶段逻辑结构设计是将概念结构转换为某个DBMS所支持的数据模型,并对齐进行优化。4. 物理设计阶段物理设计是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。5. 数据库实施阶段在数据库实施阶段,设计人员运用DBMS提供的数据库语言(如SQL)及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用
22、程序,组织数据入库,并进行试运行。3.2 数据库需求分析用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出9。收集基本数据,组成一份详尽的数据字典,为后面的详细设计打下基础。针对一般图书管理信息系统的需求,通过对图书管理工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:读者信息包括:字段ID号、登录用户名、登录密码、用户类型;图书信息包括:图书名称、出版社名称、图书作者姓名、出版日期、价格、拥有该书的册数;图书借阅与归还包括:借阅者姓名、借阅图书名称、借书日期、还书日期、图书是否归还;3.3 数据库概念结构设计根据以上对系统所作
23、的需求分析、系统设计,规划出本系统中使用的数据库实体分别为图书信息实体、图书类别实体、图书订购实体、读者信息实体、操作员信息实体、图书借阅信息实体、库存信息实体。其中图书信息实体与图书订购实体、图书分类实体、图书订购实体、图书借阅信息实体、库存信息实体都有关系,而读者信息实体与图书借阅信息实体同样具有关系。下面将介绍几个关键实体的E-R图。3.3.1 图书信息实体图书信息实体包括图书编号、图书类别编号、书名、作者、译者、出版社、价格、出版时间等属性。其中,图书编号为图书信息实体的主键,图书类别编号为图书信息实体的外键,与图书类别实体具有外键关系。图书信息实体的E-R图如图3-1所示。图书编号出
24、版时间书名作者类别编号出版社译者价格图3-1 图书信息实体E-R图3.3.2 读者信息实体读者信息实体包括条形码、姓名、性别、年龄、电话、押金、生日、职业、证件类型、办证日期、最大借书数量、证件号码等属性。读者条形码作为本实体的唯一标识。其中,在性别属性标识信息中,“1”代表此读者为男性,“2”代表此读者为女性;最大借书数量属性设置默认值为3;而在证件属性标识信息中,“0”代表身份证,“1”代表军人证,“2”代表学生证,“3”代表工作证。读者信息实体的E-R图如图3-2所示。职业读者姓名最大借书数量年龄电话性别办证日期证件类型证件号码押金生日条形码图3-2 读者信息实体E-R图3.3.3 图书
25、借阅信息实体图书借阅信息实体包括编号、图书编号、读者编号、操作员编号、是否归还、借阅日期、归还日期等属性。编号作为图书借阅信息实体的唯一标识,它包括两个外键,分别为图书编号与读者编号,图书借阅信息实体以这两个外键与图书信息实体、读者信息实体建立了关系。图书借阅信息实体的E-R图如图3-3所示。图书借阅编号归还日期操作员编号图书编号读者编号借阅日期是否归还图3-3 图书借阅信息实体E-R图3.3.4 图书分类实体图书分类实体包括编号、类别名称等属性。图书分类实体与图书信息实体以图书类别编号建立了关系。图书分类实体的E-R图如图3-4所示。图书分类编号罚款金额类别名称可借天数图3-4 图书分类实体
26、E-R图3.3.5 图书订购实体图书订购实体主要包括图书编号、订购日期、订购数量、操作员、是否验收和折扣等属性。图书订购实体以图书编号与图书信息实体建立了关系。图书订购实体的E-R图如图3-5所示。图书订购订购日期是否验收订购数量图书编号折扣操作员图3-5 图书订购实体E-R图3.3.6 操作员信息实体操作员信息实体主要包括编号、姓名、性别、年龄、身份证号、工作日期、电话、是否为管理员和密码等属性。其中,性别属性信息中“1”代表男性,“2”代表女性;是否为管理员属性信息中“0”代表当前用户不是管理员,“1”代表当前用户是管理员。操作员信息实体的E-R图如图3-6所示。操作员编号是否为管理员性别
27、年龄姓名工作日期密码身份证号电话图3-6 操作员信息实体E-R图3.3.7 库存信息实体库存信息实体主要包括编号、库存数量等属性。库存信息实体以库存编号与图书信息实体建立了关系。库存信息实体的E-R图如图3-7所示。图书订购编号库存信息图3-7 库存信息实体E-R图3.4 数据库逻辑结构设计1. 图书信息表如图3-8所示:图3-8 图书信息表2. 读者信息表如图3-9所示:图3-9 读者信息表3. 图书借阅信息表如图3-10所示:图3-10 图书借阅信息表4. 图书分类信息表如图3-11所示:图3-11 图书分类信息表5. 图书订购表如图3-12所示:图3-12 图书订购信息表6. 操作员信息
28、表如图3-13所示:图3-13 操作员信息表7. 库存信息表如图3-14所示:图3-14 库存信息表第4章 系统的详细设计与测试4.1 公共模块设计在开发过程中,经常会用到一些公共模块,如数据库连接及操作的类、限制文本框输入长度的类以及描述组合框索引与内容的类等,因此,在开发系统前首先需要设计这些公共模块。下面将具体介绍图书管理系统中公共模块的数据过程。4.1.1 数据库的链接及操作类的编写数据库连接及操作类通常包括连接数据库的方法getConnection()、执行查询语句的方法executeQuery()、执行更新操作的方法executeUpdate()、关闭数据库链接的方法close()
29、。下面将详细介绍如何编写图书管理系统中的数据库连接及操作的类Dao.java。步骤如下:1. 指定类dao.java保存的包,并导入所需的包,本例将其保存到com.wsy.dao包中。2. 在dao.java类的构造方法中创建数据库连接操作。在此类中首先定义数据库连接驱动包名、数据库连接路径、数据库连接用户名、密码等静态变量,然后在构造函数中实现数据库连接操作。在数据库连接代码中需要添加trycatch关键字,捕捉数据库连接时可能抛出的异常。3. 创建执行查询语句的方法executeQuery(),其返回值为ResultSet()结果集。首先需要初始化Dao对象,调用构造函数,从而获取数据库连
30、接。有一点值得注意,就是在创建数据库连接之前首先判断数据库连接是否为空,如果为空再创建数据库连接,避免造成程序资源的浪费。4. 创建执行更新操作的方法executeUpdate(),它的返回值为int型的整数,此返回值代表数据表更新操作是否成功,返回值为1代表成功,返回值为-1代表没有成功。5. 为了避免运行程序时资源的浪费,优化项目运行速度,需要在完成数据库操作后,关闭数据库连接,所以在Dao.java类中创建了关闭数据库连接的方法close()。为了使数据库连接在程序结束后确定会被关闭,在close()方法中加入了finally()字段,在finally块中将数据库连接置空。4.1.2 M
31、enuActions类的编写通常激活同一个命令有多种方法,用户可以通过工具栏中按钮、菜单选择特定的功能。在本系统中,最常用的命令就是弹出内部窗体,将本系统中需要弹出的内部窗体命令统一放入MenuActions类中,主要触发任何一种组件事件时,都会按照统一的方式处理10。Swing包提供了一个非常有用的机制,用来封装命令,并将其连接到多个事件源,这种机制就是Action接口。Action接口有如下方法:1. puclic void actionPerformed(ActionEvent e)2. public Object getValue(String key)3. public void p
32、utValue(String key, Object value)4. public boolean isEnabled()5. public void setEnabled(boolean b)6. public void addPropertyChangeListener(PropertyChangeListener listener)7. public void removePropertyChangeListener(PropertyChangeListener lsn)其中第一个方法用来实现ActionListener的接口程序,实际上Action接口扩展了ActionListene
33、r接口。getValue()与putValue()方法用来存储与提取动作对象的预定义名称与值。下表列举了几种常用的动作对象的预定义名称。表4.1 动作对象表名 称值NAME名称,显示在按钮或菜单上SMAIL_ICON小图标,显示在按钮或菜单上SHORT_DESCRIPTION简单提示说明,当鼠标放在按钮或菜单上出现提示LONG_DESCRIPTION详细提示说明setEnabled()方法用于开启或禁止动作对象,isEnabled()方法用于检查动作是否启用。实现Action接口需要将接口中的所有方法都实现,所以在通常情况下都是使用实现该接口的AbstractAction类,本系统中的Menu
34、Actions类继承了AbstractAction类,在MenuActions类中只要重写AbstractAction类中的actionPerformed()方法。在系统中的“更改密码”菜单项采用了MenuActions类的编写。在MenuActions类中创建一个内部类,这个内部类用于创建菜单栏中“更改密码”菜单项的动作对象,在此类的构造函数中创建组件的提示组件提示说明,在actionPerformed()方法执行“更改密码”窗体的弹出操作。将此内部类的对象作为MenuActions类的成员变量,然后再使用static定义一个静态区域进行初始化。类在被加载时,首先执行static定义的静态区
35、域内部的代码,且只会被执行一次。同理,菜单栏中其他菜单项与子菜单中的菜单项也是以相同方式被封装到MenuActions类中。4.1.3 限制文本框长度类的编写在Swing语句创建的窗体中,当JTxetField组件创建时,可以指定文本框的宽度。但当JTextField的构造器中设定的宽度并不是用户能输入的字符个数上限,用户可以在文本框中输入一个更长的字符串,此时需要限制用户输入字符串的长度,故创建了限制文本框输入长度的类MyDocument.java。创建此类的具体步骤如下:1. 创建MyDocument.java类,此类继承PlainDocument类。2. 在MyDocument.java
36、类中创建两个构造函数,其中一个是有参数的,另一个是无参数的。3. 重载父类方法inserStrng(),在此方法中限定文本框允许输入字符串长度。4.1.4 描述组合框索引与内容类的编写在程序编写的过程中,经常会遇到组合框组件的应用。有时要在窗体的组合框中显示具体内容,通常需要在数据库中存储此组合框的索引值,这时便需要使用一种数据结构将组合框中的内容与索引值联系在一起。Java.util.Map形式是比较好的选择,可以使用Map接口中的put()方法将索引值与具体内容放入集合中,当得到索引值时获取具体内容可以使用Map接口中的get(key)方法。描述组合框索引与内容类的编写步骤如下:1. 创建
37、组合框组件的索引值与其所对应的内容的Item.java类,这个类中不仅包含代表组合框索引的成员变量id和代表组合框内容的成员变量name,还包括着两个成员变量的setXXX()、getXXX()方法。2. 创建MapPz.java类,使用Map关联组合框的索引与组合框的具体内容。这里以图书类别编号与图书类别创建组合框为例,首先在此类中初始化Map集合,获取图书类别相关内容,将图书类别相关内容放入Item类中;然后将图书类别编号与图书类别名称放入Map集合中,可以使用put()方法;最后返回类型为Map的集合。4.1.5 在JLable上添加图片类的编写为了美化窗体,通常需要在窗体上添加图片。一
38、般情况下使用如方式下添加图片:1. 在窗体上添加JPanel2. 在JPanel上添加JLable3. 将图片初始化为ImageIcon对象4. 使用JLable.setIcon(ImageIcon)代码实现在窗体上添加图片功能将上述操作封装在公共类中,命名为CreatecdIcon.java类,在此类中定义一个返回ImageIcon类对象的方法,此方法以当前图片的文件名称为参数初始化一个ImageIcon类对象。4.2 主窗体的设计4.2.1 主窗体概述管理员通过“系统登录”模块的验证后,可以登录到图书管理系统的主窗体。系统主窗体主要包括菜单栏、工具栏。用户在菜单栏中单击任一菜单栏执行相应的
39、功能;工具栏为用户提供了经常使用的功能按钮。图4-1 主窗体界面图4.2.2 主窗体技术分析系统主窗体主要包括菜单栏与工具栏。单击窗体顶端的菜单栏中的某一菜单项,可以打开下拉菜单,其中包含菜单项与子菜单项。当用户单击下拉菜单中某一菜单项时,窗体中所有的菜单都会被关闭。在主窗体的设计中,需要创建菜单栏与工具栏,此时用到了JMenuBar类与JToolBar类来创建菜单栏和工具栏。1. 菜单栏的创建比较简单,使用JMenuBar的构造函数初始化菜单栏,对于每个菜单,需要创建一个对象,就是菜单项名称,最后将顶层菜单添加到菜单栏中,可以使用JMenuBar类的add()方法进行添加。在顶层菜单中添加菜
40、单项、分隔符与子菜单。其中菜单项可以使用JMenuItem类的构造函数进行初始化,然后使用JMenuBar类的add()方法进行添加;分隔符可以使用JMenuBar类的addSeparator()方法进行添加11;子菜单栏实质上也是一个菜单栏,与顶层菜单栏创建方式相同,可以使用JMenuBar类的add()方法将子菜单项添加到顶层菜单中。当用户选择一个菜单时,会引发一个动作事件,需要为每个菜单项添加监听器,重写ActionListener接口中的actionPerformed()方法,在此方法中为菜单栏添加业务逻辑。通常情况下,菜单项触发命令通过实现Action接口。这里设计了公共类MenuA
41、ction.java,它继承了AbstractAction类,由于AbstractAction类实现了Action接口,所以继承AbstractAction类就等于实现了Action接口,因此这里使菜单栏添加MenuAction类对象。2. 主窗体中工具栏的创建也非常简单。工具栏为系统提供了迅速访问常用命令的一系列按钮。完成主窗体中工具栏的创建后同样需要添加MenuAction类对象实现工具栏事件,由于需要在工具栏中添加图标,所以将动作对象添加到按钮中,然后为按钮设置图标。4.2.3 主窗体的实现过程主窗体的实现过程如下:1. 创建Library类,在它的构造函数中设置主窗体相关属性,如窗体大
42、小、窗体标题等相关属性,还可以为窗体设置背景图片,并调用创建菜单栏与工具栏的方法,在主窗体中创建菜单栏与工具栏。2. 编写创建菜单栏方法,可以初始化JMenuBar类对象创建顶层菜单,并在顶层菜单上添加相关菜单项与子菜单,然后为菜单栏添加图标,为菜单栏添加图标可以使用图标可以使用JMenu类中的setIcon()方法进行添加。3. 编写创建工具栏的方法,创建工具栏可以使用JToolBar类,创建工具栏后将所有的图标添加至于工具栏中,可以为每个图标加提示。由于在创建MenuActions类时已经为每个内部窗体动作添加了提示信息,所以这里可以不为图标添加提示信息。4. 最后在Library.java类中的主函数中调用登陆窗体,如果登录成功,初始化Library.java对象;如果登录失败,则弹出提示对话框。4.3 系统登录模块设计4.3.1 系统登录模块概述登陆模块是