基于java网络聊天室设计_第1页
基于java网络聊天室设计_第2页
基于java网络聊天室设计_第3页
基于java网络聊天室设计_第4页
基于java网络聊天室设计_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

1、滨江学院毕业论文(设计)题 目 基于JAVA网络聊天室设计 学生姓名郭胜航 学 号 20072334069 院 系滨江学院电子工程系专 业通信工程指导教师 张艳萍 职 称 教授 二一一年五月 三十日目 录目录I第1章绪论1研究背景1研究目的、内容及要求2目的2内容2要求2第2章系统开发环境与工具的选择3开发环境的选择3开发工具的选择3开发技术的选择4第3章需求分析5项目概述5产品描述5产品功能6功能需求6用户注册6用户登入7公聊7私聊8发送表情8聊天记录9系统消息9字体属性设置9用户退出10第4章概要设计11目的11运行环境11条件与限制11体系结构概述11功能设计12用户注册124.5.2

2、用户登入12公聊13私聊14表情14字体设置15记录保存15系统消息16第5章详细设计175.1 客户端注册17功能描述17综合设计175.2 登入20功能描述205.3 公聊215.3.1 功能描述225.3.2 综合设计22、私聊225.4.1 功能描述225.4.2 综合设计22发送系统消息23功能描述23综合设计23字体设置24功能描述24综合设计24发送表情25功能描述25综合设计25记录保存25功能概述25综合设计26功能逻辑实现26逻辑功能描述26综合设计26第6章系统测试27测试举例27测试程序登录界面27测试程序主界面27测试程序退出27测试项目27单元测试28组合测试28确

3、认测试28系统测试28用户验收测试29测试方法29第7章缺陷与完善307.1 软件存在的问题307.2 使界面变得更加美观30结论31参考文献32致谢33ABSTRACT34基于JAVA网络聊天室设计郭胜航 20072334069南京信息工程大学滨江学院通信工程专业,南京 210044摘要:网络聊天室是一种应用广泛网络聊天方式,操作简单,功能丰富,是教学和学习面向对象的编程思想的理想项目。可以使用多种编程语言设计和开发出功能完善的网络聊天室。本毕业设计论文介绍用JAVA语言设计和实现一个网络聊天室的过程,本系统采用C/S架构设计,整个项目分为服务器端和客户端。使用了最新的Java 2标准Swi

4、ng组件,开发出简洁美观和布局合理的用户和服务器界面;利用Socket网络开发技术实现客户端和服务器端的连接访问,实现网络功能;通过对数据流操作的合理设计,实现信息传递、接受和数据保存。同时,采用多线程、多任务的设计思想,开发出性能稳定,功能全面的服务器。完整的实现系统的功能。通过本次毕业设计可以学到如何应用和实现面向对象的各种方法,如何使用Eclipse集成开发环境来创建和开发项目,从而完成系统的完整开发。关键词:聊天室;Java;应用程序;Swing组件;Socket技术第1章 绪 论1.1 研究背景根据当前网络的需求,网络聊天越来越受各种网民所青睐。因此开发网络聊天是相当有必要,而且在网

5、站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而本人也学习过JAVA语言,对网络编程也较有兴趣,为了更好的考验自己对JAVA语言的掌握程度,本人就决定以基于JAVA网络聊天室设计为毕业设计,希望通过这一次的能进一步提高本人的网络开发编程的能力。同时网络聊天室也是网络应用中出现较早的应用软件,其开发技术和设计思想都已经得到成熟的发展,并且已经具有许多成功的案例。在开发技术上已经没有什么技术难题,并且具有广泛的应用和市场空间。发达国家的3G许可证发放工作都已经基本完成,随着3G技术标准、网络设备、终端和业务的逐步成熟,3G许可证的发放已经

6、开始从欧美地区向亚洲、非洲和中东欧地区转移。日韩是全球3G发展最为成熟的地区,截止到2006年3月底,日本和韩国的3G用户数分别占总移动用户数的53%和94%。日本WCDMA用户占全球WCDMA用户的44%。韩国CDMA2000 1X EV-DO用户占全球EV-DO用户的52%。西欧移动通信市场整体发展比较成熟,移动用户普及率处于饱和状态。截止到2004年底,西欧移动用户3.52亿,普及率高达90.1%,个别国家像英国、丹麦、希腊等移动用户普及率达到100%。到2007年4月底,我国移动用户数为亿以上。从调查中可以得知,移动上网用户显著增多,对网络聊天室的功能提出更多的要求和功能1。研究目的、

7、内容及要求1.2.1目的网络聊天室是一项实用性强,并且应用广泛的一个应用,虽然其功能简单,但是在其开发技术和过程中,能够充分学习和使用JAVA2的技术,如:开发各界面(登入、注册、公聊、私聊等界面)使用 Swing组件技术,实现网络的功能使用 Socket/Server Socket 技术,并且在开发过程当中,能充分的使用和体会面向对象技术的原理和方法。 所以该项目可以使自己在JAVA技术方面得到全面应用,使自己项目开发能力的一个很好体现。1.2.2内容一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有多个客服端。客服端要具有实现用户注册和用户登入,在登入成功后,要显示出公聊界面

8、,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现一对一的私聊功能。在服务器端可以实现不断的监听客户的连接,并且根据客户端发送过来的不同信息,如注册信息、登入信息、公聊信息、私聊信息、退出信息等,服务器端要作出不同的响应,根据登入时发送来的用户名和口令检测是否合法用户等2。要求主要涉及图形用户界面的开发、布局和输入/输出流数据的控制,并且要通过Socket技术实现网络功能,整个程序采用Swing图形界面,要求熟练掌握Java2图形用户界面的事件处理及部分Swing组件的使用。在代码的编写上要充分体现

9、Java面向对象开发思想和多态性,提高代码的重用性和高效性,要深入理解接口的作用和内部对象等特性等。第2章系统开发环境与工具的选择开发环境的选择在进行开发之前,首先决定的第一个问题就是,该使用什么开发环境来编写该系统?以目前常用的开发语言来讲有C/C+、.NET技术,JAVA、 Visual Basic几种。还有Eclipse,、Borland JBuilder等,这些并不是程序语言,而是程序语言在建构程序时的“集成开发工具”,不过它们在开发设计的过程中也占有相当重要的角色,因为选用正确的集成开发工具,可以加速程序设计的进行、测试与排错,因而对整体进度具有决定性的影响。基于以下几点,选择JAV

10、A语言开发技术。1、就执行平台而言,必须考虑的问题之一是用户可能使用的操作系统。用户可能使用的是Windows Linux。JAVA语言具有平台无关性,可以不需要任何修改就可以运行在支持JAVA的任何计算机上。2、JAVA的Swing 组件开发技术可以开发丰富的图形界面,并且Swing API类提供了丰富的外部接口和方法,可以方便实现系统功能。3、就项目开发而言,纯粹的面向对象,加上数量巨大的类所提供的方法(函数)库的支持,使得利用Java开发各种应用程序,可以说是易如反掌。此外,在程序除错、修改、升级和增加新功能等方面,因其面向对象的特性,使得这些维护也变得非常容易。4、Java支持内在的多

11、线程运行,提供分布式的并发机制,运行效率高。5、异常处理,为了使Java程式更稳定、更安全,Java引入了异常处理机制。能够在程序中产生异常情况的地方,执行相对应的处理,不至于因突发或意外的错误造成执行中断或是死机。通过这种异常处理,不仅能够清晰地掌握整个程序执行的流程,也使得程序的设计更为严谨。6、高性能,Java可以在运行时直接将目标代码翻译成机器指令。Sun用直接解释器一秒钟内可调用300,000个过程。翻译目标代码的速度与C/C+的性能没什么区别。7、网络功能,Java可以说是借助因特网而重获新生的,自然具备编写网络功能的程序。不论是一般因特网局域网的程序,如Socket、Email、

12、基于Web服务器的Servlet、JSP程序,甚至连分布式网络程序,如CORBA、RMI等的支持也是非常丰富的,使用起来也很方便。8、源回收处理,GarbageCollection是由JVM对内存实行动态管理的。程序需要多少内存、哪些程序的内存已经不使用了,需要释放归还给系统,这些烦琐且危险的操作全部交由JVM去管理。让我们能够更专心地编写程序,而不需要担心内存的问题。内存的统一管理,对于跨平台也有相当大的帮助3。开发工具的选择Java的开发工具很多,而且各有优缺点,Eclipse是一个开放可扩展的集成开发环境(IDE)。它不仅可以用于Java的开发,通过开发插件,它可以构建其他的开发工具。E

13、clipse是开放源代码的项目,并可以免费下载。支持最新的Java标准,并且缩短了开发周期。一直以其友好的集成开发环境在业界受到广泛的赞誉,这也是Eclipse一直是广大程序员最喜爱的Java开发工具的原因之一。Eclipse的可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。用户可以在集成开发环境中创建工程和打开工程,建立、打开和编辑文件,并可以编译、运行和调试应用程序。可以说在Eclipse集成开发环境中开发Java程序,快速而且高效。其主要特点如下:。4。2.3开发技术的选择本课题选择了java Socket技术开发网络聊天室。什么是socket? socket是一种

14、用于表达两台机器之间连接“终端”的软件抽象。对于一个给定的连接,在每台机器上都有一个socket,你可以想象一个虚拟的电缆工作在两台机器之间,“电缆”插在两台机器的socket上。当然,物理硬件和两台机器之间的“电缆”这些连接装置都是未知的,抽象的所有目的就是为了让我们不必了解更多的细节。简单的说,一台计算机上的socket同另一台计算机通话创建一个通信信道,程序员可以用这个信道在两台机器之间发送数据。当你发送数据时,TCP/IP协议栈的每一层都给你的数据里添加适当的报头。有个好消息是java语言隐藏了所有这些细节,这也是为什么他们有时被叫做“流socket”5。思考一下socket像电话听筒

15、一样在电话的任意一端你和我通过一个专门的信道来进行通话和接听。会话将一直进行下去直到我们决定挂断电话(除非我们使用蜂窝电话),除非我们挂断电话,否则我们各自的电话线路都会占线。如果你需要在两台机器之间进行通讯而不使用高级机制像ORBs(以及CORBA, RMI, IIOP等等),socket比较适合你。Socket的底层机制则相当棘手。幸运的是,java平台给我们一些虽然简单但是相当强大的高层抽象以至于我们创建和使用socket更加容易一些。一般而言,java socket有下面两种类型:1 TCP socket(由Socket类实现,下面的章节我们将对其讨论)2 UDP socket(由Da

16、tagramSocket类实现)TCP和UDP扮演同样的角色,但是实现是不同的。两者都接收传输协议数据包并把它们传递到表示层。TCP把信息分解成数据包(datagrams)并在接收端重新组装起来。它还对丢失的数据包进行重新传输的请求。TCP减少了上层的担忧。UDP没有组装和重传请求的功能。它只是传输数据包。更高层的层必须确保信息的完整性以及组合顺序的正确性6。第3章 需求分析3.1项目概述3.1.1产品描述人们日常生活中越来越多地使用这项新的技术来为自己的工作和学习服务。一个操作简单、界面友好、运行稳定的网络聊天室对于小型局域网内的用户可以起到很好的交流作用。本聊天室,所谓聊天室就是一个可以让

17、许多用户同时互相通信的网上园地,个人用户可以通过网上聊天室将自己融入整个主流社会中。由于目前上网的一般都是具有高学历的新一代创业者,因此,在网上聊天室这个虚拟的社会中,可以结交各层次各地方的朋友,从而为自己获取更多的知识和更多的阅历。该小聊天室是为许多喜爱上网聊天的朋友开发设计的,希望能在现有的众多聊天室中给大家多一种的选择。和许多大型的网络聊天室相比该小聊天室比较简单,但能实现聊天的基本功能,点对多聊天,点对点聊天等,基于时间和技术的原因,很遗憾传送文件的功能尚未实现。本聊天室主要由注册界面、登录界面、聊天室界面、私聊界面、功能设置界面等构成。整个设计简洁明了、实用,使用简单。客户端登入用户

18、登入用户注册通信公聊私聊功能设置字体颜色字体类型字体大小表情记录保存公聊记录添加文字图3-1 客户端结构图服务器监听请求发送系统消息显示登入情况监管客户信息图3-2 服务器结构图3.1.2产品功能本项目具有以下主要功能5客户端: 用户注册功能,实现用户的登入用户名注册和个人信息,并存入服务器数据库中。 用户登入功能,实现合法注册用户的登入。 公聊功能,实现用户和在线的所有用户聊天方式。 私聊功能,实现用户和在线的其他用户一对一的聊天方式。 查看聊天记录,实现用户查看已聊天的历史聊天内容。 发送表情和设置聊天内容字体,并可以设置字体颜色等。服务端: 可以不断的监听客户端请求 显示登入客户的信息

19、发送系统消息3.2功能需求3.2.1用户注册需求描述:用户填写系统给出的注册项目,并提交给系统,成功注册后,系统生成用户所注册的登入用户名,并保存在数据库当中。执行者:用户前置条件:无后置条件:无正常过程: 向服务端发送注册请求 服务端响应客户端,客户端弹出注册信息表单 用户填写完表单后将注册数据传给服务端处理,并保存在数据库中 返回客户端一个响应,显示用户注册的用户名,提示注册成功。异常过程(可选): 用户填写表单的数据格式不正确或表单中存在空缺的项,客户端给予提示信息。 用户注册的项在数据库中发生冲突,客户端提示注册不成功并提示用户重新填写表单。 服务器未启动或出现异常3.2.2用户登入需

20、求描述:用户填写登入用户名和口令,经服务器验证成功后进入聊天室主界面。执行者:用户前置条件:用户成功注册或已经拥有一个合法的用户名后置条件:无正常过程: 向服务端请求连接,并发送登录信息。 服务端处理并查询数据库中的用户信息 返回客户端一个响应,提示登录成功,弹出聊天室主界面。 刷新其他在线用户的用户列表信息异常过程(可选): 用户填写的用户名或口令不正确或没有注册 提示登录失败。 客户端设置的服务器地址或端口有误 服务器未启动或出现异常3.2.3公聊需求描述:用户在聊天室公聊界面的发言内容,聊天室中的其他在线用户可以正常接受并正确显示(包括发送的表情和用户设置的字体颜色)。执行者:登入用户前

21、置条件:用户登录成功后置条件:无正常过程: 客户端用户登入成功后,启动客户端功能线程 客户端将用户发送的信息打包传送给服务端 服务端进行数据分析后,并将用户的信息进行正确的处理 传给处在聊天室的所有在线其他用户并正常显示。异常过程(可选): 客户端与服务端断开连接,客户端提示信息发送失败。3.2.3私聊需求描述:用户可选择聊天室的在线用户列表中其他用户聊天。并且对方有消息提示,双方发送的信息对于聊天室的其他用户是不可见的。执行者:用户前置条件:用户登录成功,私聊的对方在线后置条件:无正常过程: 客户端与服务端建立通讯 客户端将用户发送的信息打包传送给服务端 服务端进行数据分析,查找目的用户的I

22、D,并将用户的信息传给目的用户 目的用户收到服务器的信息后,正确的显示并保存。异常过程(可选): 客户端与服务端断开连接,客户端提示信息发送失败。特殊需求(可选):不能与不在线的用户进行私聊3.2.4发送表情需求描述:用户的聊天内容可以是表情图片执行者:用户前置条件:用户可以正常聊天后置条件:无正常过程: 客户端与服务端建立通讯 客户端将表情所表示的信息传送给服务端 服务器端进行数据分析后,查找目的用户的用户名,并将所处理的信息传给目的用户 目的用户端通过本地文件将信息翻译成表情并正确显示在显示窗体中。异常过程(可选): 客户端与服务端断开连接,客户端提示服务器异常。 客户端发送的表情信息不正

23、确或本地文件不存在异常3.2.5聊天记录需求描述:用户可以查询聊天的历史纪录,包括公聊记录和私聊记录。执行者:用户前置条件:用户正确登入后后置条件:无正常过程: 发送、接收信息的同时将信息保存在本地文件中异常过程(可选): 服务端异常导致客户端退出,客户端提示服务器异常。 客户端读取信息时目标文件不存在3.2.6系统消息需求描述:在聊天室的每一个用户都能接收服务端发送的的信息提示消息7。执行者:服务端前置条件:服务端正常运行后置条件:无正常过程: 服务器向所有在线用户发送消息 客户端接收到消息,进行消息处理,并正确显示。异常过程(可选): 服务端异常,重启服务器。 出现网络异常,发送系统消息失

24、败。3.2.7字体属性设置需求描述:用户可改变输入消息的字体及颜色执行者:用户前置条件:用户可以正常聊天后置条件:无正常过程: 用户为聊天信息手动设置新的字体和颜色 客户端将聊天信息及字体和颜色信息封装,发送到服务端。 服务端处理接受到的数据并正确转发 目的客户端将接收到的信息解包,根据信息的内容,改变信息显示的字体及颜色,并在目的客户端正确显示出字体效果。异常过程(可选): 对方不支持字体属性的显示3.2.8用户退出需求描述:用户在正常情况下退出聊天室。执行者:用户前置条件:用户成功登录聊天室后置条件:无正常过程: 向服务器发送用户登出消息 服务器进行用户退出的数据处理 服务器向聊天室其他用

25、户发送登出消息 刷新其他在线用户的用户列表信息第4章 概要设计4.1目的该阶段目的在于明确网络聊天室系统的数据结构和软件总体结构,各个软件模块的功能说明,数据结构的细节,系统运行配置与应用方式以及使用的关键技术。4.2 运行环境运行环境见下表。名 称操作系统类型推荐操作系统版本推荐硬件(CPU/RAM/HD)客户端Windows平台windows 2000以上(IE6.0 以上)/256M/40G服务器Windows平台windows 2000以上P/8G/120G4.3条件与限制1.软件设计应当表现出层次结构,它应巧妙地利用各个软件部件之间的控制关系。2.设计应当是模块化的,即该软件应当从逻

26、辑上被划分成多个部件,分别实现各种特定功能和子功能。3.设计最终应当给出具体的模块(例如子程序或过程),这些模块就具有独立的功能特性。4.应当应用在软件需求分析期间得到的信息,采取循环反复的方法来获得设计9。4.4体系结构概述本系统采用C/S的结构设计模式,客户端接收用户的发送的信息到服务器,服务器通过处理转发到另一个客户端。客户端采用图形用户界面,方便与用户交互。服务器端用控制台的方式方便控制操作。系统设计总体原则:本设计不限制用户的组网方式。但对于互联网环境下的安全问题,本系统不能保证解决。系统要具有较强的灵活性,包括对功能设置的管理。整个系统要使用简单,界面要美观、大方,具有人性化特点。

27、模块划分尽量简单明了,充分考虑用户已经习惯的划分分类10。客户端分为用户注册、用户登录、信息通讯、管理和查询聊天记录。用户注册和用户登录封装在用户登录的界面中,用户列表模块封装在系统的主界面中。信息通讯、管理和查询聊天记录模块封装在聊天界面中。服务端实现消息接收、消息转发。4.5功能设计4.5.1用户注册通过注册模块实现用户的在线注册,所填写的注册项目有:用户名、口令、口令确认、性别、年龄、E-mail。用户注册界面正确填写注册项确认注册成功 填 写 错误 正确图4-1注册活动图 用户登入用户用过登入界面,填写登入用户名和密码实现系统的登入用户进入登入界面输入用户名,口令提交进入系统登入信息不

28、合法 登入信息合法 图4-2登录活动图4.5.3公聊用户登入成功后进入公聊界面,通过输入聊天内容实现和其他的用户聊天,并可以显示其他用户发送的公聊信息。用户输入信息发送信息格式有错图4-3公聊活动图4.5.4私聊用户通过选择在线用户列表的其他用户,通过单击列表中的用户名显示与其私聊的对话框,实现和选中的用户进行私聊方式进行交流,其他用户不可见。用户选择其他用户输入信息发送信息格式有误格式正确图4-4私聊流程图4.5.5表情 在用户公聊或私聊时可以同时,可以单击表情按钮打开表情窗体,通过鼠标事件可将选择的表情写入发送窗口中,以增强聊天的表达方式的效果。可以使聊天功能更丰富更有趣。用户单击表情功能

29、选择表情显示表情在发送框发送表情图4-5表情活动图4.5.6字体设置 用户在聊天界面的功能模块中,单击字体功能按钮,在弹出的字体设置框中选择所需要设置的字体颜色、字体大小、字体类型、字体显示方式,并在字体设置框中通过字体效果图显示出当前设置的字体效果,并将设置好的字体属性应用到自己的发送信息中。应用到发送信息中显示设置的字体效果用户手动设置图4-6字体设置活动图4.5.7记录保存用户在公聊和私聊的过程的同时,将显示在信息窗体中的聊天内容保存到本地文件中,用户在下次登入时会自动显示历史聊天内容。用户保存按钮保存到记录文件单击 图4-7 记录保存活动图4.5.8系统消息用户管理员通过启动服务器后,

30、可以通过服务器操作界面象全部在线的用户发送系统消息,用于发送公告,提示等系统消息,可以方便管理员和客户的交流和管理11。用户服务器显示出系统消息发送系统消息 启动 发送系统消息 消息内容有误 正确图4-8系统消息活动图第5章 详细设计本系统采用C/S设计模式,系统分为客户端和服务器端,客户端包括注册模块、登入模块、公聊模块、私聊模块、功能设置模块、和客户端功能实现模块等。服务器端包括服务器界面,服务器功能实现模块等。5.1 客户端注册功能描述用户必须填写注册给定的全部选项,并且按照正确的格式输入,如年龄一项只能输入数字的格式等等,并可以在申请注册前验证输入的用户名是否已被使用。综合设计实现该功

31、能所写的类为13:(1) Register类: 用于构建注册的主界面主要成员变量 :String custName,String custPassword,String age,String email,String sex,String head;主要方法: Register() /实现界面元素和设定元素属性actionPerformed () /按钮事件响应mes() /点击事件处理actionPerformed()图5-1注册的主界面(2)SendRegInfoThread类 用来检测注册的用户名是否已被使用主要成员变量String username; Socket socket; Ob

32、jectInputStream o_in;ObjectOutputStream o_out;主要方法:publicSendRegInfoThread(String name) username=name;/构造方法用于初始化public void run() /实现将信息的发送给服务器图5-2用户名可以使用图5-3检测到注册的用户名已被使用(3) SendRegInfoSucThresd类 /发送注册消息内容主要成员变量Socket socket; ObjectOutputStream o_out; ObjectInputStream o_in; HashMap hm; Object info

33、; 主要方法public SendRegInfoSucThread(Object info) =info;/构造方法public void run() /实现将注册信息发送给服务器(4)RegisterData /用户发送给服务器端的注册类型数据主要成员变量: private String userName;private String passWord;private String userAge;private String email;private String sex;主要方法:分别get,set上面的五个变量,获得用户的输入的名字,密码,年龄,电子邮件和性别的信息

34、。5.2 登入功能描述 在设置好IP和端口号的条件下,用户在登入界面输入已注册好的用户名和密码登入,通过验证后登入聊天室主界面,输入错误返回提示。实现该功能的主要类和方法14(1)Land类 /实现登入的主窗体主要成员变量:String hostid; /服务器IP地址int server_port; /服务端口Socket client_socket; /final File propertyFile; /属性文件:主要方法:public Land() /用于初始化登入界面的元素public void actionPerformed(ActionEvent e)/连接服务器的方法体publi

35、c void run() /显示登入主窗体主方法图5-4登入的主窗体图5-5登入失败(2)LoginData 类 /发送登入数据类型主要变量:private String userName;private String passWord;主要方法:分别用get,set方法获得userName和passWord两个变量的值。5.3 公聊图5-6公聊时序图 功能描述用户在公聊界面的信息输入框中输入要发送的信息和表情等,用户可以通过功能设置按钮设置自己定义的字体属性 ,如:字体类型 、字体大小 、字体颜色 、字体显示方式、表情等,并可以应用到信息输入框中, 点发送按钮实现信息的发送。并可以显示其他用

36、户发送的公聊信息和系统所发送的系统信息,并且按照发送来的信息中包含好的显示方式正确显示出信息。用户上线或下线时要在显示窗体中给出提示,并刷新用列表中的用户名。并可以通过双击用户名弹出与该用户进行私聊的对话窗体。 综合设计实现该功能的主要类和方法(1)PublicChat类 /公聊界面本模块主要要实现显示在线用户列表,可以保存聊天记录,可以发送表情图片,可以显示对方发过来的字体信息,并且自己可以发送消息,显示自己的用户名的功能。并且有保存聊天记录,背景,字体,表情的按钮。5.4、私聊 功能描述用户在私聊界面的信息输入框中输入要发送的信息和表情等,用户可以通过功能设置按钮设置自己定义的字体属性 ,

37、如:字体类型 、字体大小 、字体颜色 、字体显示方式、表情等,并可以应用到信息输入框中, 点发送按钮实现私聊信息的发送。并可以显示其他用户发送过来的私聊信息,并且按照发送来的信息中包含好的显示方式正确显示出信息。 综合设计实现该功能所用的主要类和方法:(1)PersonalChat类 /私聊界面类其中包括显示聊天内容的文本面板,显示发送消息的文本面板,发送消息按钮,关闭窗体按钮,显示聊天内容的按钮等。图5-7私聊时序图5.5发送系统消息5.5.1功能描述服务器端收到用户上线或下线时发送给其他在线用户消息提示,并可以根据需要,主动发送消息给客户,实现服务器端的管理。5.5.2综合设计实现功能的主

38、要类和方法(1) ServerInterFace类 /服务器的用户界面privatevoid initCompenent() /组件初始化class StartServer implements ActionListener /内部类启动和关闭监听(2) TalentServer类 /服务器启动模块public void run() / 发送系统消息 class SysinfoBuAction implements ActionListener /启动服务器图5-8服务器显示客户端出入情况图5-9聊天主窗口5.6字体设置5.6.1功能描述每个用户可以根据自己的个人喜好设置自己要发送的内容的字体

39、属性。并可以在其他目的客户界面按照自己所设置的显示方式显示。主要设置了三种字体的属性,分别为字体的样式、大小和字型。5.6.2综合设计实现该功能的主要类和方法15:(1) Fontset类 /字体设置窗体面板public void actionPerformed(ActionEvent e) /实现设置字体颜色,选择字体类型,选择字体大小,选择字体显示方式功能private void updataFont() /显示更改后的字体表现图5-10设置字体属性,并显示效果5.7发送表情5.7.1功能描述 用户本地保存按照一定方式命名的图片文件,通过本地图片文件构建出表情窗体,在用户公聊或私聊时可以同

40、时,可以单击表情按钮打开表情窗体,通过鼠标事件可以将选择的表情写入发送窗口中,以增强聊天的表达方式和效果。可以使聊天功能、更丰富更有趣。5.7.2综合设计实现功能的主要类和方法(1)FaceFrame类 /显示表情窗体图5-11表情窗体效果图5.8记录保存5.8.1功能概述本系统可以在应用中将用户聊天的记录保存在本地文件当中,用户在本地下次登入后,可以查看历史聊天记录。方便用户继续聊天。5.8.2综合设计实现该功能使用的主要类和方法:(1)ChatInfoSave类 /保存信息的方法类5.9功能逻辑实现5.9.1逻辑功能描述本系统采用数据对象流的形式发送和接受信息。客户端连接服务器成功后就启动

41、一个客户端线程和服务器通信。客户端发送的信息分为:注册消息、注册时用户名验证消息、登入消息、公聊消息、私了消息、下线消息等。 服务器端启动一个线程不断的监听客户的请求,当接受到客户请求时就启动一个和该客户端通信的线程。服务器端发送的信息分为:注册成功消息 注册失败消息、注册时验证用户名成功消息、注册时验证用户名失败消息、登入成功消息、登入失败消息、转发公聊消息、转发的私了消息、刷新列表名消息等。5.9.2综合设计(1)TransferMap类 /用于客户端与服务器之间的消息传递(2)LoginData类 /用于登入时发送的信息对象类型(3)RegisterData类 /用于注册时发送的信息对象

42、类型(4)ChatInformation /用于用户公聊或私聊时发送的信息对象类型(5)ClientThread类 /客户端连接服务器成功后启动的线程(6)ServerAffairThread类 服务器端为用户启动的服务器线程(7)LineDialog类 /实现提示用户私聊消息(8)Display_chatifn类 /显示信息内容第6章系统测试为了确保本系统能够正常运行,需要在发布之后做一次较全面的测试。现将具体操作及过程举例说明如下:测试举例测试程序登录界面打开程序后,首先出现的是登录页面,在设置好网络IP和端口号之后,输入用户名和密码,如果连接服务器成功则提示用户输入的用户名和密码是否正确

43、,否则提示连接不到服务器,并提示正确设置服务器IP和服务端口。测试程序主界面进入主界面后,主页面会显示在线用户列表区、信息显示区、功能设置区、信息发送区、功能按钮区。用户可以在用户列表中看到目前在线的其他用户,并在信息显示区内看到系统提示。用户可以在信息发送区内输入自己的发送内容,并可以通过功能设置区设置字体内容的属性和发送表情。可以通过单击用户列表名中的用户弹出私聊窗体,进行私聊,发送的信息其他用户不可以见。在主界面的显示区中可以不断的查看到其他用户发送过来的信息,并可以通过点击查看记录按钮查看保存的聊天记录。测试程序退出当单击退出按钮或窗体的关闭时,用户将发送退出信息,离开聊天室,其他用户

44、可以得到系统提示用户下线并刷新用户列表。当服务器出线异常或关闭时,客户端将提示服务中断并退出系统。测试项目由于实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是软件开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占软件开发总工作量的30%以上。因此,我们必须重视测试工作。由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度

45、出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随不同阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的16。单元测试单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对

46、源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。组合测试组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。确认测试确认测试是对通过组合测试的软件进行的,

47、这些软件已经存于系统目标设备的介质上,确认测试的目的是表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。系统测试系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统是否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。用户验收

48、测试在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。测试方法一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来对每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试

49、,后一种方法称为白盒子测试。黑盒测试又称为功能测试,白盒子测试又称为结构测试【17】。因为时间和项目的关系,没有完全按照上述的测试方法进行系统的测试,但在在开发的过程当中,保证部分合理的测试,并正确运行验证,证明本系统具有相当程序的稳定性。第7章缺陷与完善7.1 软件存在的问题软件虽然已经编写好了,但是还存在许多需要改进的地方,同时还存在着一些小问题。还有一些功能上的缺陷:(1)操作的方便性、比如可以为一些常用按钮设置快捷键,象登入系统时,输入完用户名和密码后直接回车;在用户输入完要发送的内容时,设置发送内容的快捷方式ctrl+回车等。(2)在功能方面可以进一步增加,如实现用户间的文件传输,并

50、可以进行视屏,共享音乐等高级功能。(3)执行效率方面可以有待提高,优化代码结构,减少系统内存泄露,提高运行稳定性等7.2 使界面变得更加美观由于一直专注于功能的实现,从而忽略了界面的设计,本软件今后可以为用户添加不同的头像,并可以使窗体风格更合理和更美观,并且要使用户有更多的自定义功能,设置自己的喜好和风格。结 论首先,我选择本课题缘由是对项目有较深的理解和对聊天通讯软件有丰富的使用和接触经验,可以设计和开发本项目时更有效率。并且对网络开发有浓厚的兴趣,对具有网络功能的项目更有成就感。大学四年的学习期间,通过学校开设的基础课程,扎实系统的学习了软件的基础知识,并对面向对象编程语言有了进一步的理

51、解,对软件专业逐步的建立起自己的知识体系框架。通过这次的毕业设计,使自己在JAVA2编程语言的使用方面得到一个全面锻炼自己的机会,在个模块的界面开发方面,充分的学习和利用了JAVA Swing界面开发技术,使自己在界面应用和布局方面得到更多的实践,应用Socket技术实现网络连接功能,对网络的实现和通信方面有了进一步的理解,并通过多线程方面的应用,使客户端和服务端可以实现多任务功能,在整个开发过程当中应用软件工程的开发步骤,使自己专业理论知识的到进一步的巩固,项目开发经验有不少的收获。通过完成这次毕业设计项目,使自己在项目实际开发方面有了进一步的提高,并使自己感觉到成功的喜悦,并对自己在专业的

52、未来发展更充满信心,对自己在今后的工作中更好的帮助。参考文献1 美Rogers Cadenhead. Java编程入门经典.梅兴文译.第4版.北京:人民邮电出版社,20072美Bruce Eckel. Thinking In Java.英文第4版.北京:机械工业出版社,20073陈轶.姚晓昆编著.Java程序设计实验指导.北京:清华大学出版社,20064杨昭编著.二级Java语言程序设计教程.北京:中国水利水电出版社,20065赵文靖编著.Java程序设计基础与上机指导.北京:清华大学出版社,20066Java.西安:西安电子科技大学出版社,20067王路群.Java高级程序设计.北京:中国水

53、利水电出版社,20068雍俊海编著.Java程序设计习题集.北京:清华大学出版社,20069朱福喜编著.Java语言习题与解析.北京:清华大学出版社,200610 吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社,200611 柳西玲.许斌编著.Java语言应用开发基础.北京:清华大学出版社,200612 施霞萍等编著.Java程序设计教程 第2版.北京:机械工业出版社,200613 美Herbert Schidt著.Java参考大全.鄢爱兰.鹿江春译.北京:清华大学出版社,200614 宛延闿等编著.实用Java程序设计教程.北京:机械工业出版社,200615 陈国君等编著.Java2程序设计基础.北京:清华大学出版社,200616 郑莉.王行言.马素霞编著.Java语言程序设计.北京:清华大学出版社,200617 丁振凡主编.Java语言实用教程.北京:北京邮电大学出版社,2005致 谢在这几个月的毕业设计过程中,通过导师的指导,了解并熟悉了完成一个项目的具体过程和步骤,使自己在整个过程当中不段的学习解决问题的能力。软件专业是一门比较热门和前沿的学科,涉及许多知识领域和技术,拥有许多最新知识资料,应在项目的开发过程中,不断的查阅相关的帮助文档。程序的开发过程要养成良好的习惯,并遵循一定的标准规范,将项目进行合理分析设

温馨提示

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

评论

0/150

提交评论