即时通讯系统_第1页
即时通讯系统_第2页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目概述1.1xxxxxxxx即时通讯系统概述即时通讯是当今流行的一种以Internet网络及其它有线、无线网络为基础的实时通讯方式,是一种便捷的网络通讯技术,是基于互联网的新型通讯方式,它通过通讯系统建立网络虚拟环境,通过计算机键盘或无线设备在网络上进行实时交谈,是提供公共通讯、商务通讯及商务合作的新媒介,可以弥补传统通讯形式的不足,尤其是电子邮件及语音的不足,为用户提供实时有效的沟通手段。21世纪是信息的时代,随着互联网技术的发展,信息在传递方面也有了崭新的一面。现今聊天软件成为信息传递最为广泛的应用工具,它发挥了即时性通信的特点,可以让用户在第一时间内得到信息的交流。Internet的出现连通了整个世界,而聊天软件的出现则连通了每一位网上的用户。随着网络应用的发展,聊天软件已经成为最热门的网络应用之一。经历了近几年突飞猛进的发展之后,即时通讯工具早已不再是简单的互联网通讯工具,它已经成为一个集互动交流、休闲娱乐、信息管理为一体的多元化互联网应用平台。xxxxxxxx是中国最大的软件和IT服务外包企业,为进一步扩大企业规模,增强员工间的沟通,提高协作效率,提升企业知名度,公司决定上一套xxxxxxxx即时通讯系统,以便于进一步加快企业信息化建设的步伐。1.2xxxxxxxx公司组织机构xxxxxxxx技术有限公司的前身分别是文思信息技术有限公司和海辉软件(国际)集团公司,这两家公司都是软件外包服务提供商。2012年8月11日文思信息与海辉软件宣布合并,根据双方签订的合并协议,双方股票将以1比1的方式进行合并,两家公司的股东将各自持有合并后的新公司约50%的股份,原海辉股票将保留在纳斯达克全球精选市场上市。合并以后的公司中文名称为“xxxxxxxx技术有限公司”,英文名称为“Pactera”,纳斯达克股票代码:PACT。海辉软件(国际)集团公司成立于1996年,是一家一流的全球服务外包提供商,在中国内地、香港、日本、美国、新加坡等国家和地区均设有办公机构。海辉拥有超过6000名专业人士的人力资源和成熟、可靠的全球交付平台,为《财富》500强客户提供高质、安全的IT服务。文思信息技术有限公司成立于1995年,是一家信息技术服务提供商及离岸软件开发公司。文思是第一家在纽约股票交易所上市的中国软件服务外包企业。据国际数据公司(IDC)的统计,以2007年销售额衡量,文思信息技术在为欧美市场提供离岸软件开发行业中位居中国第一。文思信息技术有限公司(下称“文思”)宣布在2012年11月6日召开的特别股东大会上,公司股东批准了文思与海辉软件(国际)集团公司(下称“海辉”)的对等合并计划。这标志着xxxxxxxx技术有限公司(下称“xxxxxxxx”)正式诞生。合并以后的新公司的规模达2.3万人,将成为中国最大的软件和IT服务外包企业。目前公司组织机构如下图1-1所示:总经理总经理技术副总经理行政副总经理技术总监总经理助理CMMI开发部市场部测试部UI设计部开发一组开发二组开发三组图1-1公司组织机构图Fig1-1DiagramoftheCompany'sOrganizationalStructure1.3系统业务流程经过前期调研分析和综合其它各方面相关理论知识,给出整个xxxxxxxx即时通讯系统的业务流程图如下图1-2所示:整个xxxxxxxx即时通讯系统的开发主要围绕上述业务流程进行开发,开发过程采用面向对象的开发技术,具体开发过程见下面的章节。1.4系统功能模块根据上述业务流程,整个xxxxxxxx系统主要分为以下两个功能模块,如图1-3所示。下面模块划分只是抽象意义上的划分,各模块之间需要共享数据,相互协作,完成整个系统流程,单一事物功能模块间是相互独立的。用户用户注册登录聊天信息查询信息维护查询聊天记录图1-2即时通讯系统流程Fig1-2theWorkflowofinstantmessagingSystem用户管理模块用户管理模块即时通讯模块文思海辉即时通讯系统注册登录注册查询信息信息维护删除注册用户授予管理员权限显示在线用户聊天短信群发查询聊天记录图1-3系统功能模块Fig1-3FunctionModelsofSystem2系统需求分析2.1需求陈述根据调研分析得知,xxxxxxxx即时通讯系统整体采用C/S结构(客户端/浏览器)模式,C/S功能强大,可以减轻服务器端压力,用于面对用户将来提出更加复杂的需求。同时C/S一般面向相对固定的用户群,对信息安全的控制能力很强。整个系统模块共需要完成2项中心任务,即:用户管理、即时通讯。每项任务具体描述如下:2.1.1用户管理(1)、用户注册——由用户进行注册,包括用户名、密码、昵称、邮箱和性别。(2)、用户登录——判断登录的用户是否存在。(3)、用户信息查询——①普通用户:可以查询出本用户信息。②管理员:可以查询出所有注册用户信息。(4)、用户信息维护——①普通用户:可自行修改个人信息。包括用户名、密码、昵称、邮箱和性别。②管理员:可修改任何人信息,包括用户名、密码、昵称、邮箱和性别。(5)、删除注册用户——①普通用户:无权限删除。②管理员:可删除已注册任何账号。(6)、授予管理员权限——①普通用户:无权限授予。②管理员:可授予任意普通用户管理员权限。2.1.2即时通讯(1)、在线用户显示——普通用户和管理员登录后,会显示出其他在线用户。(2)、短信发送——普通用户和管理员通过系统界面进行聊天。(3)、短信群送——普通用户和管理员可短信群送。(4)、聊天记录查询——①普通用户:可查询用户自身聊天记录。②管理员:可查询全部用户聊天记录。2.2可行性分析2.2.1经济可行性分析基于局域网、C/S架构的即时通讯系统在很多资料上都能找到,包括书本和网络上都有很多类似的系统,开发这样一个系统所需要的花费不是很大,需要的开发工具、需要的软件等都可以在网上找到试用版,不需要购买,所以不需要花费太多金钱,在经济上完全能够完成本系统的设计。2.2.2人力可行性分析完成本系统不需要太多的人力资源,有老师、公司同事和同学的帮助,也可以在网上找到与本系统相关的很多资源,在人力资源上能够完成本系统的设计。2.2.3技术可行性分析基于MyEclipse的即时通讯软件,实现一般通讯软件的基本功能(登录,聊天,退出),没有十分复杂的其他功能,如:好友分组、建群、截图等,只是一些简单的通讯功能,如:登录、注册、与好友聊天等基本的功能,这些都能够运用所学的知识实现。本系统使用的编程语言是JAVA语言,所使用的平台是MyEclipse平台,对于MyEclipse的使用还是比较熟悉。虽然没有系统的学习过JAVA编程。对于JAVA的一些知识有所欠缺,但是,学校开设了JAVA课程,使自己对于JAVA编程语言有一定了解,能够在短时间之内掌握一些基本的JAVA知识。完成这个通讯软件的基础知识大都已经具备,同时,在网络上有许多开源社区,有很多开源爱好者,能够查到许多开源源代码,自己能够充分运用这些网络资源,完成这个毕业设计。2.3UseCase建模2.3.1定义活动者根据xxxxxxxx即时通讯系统模块的需求可以确定2个活动者,用户管理模块和即时通讯模块。用户管理模块的功能包括:用户注册、用户登录、用户信息查询、用户信息维护、删除注册用户、授予已注册的用户管理员权限。即时通讯模块的功能包括:显示在线用户、聊天、短信群发、查询聊天记录。2.3.2UseCase图根据系统需求分析,结合上节系统活动者的定义分析,得到xxxxxxxx即时通讯系统模块的两个用例如下:(1)用户管理管理用例(2)即时通讯用例结合活动者和用例得到用户管理模块的用例图如下图2-1所示。图2-1用户管理UseCase图Fig2-1UseCaseforUserManagement根据如上用例图得到用户管理用例描述如下表2-1所示:表2-1用户管理用例描述Table2-1Usermanagementoftheusecasedescriptions用例名称用户管理用例描述当用户在系统中注册之后,用户可进行用户信息查询、信息维护操作,管理员还可以进行删除注册用户、授予普通用户管理员权限操作。参与者普通用户、管理员优先级1前置条件用户已经注册后置条件进行用户管理相关操作基本操作流程普通用户在系统中注册系统验证注册信息是否符合要求符合要求的信息,系统将信息保存到数据库中普通用户或管理员登录到系统系统验证用户身份登录到系统的所有已注册用户可进行查询用户信息、用户信息维护操作,管理员还可进行删除注册用户、授予管理员权限操作。系统保存用户更改的信息用户退出系统可选操作流程无被泛化的用例普通用户和管理员被包含的用例无被扩展的用例无结合活动者和用例得到即时通讯模块的用例图如下图2-2所示。图2-2即时通讯UseCase图Fig2-2UseCaseforInstantMessaging表2-2即时通讯用例描述Table2-2Instantmessagingoftheusecasedescriptions用例名称即时通讯用例描述当用户登录到系统后,可以看到在线用户、与在线用户聊天、查询自身聊天记录等操作,管理员还可查询所有用户的聊天记录参与者普通用户、管理员优先级2前置条件用户登录到系统后置条件进行即时通讯相关操作基本操作流程用户登录到系统中系统判断用户身份普通用户可查看在线用户、与在线用户聊天、查询自身聊天记录,管理员还可以查看所有用户的聊天记录系统自动保存用户的聊天记录用户退出系统可选操作流程无被泛化的用例普通用户和管理员被包含的用例无被扩展的用例无3系统架构设计软件的系统架构是指通过某种特定的技术平台,完成软件系统整体功能的开发过程。也可以通俗地理解为:总体设计和总体结构布局。一般而言,软件系统架构有两个要素:(1)它是一个软件系统从整体到部分的最高层次的划分。(2)建造一个系统所做出的最高层次的,以后难以更改的,商业和技术的决定。3.1架构设计目标软件架构设计要达到如下的目标:(1)可行性(Feasible)。架构具有可行性是架构设计的基石。(2)可靠性(Reliable)。软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠。(3)安全行(Secure)。软件系统所承担的交易的商业价值极高,系统的安全性非常重要。(4)可定制化(Customizable)。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。(5)可扩展性(Extensible)。在新技术出现的时候,一个软件系统应当允许导入新技术,从而对现有系统进行功能和性能的扩展。(6)可维护性(Maintainable)。软件系统的维护包括两方面,一是排除现有的错误,二是将新的软件需求反映到现有系统中去。一个易于维护的系统可以有效地降低技术支持的花费。(7)可升级性(Scalable)。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。(8)客户体验(CustomerExperience)。软件系统必须易于使用。软件的最终用户很可能是不具有计算机专业技术的人员。3.2系统架构设计下面我们将根据架构设计原则和信息系统原理来建立系统的架构设计模型。将信息系统中比较关心的对象分层,可分为三层:用户层、业务层、数据访问层(如下图3-1所示),再把各层中的一些公共部分提出来:客户端、服务器端等,这样得到包图如图3-2所示:业务数据访问层业务数据访问层UI(UserInterface)UI控制逻辑层业务层DAO层系统服务层数据访问层抽象数据访问接口DatabaseproviderXMLproviderOtherprovider图3-1系统体系架构图Fig3-1TheDiagramofSystemArchitecture图3-2即时通讯系统模块包图Fig3-2PackageDiagramofInstantMessagingModel1.用户界面包用户界面包的职责是:(1)与用户的交互,显示用户需要的各部分功能按钮。(2)对于输入的数据进行数据校验,输出结果。(3)向业务处理对象发送处理请求。(4)显示用户信息、系统当前时间用户界面包图展开如图3-3所示:图3-3用户界面包展开图Fig3-3PackageDiagramofUsersInterface用户界面包包含的类见图3-4:图3-4用户界面类图Fig3-4ClassDiagramofUsersInterface2.客户端包客户端包的职责是:(1)对客户的业务进行处理(2)启动监听线程客户端包图展开如图3-5所示:图3-5客户端包图展开Fig3-5PackageDiagramofclient客户端包包含的类见图3-6:图3-6客户端类图Fig3-6ClassDiagramofclient3.服务器包服务器包的职责是:(1)用户上线、下线的处理(2)建立服务器(3)监听客户端请求服务器包图展开如图3-7所示:图3-7服务器包图展开Fig3-7PackageDiagramofServer服务器包包含的类见图3-8:图3-8服务器类图Fig3-8ClassDiagramofServer4.数据访问包数据访问层的职责是:(1)实现数据的持久化操作。(2)实现事务处理。数据访问包图展开如图3-9所示:图3-9数据访问包图展开Fig3-9PackageDiagramofDataAccess数据访问包包含的类见图3-10:图3-10数据访问类图Fig3-10ClassDiagramofDataAccess5.业务逻辑包业务逻辑包的职责是:(1)实现各种业务的处理。(2)判断用户的权限。(3)向数据访问对象发送数据持久化操作的请求。(4)向用户界面层返回处理结果。业务逻辑包图展开如图3-11所示:图3-11业务逻辑包图展开Fig3-11PackageDiagramofBusinesslogic业务逻辑包包含的类见图3-12:图3-12业务逻辑类图Fig3-12ClassDiagramofBusinesslogic对于每一个业务处理中需要持久化操作的对象都可以对应为一个数据库访问对象,在很多业务处理中需要请求多个数据库访问对象来进行数据的读写操作,而这些操作又必须在同一个事务中,这时需要用同一个数据库连接对象来进行统一的事务处理。6.实体包实体包的主要职责是:(1)作为数据容器用来持久化储存数据。实体类包图展开如图3-13所示:图3-13实体类包图展开Fig3-13PackageDiagramofEntity实体类包包含的类见图3-14:图3-14实体类类图Fig3-14ClassDiagramofEntity7.工具包工具包的主要职责是:(1)选择数据库类型,连接数据库。(2)对线程的一些控制。(3)提供当前系统时间。工具包图展开如图3-15所示:图3-15工具包图展开Fig3-15PackageDiagramofTool工具包包含的类见图3-16:图3-16工具类图Fig3-16ClassDiagramofTool3.3系统架构类图将包图展开,得到类图,它是架构的静态结构图,表达了各个类之间的静态联系。xxxxxxxx即时通讯系统架构类图如下图3-13所示。图3-13系统架构类图Fig3-13ClassDiagramofSystemArchitecture4系统详细设计本部分设计主要涉及软件系统的动态建模和系统类图的详细设计。软件系统的动态模型分为交互模型和活动状态模型,其中的交互模型主要由顺序图和协作图构成,活动状态模型主要包括活动图和状态图。通过为软件系统项目建立动态模型,从而产生体现系统动态行为的可视化分析结果——包括对象的时间特性和对象为完成目标任务而相互进行通信的机制、对象行为的改变和状态变化情况,以及对象可能出现的各种活动状况等信息。4.1系统交互图4.1.1系统顺序图与用户管理模块、即时通讯模块进行交互的活动者(角色),都是用户。用户与用户管理模块和即时通讯模块的顺序图如下图4-1和图4-2所示:图4-1用户与用户管理顺序图Fig4-1SequenceDiagrambetweenUserandUserManagement图4-2用户与即时通讯模块顺序图Fig4-2SequenceDiagrambetweenUserandInstantMessagingModel4.1.2系统协作图交互图用来说明系统如何实现一个用例或用例中的一个特殊场景。UML提供两类交互图:时序图和协作图。时序图按时间顺序描述系统元素之间的交互;协作图则按照时间和空间顺序来描述系统元素之间的交互。下面介绍本系统的协作图,如图4-3,图4-4所示:图4-3用户管理协作图Fig4-3CollaborationDiagramofUserManagement图4-4即时通讯协作图Fig4-4CollaborationDiagramofInstantMessaging4.1.3系统状态图状态图是通过类对对象的生命周期建立模型来描述对象随时间变化的动态行为。状态图显示了一个状态机,它基本上是一个状态机中的元素的一个投影,也就意味着状态图包括状态机的所有特性。用户管理模块状态图如下图4-5所示。图4-5用户管理的状态图Fig4-5StateDiagramforUserManagement即时通讯模块状态图如下图4-6所示。图4-6即时通讯的状态图Fig4-6StateDiagramforinstantmessaging4.1.4系统活动图活动图是描述活动是如何协同工作的。当一个操作必须完成一系列事情,而又无法确定以什么样的顺序来完成这些事情时,活动图可以更清晰地描述这些事情。在用户管理模块中,主要涉及普通用户与管理员的活动。用户先在系统中注册,注册后的用户默认为普通用户,然后根据用户名、密码可以登录到系统中,普通用户可以查看本用户信息、修改个人信息,管理员还可以查询所有注册用户信息、修改所有注册用户信息、删除已注册任何账号、授予普通用户管理员权限等活动。完成活动后退出系统,下面给出系统用户管理模块的活动图,如下图4-7所示。图4-7用户与管理员在用户管理模块的活动图Fig4-7ActivityDiagramforUserandAdministratorManagement4.2业务逻辑对象类设计4.2.1发现业务逻辑类本小节的主要任务是对系统架构类图中的业务逻辑类进行设计,由系统分析中的UseCase交互图我们可以发现业务逻辑类包括用户管理类和即时通讯类,根据UseCase交互图中的消息找到对象类相应的方法。4.2.2业务逻辑对象类图用户管理对象类图如下图4-8所示。图4-8用户管理对象类图Fig4-8ObjectClassDiagramforUserManagement即时通讯对象类图如下图4-9所示。图4-9即时通讯对象类图Fig4-9OptimalObjectClassDiagramforInstantMessaging4.3数据库设计关系型数据库是目前应用最广泛的数据库。既然是面向对象系统设计,数据库设计当然也要是面向对象的。现在要考虑如何对类进行持久化操作,即如何将对象类映射到关系数据库的二维表。目前可以采用数据库建模工具来实现,象PowerDesigner、Rose等。4.3.1ER图用户管理模块的普通用户和管理员可以映射为一张表,即时通讯模块的普通用户和管理员也可以映射到一张表。xxxxxxxx即时通讯系统的ER模型图见图4-10。11*用户聊天记录昵称用户名密码邮箱性别聊天名字1名字2聊天内容序列号序列号图4-10即时通讯系统ER图Fig4-10E-RDiagramofInstantMessagingSystem4.3.2关系模型设计xxxxxxxx即时通讯系统的关系模式如下:(1)用户信息表(序列号,用户名,密码,昵称,邮箱,性别,权限)(2)聊天记录表(序列号,名字1,名字2,聊天记录)4.3.3物理表结构图即时通讯系统总共使用到了两张数据表,用户信息表(Userinfo)与聊天记录表(chatinfo)。用户信息表(Userinfo)用来记录所有已注册的用户的登录名称、密码、昵称、邮箱、性别、权限等信息id为主键,其结构如表4-1所示:表4-1用户表Table4-1Userinfo列名数据类型是否主键可否为空idint是否namechar(40)否否passchar(20)否否aliasmailsexpowerchar(40)char(40)char(5)char(20)否否否否否否否否用户聊天记录表(chatinfo)用来记录用户的聊天对象、聊天内容等信息,id为主键,其结构如表4-2所示:表4-2用户聊天记录表Table4-2chatinfo列名数据类型是否主键可否为空idInt是否name1char(40)否是name2char(40)否是infochar(200)否是4.4开发环境的选择4.4.1系统开发工具本系统采用MyEclipse6.0作为xxxxxxxx即时通讯系统开发工具。MyEclipse企业级工作平台(MyEclipseEnterpriseWorkbench,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate[1]。MyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。可以说MyEclipse是几乎囊括了目前所有主流开源产品的专属eclipse开发工具。根据官方最新消息,MyEclipse2013已经正式发布!MyEclipse2013[2]支持HTML5、JQuery和主流的Javascript库。随着MyEclipse2013支持Html5,你可以添加音频、视频和API元素到你的项目,从而为移动设备创建复杂的Web应用程序。你甚至还可以通过HTML5可视化设计器设计令人难以置信的用户界面。同时,随着MyEclipse2013支持JQuery,你可以通过插件提升性能,并添加动画效果到设计中。在结构上,MyEclipse的特征可以被分为7类:(1)JavaEE模型(2)WEB开发工具(3)EJB开发工具(4)应用程序服务器的连接器(5)JavaEE项目部署服务(6)数据库服务(7)MyEclipse整合帮助对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse5.5以前版本需先安装Eclipse。MyEclipse5.5以后版本安装时不需安装Eclipse。Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。目前最新版本是8.0。Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML(标准通用标记语言下的一个应用。)页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为8.0.0-RC1(alpha)Released。Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。名称由来Tomcat最初是由Sun的软件构架师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O'Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而O'Reilly出版的介绍Tomcat的书籍(ISBN0-596-00318-8)[1]的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计成了一只公猫。4.4.2数据库的选择SQLServer2008在Microsoft的数据平台上发布,可以组织管理任何数据。可以将结构化、半结构化和非结构化文档的数据直接存储到数据库中。可以对数据进行查询、搜索、同步、报告和分析之类的操作。数据可以存储在各种设备上,从数据中心最大的服务器一直到桌面计算机和移动设备,它都可以控制数据而不用管数据存储在哪里。SQLServer2008允许使用Microsoft.NET和VisualStudio开发的自定义应用程序中使用数据,在面向服务的架构(SOA)和通过MicrosoftBizTalkServer进行的业务流程中使用数据。信息工作人员可以通过日常使用的工具直接访问数据。SQLServer2008出现在微软数据平台愿景上是因为它使得公司可以运行他们最关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。这个平台有以下特点:可信任的——使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。高效的——使得公司可以降低开发和管理他们的数据基础设施的时间和成本。智能的——提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。4.4.3系统网络架构设计xxxxxxxx即时通讯系统采用C/S结构,系统网络架构图见图4-11。客户请求客户请求界面展示层UI业务逻辑层BLLADODirect数据访问层数据更新程序ORM类模型代码生成器SQL/Oracle图4-11系统网络架构图Fig4-11NetArchitectureDiagramofSystem客户机(服务器)配置情况及支持软件安装如下表4-8所示。表4-8客户机(服务器)配置情况Table4-8Thecircumstancesoftheclient(server)客户机(服务器)配置支持软件安装1.系统:Windows764位2.处理器:Intel(R)Core(TM)i3CPUM380@2.53GHz2.53GHz3.内存(RAM):6.00GBMyEclipseSqlserver2005以上5编码5.1概述开发工具及编程脚本(1)JAVA语言简介绍JAVA是一种最新的、面向对象的编程语言[2]。它使得程序员可以快速地编写各种基于MicrosoftMyEclipse平台的应用程序,MicrosoftMyEclipse提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。正是由于JAVA面向对象的卓越设计,使它成为构建各类组件的理想之选——无论是高级的商业对象还是系统级的应用程序。使用简单的JAVA语言结构,这些组件可以方便的转化为XML网络服务,从而使它们可以由任何语言在任何操作系统上通过Internet进行调用。最重要的是,JAVA使得C++程序员可以高效的开发程序,而绝不损失C/C++原有的强大的功能。因为这种继承关系,JAVA与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向JAVA。JAVA语言有以下一些功能:eq\o\ac(○,1)效率与安全性eq\o\ac(○,2)支持现有的网络编程新标准eq\o\ac(○,3)清除大量程序错误eq\o\ac(○,4)JAVA语言允许类型定义的、扩展的元数据eq\o\ac(○,5)扩展交互性(2)Socket技术所谓Socket通常也称作“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。依照连接启动的方式和本地套接字需要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。服务器端监听:服务器端套接字并不定位监听具体的某一个客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求:是指由客户端套接字提出连接请求,要连接的目标是服务器端套接字。为此,客户端套接字必须首先描述它要连接的服务器套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。连接确认:是指当服务器端套接字监听到或者接收到客户端套接字的连接请求,它就响应客户端套接字的请求,创建一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此信息,连接就创建好了。而服务器端套接字还是继续处于监听状态,继续接收和处理其他客户端套接字的连接请求。(3)Client/Server结构(客户端/服务器模式)C/S结构(Client/Server,客户机/服务器),是20世纪80年代末逐步成长起来的一种模式,是软件系统体系结构中的一种。利用它可以充分利用两端硬件环境的优势,将任务合理分配到客户端和服务器端来实现,降低了系统通讯的开销。现在大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S结构的关键在于功能的分布,一些功能放在客户端执行,另一些功能则放在服务器端执行。功能的分布在于减少计算机系统的各种问题。C/S模式简单来说就是基于企业内部网络的应用系统。与B/S(Browser/Server,浏览器/服务器)模式相比,C/S模式应用系统的最大好处不在于依赖企业外网环境,也就是说无论用户能否上网,都不会影响应用。(4)TCP/IP协议TCP/IP是国际互联网所采用进行网际互连的通信协议[3],实际所称的TCP/IP协议包括了在国际互联网络应用的一组协议,互联网协议族是此协议族的另一个名字。TCP协议TCP(TransmissionControlProtocol)传输控制协议是一个TCP/IP的组中能够完成可靠数据传送的传输层协议,并经过顺序响应能完成对应用程序的虚拟连接服务,在需要的时候进行包转发。与IP协议相结合,TCP是网络协议的核心。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算和校验。TCP服务提供了可靠性、有效流控制、数据流传输、多路复用技术和全双工操作等。UDP协议UDP协议的是英文UserDatagramProtocol的缩写,中文名是用户数据报协议[7]。是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETFRFC768是UDP的正式规范。UDP协议主要是用来支持那些需要在计算机之间传输数据的应用[12]。在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。UDP用来支持那些要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都会使用到UDP协议。与所熟知的TCP协议一样,UDP协议直接位于IP(网际协议)协议的顶层。根据OSI参考模型,UDP和TCP都属于传输层协议。UDP协议使用端口号为不同的应用保留其各自的数据传输通道。UDP和TCP协议正是采用这一机制实现对同一时刻内多项应用同时发送和接收数据的支持。发送数据的一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而接收数据的一方则通过目标端口接收数据。有的网络应用只能使用预先为其预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。一般来说,大于49151的端口号都代表动态端口。5.2脚本习惯说明(1)Java命名约定。采用适用于相关领域的术语采用大小写混合使名字可读尽量少用缩写,但如果用了,要明智地使用,且在整个工程中统一避免使用长的名字(一般小于15个字母)避免使用类似的名字,或者仅仅是大小写不同的名字避免使用下划线(除静态常量等)(2)包(Package)采用完整的英文描述符,应该都是由小写字母组成。对于全局包,将你的Internet域名反转并接上包名。例如:java.awt,com.ambysoft.www.persistence(3)类(Class)采用完整的英文描述符,所有单词的第一个字母大写(一些专有的缩写词,比如:AWTException等则除外)。Class的名字建议使用名词或者名词短语。例如:Customer,SavingsAccount,LayoutManager等(4)接口(Interface)接口的名字取决于接口的主要功能和用途。如果接口是使对象具有某种特定的功能,则接口的名字建议使用可以描述这种功能的形容词(加上-able或者-ible后缀)例如:Searchable,Sortable等如果接口不是使对象具有某种特定的功能则建议使用名词或者名词短语(同类的命名规则)。(5)组件/部件(Component)使用完整的英文描述来说明组件的用途,末端应接上组件类型。okButton,customerList,fileMenu(6)异常(Exception)通常采用字母e表示异常。(7)类变量字段采用完整的英文描述,第一个字母小写,任何中间单词的首字母大写。firstName,lastName(8)静态常量字段(staticfinal)全部采用大写字母,单词之间用下划线分隔。MIN_BALANCE,DEFAULT_DATE方法方法命名采用大小写混合的形式。以小写字母开头,名字中其他单词的首字母以大写字母开头,所有其它的单词都为小写字母,不要使用下划线分隔单词。方法的命名应该能描绘出方法的作用和功能,方法的名字建议使用祈使动词或者动词短语。例如:showStatus(),drawCircle()(9)成员函数被访问字段名的前面加上前缀get。getFirstName(),getLastName()

布尔型的获取成员函数所有的布尔型获取函数必须用单词is做前缀。isPersistent(),isString();设置成员函数被访问字段名的前面加上前缀set。setFirstName(),setLastName(),setWarpSpeed()5.3脚本通过修改工具包中的perties配置文件来进行数据库的连接,具体代码如下:driver=com.microsoft.jdbc.sqlserver.SQLServerDriverurl=jdbc\:microsoft\:sqlserver\://localhost\:1433;DatabaseName\=mydbusername=sapassword=1234566测试6.1测试原则及测试方法概述软件测试是为了发现错误而不断执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程按顺序逐个对测试项目做出说明。软件测试过程应该遵循如下的原则:(1)尽早地和不断地进行软件测试。不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中。坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐患。(2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。测试以前应当根据测试的要求选择测试用例(Testcase),用来检验程序员编制的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果。(3)程序员应避免检查自己的程序。程序员应尽可能避免测试自己编写的程序,程序开发小组也应尽可能避免测试本小组开发的程序。如果条件允许,最好建立独立的软件测试小组或测试机构。这点不能与程序的调试(debuging)相混淆。调试由程序员自己来做可能更有效。(4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。合理的输入条件是指能验证程序正确的输入条件,不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。软件系统处理非法命令的能力必须在测试时受到检验。用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的错误。(5)充分注意测试中的群集现象。在被测程序段中,若发现错误数目多,则残存错误数目也比较多。这种错误群集性现象,已为许多程序的测试实践所证实。根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。(6)严格执行测试计划,排除测试的随意性。测试之前应仔细考虑测试的项目,对每一项测试做出周密的计划,包括被测程序的功能、输入和输出、测试内容、进度安排、资源要求、测试用例的选择、测试的控制方式和过程等,还要包括系统的组装方式、跟踪规程、调试规程,回归测试的规定,以及评价标准等。对于测试计划,要明确规定,不要随意解释。(7)应当对每一个测试结果做全面检查。有些错误的征兆在输出实测结果时已经明显地出现了,但是如果不仔细地全面地检查测试结果,就会使这些错误被遗漏掉。所以必须对预期的输出结果明确定义,对实测的结果仔细分析检查,抓住征侯,暴露错误。(8)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。图6-1显示出软件测试经历的4个步骤。图6-1软件测试的过程Fig6-1Softwaretestsprocess软件测试的种类大致可以分为人工测试和基于计算机的测试。而基于计算机的测试由可以分为白盒测试和黑盒测试。黑盒测试根据软件产品的功能设计规格,在计算机上进行测试,以证实每个实现了的功能是否符合要求。这种测试方法就是黑盒测试。黑盒测试意味着测试要在软件的接口处进行。就是说,这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求分析规格说明,检查程序的功能是否符合它的功能说明。用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。在本次xxxxxxxx即时通讯系统的测试中采用的是黑盒测试6.2测试项目测试用例(1)模块名称。(2)操作过程及数据。(3)预期结果(4)实际结果(5)偏差(6)用例类别下面是xxxxxxxx即时通讯的测试用例:表6-1用户管理模块测试案例tab6-1usermanagementmodeltestscase模块操作过程及数据预期结果实际结果偏差用例类别用户注册点击注册按钮,填完信息后点击注册用户名q注册成功注册成功0功能点密码q邮箱12345@昵称q性别男用户登录输入用户名和密码,点击登录用户名q登录成功登录成功0功能点密码q普通用户查询信息点击查询用个人信息显示个人信息显示个人信息0功能点管理员查询所有用户信息点击查询所有用户信息显示所有用户信息显示所有用户信息0功能点用户信息维护点击修改个人信息用户名q修改成功修改成功0功能点密码1邮箱12345@昵称q性别女删除注册用户管理员点击删除注册用户,输入用户名用户名q删除成功删除成功0功能点授予管理员权限管理员点击授予管理员权限,输入用户名用户名w授权成功授权成功0功能点表6-2即时通讯模块测试案例tab6-2instantmessagingtestscase模块操作过程及数据预期结果实际结果偏差用例类别聊天点击进入聊天,登录到服务器,选择聊天对象,输入聊天内容,发送消息聊天对象ww收到聊天内容w收到聊天内容0功能点聊天内容Hello!显示在线用户点击登录服务器无无能够看到在线用户能够看到在线用户0功能点短信群送群发短信短信内容大家好所有在线用户均能看到消息所有在线用户均能看到消息0功能点普通用户查询自身聊天记录点击查看聊天记录无无能够看到自己的聊天记录能够看到自己的聊天记录0功能点查看所有用户聊天记录点击查询所有人聊天记录,输入将要查看的用户名用户名q能够看到q用户的所有聊天记录能够看到q用户的所有聊天记录0功能点6.3软件测试结论6.3.1软件能力在测试过程中需求中涉及的功能都已实现,出现的问题得到了解决,并得到预期结果,所以该软件可运行。6.3.2缺陷和限制因为本次测试采用的是黑盒测试,功能虽然都已实现,但仍存在一些缺陷和限制:(1)功能的限制:由于技术能力有限,所有某些功能可能不够完善;(2)页面的美化:由于没有系统的学习过页面美化的课程,所有页面的设计显得有些简单;(3)测试的缺陷:由于采用的黑盒测试,测试的结果取决于测试用例的设计,测试用例的设计部分来源于经验,所以测试可能还不够全面、透彻。6.3.3建议(1)进一步学习相关技术,虚心请教(2)多学习一些美工的知识,多查阅一些资料(3)尽可能的测试到所以可能性,找有经验的人请教测试用例的设计方法。多设计一些测试用例,尽量把可能的结果的测试到,尽早发现系统中的不足,完善系统。6.3.4测试结论下面以《xxxxxxxx即时通讯系统》的测试报告为例,说明软件系统测试结论。表6-3xxxxxxxx即时通讯系统软件问题统计分析表Table6-3pacterainstantmessagingsystemsoftwarequestionstatisticsanalyticaltable问题数量代码行数(千行)10提交bug总数45有效bug总数40发现bug效率88.89%bug密度(个/千行)4关闭bug数3848遗留bug数1遗留bug比率10%测试用例数108测试用例密度(个/千行)10.8图6-3xxxxxxxx即时通讯系统软件测试结果Fig6-3pacterainstantmessagingsystemsoftwaretestsresult图6-4xxxxxxxx即时通讯系统软件测试结果Fig6-4pacterainstantmessagingsystemsoftwaretestsresult经过重复、详细的测试,上述软件系统所发现的问题,已经得到全面纠正,系统可以投入运行。结论经过几个月的毕业设计,即时通讯系统终于完成了。本文在对相关理论知识的基础上设计了一个基于C/S(客户端/服务器模式)的即时通讯系统,分析系统的工作流程,并应用MyEclipse平台具体实现了一些基本的功能,如:注册、登录、授权、查看用户信息、用户信息维护、聊天、查看聊天记录等。本系统功能虽简单,但目的的了解基于MyEclipse的窗体应用程序的开发过程,如果要完善系统还需更多的时间。毕业设计的过程是一个学习与研究的过程,而且,我深刻地认识到如果在实践中学习与研究,所学习的知识和技能就会更扎实。我使用MyEclipse为开发平台、SQLServer2008为后台数据库,Socket等相关技术完成系统,虽然系统已基本完成,但我对于MyEclipse的核心技术和高级编程还是很陌生,不能熟练运用,对于JAVA语言也不是很熟悉,这是我以后需解决的问题。在此次的毕业设计中,我深深地体会到进行软件开发不是一件容易的事情,它需要开发者具备全面的专业知识、严谨的工作态度、缜密的思维以及较高的分析问题、解决问题的能力,而我在很多方面还有欠缺。总之,我以后要多专心研究软件开发,以更加饱满的热情投入到本专业的学习中去,认真做好每一件事情,争取得到更多的收获。设计中所使用的新技术、新方法、个人独创的或有新意的地方,以及通过该设计所得到的心得体会,系统的缺陷或以后在理论、技术或其他方面需加强的地方。

致谢经过几个月的努力,目前整个系统的开发工作终于基本完成了。在这次也是设计中我学到了很多,也收获了很多。在这里要感谢的人也很多。感谢王珊珊老师在论文上对我的指导,整个毕业设计过程中,从选题到毕业设计最后,老师时刻关注着我的进度,并对过程中出现的错误和可能要出错及应该注意的地方加以指导、说明,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!感谢大学同学们对我的帮助,包括设计上和技术上的帮助。感谢公司,在得知我的毕业设计的情况后,主动减轻了我的工作负担,并为我提供了大量参考资料,以及技术上的支持。感谢我的老师,同学这四年来对我的教导,让我不仅学到了书本上的知识,更重要的是学到了如何做人。如何做事,学到了人生应该有的态度。没有他们,我也不可能完成整套系统。

参考文献[1]蔡昭权.利用Socket实现多线程通信程序[J],惠州学院学报,2010,24(6):60-105.[2]陈钟.JAVA编程语言程序设计与开发[M].北京:清华大学出版社,2008[3]刘彬,赵荣彩,丛建刚.即时通信协议分析与监控技术研究[J].计算机应用研究,2007,24(9):260-265.[4]陈鑫.基于Spring框架的Web服务架构的研究与设计[D].广西:桂林工学院,2008:12-30.[5]程永喜,蒋珉.基于TCP/IP协议的WinSock网络编程及应用[J].计算机时代,2009,21(8):40-45.[6]常逢佳.聊天系统在教学中的应用探析[J].河北软件职业技术学院学报,2009,12(4):18-40.[7]彭力,汪秉文.即时通讯软件服务器的设计与实现[J].微机发展,2008,15(10):95-165.[8]陈洪,刘双与,杨玉华.P2P技术发展与应用[J].计算机工程,20010,5(19):25-140.[9]杜松波.企业即时通讯系统服务器的设计与实现[D].成都:电子科技大学,2007:15-35.[10]孙玉钰.基于P2P网络的聊天系统的研发[J].长春大学学报.2006,5(4):10-45.[11]凌俊峰.TCP/IP协议浅释[J].韶关学院学报,2010,5(1):10-15.[12]Jean-JacquesVandewalle,EricVetillard.DevelopingSmartCard-BasedApplicationsUsingJavaCard[J],Springer-VerlagLondonUK,2008,18(20):105-124.[13]JonPostel.InternetProtocol[J].IPprotocol,2009,15(8):3-8.[14]J.Huddleston,R.Raghuram,S.FahadGilani.BeginningJAVA2005Databases:FromNovicetoProfessional[M].England:ApressPress,2006[15]JonPostel.TransmissionControlMessageProtocol[J].TCPprotocol,2009,12(11):6-10.[16]J.Shiegoka.InstantMessaginginJava[M].Amercia:ManningPublications,2010[17]A.Troelsen.ProJAVAwithMyEclipse3.0,SpecialEdition[M].America:ApressPress,2007[18]B.Beizer.Black-BoxTesting:TechniquesforFunctionalTestingofSoftwareandSystems[C].France:Placeofpublication:JohnWileySons,2010:39-214. 附录A中文译文12.1引言到目前为止,只学习如何使用对话框和命令窗口进行输入输出。使用JOptionPane.showInputDialog方法获取输入,使用JOptionPane.showMessageDialog和System.out.println方法显示结果。这些做法不仅具有局限性,而且很不方便。例如,要读入十个数字,必须打开十个输入对话框。从本章开始,将学习Java图形用户界面程序设计。可以创建个性化的图形用户界面(GUI,读作goo-ee),在同一用户界面上,既可以读取输入,又可以显示输出。本章介绍JavaGUI程序设计基础。具体讨论GUI组件以及它们之间的关系,介绍容器和布局管理器、颜色、字体、边界和工具提示。12.2GUI组件可以使用像按钮(button)、标签(label)、文本域(textfield)、复选框、单选按钮和组合框等GUI对象来创建图形用户界面。每类GUI对象都定义在一个类中,例如:JButton、JLabel、JTextField、JCheckBox、JRadioButton和JComboBox等。每个GUI组件类都提供几个构造方法,可以利用它们创建GUI组件对象。下面的例子用来创建按钮、标签、文本域、复选框、单选按钮和组合框://CreateabuttonwithtextOKJButtonjbtOK=newJButton("OK");//Createalabelwithtext"Enteryourname:"JLabeljlblName=newJLabel("Enteryourname:");//Createatextfieldwithtext"TypeNameHere"JTextFieldjtfName=newJTextField("TypeNameHere");//CreateacheckboxwithtextboldJCheckBoxjchkBold=newJCheckBox("Bold");//CreatearadiobuttonwithtextredJRadioButtonjrbRed=newJRadioButton("Red");//Createacomboboxwithchoicesred,green,andblueJComboBoxjcboColor=newJComboBox(newString[]{"Red","Green","Blue"});图12-1展示了这些对象在一个框架中如何显示。如何在一个框架中添加组件将在12.4.2节中介绍。图12-1显示GUI组件对象Swing和AWT为什么GUI组件的类名都有前缀J呢?为什么不用Button来命名JButton呢?事实上,在包java.awt中已经有了名为Button的类。刚引入Java的时候,和图形用户界面相关的类都存放在称为抽象窗口工具集(AbstractWindowTookit,AWT)的库中。对Java运行的每一个平台,AWT的组件自动地通过它们各自的代理映射成特定平台(platform-specific)的组件,这些代理称为同位体(peer)。AWT适用于开发简单的图形用户界面,但不适用于开发复杂的GUI项目。此外,AWT容易发生与平台特性相关的故障,因为它基于同位体的解决方案非常依赖底层平台。随着Java2的发行,AWT的用户界面组件被更稳定、通用和灵活的库取代,该库称为Swing组件库(Swingcomponents)。大多数Swing组件都是直接用Java代码绘制在画布上,而java.awt.Window或java.awt.Panel子类的组件例外,它们必须使用特定平台上本地的GUI来绘制。Swing组件更少地依赖目标机器上的平台,更少使用本地的GUI资源。因此,不依赖本地GUI的Swing组件称为轻型组件(lightweightcomponent),AWT组件称为重型组件(heavyweightcomponent)。为了区别新的Swing组件类和AWT组件,SwingGUI组件类的名字开头都有前缀字母J。尽管Java2仍然支持AWT组件,但是最好学习如何使用Swing组件编程,因为AWT用户界面组件终究要退出舞台。本书只使用SwingGUI组件。12.3JavaGUIAPI为开发GUI程序所做的JavaAPI设计是应用类、继承性和接口的一个绝佳范例。这些API包含下列基本类,它们的层次结构关系如图12-2和图12-3所示。GUI类可以分成三组:容器类(containerclass)、辅助类(helperclass)和组件类(componentclass)。容器类用来包含其他组件,例如:JFrame、JPanel和JApplet等。辅助类是组件和容器用来绘制和放置对象的,例如:Graphics、Color、Font、FontMetrics和Dimension等。图形用户界面(GUI)组件类都是JComponent类的子类,例如:JButton、JTextField、JTextArea、JComboBox、JList、JRadioButton和JMenu等。注JFrame、JApplet、JDialog和JComponent类及其子类都分组包含在javax.swing包中。图12-2中的其他类均分组包含在java.awt包中。图12-2JavaGUI程序设计使用该层次结构图中所列的类图12-3JComponent和它的子类是创建图形用户界面的基本元素12.3.1SwingComponent类是所有用户界面类的父类,而JComponent类是所有轻型Swing组件类的父类。由于JComponent是一个抽象类,所以,不能用newJComponent()创建JComponent的实例,但是,可以使用JComponent具体子类的构造方法来创建JComponent的实例。这样,熟悉这些类的继承层次结构就是非常必要的了。例如,下述语句的结果都显示为true:JButtonjbtOK=newJButton("OK");System.out.println(jbtOKinstanceofJButton);System.out.println(jbtOKinstanceofAbstractButton);System.out.println(jbtOKinstanceofJComponent);System.out.println(jbtOKinstanceofContainer);System.out.println(jbtOKinstanceofComponent);System.out.println(jbtOKinstanceofObject);12.3.2容器类容器类是GUI组件,用于盛装其他GUI组件的容器。Window、Panel、Applet、Frame和Dialog都是AWT组件的容器类。要使用Swing组件作容器,可以使用Component、Container、JFrame、JDialog、JApplet和JPanel。•Container用来组织组件。框架Frame、面板Panel和applet都是容器的例子。•JFrame是不能包含在另一个窗口内的窗口。在JavaGUI应用程序中,它是包含其他Swing用户界面组件的容器。•JDialog是一个弹出式窗口或消息框,一般用作接收来自用户的附加信息或通知事件发生的临时窗口。•JApplet是Applet的一个子类。要创建基于Swing的Javaapplet必须扩展JApplet。•JPanel是一个存放用户界面组件的不可见的容器。面板可以嵌套,可以把面板放在包含面板的容器中。JPanel也可以作为画布来画图。12.3.3GUI辅助类辅助类都不是Component的子类,例如Graphics、Color、Font、FontMetrics、Dimension和LayoutManager等。它们用来描述GUI组件的属性,例如,图形环境、颜色、字体以及大小等。•Graphics是一个抽象类,提供一个图形环境,用于绘制字符串、直线和简单几何图形。•Color类用来处理GUI组件的颜色。例如,可以在JFrame、JPanel等一类组件中指定背景色或前景色,或者指定绘制的线条、几何图形和字符串的颜色。•Font指定GUI组件上文本和图形的字体。例如,可以指定按钮上文本的字体(比如SanSerif字体)、字型(比如粗体)和大小(比如24磅)。•FontMetrics是一个用于获取字体属性的抽象类。•Dimension将组件的宽度和高度(精度为整数)封装在单个对象中。•LayoutManager是一个接口,它的实例指定组件在容器中的摆放方式。注辅助类包含在java.awt包中。Swing组件不能取代AWT的全部类,只能替代AWT的GUI组件类(例如Button、TextField、TextArea)。AWT辅助类保持不变。附录B英文原文12.1.IntroductionUntilnow,youhaveonlyuseddialogboxesandthecommandwindowforinputandoutput.YouusedJOptionPane

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论