网吧管理系统设计毕业论文.doc
目录第一章 系统概述31.1 系统开发的背景和意义31.2 系统开发技术3第二章 可行性分析52.1 可行性概述52.2 可行性研究5第三章 系统需求分析63.1 传统网吧管理63.2 系统优点63.3 系统功能需求73.3.1 系统逻辑模型73.3.2 服务端73.3.3 客户端83.4 系统的设计原则83.5 系统设计的思想93.5.1 系统设计结构93.5.2 系统实现技术9第四章 系统的总体设计104.1 系统功能设计104.2 系统功能模块简介104.2.1 客户端功能模块104.2.2 服务端功能模块114.2.3 数据库设计11第五章 详细设计145.1 关键模块设计145.1.1 登陆模块145.1.2 客户端模块145.1.3 服务端模块155.2 系统界面设计165.2.1 登录界面165.2.2 客户端界面165.2.3 服务端界面17第六章 编码实现186.1 系统功能实现186.2 登陆模块编码196.3 客户端模块编码236.4 服务端模块编码28第七章 系统测试377.1 系统测试目标377.2 具体测试377.2.1 登录模块测试377.2.2 客户端测试38致谢辞40第一章 系统概述1.1 系统开发的背景和意义随着计算机技术的日月更新,越来越多的人们注重加强对计算机知识的学习,为了满足学校学生或者社会学员的需求,许多网吧都纷纷对外开放,实行计时收费。但随着上机人数的增多,网吧的管理成了一个非常困难的问题。首先,人工计时收费是非常繁琐的一项工作,耗费人力物力,而且极容易出错;最后的统计工作更是一项费时费力的苦差事,甚至不能统计。其次,上机过程中,每个网吧都需要值班人员值班,耗费了管理人员的很多时间。随着计算机各种外围设备技术的发展,以上工作通过计算机就可以很方便地实现。为了适应当前网吧管理无人化的需求,本人试图利用自己大学所学专业知识并结合教学管理中的实际情况和其它类似计费软件的优点,开发了一套网吧收费系统软件。本系统可以解决网吧管理中存在的几个实际问题:1 减少值班人员、维护人员,降低管理人员费用,甚至可以做到网吧无需人员值守管理。2 增加网吧的开放时间,提高设备的利用率。3 解决目前网吧管理中的人情免费上机、脱逃费问题。1.2 系统开发技术Java是一种简单的,跨平台的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。Java的特点1.平台无关性 平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。 2.安全性 Java的编程类似C+,学习过C+的读者将很快掌握Java的精髓。Java舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器,防止程序的非法访问。 3.面向对象 Java吸取了C+面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java提供了众多的一般对象的类,通过继承即可使用父类的方法。在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。 4.分布式 Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 5.健壮性 Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能。MySQL是一个精巧的SQL数据库管理系统,虽然它不是开放源代码的产品,但在某些情况下你可以自由使用。由于它的强大功能、灵活性、丰富的应用编程接口(API)以及精巧的系统结构,受到了广大自由软件爱好者甚至是商业软件用户的青睐,特别是与Apache和PHP/PERL结合,为建立基于数据库的动态网站提供了强大动力。MySQL是一个真正的多用户、多线程SQL数据库服务器。SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。SQL是一种标准化的语言,它使得存储、更新和存取信息更容易。例如,你能用SQL语言为一个网站检索产品信息及存储顾客信息,同时MySQL也足够快和灵活以允许你存储记录文件和图像。MySQL 主要目标是快速、健壮和易用。最初是因为我们需要这样一个SQL服务器,它能处理与任何可不昂贵硬件平台上提供数据库的厂家在一个数量级上的大型数据库,但速度更快,MySQL就开发出来。自1996年以来,我们一直都在使用MySQL,其环境有超过 40 个数据库,包含 10,000个表,其中500多个表超过7百万行,这大约有100 个吉字节(GB)的关键应用数据。MySQL建立的基础是业已用在高要求的生产环境多年的一套实用例程。尽管MySQL仍在开发中,但它已经提供一个丰富和极其有用的功能集。 第二章 可行性分析2.1 可行性概述可行性分析也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的房买你进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。2.2 可行性研究数据库是指自描述的完整记录的集合。数据库技术在20世纪60年代中期产生,它的出现使信息系统的研制从加工数据的程序为中心转变为共享数据库为中心来进行。数据库开始时在大公司或机构中进行大规模数据处理后来随着计算机的逐渐普及,数据库才应用到计算机上。数据库发展到今天,已经是相当成熟的阶段,它对大量处理能力的不断提高,发展和完善。本系统的开发利用ECLIPSE作为开发工具。Eclipse平台体系结构主要由5部分组成,分别是平台运行库、工作区、工作台、团队支持和帮助。在运行时内核是整个架构的核心,其他部件都是以插件方式来实现的。Eclipse采用动态加载机制,即只有需要的才加载,这样可以降低启动时间,提高资源使用效率。工作空间插件即所谓的工作区,主要负责管理用户资源,例如用户创建项目的管理、文件变更等,并负责通知其他插件关于资源变更的信息。工作台插件是Eclipse 提供的用户界面。它使用标准窗口工具包(SWT)和一个更高级的API(JFace)构建的。SWT是Java的Swing/AWT的非标准替代者,JFace则以SWT为基础,但更易于使用。团队支持插件负责提供版本控制和配置管理支持。它允许用户根据需要添加视图,并与允许用户使用的任何版本控制系统交互。帮助插件允许以HTML文件形式添加文档,并提供了一个附加的导航结构以便用户使用帮助功能搜索相关信息。 系统采用MY SQL作为开发数据库。MY SQL 是一种客户机/服务器结构的关系数据库管理系统 MY SQL提供了许多易于使用的图形化工具和向导,其中最常用的是服务管理器、企业管理器和查询分析器。它们为创建和管理数据库带来了很大的方便。第三章 系统需求分析3.1 传统网吧管理网吧是随人们生活中对计算机越来越需要而建立的,这类网吧大多存在于学校,公司,图书馆等大型公共场所,在网吧建立之初,没有网吧计费系统的情况下,网吧的管理完全人工化。逃费,人情上机,计费错误等情况不可避免地出现。也可以说是网吧现象中的一部分,这类情况给管理人员带来很大的麻烦,逃费和计费错误会给网吧管人员在财力带来损失或误会,人情上机会给管理人员带来生活中尴尬的烦恼。这类情况一再发生,就会在管理人员精神上带来越来越大的压力。上机用户有时也会因管理人员的失误带来不必要的麻烦。渐渐大家对网吧就会有一种厌恶感和恐惧感。同时,在人工长期使用,会形成大量的数据,这些数也会使得数据管理上的混乱。3.2 系统优点人工管理网吧实在存在很大的问题,而且浪费太多的人力,物力。计算机一点一丁的入侵人类的生活,计算机管理代替人工管理是不可避免的,像网吧管理这类不要求在管理上创新,机械般管理更加完美的前提下,我选择设计开发网吧计费系统,希望能改善网吧管理上的混乱情况,也避免了管理人员的工作麻烦。使用网吧计费系统优于人工管理在于:1 管理人员的工作量。2 计费准确无误。3 避免人情上机的尴尬。4 工作迅速快捷。3.3 系统功能需求网吧管理系统的主要功能有:1 服务端(包括管理员管理,用户信息管理)2 客户端(用户使用计算机的所有情况)3 系统数据的初始化,查询,修改,删除。3.3.1 系统逻辑模型为了实现管理信息系统的计算机化,仅仅用文字来描述信息的流动和存储还远远不够,还要进一步调查分析舍去物质流,抽象出信息流,绘制出数据流程图,并对各种数据的属性和各项处理功能进行详细分析。系统分析的主要成果是系统的逻辑模型。本系统主要是以数据流程图、E-R图和系统功能模块图为主要描述工具来勾画系统的概貌。对系统的功能进行分析,综合本系统设计的服务器端与客户端,总结整个系统功能模块。图3.1顶层数据流图用户信息用户信息登陆用户管理员上机更新用户消费信息下机用户信息3.3.2 服务端1 管理员管理主要包括:操作用户管理、操作员登录、修改密码、设置上机费用。这其中大部分是标准数据的维护,包括新增、修改、删除等;2 用户信息管理主要包括:用户充值、查询用户费用、删除用户信息、添加用户信息、修改用户信息。这里区分不同的用户类型,按照不同用户类型设置上机费用等;3 上机记录主要负责接收客户端程序发送来的上、下机信息,进行上、下机的处理,在处理上机登录时要进行用户的合法性检测。检测通过后产生一条用户上机记录,记录下计算机代码、账号、登录开始时间等信息。处理下机信息时,要记录下此用户下机的详细时间。计费时要将当前使用费用记录在上机记录中,并在用户的档案记录的余额字段中扣减。3.3.3 客户端首先要求将客户端的桌面、任务管理器、系统状态栏等系统功能锁定,桌面上只有客户登录程序界面,要求用户输入用户代码和密码进行登录。登录信息要求数据库中的信息来判断其合法性,并反馈一个信息给客户端,如果一切合法的话,再将桌面、任务管理器等功能解锁,让用户正常使用。客户端程序要求正常停靠在系统托盘中,用户下机时要求点击此图标进行下机,客户端将下机信息发送到数据库,系统关机。3.4 系统的设计原则根据系统的需求分析,计费系统属于网络,计算机使用费用,作息管理及数据库于一体的综合性系统,因而,网吧计费系统在总体设计时应遵循以下原则上:1 系统的功能设计完善性,满足多方的使用需求。2 系统应具有良好的稳定性,实用性,安全性。设计理念应是客户容易使用。3 数据库结构设计合理,各类属性符合要求。3.5 系统设计的思想3.5.1 系统设计结构基于网吧计费系统的综合性,而且为了满足多方使用的需求,本系统以c/s的框架结构为基本结构模式:(如图3.2所示)客户端服务端数据库服务器图3.2 系统结构图3.5.2 系统实现技术系统实现所需开发环境JDK.JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Java SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。JDK是学好Java的第一步。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。第四章 系统的总体设计4.1 系统功能设计本系统包含两个子系统,其中网吧的客户用的是客户端子系统,而网管所使用的则是服务端子系统。每个子系统包换了若干子功能模块,每个子功能模块完成相应的处理操作功能。网吧管理系统管理员表管理消费记录管理客户端管理端用户信息管理用户登录用户计费管理员登陆图 4.1 系统总功能框图客户端负责用户信息验证和记录用户的上机信息。管理端是直接操作数据库信息,实现对整个系统的管理。4.2 系统功能模块简介4.2.1 客户端功能模块1 客户登陆输入用户名与密码登录系统通过对比用户名与密码确定用户是否合法2 计费模块获取登陆时间并保存到数据库获取下机时间并保存到数据库计算花费并保存到数据库计算余额并保存到数据库4.2.2 服务端功能模块1 管理员的登陆输入用户名与密码登陆系统通过对比用户名与密码确定用户是否合法2 用户信息管理添加用户修改用户删除用户3 消费记录管理查看消费记录4.2.3 数据库设计该系统数据库使用的是SQLserver ,美国Microsoft公司推出的一种关系型数据库系统。SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。1 概念结构设计概念结构设计的任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法把它们抽象为一个不依赖于任何具体机器的数据模型,即概念模型。概念模型使设计者的注意力能够从复杂的实现细节中解脱出来,而只集中在最重要的信息的组织结构和处理模式上。概念模型具有以下的特点:(1) 概念模型是对现实世界的抽象和概括,它真实、充分地反映了现实世界中事物和事物之间的联系,能满足用户对数据的处理要求。(2) 由于概念模型简洁、明晰、独立于计算机,很容易理解,因此可以用概念模型和不熟悉计算机的用户交换意见,使用户能积极参与数据库的设计工作,保证设计工作顺利进行。(3) 概念模型易于更新,当应用环境和应用要求改变时,容易对概念模型修改和扩充。(4) 概念模型很容易向关系、网状、层次等各种数据模型转换。描述概念模型的有力工具是E-R图。E-R模型是一个面向问题的概念模型,即用简单的图形方式(E-R图)描述现实世界中的数据。这种描述不涉及数据在数据库中表示和存取方法,非常接近人的思维方式。后来又提出了扩展实体联系模型(Extend Entity-Relationship Model),简称为“EER模型”。EER模型目前已经成为一种使用广泛的概念模型,为面向对象的数据库设计提供了有效的工具。2 逻辑结构设计概念结构设计所得的E-R模型是对用户需求的一种抽象的表达形式,它独立于任何一种具体的数据模型,因而也不能为任何一个具体的DBMS所支持。为了能够建立起最终的物理系统,还需要将概念结构进一步转化为某一DBMS所支持的数据模型,然后根据逻辑设计的准则、数据的语义约束、规范化理论等对数据模型进行适当的调整和优化,形成合理的全局逻辑结构,并设计出用户子模式。数据库逻辑结构的设计分为两个步骤:首先将概念设计所得的E-R图转换为关系模型;然后对关系模型进行优化。在网吧计费系统当中包括了以上几个ER模型向关系模型的转换:用户表(帐号,密码,余额,上机费用,注册日期)管理员表(帐号,密码,姓名)消费表(登陆帐号,登陆时间,下机时间,计算机名,花费)3 物理结构设计 在表当中,关键字(即编号)都采用自动编号的数据类型;日期都采用日期型的数据类型;凡是关于数据量的都采用数据型的数据类型;其他数据均采用文本型的数据类型。当表之间有关系时通过添加外键来处理。当表与其他表有关系时,便给该表建立一张视图,通过外键将两张表联系起来,通过数据筛选,把自己想要的信息提取出来,形成一张新的表。其数据库中表的设计具体如下:表4-1 用户表列名数据类型允许空字段说明帐号Char(10)否主键密码Char(10)否登录密码余额Money是用户余额上机费用Money否每分钟费用注册日期Datetime是注册日期表4-2 管理员表列名数据类型允许空字段说明帐号Char(10)否主键密码Char(10)是登陆密码姓名Varchar(50)是管理员姓名表4-3 消费表列名数据类型允许空字段说明登陆帐号Char(10)否主键登陆时间Datetime是登陆时间下机时间Datetime 是下机时间计算机名Varchar(50)是计算机名花费money是花费第五章 详细设计5.1 关键模块设计此次设计的网吧计费系统主要包括三大模块:系统登录模块、客户端系统模块、服务端系统模块。系统登录模块由登录界面组成;用户的本次登陆信息显示及操作功能模块组成本系统的客户端系统;用户信息管理、管理员信息管理、消费信息记录组成本系统的服务端系统。客户端系统主要是为普通用户使用而设计的;而服务端系统是维护系统的数据、客户端的数据内容的显示以及用户信息的管理等,是为后台管理员使用设计的。5.1.1 登陆模块本系统在客户端有一个用户的登陆界面,在服务端有一个管理员的登陆界面,客户端的登陆是用户开始使用此计算机并开始计费,而服务器端的登陆界面是为了获得管理整个系统的权利。实现功能:验证帐号和密码的正确性。实现方法:添加数据库连接,建立LINQ to SQL 类,使用LINQ语言调用数据库信息,完成帐号和密码的验证,进入系统。实现方案:建立一个窗口,在窗口中添加两个文本框,用来存放帐号和密码,添加一个确定按钮,用来触发登陆事件。添加LINQ to SQL类,建立数据对象,通过LINQ语言查询数据库中是否存在登陆的帐号和密码并匹配。如果存在则进入系统,显示主窗口,关闭登陆窗口(如图5.1)。5.1.2 客户端模块实现功能:记录用户的登陆信息,计算用户产生的费用,并发送给数据库。实现方法:建立一个显示窗口以显示此次登陆的有效信息,获取登陆时间和下机时间,计算此次花费和帐户余额,并将这些信息返回数据库。具体方案:建立一个窗口,分别添加Label控件显示登陆时间,已上机时间,本次花费。建立LINQ to SQL 类,添加数据库服务器,调用系统时间函数获取登陆时间和下机时间,调用数据库中的用户上机费用等信息,进行计算此次所花的费用。添加Timer控件持续更新当前时间,计算并显示已上机时间(如图5.2)。开始输入帐户、密码 N是否存在Y进入主界面获取登陆时间获取当前时间计算费用修改数据库客户端5.1.3 服务端模块实现功能:添加修改删除用户信息,添加修改删除管理员信息,查看用户的消费记录。用户信息窗口管理员信息窗口消费记录窗口修改数据库添加修改删除查看添加修改删除服务端主窗口图 5.3 服务端窗口设计5.2 系统界面设计网吧计费系统主要涉及到三个用户界面:这些界面基本包括了系统功能规定的所有功能。以下是关于这几个用户界面当中一些主要的功能界面的简单介绍。5.2.1 登录界面用户登录界面主要是作为系统入口进入系统使用的,使用人员启动系统之后便会出现登录界面,用户登录进入到系统的主界面(如图5.4)。5.2.2 客户端界面客户端界面主要是用来显示用户有关信息的。显示客户端的主界面(如图5.5)。 图5.4 用户登陆窗口 图5.5 客户端界面5.2.3 服务端界面服务端界面主要是管理员操作系统信息使用的,系统使用人员登录之后便出现功能界面。在此界面下,用户可以操作规定权限下的功能操作。主界面(如图5.6)调用以下功能模块1 卡号信息管理功能调用用户信息管理窗口,可以进行添加,修改,删除用户信息操作。(如图5.7 )2 客户端管理功能可以添加客户端和对客户端进行调整。(如图5.8)3系统管理功能可以对机器的区域进行调整。(如图5.9) 图5.6 主界面 图5.7 卡号管理界面 图5.8 客户端管理界面 图5.9 系统管理界面第六章 编码实现6.1 系统功能实现网吧计费管理功能主要有两个方面:客户端和服务端。在服务端,管理员能够增加,删除及更新用户信息;客户端在普通用户登陆后,会自动计时计费。系统功能实现主要通过客户端对登陆用户信息进行收集和更新。6.2 登陆模块编码package bar.server;import java.awt.Dimension;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;import bar.dbam.CardDBAM;import bar.entity.Card;public class FrmServer extends JFrame JPanel contentPane;JTextField textUserName = new JTextField();JPasswordField passwordField = new JPasswordField();JLabel lblUserName = new JLabel();JLabel lblPassword = new JLabel();JButton btnClose = new JButton();JButton btnOK = new JButton();Icon logoIcon = new ImageIcon("imageLandingBackground.gif");JPanel imagePanel = new JPanel();JLabel lblimage = new JLabel();public FrmServer() try setDefaultCloseOperation(DISPOSE_ON_CLOSE);jbInit(); catch (Exception exception) exception.printStackTrace();private void jbInit() throws Exception contentPane = (JPanel) getContentPane();this.setSize(new Dimension(270, 200);/ 设置窗体大小this.setBounds(new Rectangle(403, 307, 300, 230);/ 设置窗体大小 位置218, 153this.setIconImage(null);this.setResizable(false);/ 设置窗体是否可调大小this.setTitle("服务端登陆");/ 设置标题栏信息textUserName.setBounds(new Rectangle(124, 71, 120, 22);passwordField.setBounds(new Rectangle(124, 107, 120, 22);lblUserName.setText("用户名:");lblUserName.setBounds(new Rectangle(58, 73, 54, 15);lblPassword.setText("密 码:");lblPassword.setBounds(new Rectangle(58, 110, 54, 15);btnClose.setBounds(new Rectangle(160, 148, 70, 22);btnClose.setText("取 消");btnClose.addActionListener(new FrmServer_btnClose_actionAdapter(this);contentPane.setLayout(null);btnOK.setBounds(new Rectangle(63, 148, 70, 22);btnOK.setText("确 定");btnOK.addActionListener(new FrmServer_btnOK_actionAdapter(this);imagePanel.setBounds(new Rectangle(0, 0, 300, 230);imagePanel.setLayout(null);lblimage.setBounds(new Rectangle(0, 0, 300, 230);contentPane.add(btnOK);contentPane.add(textUserName);contentPane.add(passwordField);contentPane.add(lblUserName);contentPane.add(lblPassword);contentPane.add(btnClose);contentPane.add(imagePanel);imagePanel.add(lblimage);lblimage.setIcon(logoIcon);passwordField.addKeyListener(new KeyAdapter() Overridepublic void keyPressed(KeyEvent e) if (e.getKeyCode() = KeyEvent.VK_ENTER) btnOK.doClick(););public void btnClose_actionPerformed(ActionEvent e) this.dispose();/ 取消登陆public void btnOK_actionPerformed(ActionEvent e) String userName = ""String password = ""userName = textUserName.getText();/ 获取输入的帐户/ 获取输入的密码for (int i = 0; i < passwordField.getPassword().length; i+) password += passwordField.getPassword()i;if (userName = "" | userName.length() = 0) JOptionPane.showMessageDialog(this, "请输入卡号!", "警告",JOptionPane.WARNING_MESSAGE);return;if (password = null | password.length() = 0) JOptionPane.showMessageDialog(this, "请输入密码!", "警告",JOptionPane.WARNING_MESSAGE);return;Card card = new Card();card.setId(userName);card.setPassword(password);try boolean isValidate = CardDBAM.validateCardIdAndPassword(card);if (isValidate = false) JOptionPane.showMessageDialog(this, "卡号不存在或密码错误!n 请重新输入!","错误", JOptionPane.ERROR_MESSAGE);return;Card objCard = CardDBAM.getCardData(userName);String type = objCard.getStyle();/ 获得卡号类型if (type.equals("1") = false && type.equals("2") = false) JOptionPane.showMessageDialog(this, "非管理员帐户不能登陆服务端", "警告",JOptionPane.WARNING_MESSAGE);return;/ 帐户,密码验正通过,即可登陆服务端ServerManageFrm serverManage = new ServerManageFrm();serverManage.show();this.hide(); catch (Exception ex) JOptionPane.showMessageDialog(this, "发生错误:" + ex.getMessage(),"错误", JOptionPane.ERROR_MESSAGE);this.dispose();class FrmServer_btnOK_actionAdapter implements ActionListener private FrmServer adaptee;FrmServer_btnOK_actionAdapter(FrmServer adaptee) this.adaptee = adaptee;public void actionPerformed(ActionEvent e) adaptee.btnOK_actionPerformed(e);class FrmServer_btnClose_actionAdapter implements ActionListener private FrmServer adaptee;FrmServer_btnClose_actionAdapter(FrmServer adaptee) this.adaptee = adaptee;public void actionPerformed(ActionEvent e) adaptee.btnClose_actionPerformed(e);6.3 客户端模块编码package bar.client;import java.awt.Color;import java.awt.Font;import java.awt.Rectangle;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.BorderFactory;import javax.swing.Icon;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.UIManager;import javax.swing.border.TitledBorder;import bar.client.set.LogoutComputerPanel;import bar.client.set.Loo