基于Java聊天室的设计与实现毕业设计报告_第1页
基于Java聊天室的设计与实现毕业设计报告_第2页
基于Java聊天室的设计与实现毕业设计报告_第3页
基于Java聊天室的设计与实现毕业设计报告_第4页
基于Java聊天室的设计与实现毕业设计报告_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、设计题目:基于 java 聊天室的设计与实现系 部:电子信息系学生姓名:专业班级:学 号:指导教师:- I -基于网络的聊天室系统的设计开发摘要信息时代的到来引发了一场知识和信息革命,计算机和现代网络技术的广泛应用极大地促进了社会经济的发展,同时也带来了一些新兴产业的发展,比如聊天室。聊天室已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。本文主要介绍了以当前流行Web 设计语言java Socket 技术语言开发的一个简单的网络聊天室。该小聊天室重要是为许多喜爱上网聊天的朋友开发设计的,希望能在现有的众多聊天室中给大家多一种的选择。和许多大型的网络聊天室相比该小聊天室比较简单,

2、但能实现聊天的基本功能,点对多聊天,点对点聊天,传送文件等。本聊天室主要由登录页面、验证页面、聊天室页面、离开页面、查看聊客页面、帮助页面等页面构成。整个设计简洁明了、实用,使用简单。关键字 : Web 设计语言,聊天室,java Socket 技术#ABSTRACTThe information age arrival has initiated a knowledge and information revolution, widespread application of the computer and the modern network technology enormously

3、promoted the social economy development, at the same time has also brought some emerging industrial development, for instance chatroom. Chatroom has already become a part of people's life slowly, presented the good tendency and the broad prospects for development.A chatroom was introduced by a p

4、opular Web's design language Java Server Page-JSP's language presently in this context. This is a chatroom that designed to many friend who likes chatting online. The hope can give everybody in the existing multitudinous chatroom more than one kind of choices. Compared with many large-scale

5、networks chatrooms this small chatroom is quite to be simple, but can realize the basic function which the dotted pair is chatted more, point-to-point chats,transmission document and so on. This chatroom mainly consist with registering the page, confirming the page, the chatroom page, leaving the pa

6、ge, the examination of chating guest page, helping page constitution and so on. Entire design Concise, practical and the use is simple.KEYWORDS : Web s designla nguage,chatroom,java Socket-32-III目录第一章绪 论 11.1 聊天室系统的基本概念 11.2 开发聊天室系统的意义 11.3 本次毕业设计所要完成的主要工作 2第二章课题介绍 32.1 课题的目的 32.2 课题的意义 32.3 课题的主要任务

7、 4第三章系统开发环境与工具的选择 53.1 Java 简介 53.1.1 Java语言 53.1.2 Java架构设计 53.2 本课题开发环境的选择 63.3 本课题开发工具的选择 73.4 本课题开发技术的选择 8第四章需求分析 94.1 以往聊天室系统的缺陷 94.2 聊天室系统作为网络通讯工具的作用 94.3 现行聊天室系统的功能需求 94.3.1 用户注册 104.3.2 用户登入 114.3.3 私聊 114.3.4 聊天记录 124.3.5 系统消息 124.3.6 用户退出 134.4 质量性能需求 144.4.1 容错性需求 144.4.2 稳定性需求 144.4.3 软件

8、设计可靠性 144.4.4 安全性 144.4.5 扩展性 144.4.6 易用性 14第五章 聊天室系统的总体设计 155.1 聊天室结构分析 155.2 网络聊天室的设计与实现 165.2.1 综合设计 185.3 运行分析 31第六章 系统测试 326.1 测试举例 326.1.1 测试程序登录界面 326.1.2 测试程序主界面 326.1.3 测试程序退出 326.2 测试项目 326.2.1 单元测试 336.2.2 组合测试 336.2.3 确认测试 336.2.4 系统测试 346.2.5 用户验收测试 346.3 测试方法 34第七章存在问题 357.1 软件存在的问题 35

9、7.2 美观界面 35第八章结论 36致 谢 37参考文献 38- V -基于 Java聊天室的设计与实现5第一章 绪 论1.1 聊天室系统的基本概念聊天室系统是一个通过国际互联信息网络进行多人通讯的一个系统。该系统在一定网络通讯及高级语言程序设计和JSP应用程序设计的基础上,利用计算机通讯原理,形成一个聊天室平台,使得用户在进入这个聊天室系统平台的同时,可以通过网络在线与距离遥远的其他一位或多位用户进行信息交流。聊天室主要分为WebCha、t BBSChat两种。BBSChat是基于Telnet 的 Tcp协议,是BBS的附设功能,需要客户端Telnet 程序。WebChat则采用浏览器方式

10、,实际上是一个多人共同使用的CGI 程序。其基本原理是把每个用户的发言通过浏览器传给系统,再由系统收集处理后分发给特定用户。WebChat一般采用Server Push 或 Client Pull 技术。两种技术的区别在于使用不同的方式将数据分发给用户,Server Push 是由服务器将数据以多重MIME编码,发送给(push)使用者端,目前较少网站使用这种方式。Client Pull 则是用户从服务器接收 (pull) 所要的数据。1.2 开发聊天室系统的意义在这个信息极其发达的时代,我们目前可以用来进行信息交流的方法也有非常多,比如电报、电话、电子邮件等通讯手段,但是这些或者不方便或者有

11、局限性或者有费用的问题, 比如电话就是属于费用比较高的一种方式,而且一般情况下不能进行多人会谈,只能 2 方通话,那么一个需要几个人一起讨论的会议就不能举行,一般情况下都需要花费大量的人力物力把这几个人聚集到同一地点才能进行讨论。非但费时费力费钱而且效果也不一定很好。电子邮件则不是一种及时联系的手段,需要一定时间才能到达,只能作为一种辅助交流的手段。但是,聊天室这个就能很好的解决这个问题,我们不需要聚集在同一地点,各自在不同的地点就可以在聊天室中发言,大家互相讨论。而且好的聊天室还有各种表情符号等可以加强我们的表达。而且费用低廉,信息交流速度快,只有这样,才能在这个涌动的社会中加强联系,创造出

12、更多的财富。1.3 本次毕业设计所要完成的主要工作通过所学知识,根据网络聊天室系统的发展动态,结合自己个人的兴趣爱好,建立一个功能丰富,操作简便快捷的通用网络聊天室系统。本文的主要安排了对聊天室技术的一些相关介绍,比如java Socket 技术。接着是关于对聊天室系统的分析和设计,通过对聊天室的结构的分析来设计聊天室系统,并根据自己的兴趣和想法来丰富聊天室的功能。- 1 -第二章 课题介绍2.1 课题的目的聊天室虽然其功能简单,但是在其设计与开发过程中,能够充分学习和使用Java2的技术, 如: 开发各界面(登入、 注册、 群聊等界面)使用到 Swing技术; 随着模仿QQ,实现简单的qq

13、功能:注册、登陆、查找好友、聊天功能。实现配置文件设置、用户管理、日志显示的功能。实现群聊功能用到基于Cliet/Server 的面向连接编程技术。使用多线程进行多个客户端和服务端的连接。使用文件方式保存用户信息,实现数据的保存与读取使用到数据库连接和操作技术。使用对 象的方式在服务端和客户端之间传递信息。老师可以通过Java QQ向同学们发送及时的信息如学院的通知、考试通知、成绩通告,及时掌握学生的动态,提供必要的帮助。这就有效地解决老师与老师之间的,老师 与学生之间的,学生与学生之间的通讯问题。2.2 课题的意义课题设计的主要任务是运用已知的知识理论联系实践模仿QQ,实现简单的QQ功能如注

14、册、登陆、查找好友、聊天功能。服务端还能实现配置文件设置、用户管理、日志显示的功能。从而对Java 的开发背景有更进一步的认识,充分掌握Java 在现实生活中的应用。深入调查腾讯QQ的各种功能,分析腾讯QQ的功能,运用相关的Java 知识对腾讯QQ进行模仿。从而设计出Java 版的QQ。要认真分析设计出的Java 版的QQ会存在怎样的问题。怎样可以以有效的解决这一问题。提出有关设计的难点重点,完成对课题的全面系统的研究。将设计和规划与现实教育教学工作相结合,使得此系统真实意义上实现对新教育教学工作的一次有益尝试。认真完成毕业设计论文以及开题报告答辩,中期答辩和终期答 辩。一个网络聊天室的运行,

15、首先是要有一个完整稳定的服务器端,并且拥有多个客服端。客服端要具有实现用户注册和用户登入,在登入成功后,要显示出公聊界面,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现一对一的私聊功能。在服务器端可以实现不断的监听客户的连接,并且根据客户端发送过来的不同信息,如注册信息、登入信息、公聊信息、私聊信息、退出信息等,服务器端要作出不同的响应,并且要实现数据库的操作,如根据用户注册的信息保存在数据库中,根据登入时发送来的用户名和密码检测是否合法用户等。2.3 课题的主要任务主要涉及图形用户界面的开发、布

16、局和输入/ 输出流数据的控制,并且要通过Socket技术实现网络功能,整个程序采用Swing 图形界面,要求熟练掌握Java2 图形用户界面的事件处理及部分Swing 组件的使用。在代码的编写上要充分体现Java 面向对象开发思想和多态性,提高代码的重用性和高效性,要深入理解接口的作用和内部对象等特性等。课题设计的主要任务是运用已知的知识理论联系实践模仿QQ,实现简单的QQ功能如注册、登陆、查找好友、聊天功能。服务端还能实现配置文件设置、用户管理、日志显示的功能。从而对Java 的开发背景有更进一步的认识,充分掌握Java 在现实生活中的应用。深入调查腾讯QQ的各种功能,分析腾讯QQ的功能,运

17、用相关的Java 知识对腾讯QQ进行模仿。从而设计出Java 版的QQ。 要认真分析设计出的Java 版的QQ会存在怎样的问题。怎样可以以有效的解决这一问题。提出有关设计的难点重点,完成对课题的全面系统的研究。将设计和规划与现实教育教学工作相结合,使得此系统真实意义上实现对新教育教学工作的一次有益尝试。认真完成毕业设计论文以及开题报告答辩,中期答辩和终期答辩。基于 java 聊天室的设计与实现11第三章 系统开发环境与工具的选择3.1 Java 简介3.1.1 Java 语言Java 是由 Sun Microsystems 公司于 1995年 5 月推出的Java 程序设计语言和Java平台的

18、总称。用 Java 实现的 Hot Java 浏览器 (支持 Java applet ) 显示了 Java跨平台、动态的Web、 Internet 计算等一系列的魅力。从此Java 被广泛接受并推动了Web的迅速发展。Java 语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了C+很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动强制类型转换。而且,Java 语言不使用指针,并提供了自动的废料收集, 使得程序员不必为内存管理而担忧。Java 语言是一个面向对象的、提供类和接口以及继承的原语,为了简单起见,只支持类之间的单继承,但

19、支持接口之间的多继承,并支持类与接口之间的实现机制。Java 语言支持Internet 应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口,它提供了用于网络应用编程的类库,包括URL、 URLConnection、 Socket(实现客户端的套接字)、ServerSocket (实现服务器端的套接字)等。Java 的强制型机制、异常处理、废料的自动收集等都是Java 程序健壮性的重要保证。Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。Java 语言的优良特性使得Java 应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java

20、对对象技术的全面支持和Java 平台内嵌的API 能缩短应用系统的开发时间并降低成本。Java 编译一次,处处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。丰富的类库为Java 提供了大量的类以满足网络化、多线程、面向对象系统的需要。同时Java 程序可以获取网络上节点的图像、声音、HTML文档及文本资源。3.1.2 Java 架构设计从技术角度来说,软件架构随着技术的革新不断地更新其内容,软件架构建立于当前技术和一些基本原则的基础之上。架构的一些基本原则:分层化原则:分层是为了降低软件深度复杂性而使用的关键思想,就像社会有了阶级一样,软件有了层次结构。模

21、块化原则:模块化是化解软件广度复杂的必然手段,模块化的目的就是让软件分工。接口分离原则:随着软件模块化的不断深入改进,面向接口编程而不是面向实现编程可以让复杂度日趋增高的软件降低模块之间的耦合度,从而让各模块更轻松改进。依赖倒置原则:随着软件结构的进一步发展, 层与层之间、模块与模块之间的依赖逐渐加深,而层、模块的动态可插拔要求不端增大。当前最典型的三层次架构就架构在以上几项原则的基础之上,用数据库作存储层、用面向对象来实现业务层、用web作为用户接口层。这种三层次架构同样应用于此次系统的设计。3.2 本课题开发环境的选择在进行开发之前, 首先决定的第一个问题就是, 该使用什么开发环境来编写该

22、系统?以目前常用的开发语言来讲有C/C+、 .NET 技术,JAVA、 Visual Basic 几种。还有Eclipse, 、 Borland JBuilder 等,这些并不是程序语言,而是程序语言在建构程序时的“集成开发工具”,不过它们在开发设计的过程中也占有相当重要的角色,因为选用正确的集成开发工具,可以加速程序设计的进行、测试与排错,因而对整体进度具有决定性的影响。基于以下几点,选择JAVA语言开发技术。1) 就执行平台而言,必须考虑的问题之一是用户可能使用的操作系统。用户可能使用的是Windows Linux 。 JAVA语言具有平台无关性,可以不需要任何修改就可以运行在支持JAVA

23、的任何计算机上。2) JAVA的 Swing 组件开发技术可以开发丰富的图形界面,并且Swing API 类提供了丰富的外部接口和方法,可以方便实现系统功能。3) 就项目开发而言,纯粹的面向对象,加上数量巨大的类所提供的方法(函数)库的支持,使得利用Java 开发各种应用程序,可以说是易如反掌。此外,在程序除错、修改、 升级和增加新功能等方面,因其面向对象的特性,使得这些维护也变得非常容易。4) Java 支持内在的多线程运行,提供分布式的并发机制,运行效率高。5) 异常处理,为了使Java 程式更稳定、更安全,Java 引入了异常处理机制。能够在程序中产生异常情况的地方,执行相对应的处理,不

24、至于因突发或意外的错误造成执行中断或是死机。通过这种异常处理,不仅能够清晰地掌握整个程序执行的流程,也使得程序的设计更为严谨。6) 高性能, Java 可以在运行时直接将目标代码翻译成机器指令。Sun 用直接解释器一秒钟内可调用300,000 个过程。翻译目标代码的速度与C/C+的性能没什么区别。7) 网络功能,Java 可以说是借助因特网而重获新生的,自然具备编写网络功能的程序。 不论是一般因特网局域网的程序,如 Socket、 Email、 基于Web服务器的Servlet 、JSP程序,甚至连分布式网络程序,如CORB、 ARMI等的支持也是非常丰富的,使用起来也很方便。8) 源回收处理

25、,Garbage Collection 是由JVM对内存实行动态管理的。程序需要多少内存、哪些程序的内存已经不使用了,需要释放归还给系统,这些烦琐危险的操作全部交由JVM去管理。让我们能够更专心地编写程序,而不需要担心内存的问题。内存的统一管理,对于跨平台也有相当大的帮助。3.3 本课题开发工具的选择Java 的开发工具很多,而且各有优缺点,Eclipse 是一个开放可扩展的集成开发环境 (IDE) 。它不仅可以用于Java 的开发,通过开发插件,它可以构建其他的开发工具。Eclipse 是开放源代码的项目,并可以免费下载。支持最新的Java 标准, 并且缩短了开发周期。一直以其友好的集成开发

26、环境在业界受到广泛的赞誉,这也是Eclipse 一直是广大程序员最喜爱的Java 开发工具的原因之一。Eclipse 的可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。用户可以在集成开发环境中创建工程和打开工程,建立、打开和编辑文件,并可以编译、运行和调试应用程序。可以说在Eclipse 集成开发环境中开发Java 程序,快速而且高效。其主要特点如下:1) 开放的可扩展的IDE2) 成功的底层图形界面API3) 强大的插件加载功能4) 可以通过导入一些CVS相关的插件来实现版本管理的便易性3.4 本课题开发技术的选择本课题选择了java Socket 技术开发网络聊天室。

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

28、,这也是为什么他们有时被叫做“流socket ”。思考一下 socket 像电话听筒一样在电话的任意一端你和我通过一个专门的信道来进行通话和接听。会话将一直进行下去直到我们决定挂断电话(除非我们使用蜂窝电话),除非我们挂断电话,否则我们各自的电话线路都会占线。如果你需要在两台机器之间进行通讯而不使用高级机制像ORB( s以及CORBAR, MI, IIOP 等等) , socket比较适合你。Socket 的底层机制则相当棘手。- 7 -基于 java 聊天室的设计与实现13第四章 需求分析4.1 以往聊天室系统的缺陷通过对以往聊天室的研究及分析,发现聊天室系统存在以下问题:1) 以往聊天室只

29、能看到用户ID 而不能看到用户的个人形象,包括个人头像和个人服装SHO。W2)不能轻易分辨出自己谈话和别人的谈话。3)用户聊天只有单纯的文字表达,不能通过丰富的表情和图片来增添聊天的乐趣。4) 聊天背景只有单纯的白色,没有任何可供选择的背景颜色和画面,使整个聊天环境显的呆板。4.2 聊天室系统作为网络通讯工具的作用聊天室是提供给网民一个交友与娱乐的场所,在聊天室里网民可选择自己的聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。用户可以通过网络在线与距离遥远的其他一位或多位用户进行信息交流。在聊天室里网民可选择自己的聊天对象,进行对话交流。既可以一对一,又可以一对多,还可

30、以形成小组进行多对多讨论,方便网民在线私聊与群聊。是现行网络最流行、最被广泛应用的通讯工具。4.3 现行聊天室系统的功能需求聊天室系统虽然满足了人们的在线通讯,但是随着聊天室被广泛应用,人们对于聊天的要求也越来越高,单纯的聊天已不能满足人们的需要,人们更需要多功能的聊天室系统,来丰富聊天环境。聊天室系统功能具体需求包括:1) 一个聊天室里所有的人都可以互相密谈。2) 可以通过用鼠标点击页面上出现的或者人名列表的人名来选择人名。3) 可以使用颜色来轻易分辨出别人的谈话和自己的谈话。4) 可以察看进入房间以后的所有聊天纪录。5) 可以通过贴图在您聊天中加入卡通图片,使聊天内容丰富多采,充满活力。6

31、) 可以根据您的自己喜好来设置背景颜色和画面,使您更加舒适的聊天。- 13 -154 需求分析4.3.1 用户注册需求描述:用户填写系统给出的注册项目,并提交给系统,成功注册后,系统生成用户所注册的登入ID,并保存在数据库当中。执行者:用户前置条件:无后置条件:无正常过程:1) 向服务端发送注册请求2) 服务端响应客户端,客户端弹出注册信息表单3) 用户填写完表单后将注册数据传给服务端处理,并保存在数据库中4) 返回客户端一个响应,显示用户注册的ID,提示注册成功异常过程(可选):用户填写表单的数据格式不正确或表单中存在空缺的项,客户端给予提示信息,并将光标定位到出错的地方。用户注册的项在数据

32、库中发生冲突,客户端提示注册不成功并提示用户 重新填写表单。服务器未启动或出现异常通过注册模块实现用户的在线注册,所填写的注册项目有:用户名、密码、密码确认、性别、年龄、E-mail。基于 java 聊天室的设计与实现13图 4-1 注册活动图图 4-2 登录活动图4.3.2 用户登入需求描述:用户填写登入ID 和密码,经服务器验证成功后进入聊天室主界面。执行者:用户前置条件:用户成功注册或已经拥有一个合法的ID 号后置条件:无正常过程:1) 向服务端请求连接,并发送登录信息。2) 服务端处理并查询数据库中的用户信息3) 返回客户端一个响应,提示登录成功,弹出聊天室主界面。4) 刷新其他在线用

33、户的用户列表信息异常过程(可选):用户填写的ID 或密码与数据库中的纪录不匹配,客户端提示登录失败。客户端设置的服务器地址或端口有误。服务器未启动或出现异常。4.3.3 私聊需求描述:用户可选择聊天室的在线用户列表中其他用户聊天。并且对方有消息提示,双方发送的信息对于聊天室的其他用户是不可见的。执行者:用户前置条件:用户登录成功,私聊的对方在线后置条件:无正常过程:1) 客户端与服务端建立通讯。2) 客户端将用户发送的信息打包传送给服务端。3) 服务端进行数据分析,查找目的用户的ID,并将用户的信息传给目的用户。4) 目的用户收到服务器的信息后,正确的显示并保存。异常过程(可选):客户端与服务

34、端断开连接,客户端提示信息发送失败。客户端发送的私聊内容包含不合法的字符特殊需求(可选):不能与不在线的用户进行私聊。图 4-3 私聊流程图4.3.4 聊天记录需求描述:用户可以查询聊天的历史纪录,包括公聊记录和私聊记录。执行者:用户前置条件:用户正确登入后后置条件:无正常过程:1) 发送、接收信息的同时将信息保存在本地文件中2) 信息发送框中可以查询历史聊天记录3) 从本地文件中读取信息,并显示在记录显示匡中异常过程(可选):服务端异常导致客户端退出,客户端提示服务器异常。客户端读取信息时目标文件不存在。4.3.5 系统消息需求描述:在聊天室的每一个用户都能接收服务端发送的的信息提示消息执行

35、者:服务端前置条件:服务端正常运行后置条件:无正常过程:服务器向所有在线用户发送消息客户端接收到消息,进行消息处理,并正确显示异常过程(可选):1) 服务端异常,重启服务器2) 出现网络异常,发送系统消息失败3) 用户管理员通过启动服务器后,可以通过服务器操作界面象全部在线的用户发送系统消息4) 用于发送公告,提示等系统消息,可以方便管理员和客户的交流和管理用户服务器显示出系统消息发送系统消息4-4 系统消息活动图4.3.6 用户退出需求描述:用户在正常情况下退出聊天室执行者:用户前置条件:用户成功登录聊天室后置条件:无正常过程:1) 向服务器发送用户登出消息2) 服务器进行用户退出的数据处理

36、3) 服务器向聊天室其他用户发送登出消息4) 刷新其他在线用户的用户列表信息4.4 质量性能需求4.4.1 容错性需求当出现代码异常时,出现正确的提示,不会影响整个系统的运行。用户之间信息传输不会因为数据封装问题出现丢失或乱码。因用户的误操作产生的异常应做出及时的处理或信息提示。4.4.2 稳定性需求软件应正常完成所有功能需求。服务器端应长时间运行无故障,故障修复时间一般控制在 3 小时内,除非出现恶性攻击、病毒破坏、系统资源不足、硬件故障、操作系统或数据库系统崩溃网络中断等情况,要求系统连续运行一周,不允许出现内存泄露。要求系统可以承受告警风暴和大数据量的冲击,不出现内存溢出等现象。4.4.

37、3 软件设计可靠性要确定合适的模块粒度,各模块之间要求松耦合,高内聚;从而使整个系统的可靠性和稳定性得到提高,并且便于系统维护,和新模块的添加。4.4.4 安全性安全性是防止网络方面的攻击。4.4.5 扩展性系统建成后,应在现行系统上不需要做大的改动或不影响整个系统结构,就可以增加功能模块,这就必须在系统设计时留有接口,使其具有可扩展性和维护性。4.4.6 易用性系统操作的界面必须简洁、操作方便易用、设计合理。- 19 -基于 java 聊天室的设计与实现15第五章 聊天室系统的总体设计5.1 聊天室结构分析本聊天室采用的是当前流行的Browser/Server( 浏览器 /服务器 )结构,

38、B/S 结构是随着 Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在W服务器端实现,形成所谓3-tier 结构。 B/S 结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。本聊天室主要由注册界面、登录界面、聊天室界面、私聊界面、查看聊天内容界面、功能设置界面等构成。整个设计简洁明了、实用,使用简单。5-1 客户端结构图5-2 服务器结构图近年来由于Internet/Intranet 技术的发展和普及,各种各样的

39、信息都在WWW( World Wide Web)上发布,人们之间的信息沟通比以往变得更为高效快捷,Web技术的应用已成为一种必然,但传统的客户机/服务器模式的数据库设计与Web的相关技术互相独立,两者无法进行集成,我们知道,采用客户机/服务器模式的数据库系统无论在设计开发还是在应用方面都具有一定的局限性,比如在应用中,操作人员必须学会本系统的操作方法、规程等, 不具有普及性、易懂性, 等等, 基于这种情况,微软提出WebComputing 的概念,将它应用于数据库技术中。浏览器/服务器(Brower/Server )模式的数据库体系是利用Web服务器Web结构的浏览器 / 服务器模式体系,(

40、如图 )图 5-3 BS 体系图工作原理:在前端采用IE、 Netscape 等的浏览器将用户提交的操作信息向Web服务器发出HTTP请求,Web服务器通过一些中间组件访问后台数据库,并将操作结果以HTML页面的形式返回给前端浏览器。5.2 网络聊天室的设计与实现首先介绍网络聊天室的功能,该聊天室的功能包括如下:1) 登录2) 验证进入聊天室3) 聊天室主页面4) 帮助5) 查看聊客6) 离开整个聊天室由以下几个页面组成:1) 登录聊天室2) 用户名的验证工作- 29 -3) 对用户消息各个变量的初始化4) 发送信息5) 显示信息6) 用户列表7) 离开聊天室8) 聊天室主页面9) 帮助页面聊

41、天室执行流程图:5-45.2.1 综合设计1) 用于构建注册的主界面5-5 注册的主界面public void actionPerformed(ActionEvent arg0)try socket=new Socket(serverIP ,serverPort );out= new PrintWriter( new OutputStreamWriter( socket.getOutputStream(), true );reader = new BufferedReader( new InputStreamReader( socket.getInputStream();out.println

42、( "denglu" );if(reader.readLine().equals( "ok" )String name= jtf .getText();out.println(name);char password= jfp .getPassword();out.println(password);out.println( "end" );聊天室界面及其功能:1) 登录界面:对聊天室定义各个变量和建立矢量,以及建立哈希表来保存用户的信息,并初始化个变量的值。该聊天室登入界面本身具有一定的安全保护措施,能够对用户的身份进行验证,从而保证

43、数据库中的数据不受破坏。所以,当用户准备运行系统时,首先要进入用户登录模块。其模块流程图:图 5-6 用户登入图该流程图为用户登入界面的流程图。流程说明:1) 当用户在登入界面输入用户名和密码,点击提交按纽,判断输入的用户名是否为空,若是,则显示错误提示给用户,并要求用户重新输入,重复步骤1,若不为空则到步骤2。2) 判断用户输入的密码是否为空,若是,则显示错误提示给用户,并要求用户重新输入,转到步骤1,若不为空则到步骤3。3) 进行表单提交,由in.jsp 界面转到login.jsp 界面进行表单数据处理。4) 对用户输入的用户名和密码在数据库中进行查询,看是否在数据库的用户登表中存在该用户

44、,若不存在,则提示用户重新输入,并显示相关链接,若存在,则用户验证通过,显示进入主界面和重新申请ID 两个链接,供用户选择。在设置好IP 和端口号的条件下,用户在登入界面输入已注册好的用户名和密码登入,通过验证后登入聊天室主界面,输入错误返回提示。图 5-8 登入成功text=textField1.getText();text1=textField2.getText();charthestr=textField3.getPassword();text2=new String(thestr).trim();char thestr1=textField4.getPassword();text3=n

45、ew String(thestr1).trim();if(!text2.equals(text3)label11.setText("密码不一致!");elselabel11.setText("" );text4=textArea.getText();out.println("zhuce");String bb=null;try bb = reader.readLine(); catch (IOException e1) e1.printStackTrace();315 聊天室系统的总体设计5-9 登陆成功界面private void

46、getfrendinfo() Boolean a=true;try if(reader.readLine().equals("ok" )ID = reader.readLine().trim();ID2=Integer.parseInt(ID);MyName = reader.readLine();String iconn = reader.readLine();Integer.parseInt(iconn);jb1.setText(MyName+"在线");jb1.setForeground(Color.red);userName = new Arra

47、yList<String>();/放置所有用户ID 的数组userNo = newArrayList<Integer>(); /放置所有用户昵称的数组-32-基于 java 聊天室的设计与实现15while(a)ID=reader.readLine();if(!ID.equals("end")ID1 =Integer.parseInt(ID);userNo.add(ID1 );FriendName = reader.readLine();userName .add(FriendName); else a=false;reader.close();ou

48、t.close(); socket.close(); catch (IOException e) e.printStackTrace();用户输入正确的账号和密码后点击登录,在此页面也可选择状态选项的在线、隐身、离开和忙碌以及自动的登录。服务器响应这一请求后会将用户输入的信息和已存用户信息进行匹配,在匹配成功后,用户方可- 41 -5-10 聊天界面if(reader.readLine().equals("ok")IP11 = reader.readLine().trim();System.out.println("获取 dfgfhgghIP"+IP11

49、);IP=InetAddress.getByName(IP11);String port1=reader.readLine();port=Integer.parseInt(port1);FriendName=reader.readLine();if(reader.readLine().equals("IPover") reader.close();out.close();if(!map.containsKey(IP)DatagramSocket socket=new DatagramSocket();dilog=new dilog(socket,IP,MyName, Fri

50、endName); dilog.setVisible(true);map.put(IP, dilog);2) 聊天界面及其功能用户登录成功后,会在主界面显示状态、用户昵称、在线用户以及在线用户的基本信息。选择在线用户列表的任一好友,出现聊天界面。5-11 聊天界面if(reader.readLine().equals("ok" )ID = reader.readLine().trim();ID2=Integer.parseInt(ID);MyName = reader.readLine();String iconn = reader.readLine();Integer.p

51、arseInt(iconn);jb1.setText(MyName+"在线 ");jb1.setForeground(Color.red);userName = new ArrayList<String>();/放置所有用户ID 的数组userNo = new ArrayList<Integer>(); /放置所有用户昵称的数组while(a)ID=reader.readLine();if(!ID.equals("end")ID1 =Integer.parseInt(ID);userNo.add(ID1 );FriendName

52、= reader.readLine();userName .add(FriendName); else a=false;图 5-12 聊天界面3) 发送系统消息服务器端收到用户上线或下线时发送给其他在线用户消息提示,并可以根据需要,主动发送消息给客户,实现服务器端的管理。5-13 开启服务器Iterator<User> iterator =userMap .iterator();while (iterator.hasNext() / 从集合中装载用户信息User user = iterator.next();out .close();socket .close();else if

53、( str1 .equals( "getIP" )out .println( "ok" );ID1 =reader .readLine();System. out .println( " 获取的用户名aaaID 是: " +ID1 );ID =Integer. parseInt ( ID1 );out .println(dao.getIP(ID );System. out .println(" 获取的用户名aaaIP 是: " +dao.getIP(ID );out .println(dao.getPort(ID

54、);System. out .println(" 获取的用户名aaaPort 是:"+dao.getPort(ID);out .println(dao.getName(ID );out .println( "IPover" );在开启服务器成功后,发送系统消息。下面通过一个具体模块来说明一下此聊天界面的一些功能,如聊天信息发送处理模块,通过该模块能很清楚的了解该界面上的一些功能,具体的流程图如下:5-14 聊天信息发送处理流程流程说明:1) 当用户在聊天界面上输入聊天信息,并点说话这个按纽后,Send_1.jsp 页面提交当前表单到Send.jsp 页面进行处理,Send.jsp 这个页面接受到Send_1.jsp 页面提交的信息后对记录聊天记录的Vector 聊天数组进行大小判断,如果大于30条聊天记录则清除原有聊天记录并保存一条提示信息到该数组中并跳到步骤2,如果小于30条则直接到步骤 2。2) 获取 Send_1.jsp 页面关于颜色、对象、悄悄话、表情等相关设置值并保存到相应的Vector 数组,而后对聊天数组中的聊天信息进行检查,如果某条聊天记录含有tml标

温馨提示

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

评论

0/150

提交评论