• 332.44 KB
  • 2022-04-22 13:54:54 发布

java Socket技术开发网络聊天室毕业论文.doc

  • 39页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'javaSocket技术开发网络聊天室毕业论文目录首页…………………………………………………………………………………中文摘要……………………………………………………………………………英文摘要……………………………………………………………………………第一章绪论………………………………………………………………………..1.1聊天室的发展………………………………………………………………………1.2即时通讯的9大应用………………………………………………………………第二章实现聊天室的相关技术及环境……………………………………………2.1Java的概述………………………………………………………………2.2Java的特点………………………………………………………………2.3TCP/IP协议常识…………………………………………………………2.4SOCKET的简介……………………………………………………………2.5系统开发工具……………………………………………………………第三章网络聊天系统的系统设计…………………………………………………3.1项目概述………………………………………………………………3.2功能需求………………………………………………………………3.3聊天室系统的系统设计………………………………………………3.3.1聊天系统工作原理……………………………………………3.3.2系统实现原理…………………………………………………第四章聊天室系统的实现及测试…………………………………………………4.1总结致谢参考文献附录部分源程序代码 第1章绪论网络技术是计算机领域中发展最为迅速的技术之一,它在政治、经济、生活等各个方面发挥着十分重要的作用。随着计算机网络的普及和推广,将会有越来越多的人利用网上资源,享受不断发展和完善的网络服务,以此来提高工作效率和水平。随着我国经济的发展和网络的普及,网络技术也越来越多地被应用于日常工作之中。在程序设计领域,面向对象的编程技术正在逐步代替面向过程的程序设计技术,成为计算机应用设计开发的主流,尤其在网络技术开发中,面向对象的Java语言编程和相关的Java技术正在以前所未有的速度发展。网上购物、网上银行、远程教学、网络聊天、网络游戏等都开始使用Java技术。而且Java使平台无惯性的思想成为现实,独立的Java程序可以被编译为与平台无关的字节码,这种字节码可以运行在任何拥有Java解释器的机器上。真正降低了企业成品和程序员的负担。随着信息科学的进步与互联网络的发展,虽然通过网络的聊天软件很多,但针对于内部系统的、局域网内的聊天和公司内部的上下级沟通的聊天通讯软件却很少。所以开发一个此类型的即时通讯系统就变得非常有意义了。1.1 聊天室的发展聊天室作为即时通讯的一种,即时通讯(InstantMessenger,简称IM)软件可以说是目前我国上网用户使用率最高的软件,无论是老牌的ICQ,还是国内用户量第一的腾讯QQ,以及微软的MSNMessenger都是大众关注的焦点,它们能让你迅速的在网上找到你的朋友或工作伙伴,可以实时交谈和互传信息。而且,现在不少IM软件还集成了数据交换、语音聊天、网络会议、电子邮件的功能。IM软件的历史并不久远,但是它一诞生,就立即收到网民的喜爱,并风靡全球。在它的发展史上,以色列人是功不可没的。正是四位以色列籍的年轻人,在1996年7月成立的Mirabilis公司,并于同年11月推出了全世界第一个即时通讯软件ICQ,取意为“我在找你”——“ISeekYou”,简称ICQ了。知道现在,ICQ已经推出了它的2002a版本,在全球即时通讯市场上占有非常重要的地位。目前,国内最为流行的即时通讯软件是OICQ(简称QQ)。它以良好的中文界面和不断增强的功能形成了一定的QQ网络文化。Messenger虽出道较晚,但依托微软的强大背景,实力也不可小视。最为Windows XP的一部分,Messenger整合了操作系统的许多功能,如多种形式的聊天选择、多人的单窗口讨论式交流以及充分的文件与桌面共享功能等。它的令人耳目一新的中文界面和注册方式,连同它强大的功能了,着实吸引了众多的眼球的注视,此外还有许多有特点的IM软件。1.2 即时通讯的9大应用第2章系统开发环境与工具的选择2.1 本课题开发环境的选择在进行开发之前,首先决定的第一个问题就是,该使用什么开发环境来编写该系统?以目前常用的开发语言来讲有C/C++、.NET技术,JAVA、VisualBasic几种。还有Eclipse,、BorlandJBuilder等,这些并不是程序语言,而是程序语言在建构程序时的“集成开发工具”,不过它们在开发设计的过程中也占有相当重要的角色,因为选用正确的集成开发工具,可以加速程序设计的进行、测试与排错,因而对整体进度具有决定性的影响。基于以下几点,选择JAVA语言开发技术。1、就执行平台而言,必须考虑的问题之一是用户可能使用的操作系统。 用户可能使用的是WindowsLinux。JAVA语言具有平台无关性,可以不需要任何修改就可以运行在支持JAVA的任何计算机上。2、JAVA的Swing组件开发技术可以开发丰富的图形界面,并且SwingAPI类提供了丰富的外部接口和方法,可以方便实现系统功能。3、就项目开发而言,纯粹的面向对象,加上数量巨大的类所提供的方法(函数)库的支持,使得利用Java开发各种应用程序,可以说是易如反掌。此外,在程序除错、修改、升级和增加新功能等方面,因其面向对象的特性,使得这些维护也变得非常容易。4、Java支持内在的多线程运行,提供分布式的并发机制,运行效率高。5、异常处理,为了使Java程式更稳定、更安全,Java引入了异常处理机制。能够在程序中产生异常情况的地方,执行相对应的处理,不至于因突发或意外的错误造成执行中断或是死机。通过这种异常处理,不仅能够清晰地掌握整个程序执行的流程,也使得程序的设计更为严谨。6、高性能,Java可以在运行时直接将目标代码翻译成机器指令。Sun用直接解释器一秒钟内可调用300,000个过程。翻译目标代码的速度与C/C++的性能没什么区别。7、网络功能,Java可以说是借助因特网而重获新生的,自然具备编写网络功能的程序。不论是一般因特网/局域网的程序,如Socket、Email、基于Web服务器的Servlet、JSP程序,甚至连分布式网络程序,如CORBA、RMI等的支持也是非常丰富的,使用起来也很方便。8、源回收处理,Garbage Collection是由JVM对内存实行动态管理的。程序需要多少内存、哪些程序的内存已经不使用了,需要释放归还给系统,这些烦琐且危险的操作全部交由JVM去管理。让我们能够更专心地编写程序,而不需要担心内存的问题。内存的统一管理,对于跨平台也有相当大的帮助。2.2 本课题开发工具的选择 Java的开发工具很多,而且各有优缺点,Eclipse是一个开放可扩展的集成开发环境(IDE)。它不仅可以用于Java的开发,通过开发插件,它可以构建其他的开发工具。Eclipse是开放源代码的项目,并可以免费下载。支持最新的Java标准,并且缩短了开发周期。一直以其友好的集成开发环境在业界受到广泛的赞誉,这也是Eclipse一直是广大程序员最喜爱的Java开发工具的原因之一。Eclipse的可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。用户可以在集成开发环境中创建工程和打开工程,建立、打开和编辑文件,并可以编译、运行和调试应用程序。可以说在Eclipse集成开发环境中开发Java程序,快速而且高效。其主要特点如下:1.开放的可扩展的IDE2.成功的底层图形界面API3.强大的插件加载功能4.可以通过导入一些CVS相关的插件来实现版本管理的便易性2.3 本课题开发技术的选择本课题选择了javaSocket技术开发网络聊天室。什么是socket?socket是一种用于表达两台机器之间连接“终端”的软件抽象。对于一个给定的连接,在每台机器上都有一个socket,你可以想象一个虚拟的"电缆"工作在两台机器之间,“电缆”插在两台机器的socket上。当然,物理硬件和两台机器之间的“电缆”这些连接装置都是未知的,抽象的所有目的就是为了让我们不必了解更多的细节。简单的说,一台计算机上的socket同另一台计算机通话创建一个通信信道,程序员可以用这个信道在两台机器之间发送数据。当你发送数据时,TCP/IP协议栈的每一层都给你的数据里添加适当的报头。有个好消息是java语言隐藏了所有这些细节,这也是为什么他们有时被叫做“流socket”。思考一下socket像电话听筒一样在电话的任意一端--你和我通过一个专门的信道来进行通话和接听。会话将一直进行下去直到我们决定挂断电话(除非我们使用蜂窝电话),除非我们挂断电话,否则我们各自的电话线路都会占线。如果你需要在两台机器之间进行通讯而不使用高级机制像ORBs(以及CORBA,RMI,IIOP等等),socket比较适合你。Socket的底层机制则相当棘手。幸运的是,java平台给我们一些虽然简单但是相当强大的高层抽象以至于我们创建和使用socket更加容易一些。一般而言,javasocket有下面两种类型:•TCPsocket(由Socket类实现,下面的章节我们将对其讨论) •UDPsocket(由DatagramSocket类实现)TCP和UDP扮演同样的角色,但是实现是不同的。两者都接收传输协议数据包并把它们传递到表示层。TCP把信息分解成数据包(datagrams)并在接收端重新组装起来。它还对丢失的数据包进行重新传输的请求。TCP减少了上层的担忧。UDP没有组装和重传请求的功能。它只是传输数据包。更高层的层必须确保信息的完整性以及组合顺序的正确性。第3章需求分析3.1 项目概述3.1.1 产品描述: 人们日常生活中越来越多地使用这项新的技术来为自己的工作和学习服务。一个操作简单、界面友好、运行稳定的网络聊天室对于小型局域网内的用户可以起到很好的交流作用。本聊天室,所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过网上聊天室将自己融入整个主流社会中。由于目前上网的一般都是具有高学历的新一代创业者,因此,在网上聊天室这个虚拟的社会中,可以结交各层次各地方的朋友,从而为自己获取更多的知识和更多的阅历。该小聊天室是为许多喜爱上网聊天的朋友开发设计的,希望能在现有的众多聊天室中给大家多一种的选择。和许多大型的网络聊天室相比该小聊天室比较简单,但能实现聊天的基本功能,点对多聊天,点对点聊天等,基于时间和技术的原因,很遗憾传送文件的功能尚未实现。本聊天室主要由注册界面、登录界面、聊天室界面、私聊界面、查看聊天内容界面、功能设置界面等构成。整个设计简洁明了、实用,使用简单。客户端登入用户登入用户注册通信公聊私聊功能设置字体颜色字体类型字体大小表情记录保存公聊记录添加文字图3-1客户端结构图 服务器监听请求显示登入情况发送系统消息图3-2服务器结构图3.1.2 产品功能本项目具有以下主要功能客户端:Ø用户注册功能,实现用户的登入ID注册和个人信息。Ø用户登入功能,实现合法注册用户的登入。Ø公聊功能,实现用户和在线的所有用户聊天方式。Ø私聊功能,实现用户和在线的其他用户一对一的聊天方式。Ø查看聊天记录,实现用户查看已聊天的历史聊天内容,分为公聊记录和私聊记录。Ø发送表情和设置聊天内容字体,并可以设置字体颜色和背景色等。服务端:Ø可以不断的监听客户端请求Ø显示登入客户的信息Ø发送系统消息 3.2 功能需求3.2.1 用户注册需求描述:用户填写系统给出的注册项目,并提交给系统,成功注册后,系统生成用户所注册的登入ID,并保存在字段当中。执行者:用户前置条件:无后置条件:无正常过程:Ø向服务端发送注册请求;Ø服务端响应客户端,客户端弹出注册信息表单;Ø用户填写完表单后将注册数据传给服务端处理,并保存在字段中;Ø返回客户端一个响应,显示用户注册的ID,提示注册成功。异常过程(可选):Ø用户填写表单的数据格式不正确或表单中存在空缺的项,客户端给予提示信息,并将光标定位到出什么不能为空或注册错误的地方;Ø用户注册的项在数据库中发生冲突,客户端提示注册不成功并提示已有用户注册;Ø服务器未启动或出现异常。3.2.2 用户登入需求描述:用户填写登入ID和密码,经服务器验证成功后进入聊天室主界面。执行者:用户前置条件:用户成功注册或已经拥有一个合法的ID号后置条件:无正常过程:Ø向服务端请求连接,并发送登录信息;Ø服务端处理并查询数据库中的用户信息; Ø返回客户端一个响应,提示登录成功,弹出聊天室主界面;Ø刷新其他在线用户的用户列表信息。异常过程(可选):Ø用户填写的ID或密码与数据库中的纪录不匹配,客户端;Ø提示登录失败;Ø客户端设置的服务器地址或端口有误。3.2.3 公聊需求描述:用户在聊天室公聊界面的发言内容,聊天室中的其他在线用户可以正常接受并正确显示(包括发送的表情和用户设置的字体颜色)。执行者:登入用户前置条件:用户登录成功后置条件:无正常过程:Ø客户端用户登入成功后,启动客户端功能线程;Ø客户端将用户发送的信息打包传送给服务端;Ø服务端进行数据分析后,并将用户的信息进行正确的处理;Ø传给处在聊天室的所有在线其他用户并正常显示。异常过程(可选):Ø客户端与服务端断开连接,客户端提示信息发送失败;Ø服务器未登录上线,客户端无法发送信息。3.2.3 私聊需求描述:用户可选择聊天室的在线用户列表中任意一个用户聊天,双方发送的信息对于聊天室的其他用户是不可见的。执行者:私聊用户前置条件:用户登录成功,私聊的对方在线后置条件:无正常过程: Ø客户端与服务端建立通讯;Ø客户端将用户发送的信息打包传送给服务端;Ø服务端进行数据分析,查找目的用户的ID,并将用户的信息传给目的用户;Ø目的用户收到服务器的信息后,正确的显示并保存。异常过程(可选):Ø客户端与服务端断开连接,客户端无法发送消息。特殊需求(可选):不能与不在线的用户进行私聊。3.2.4 发送表情需求描述:用户的聊天内容可以是表情图片执行者:用户前置条件:用户可以正常聊天后置条件:无正常过程:Ø客户端与服务端建立通讯;Ø客户端将表情所表示的信息传送给服务端;Ø服务器端进行数据分析后,查找目的用户的ID,并将所处理的信息传给目的用户;Ø目的用户端通过本地文件将信息翻译成表情并正确显示在显示窗体中。异常过程(可选):Ø客户端与服务端断开连接,客户端无法通讯。3.2.5 聊天记录需求描述:用户可以查询聊天的历史纪录,包括公聊记录和私聊记录。执行者:用户前置条件:用户正确登入后后置条件:无正常过程: Ø发送、接收信息的同时将信息保存在本地文件中;Ø从保存的txt文档中可以查询到历史聊天记录;Ø从本地文件中读取信息,并显示在记录显示匡中。异常过程(可选):Ø服务端异常导致客户端退出,客户端提示服务器异常。3.2.6 系统消息需求描述:在聊天室的每一个用户都能接收服务端发送的的信息提示消息。执行者:服务端前置条件:服务端正常运行后置条件:无正常过程:Ø服务器向所有在线用户发送消息;Ø客户端接收到消息,进行消息处理,并正确显示;异常过程(可选):Ø服务端异常,重启服务器。3.2.7 字体属性设置需求描述:用户可改变输入消息的字体及颜色执行者:用户前置条件:用户可以正常聊天后置条件:无正常过程:Ø用户为聊天信息选择新的字体和颜色;Ø客户端将聊天信息及字体和颜色信息封装,发送到服务端;Ø服务端处理接受到的数据并正确转发;Ø目的客户端将接收到的信息解包,根据信息的内容,改变信息显示的字体及颜色,并在目的客户端正确显示出字体效果。异常过程(可选): Ø对方不支持字体属性的显示。3.2.8 清屏效果需求描述:清楚所有的文字消息执行者:用户前置条件:用户正常登录后后置条件:无正常过程:Ø文字过多,用户可清楚用户自己上的所有的文字消息。异常过程(可选):Ø服务器出现异常,清屏效果无效。3.2.9 时钟效果需求描述:显示时间执行者:用户前置条件:用户正常登录后后置条件:无正常过程:Ø点击时钟,显示现时时间的多少。异常过程(可选):服务器出现异常,时间无效果3.2.10 用户退出需求描述:用户在正常情况下退出聊天室。执行者:用户前置条件:用户成功登录聊天室后置条件:无正常过程: Ø向服务器发送用户退出消息;Ø服务器进行用户退出的数据处理;Ø服务器向聊天室其他用户发送登出消息;Ø刷新其他在线用户的用户列表信息。 第4章概要设计4.1 目的该阶段目的在于明确网络聊天室系统的数据结构和软件总体结构,各个软件模块的功能说明,数据结构的细节,系统运行配置与应用方式以及使用的关键技术。4.2 运行环境运行环境见下表。表 4.1名称操作系统类型推荐操作系统版本推荐硬件(CPU/RAM/HD)数据库客户端Windows平台windows2000以上P41.7G/256M/40G服务器Windows平台windows2000以上P43.6G/8G/120G4.3 体系结构概述本系统采用C/S的结构设计模式,客户端接收用户的发送的信息到服务器,服务器通过处理转发到另一些客户端。客户端采用图形用户界面,方便与用户交互。服务器端用控制台的方式方便控制操作。系统设计总体原则:本设计不限制用户的组网方式。但对于互联网环境下的安全问题,本系统不能保证解决。系统要具有较强的灵活性,包括对功能设置的管理。整个系统使用简单,界面要美观、大方,具有人性化特点。模块划分简单明了,充分考虑用户已经习惯的划分分类。客户端分为用户注册、用户登录、信息通讯、管理和查询聊天记录。用户注册和用户用登录封装在用户登录的界面中,用户列表模块封装在系统的主界面中,信息通讯、管理和查询聊天记录模块封装在聊天界面中。服务器端实现消息接收、消息转发、检索等功能。 4.4 功能设计4.4.1 用户注册注册注册界面正确填写注册项提交注册成功用户注册不正确通过注册模块实现用户的在线注册,所填写的注册项目有:用户名、头像、密码、密码确认、性别、年龄和电子邮件。图4-1 注册图4.4.2 用户登录用户进到登入界面,填写登入用户名和密码实现系统的登入 用户进入登入界面输入用户名,密码提交进入系统用户名和密码错误图4-2 登录图4.4.3 公聊用户登入成功后进入公聊界面,通过输入聊天内容实现和其他的用户聊天,信息显示框输入聊天信息发送信息用户并可以显示其他用户发送的公聊信息。图4-3 公聊图 4.4.4 私聊用户通过选择在线用户列表的其他用户,通过单击列表中的用户名显示与其私聊的对话框,实现和选中的用户进行私聊方式进行交流,其他用户不可见。选择其他用户输入信息发送信息信息显示框用户图4-4 私聊图4.4.5 表情在用户公聊或私聊时可以同时,可以单击表情按钮改变表情的方式,通过鼠标事件可将选择的表情写入发送窗口中,以增强聊天的表达方式和效果。可以使聊天功能更丰富更有趣。 表情发送到信息显示框选着表情发送表情单机表情功能用户图4-5 表情图4.4.6 字体设置用户在聊天界面的功能模块中,字体设置框中选择所需要设置的字体样式、字体类型、字体大小,并在信息显示框中显示出当前设置的字体效果,并将设置好的字体属性应用到自己的发送信息中。字体设置输入信息发送信息信息显示框用户显示字体效果图4-6 字体设置图 4.4.7 记录保存用户在公聊和私聊的过程的同时,将显示在信息窗体中的聊天内容保存到本地文件中,用户可以通过单击本地文件查看历史聊天记录内容,并可以在下次登入后,查看历史聊天的记录。保存按钮查看聊天记录本地记录文件夹用户单击保存查看图4-7 记录保存图4.4.8 系统消息用户管理员通过启动服务器后,可以通过服务器操作界面象全部在线的用户发送系统消息,用于发送公告,提示等系统消息,可以方便管理员和客户的交流和管理。 用户服务器输入系统消息发送系统消息用户系统管理显示在所有客户端图4-8 系统消息图4.4.9清屏效果用户通过登录客服端后,点击客服端上的清屏效果消除所有的聊天信息,这样可以使界面干净整洁,使用的用户操作更方便。登录客服端输入信息发送信息信息显示框用户显示清屏效果点击清屏图4-9 清屏效果图 4.4.10 时钟效果用户通过登录客服端后,点击客服端上的时间效果显示时间,这样可以使用户把握住时间的快慢多少,提高用户的时间观。登录客服端用户显示时间效果点击时钟 第5章详细设计本系统采用C/S设计模式,系统分为客户端和服务器端,客户端包括注册模块、登入模块、公聊模块、私聊模块、功能设置模块、和清屏效果和时钟效果。服务器端包括服务器界面,服务器功能实现模块等。5.1客户端注册l功能描述用户必须填写注册给定的全部选项,并且按照正确的格式输入,如年龄一项只能输入数字,的格式等等,并可以在申请注册前验证输入的用户名是否已被使用。l综合设计实现该功能所写的类为:(1)、ZheceRegister类:用于构建注册的主界面主要成员变量:lblUserName,lblGender,lblAge;lblPassword,lblConfirmPass,lblEmail,logoPosition;主要方法:publicZhuceRegister(Stringip){}//构造方法(2)、xxx类用来检测注册的用户名是否已被使用主要成员变量:主要方法: (3)、xxx类发送注册消息内容主要成员变量:主要方法:(4)、xxx用户发送给服务器端的注册类型数据主要成员变量:主要方法:用户服务器Data3:发送注册消息1:验证信息2:返回验证成功5:验证失败6:返回注册响应5.2登入l功能描述在设置好IP和端口号的条件下,用户在登入界面输入已注册好的用户名和密码登入,通过验证后登入聊天室主界面,输入错误无法登录。l综合设置实现该功能的主要类和方法(1)、DengluLogin类实现登入的主窗体主要成员变量:lblServer,lblUserName,lblPassword,lblLogo; 主要方法:publicDengluLogin(){}//构造登陆的窗体(2)、xxx类发送登入数据类型主要成员变量:主要方法:用户服务器客服端3:发送登录信息1:IP验证成功2:帐号密码验证成功5:返回登陆信息4:验证失败5.3公聊l功能描述 用户在公聊界面的信息输入框中输入要发送的信息和表情等,用户可以通过功能设置按钮设置自己定义的字体属性,如:字体样式、字体类型、字体大小、字体显示方式、表情等,并可以应用到信息输入框中,点发送按钮实现信息的发送。并可以显示其他用户发送的公聊信息和系统所发送的系统信息,并且按照发送来的信息中包含好的显示方式正确显示出信息。用户上线或下线时要在显示窗体中给出提示,并刷新用列表中的用户名。并可以通过双击用户名弹出与该用户进行私聊。l综合设置实现该功能的主要类和方法(1)、xxx类公聊界面主要成员变量:主要方法:本地文件用户服务器其他在线用户本地文件6:文件输入流读取5:文件输出流保存1:发送消息2:发送消息3:文件输出流保存4:文件输入流保存5.4、私聊l功能描述用户在私聊界面的信息输入框中输入要发送的信息和表情等,用户可以通过功能设置按钮设置自己定义的字体属性,如:字体样式、字体类型、字体大小、字体显示方式、表情等,并可以应用到信息输入框中, 点发送按钮实现私聊信息的发送。并可以显示其他用户发送过来的私聊信息,并且按照发送来的信息中包含好的显示方式正确显示出信息。l综合设置实现该功能所用的主要类和方法(1)、xxx类私聊界面类主要成员变量:主要方法:本地文件用户服务器其他在线用户本地文件6:文件输入流读取5:文件输出流保存1:发送消息2:发送消息3:文件输出流保存4:文件输入流保存5.5 发送系统消息l功能描述服务器端收到用户上线或下线时发送给其他在线用户消息提示,并可以根据需要,主动发送消息给客户,实现服务器端的管理。l综合设置实现功能的主要类和方法(1)、xxx类服务器的用户界面主要成员变量:主要方法: 系统管理员服务器在线用户1:发送系统消息2:发送消息5.6 字体设置l功能描述每个用户可以根据自己的个人喜好设置自己要发送的内容的字体属性。并可以在其他目的客户界面按照自己所设置的显示方式显示。主要设置了三种字体的属性,分别为字体样式、字体类型、字体大小。l综合设置实现该功能的主要类和方法(1)、xxx类字体设置窗体面板主要成员变量:主要方法:5.7 发送表情l功能描述 用户本地保存按照一定方式文字表情文件,通过本地文字表情文件构建出表情文字,在用户公聊或私聊时可以同时,可以单击表情按钮选着表情,通过鼠标事件可以将选择的表情写入发送窗口中,以增强聊天的表达方式和效果。可以使聊天功能、更丰富更有趣。l综合设置实现功能的主要类和方法(1)、xxx类显示表情主要成员变量:主要方法:5.8 记录保存和显示l功能描述本系统可以在应用中将用户聊天的记录保存在本地文件当中,用户在本地下次登入后,可以查看历史聊天记录。方便用户继续聊天。l综合设置实现该功能使用的主要类和方法(1)、xxx类保存信息的方法类主要成员变量:主要方法:5.9 清屏效果l功能描述本系统可以在应用中将用户聊天的所有记录全部删除,使界面更加干净整洁。方便用户继续聊天。l综合设置(1)、xxx类显示清屏效果的方法类主要成员变量:主要方法: 5.10 时钟效果l功能描述本系统可以在用户聊天中查看时间的消息,可以提高用户的时间观。方便用户继续聊天。l综合设置(1)、xxx类显示时钟效果的方法类主要成员变量:主要方法:5.11 功能逻辑实现l逻辑功能描述本系统采用数据对象流的形式发送和接受信息。客户端连接服务器成功后就启动一个客户端线程和服务器通信。客户端发送的信息分为:注册消息、注册时用户名验证消息、登入消息、公聊消息、私了消息、下线消息等。服务器端启动一个线程不断的监听客户的请求,当接受到客户请求时就启动一个和该客户端通信的线程。l综合设置(1)、xxx类//用于客户端与服务器之间的消息传递(2)、xxx类//用于登入时发送的信息对象类型(3)、xxx类//用于注册时发送的信息对象类型(4)、xxx类//用于用户公聊或私聊时发送的信息对象类型(5)、xxx类//客户端连接服务器成功后启动的线程(6)、xxx类//服务器端为用户启动的服务器线程(7)、xxx类//实现提示用户私聊消息(8)、xxx类//显示信息内容 第6章 系统测试为了确保本系统能够正常运行,需要在发布之后做一次较全面的测试。现将具体操作及过程举例说明如下: 6.1 测试举例6.1.1 测试程序登录界面打开程序后,首先出现的是登录页面,在设置好网络IP和端口号之后,输入用户名和密码,如果连接服务器成功则提示用户输入的用户名和密码是否正确,否则提示未能建立到指定服务器的连接口。6.1.2 测试程序主界面进入主界面后,主页面会显示在线用户列表区、信息显示区、功能设置区、信息发送区、功能按钮区。用户可以在用户列表中看到目前在线的其他用户,并在信息显示区内看到系统提示。用户可以在信息发送区内输入自己的发送内容,并可以通过功能设置区设置字体内容的属性和发送表情。可以通过单击用户列表名中的用户点击私聊按钮,进行私聊,发送的信息其他用户不可以见。在主界面的显示区中可以不断的查看到其他用户发送过来的信息,并可以通过本地文件点击查看保存的聊天记录。6.1.3 测试程序退出当单击退出按钮或窗体的关闭时,用户将发送退出信息,离开聊天室,其他用户可以得到系统提示用户下线并刷新用户列表。当服务器出线异常或关闭时,客户端将中断并退出系统。6.2 测试项目由于实际开发过程中还是不可避免地会产生差错,系统中通常可能隐藏着错误和缺陷,不经周密测试的系统投入运行,将会造成难以想象的后果,因此系统测试是软件开发过程中为保证软件质量必须进行的工作。大量统计资料表明,系统测试的工作量往往占软件开发总工作量的30%以上。因此,我们必须重视测试工作。 由于程序中隐藏的缺陷只在特定的环境下才有可靠显露,系统缺陷通常是由于对某些特定情况考虑不周造成的。因此测试不是为了表明程序正确;成功的测试也不是没有发现错误的测试。有意义的软件测试应该是从“破坏”软件系统的角度出发,精心设计最有可以暴露程序系统缺陷的测试方案。因此软件测试的目标应该是以尽可能少的代价和时间找出软件系统中潜在的错误和缺陷。从产品角度看,测试计划中的测试项目包括软件结构中的分系统层、子系统层、功能模块层、程序模块层中的各类模块,从测试本身看,分为单元测试,组合测试,确认测试等。测试对象是随不同阶段而异的,最基本、最初的测试是单元测试,后面的组合测试、确认测试都是以被测过的模块作为测试对象的。6.2.1 单元测试单元测试也称模块测试或程序测试,单元测试是对每个模块单独进行的,验证模块接口与设计说明书是否一致,对模块的所有主要处理路径进行测试且与预期的结构进行对照,还要对所有错误处理路径进行测试。对源码进行审查,对照设计说明书,表态地检查源程序是否符合功能的逻辑要求,是进行单元测试前的重要工作工。单元测试一般是由程序员完成,也称程序调试。6.2.2 组合测试组合测试也称集成测试或子系统测试,通常采用自顶向下测试和自底向上测试两种测试方法。组合测试的对象是指已经通过单元测试的模块,不是对零散模块进行单个测试,而是用系统化的方法装配和测试软件系统,是一个严格的过程,必须认真地进行,其计划的产生和单元模块测试的完成日期要协调起来,这种测试应在系统目标机上进行,造成系统应用的环境条件,除了开发部分项目负责人参加以外,还应该有相应系统的用户参加,给评审员进行演示。6.2.3 确认测试 确认测试是对通过组合测试的软件进行的,这些软件已经存于系统目标设备的介质上,确认测试的目的是表明软件是可以工作的,并且符合“软件需求说明书”中规定的全部功能和性能要求。确认测试是按照这些要求定出的“确认测试计划”进行的。测试工作是由一个独立的组织进行,而且测试要从用户的角度出发。6.2.4 系统测试系统测试是对整体性能的测试,主要解决各子系统之间的数据通信和数据共享问题以及检测系统是否达到用户的实际要求,系统测试的依据是系统分析报告。系统测试应在系统的整个范围内进行,这种测试不只对软件进行,而是对构成系统的硬、软件一起进行。系统测试与建构同时进行或略慢。系统测试需要确认从头到尾的功能正常才算完成,应当尽量避免系统测试延到项目末尾进行。6.2.5 用户验收测试在系统测试完成后,进行用户的验收测试,它是用户在实际应用环境中所进行的真实数据测试。在具体的测试中,一般应遵循以下原则:由程序设计者之外的人进行测试;测试用例应由两部分组成:输入数据和预期输出结果;应选用不合理的输入数据与非法输入测试;不仅要检验程序是否实现预期功能,还应检查程序是否做了不应该做的工作;集中测试容易出错的程序模块;对程序修改以后,必须重新进行测试。6.3 测试方法一般来说,对程序测试有两种测试方法:如果已经知道了软件系统应具有的功能,可通过测试来对每个功能是否都能正常使用;如果知道程序的内部工作过程,可以通过测试来检测程序内部是否按照规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒子测试。黑盒测试又称为功能测试,白盒子测试又称为结构测试。因为时间和项目的关系,没有完全按照上述的测试方法进行系统的测试,但在在开发的过程当中,保证部分合理的测试,并正确运行验证,证明本系统具有相当程序的稳定性。 结论首先,我选择本课题缘由没有较深的理解也是刚刚接触JAVA项目,主要也想试一试,更近一步的提高自己的能力。并且也可以对网络开发产生兴趣,对具有网络功能的项目更有感觉。大学三年的学习期间,通过学校开设的基础课程,扎实系统的学习了软件的基础知识,,并对面向对象编程语言有了进一步的理解,对软件专业逐步的建立起自己的知识体系框架。通过这次的毕业作业,使自己在JAVA编程语言的使用方面得到一个全面锻炼自己的机会,在这个模块的界面开发方面,充分的学习和利用了JAVASwing界面开发技术,使自己在界面应用和布局方面得到更多的实践,应用Socket技术实现网络连接功能,对网络的实现和通信方面有了进一步的理解,并通过多线程方面的应用,使客户端和服务端可以实现多任务功能,在整个开发过程当中应用软件工程的开发步骤,使自己专业理论知识的到进一步的巩固,项目开发经验有不少的收获。(一)软件存在的问题软件已经编写好了,但是还有许多可以改进的地方;同时还存在着一些小问题。还有一些功能上的缺陷,这里我列举一下,并提出一些解决的办法,希望以后可以改进。⑴操作的方便性、比如可以为一些常用按钮设置快捷键,象登入系统时,输入完用户名和密码后直接回车;在用户输入完要发送的内容时,设置发送内容的快捷方式ctrl+回车等。(2)在功能方面可以进一步增加,如实现用户间的文件传输,并可以进行视屏,共享音乐等高级功能。(3)执行效率方面可以有待提高,优化代码结构,减少系统内存泄露,提高运行稳定性等(二)使界面变得更加美观 由于一直专注于功能的实现,从而忽略了界面的设计,本软件今后可以为用户添加不同的头像,并可以使窗体风格更合理和更美观,并且要使用户有更多的自定义功能,设置自己的喜好和风格。通过完成这次毕业设计的项目,使自己在项目实际开发方面有了进一步的提高,并使自己感觉到成功的喜悦,并对自己在专业的未来发展更充满信心,对自己在今后的工作中有更好的帮助。参考文献(1)郭克华J2ME移动开发实战教学视屏eNet网络学院出品(2)胡伏湘雷军环JAVA程序设计实用教程编著清华大学出版社(3)张思民Java开发技术与工程实践清华大学出版社(4)MarkAllenWeiss数据结构与问题求解(Java语言版)(第4版)清华大学出版社(6) 陈轶.姚晓昆编著.Java程序设计实验指导.北京:清华大学出版社,2006(7) 杨昭编著.二级Java语言程序设计教程.北京:中国水利水电出版社,2006(8) 赵文靖编著.Java程序设计基础与上机指导.北京:清华大学出版社,2006 (9) 赵毅主编.跨平台程序设计语言——Java.西安:西安电子科技大学出版社,2006(10) 王路群.Java高级程序设计.北京:中国水利水电出版社,2006(11) 雍俊海编著.Java程序设计习题集.北京:清华大学出版社,2006(12) 朱福喜编著.Java语言习题与解析.北京:清华大学出版社,2006(13)吴其庆编著.Java程序设计实例教程.北京:冶金工业出版社,2006(14)柳西玲.许斌编著.Java语言应用开发基础.北京:清华大学出版社,2006(15)施霞萍等编著.Java程序设计教程第2版.北京:机械工业出版社,2006(16)宛延闿等编著.实用Java程序设计教程.北京:机械工业出版社,2006(17)陈国君等编著.Java2程序设计基础.北京:清华大学出版社,2006(18)郑莉.王行言.马素霞编著.Java语言程序设计.北京:清华大学出版社,2006(19)丁振凡主编.Java语言实用教程.北京:北京邮电大学出版社,2005(20)朱喜福等编.Java程序设计.北京:人民邮电出版社,2005(21)http://java.sun.com/(22)参考新浪聊天室、腾讯聊天室等致谢在这周的毕业设计过程中,通过导师的指导,了解并熟悉了完成一个项目的具体过程和步骤,使自己在整个过程当中不段的学习解决问题的能力。软件专业是一门比较热门和前沿的学科,涉及许多知识领域和技术,拥有许多最新知识资料,应在项目的开发过程中,不断的查阅相关的帮助文档。程序的开发过程要养成良好的习惯,并遵循一定的标准规范,将项目进行合理分析设计。毕业设计是我们大学期间最后的一次锻炼和考核,经过这段时间的努力,使自己在专业知识方面有个全面复习的机会,使自己在设计工程中得到最好的实践锻炼,并学会了许多在一个项目开发过程中必须具备的素质。我要衷心感谢张锦盛导师在我的毕业设计过程中给予我的指导和帮助, 导师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、掌握了基本的研究方法,还使我明白了许多待人接物与为人处世的道理。本论文从选题到完成,每一步都是在导师的指导下完成的,倾注了导师大量的心血。在此,谨向导师表示崇高的敬意和衷心的感谢!感谢导师在繁忙的工作之余阅读并给的建议。同样要感谢身边周围同学提供的意见和帮助,使我能够及时、顺利地完成此次的毕业设计;最后感谢各位专家导师对本论文的审阅!'