1、 滨江学院 毕业论文(设计) 题 目 基于 JAVA 网络聊天室 设计 学生姓名 郭胜航 学 号 20072334069 院 系 滨江学院 电子工程系 专 业 通信工程 指导教师 张艳萍 职 称 教授 二一一 年 五 月 三 十 日I 目 录 目 录 . I 第 1 章 绪 论 . 1 1.1 研究背景 . 1 1.2 研究目的、内容及要求 . 2 1.2.1 目的 . 2 1.2.2 内容 . 2 1.2.3 要求 . 2 第 2 章 系统开发环境与工具的选择 . 3 2.1 开发环境的选择 . 3 2.2 开发工具的选择 . 3 2.3 开发技术的选择 . 4 第 3 章 需求分析 . 5
2、 3.1 项目概述 . 5 3.1.1 产品描述 . 5 3.1.2 产品功能 . 6 3.2 功能需求 . 6 3.2.1 用户注册 . 6 3.2.2 用户登入 . 7 3.2.3 公聊 . 7 3.2.3 私聊 . 8 3.2.4 发送表情 . 8 3.2.5 聊天记录 . 9 3.2.6 系统消息 . 9 3.2.7 字体属性设置 . 9 3.2.8 用户退出 . 10 第 4 章 概要设计 . 11 4.1 目的 . 11 4.2 运行环境 . 11 4.3 条件与限制 . 11 4.4 体系结构概述 . 11 4.5 功能设计 . 12 4.5.1 用户注册 . 12 4.5.2
3、用户登入 . 12 4.5.3 公聊 . 13 4.5.4 私聊 . 14 4.5.5 表情 . 14 4.5.6 字体设置 . 15 4.5.7 记录保存 . 15 4.5.8 系统消息 . 16 II 第 5 章 详细设计 . 17 5.1 客户端注册 . 17 5.1.1 功能描述 . 17 5.1.2 综合设计 . 17 5.2 登入 . 20 5.2.1 功能描述 . 20 5.3 公聊 . 21 5.3.1 功能描述 . 22 5.3.2 综合设计 . 22 5.4、私聊 . 22 5.4.1 功能描述 . 22 5.4.2 综合设计 . 22 5.5 发送系统消息 . 23 5.
4、5.1 功能描述 . 23 5.5.2 综合设计 . 23 5.6 字体设置 . 24 5.6.1 功能描述 . 24 5.6.2 综合设计 . 24 5.7 发送表情 . 25 5.7.1 功能描述 . 25 5.7.2 综合设计 . 25 5.8 记录保存 . 25 5.8.1 功能概述 . 25 5.8.2 综合设计 . 26 5.9 功能逻辑实现 . 26 5.9.1 逻辑功能描述 . 26 5.9.2 综合设计 . 26 第 6 章 系统测试 . 27 6.1 测试举例 . 27 6.1.1 测试程序登录界面 . 27 6.1.2 测试程序主界面 . 27 6.1.3 测试程序退出
5、. 27 6.2 测试项目 . 27 6.2.1 单元测试 . 28 6.2.2 组合测试 . 28 6.2.3 确认测试 . 28 6.2.4 系统测试 . 28 6.2.5 用户验收测试 . 29 6.3 测试方法 . 29 第 7 章 缺陷与完善 . 30 7.1 软件存在的问题 . 30 7.2 使界面变得更加美观 . 30 结 论 . 31 参考文献 . 32 III 致 谢 . 33 ABSTRACT . 34 1 基于 JAVA 网络聊天室设计 郭胜航 20072334069 南京信息工程大学滨江学院通信工程专业,南京 210044 摘要: 网络聊天室是一种应用广泛网络聊天方式,
6、操作简单 ,功能丰富,是教学和学习面向对象的编程思想的理想项目。可以使用多种编程语言设计和开发出功能完善的网络聊天室 。 本毕业设计论文介绍用 JAVA 语言设计和实现一个网络聊天室的过程,本系 统采用 C/S 架构设计,整个项目分为服务器端和客户端。使用了最新的 Java 2 标准 Swing 组件,开发出简洁美观和布局合理的用户和服务器界面;利用 Socket 网络开发技术实现客户端和服务器端的连接访问,实现网络功能;通过对数据流操作的合理设计,实现信息传递、接受和数据保存。同时,采用多线程、多任务的设计思想,开发出性能稳定,功能全面的服 务器。完整的实现系统的功能。 通过本次毕业设计可以
7、学到如何应用和实现面向对象的各种方法,如何使用 Eclipse 集成开发环境来创建和开发项目,从而完成系统的完整开发。 关键词: 聊天室; Java;应用程序; Swing 组件; Socket 技术 第 1 章 绪 论 1.1 研究背景 根据当前网络的需求,网络聊天越来越受各种网民所青睐。因此开发网络聊天是相当有必要,而且在网站内增加聊天功能,它不仅可以提高网站的访问量,同时可以留着访客,更重要的是让访客透过聊天室实时的互相交流。而本人也学习过 JAVA 语言,对网络编程也较有兴趣 ,为了更好的考验自己对 JAVA语言的掌握程度,本人就决定以 基于 JAVA 网络聊天室设计 为毕业设计,希望
8、通过这一次的能进一步提高本人的网络开发编程的能力。 同时网络聊天室也是网络应用中出现较早的应用软件,其开发技术和设计思想都已经得到成熟的发展,并且已经具有许多成功的案例。在开发技术上已经没有什么技术难题,并且具有广泛的应用和市场空间。 发达国家的 3G 许可证发放工作都已经基本完成,随着 3G 技术标准、网络设备、终端和业务的逐步成熟, 3G 许可证的发放已经开始从欧美地区向亚洲、非洲和中东欧地区转移。日韩是全球 3G 发展最为成熟的地区, 截止到 2006 年 3 月底,日本和韩国的 3G 用户数分别占总移动用户数的 53%和 94%。日本WCDMA 用户占全球 WCDMA 用户的 44%。
9、韩国 CDMA2000 1X EV-DO 用户占全球 EV-DO 用户的 52%。 西欧移动通信市场整体发展比较成熟,移动用户普及率处于饱和状态。截止到 2004 年底,西欧移动用户 3.52 亿,普及率高达 90.1%,个别国家像英国、丹麦、希腊等移动用户普及率达到 100%。 到 2007年 4 月底,我国移动用户数为 4.87 亿以上。 从调查中可以得知,移动上网用户显著增多,对网络聊天室的 功能提出更多的要求和功能 1。 2 1.2 研究 目的、内容 及 要求 1.2.1 目的 网络聊天室是一项实用性强,并且应用广泛的一个应用,虽然其功能简单,但是在其开发技术和过程中,能够充分学习和使
10、用 JAVA2 的技术,如:开发各界面(登入、注册、公聊、私聊等界面)使用 Swing组件技术,实现网络的功能使用 Socket/Server Socket 技术,并且在开发过程当中,能充分的使用和体会面向对象技术的原理和方法。 所以该项目可以使自己在 JAVA 技术方面得到全面应用,使自己项目开发能力的一个很好体现。 1.2.2 内容 一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有多个客服端。客服端要具有实现用户注册和用户登入,在登入成功后,要显示出公聊界面,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表
11、名,并且可以和在线的用户实现一对一的私聊功能。 在服务器端可以实现不断的监听客户的连接,并且根据客户端发送过来的不同信息,如注册信息、登入信息、公聊信息、私聊信息、退出信息等,服务器端要作出不同的响应,根据登入时发送来的用户名和 口令 检 测是否合法用户等 2。 1.2.3 要求 主要涉及图形用户界面的 开发、布局和输入 /输出流数据的控制 , 并且要通过 Socket 技术实现网络功能, 整个程序采用 Swing 图形界面,要求熟练掌握 Java2 图形用户界面的事件处理及部分 Swing 组件的使用。在代码的编写上要 充分体现 Java 面向对象开发思想和多态性 , 提高代码的重用性和高效
12、性, 要深入理解接口的作用 和内部对象等特性 等。 3 第 2 章 系统 开发环境与工具的选择 2.1 开发环境的选择 在进行 开发 之前 ,首先决定的第一个问题就是 ,该使用什么开发环境来编写 该系统 ?以 目前常用的开发语言来讲有 C/C+、 .NET 技术, JAVA、 Visual Basic 几种 。 还有 Eclipse,、 Borland JBuilder 等,这些并不是程序语言,而是程序语言在建构程序时的 “ 集成开发工具 ” ,不过它们在 开发 设计的过程中也占有相当重要的角色,因为选用正确的集成开发工具,可以加速程序设计的进行、测试与排错,因而对整体进度具有决定性的影响。
13、基于以下几点,选择 JAVA 语言开发技术。 1、 就执行平台而言,必须考虑的问题之一是 用户 可能使用的操作系统。 用户 可能使用的是 Windows Linux。 JAVA 语言具有平台无关性,可以不需要任何修改就可以运行在支持 JAVA 的任何计算机上。 2、 JAVA 的 Swing 组件开发技术可以开发丰富的图形界面,并且 Swing API 类提供了丰富的外部接口和方法,可以方便实现系统功能。 3、就项目开发而言, 纯粹的面向对象,加上数量巨大的类所提供的方法(函数)库的支持,使得利用 Java 开发各种应用程序,可以说是易如反掌。此外,在程序除错、修改、升级和增加新功能等方面,因
14、其面向对象的特性,使得这些维护也变得非常容易。 4、 Java 支持内在的多线程运行,提供分布式的并发机制 ,运行效率高。 5、异常处理, 为了使 Java 程式更稳定、更安全, Java 引入了异常处理机制。能够在程序中产生异常情况的地方,执行相对应的处理,不至于因突发或意外的错误造成执行中断或是死机。通过这种异常处理,不仅能够清晰地掌握整个程序执行的流程,也使得程序的设计更为严谨。 6、 高性能, Java 可以在运行时直接将目标代码翻译成机器指令。 Sun 用直接解释器一秒钟内可调用300,000 个过程。翻译目标代码的速度与 C/C+的性能没什么区别。 7、 网络功能, Java 可以
15、说是借助因特网而重获新生的,自然具备编写网络功能 的程序。不论是一般因特网局域网的程序,如 Socket、 Email、基于 Web 服务器的 Servlet、 JSP 程序,甚至连分布式网络程序,如 CORBA、 RMI 等的支持也是非常丰富的,使用起来也很方便。 8、 源回收处理 ,Garbage Collection 是由 JVM 对内存实行动态管理的。程序需要多少内存、哪些程序的内存已经不使用了,需要释放归还给系统,这些烦琐且危险的操作全部交由 JVM 去管理。让我们能够更专心地编写程序,而不需要担心内存的问题。内存的统一管理,对于跨平台也有相当大的帮助 3。 2.2 开发工具 的选择
16、 Java 的开发工具很多,而且各有优缺点, Eclipse 是一个开放可扩展的集成开发环境 (IDE)。它不仅可以用于 Java 的开发,通过开发插件,它可以构建其他的开发工具。 Eclipse 是开放源代码的项目,并4 可以免费下载。支持最新的 Java 标准,并且缩短了开发周期。一直以其友好的集成开发环境在业界受到广泛的赞誉,这也是 Eclipse 一直是广大程序员最喜爱的 Java 开发工具的原因之一。 Eclipse 的可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。用户可以在集成开发环境中创建工程和 打开工程,建立、打开和编辑文件,并可以编译、运行和调试应用程
17、序。可以说在 Eclipse 集成开发环境 中开发 Java 程序,快速而且高效。 其主要特点如下: 1.开放的可扩展的 IDE。 2.成功的底层图形界面 API。 3.强大的插件加载功能 。 4.可以通过导入一些 CVS 相关的插件来实现版本管理的便易性 4。 2.3 开发技术的选择 本课题选择了 java Socket 技术开发网络聊天室。什么是 socket? socket 是一种用于表达两台机器之间连接 “ 终端 ” 的软件抽象。对于一个给定的连接,在每台机器上都有一个 socket,你可以想象一个虚拟的 “电缆 “工作在两台机器之间, “ 电缆 ” 插在两台机器的 socket 上。
18、当然,物理硬件和两台机器之间的 “ 电缆 ” 这些连接装置都是未知的,抽象的所有目的就是为了让我们不必了解更多的细节。 简单的说,一台计算机上的 socket 同另一台计算机通话创建一个通信信道,程序员可以用这个信道在两台机器之间发送数据。当你发送数据时, TCP/IP 协议栈的每一层都给你的数据里添加适当的报头。有个好消息是 java 语言隐藏了所有这些细节,这也是为什么他们有时被叫做 “ 流 socket” 5。 思 考一下 socket 像电话听筒一样在电话的任意一端你和我通过一个专门的信道来进行通话和接听。会话将一直进行下去直到我们决定挂断电话(除非我们使用蜂窝电话),除非我们挂断电话
19、,否则我们各自的电话线路都会占线。 如果你需要在两台机器之间进行通讯而不使用高级机制像 ORBs(以及 CORBA, RMI, IIOP 等等),socket 比较适合你。 Socket 的底层机制则相当棘手。幸运的是 ,java 平台给我们一些虽然简单但是相当强大的高层抽象以至于我们创建和使用 socket 更加容易一些。 一般而言, java socket 有下面两种类型: 1 TCP socket(由 Socket 类实现,下面的章节我们将对其讨论) 2 UDP socket(由 DatagramSocket 类实现) TCP 和 UDP 扮演同样的角色,但是实现是不同的。两者都接收传输
20、协议数据包并把它们传递到表示层。 TCP 把信息分解成数据包 (datagrams)并在接收端重新组装起来。它还对丢失的数据包进行重新传输的请求。 TCP 减少了上层的担忧。 UDP 没有组装和重传请求的功能。它只是传输数据包。更高层的层必须确保信息的完整性以及组合顺序的正确性 6。 5 第 3 章 需求分析 3.1 项目概述 3.1.1 产品描述 人们日常生活中越来越多地使用这项新的技术来为自己的工作和学习服务。一个操作简单、界面友好、运行稳定的网络聊天室对于小型局域网内的用户可以起到很好的交流作用。本聊天室,所谓聊天室就是一个可以让许多用户同时互相通信的网上园地,个人用户可以通过网上聊天室
21、将自己融入整个主流社会中。由于目前上网的一般都是具有高学历的新一代创业者,因此,在网上聊天室这个虚拟的社会中,可以结交各层次各地方的朋友,从而为自己获取更多的知识和更多的阅历。 该小聊天室是为许多喜爱上网聊 天的朋友开发设计的,希望能在现有的众多聊天室中给大家多一种的选择。和许多大型的网络聊天室相比该小聊天室比较简单,但能实现聊天的基本功能,点对多聊天,点对点聊天等,基于时间和技术的原因,很遗憾传送文件的功能尚未实现。本聊天室主要由注册界面、登录界面、聊天室界面、私聊界面、功能设置界面等构成。整个设计简洁明了、实用,使用简单。 图 3-1 客户端结构图 客户端 登入 用户登入 用户注册 通信
22、公聊 私聊 功 能设置 字体颜色 字体类型 字体大小 表 情 记录保存 公聊记录 添加文字 6 图 3-2 服务器结构图 3.1.2 产 品功能 本项目具有以下主要功能 5 客户端: 用户注册功能,实现用户的登入 用户名 注册和个人信息,并存入服务器数据库中。 用户登入功能,实现合法注册用户的登入。 公聊功能,实现用户和在线的所有用户聊天方式。 私聊功能,实现用户和在线的其他用户一对一的聊天方式。 查看聊天记录,实现用户查看已聊天的历史聊天内容。 发送表情和设置聊天内容字体,并可以设置字体颜色 等。 服务端: 可以不断的监听客户端请求 显示登入客户的信息 发送系统消息 3.2 功能需求 3.2.1 用户注册 需求描述: 用户填写系统给出的注册项目, 并提交给系统,成功注册后,系统生成用户所注册的登服务器 监听请求 发送系统消息 显 示 登 入 情 况 监 管 客 户 信 息