基于java的多功能聊天室.docx

上传人:b****6 文档编号:7065757 上传时间:2023-01-16 格式:DOCX 页数:27 大小:269.50KB
下载 相关 举报
基于java的多功能聊天室.docx_第1页
第1页 / 共27页
基于java的多功能聊天室.docx_第2页
第2页 / 共27页
基于java的多功能聊天室.docx_第3页
第3页 / 共27页
基于java的多功能聊天室.docx_第4页
第4页 / 共27页
基于java的多功能聊天室.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

基于java的多功能聊天室.docx

《基于java的多功能聊天室.docx》由会员分享,可在线阅读,更多相关《基于java的多功能聊天室.docx(27页珍藏版)》请在冰豆网上搜索。

基于java的多功能聊天室.docx

基于java的多功能聊天室

辽宁科技大学

新技术专题报告

 

设计题目:

基于java的多功能聊天室

学院、系:

电子与信息工程学院

专业班级:

计算机科学与技术09.1班

学生姓名:

张栋

指导教师:

龙艳彬、滕薇

成绩:

2012年06月30日

第一章绪论3

1.1聊天室系统的基本概念3

1.2开发聊天室系统的意义3

1.3系统开发环境与工具的选择3

1.3.1Java语言4

1.3.2 本课题开发环境的选择4

1.3.3本课题开发工具的选择5

1.3.4本课题开发技术的选择6

第二章需求分析7

2.1聊天室系统作为网络通讯工具的作用8

2.2现行聊天室系统的功能需求8

2.2.1 用户登入8

2.2.2 聊天记录9

2.2.4 用户退出9

2.3 质量性能需求10

2.3.1 容错性需求10

2.3.2 稳定性需求10

2.3.3 软件设计可靠性10

2.3.4 安全性10

2.3.5 扩展性10

2.3.6 易用性10

第三章聊天室系统的总体设计11

3.1聊天室结构分析11

第四章各模块功能及主要模块的流程图12

4.1各模块功能简介12

第五章系统测试24

5.1 测试举例24

5.1.1 测试程序登录界面24

5.1.2 测试程序主界面24

5.1.3 测试程序退出24

5.2 测试项目24

5.2.2 组合测试25

5.3 测试方法25

第六章结论30

致谢31

参考文献32

第一章绪论

1.1聊天室系统的基本概念

聊天室系统是一个通过国际互联信息网络进行多人通讯的一个系统。

该系统在一定网络通讯及高级语言程序设计和JSP应用程序设计的基础上,利用计算机通讯原理,形成一个聊天室平台,使得用户在进入这个聊天室系统平台的同时,可以通过网络在线与距离遥远的其他一位或多位用户进行信息交流。

聊天室主要分为WebChat、BBSChat两种。

BBSChat是基于Telnet的Tcp协议,是BBS的附设功能,需要客户端Telnet程序。

WebChat则采用浏览器方式,实际上是一个系统收集处理后分发给特定用户。

 WebChat一般采用ServerPush或ClientPull技术。

两种技术的区别在于使用不同的方式将数据分发给用户,ServerPush是由服务器将数据以多重MIME编码,发送给(push)使用者端,目前较少网站使用这种方式。

ClientPull则是用户从服务器接收(pull)所要的数据。

1.2开发聊天室系统的意义

在这个信息极其发达的时代,我们目前可以用来进行信息交流的方法也有非常多,比如电报、电话、电子邮件等通讯手段,但是这些或者不方便或者有局限性或者有费用的问题,比如电话就是属于费用比较高的一种方式,而且一般情况下不能进行多人会谈,只能2方通话,那么一个需要几个人一起讨论的会议就不能举行,一般情况下都需要花费大量的人力物力把这几个人聚集到同一地点才能进行讨论。

非但费时费力费钱而且效果也不一定很好。

电子邮件则不是一种及时联系的手段,需要一定时间才能到达,只能作为一种辅助交流的手段。

但是,聊天室这个就能很好的解决这个问题,我们不需要聚集在同一地点,各自在不同的地点就可以在聊天室中发言,大家互相讨论。

而且好的聊天室还有各种表情符号等可以加强我们的表达。

而且费用低廉,信息交流速度快,只有这样,才能在这个涌动的社会中加强联系,创造出更多的财富。

1.3系统开发环境与工具的选择

1.3.1Java语言

Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。

用Java实现的HotJava浏览器(支持Javaapplet)显示了Java跨平台、动态的Web、Internet计算等一系列的魅力。

从此Java被广泛接受并推动了Web的迅速发展。

Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。

另一方面,Java丢弃了C++很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动强制类型转换。

而且,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。

Java语言是一个面向对象的、提供类和接口以及继承的原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口,它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket(实现客户端的套接字)、ServerSocket(实现服务器端的套接字)等。

Java的强制型机制、异常处理、废料的自动收集等都是Java程序健壮性的重要保证。

Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。

Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。

Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。

Java编译一次,处处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。

丰富的类库为Java提供了大量的类以满足网络化、多线程、面向对象系统的需要。

同时Java程序可以获取网络上节点的图像、声音、HTML文档及文本资源。

1.3.2 本课题开发环境的选择

在进行开发之前,首先决定的第一个问题就是,该使用什么开发环境来编写该系统?

以目前常用的开发语言来讲有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去管理。

让我们能够更专心地编写程序,而不需要担心内存的问题。

内存的统一管理,对于跨平台也有相当大的帮助。

1.3.3本课题开发工具的选择

Java的开发工具很多,而且各有优缺点,Eclipse是一个开放可扩展的集成开发环境(IDE)。

它不仅可以用于Java的开发,通过开发插件,它可以构建其他的开发工具。

Eclipse是开放源代码的项目,并可以免费下载。

支持最新的Java标准,并且缩短了开发周期。

一直以其友好的集成开发环境在业界受到广泛的赞誉,这也是Eclipse一直是广大程序员最喜爱的Java开发工具的原因之一。

Eclipse的可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。

用户可以在集成开发环境中创建工程和打开工程,建立、打开和编辑文件,并可以编译、运行和调试应用程序。

可以说在Eclipse集成开发环境中开发Java程序,快速而且高效。

其主要特点如下:

1)开放的可扩展的IDE

2)成功的底层图形界面API

3)强大的插件加载功能

4)可以通过导入一些CVS相关的插件来实现版本管理的便易性

1.3.4本课题开发技术的选择

本课题选择了javaSocket技术开发网络聊天室。

什么是socket?

socket是一种用于表达两台机器之间连接“终端”的软件抽象。

对于一个给定的连接,在每台机器上都有一个socket,你可以想象一个虚拟的"电缆"工作在两台机器之间,“电缆”插在两台机器的socket上。

当然,物理硬件和两台机器之间的“电缆”这些连接装置都是未知的,抽象的所有目的就是为了让我们不必了解更多的细节。

简单的说,一台计算机上的socket同另一台计算机通话创建一个通信信道,程序员可以用这个信道在两台机器之间发送数据。

当你发送数据TCP/IP协议栈的每一层都给你的数据里添加适当的报头。

有个好消息是java语言隐藏了所有这些细节,这也是为什么他们有时被叫做“流socket”。

思考一下socket像电话听筒一样在电话的任意一端--你和我通过一个专门的信道来进行通话和接听。

会话将一直进行下去直到我们决定挂断电话(除非我们使用蜂窝电话),除非我们挂断电话,否则我们各自的电话线路都会占线。

如果你需要在两台机器之间进行通讯而不使用高级机制像ORBs(以及CORBA,RMI,IIOP等等),socket较适合你。

Socket的底层机制则相当棘手。

1.4本次新技术专题设计所要完成的主要工作

通过所学知识,根据网络聊天室系统的发展动态,结合自己个人的兴趣爱好,建立一个功能丰富,操作简便快捷的通用网络聊天室系统。

本文的主要安排了对聊天室技术的一些相关介绍,比如javaSocket技术。

接着是关于对聊天室系统的分析和设计,通过对聊天室的结构的分析来设计聊天室系统,并根据自己的兴趣和想法来丰富聊天室的功能。

第二章需求分析

2.1聊天室系统作为网络通讯工具的作用

聊天室是提供给网民一个交友与娱乐的场所,在聊天室里网民可选择自己的聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。

用户可以通过网络在线与距离遥远的其他一位或多位用户进行信息交流。

在聊天室里网民可选择自己的聊天对象,进行对话交流。

既可以一对一,又可以一对多,还可以形成小组进行多对多讨论,方便网民在线私聊与群聊。

是现行网络最流行、最被广泛应用的通讯工具。

2.2现行聊天室系统的功能需求

聊天室系统虽然满足了人们的在线通讯,但是随着聊天室被广泛应用,人们对于聊天的要求也越来越高,单纯的聊天已不能满足人们的需要,人们更需要多功能的聊天室系统,来丰富聊天环境。

聊天室系统功能具体需求包括:

1)一个聊天室里所有的人都可以互相密谈。

2)可以通过用鼠标点击页面上出现的或者人名列表的人名来选择人名。

3)可以察看进入房间以后的所有聊天纪录。

4)可以根据您的自己喜好来设置背景颜色和画面,使您更加舒适的聊天。

2.2.1 用户登入

需求描述:

用户填写登入ID和密码,经服务器验证成功后进入聊天室主界面。

执行者:

用户

前置条件:

用户成功注册或已经拥有一个合法的ID号

后置条件:

正常过程:

1)先启动服务器端

2)客户端向服务端请求连接,并发送登录信息。

3)当客户端输入的名字不为空的时候,返回客户端一个响应,提示登录成功,弹出聊天室主界面。

2.2.2 聊天记录

需求描述:

用户可以查询聊天的历史纪录,包括公聊记录和私聊记录。

执行者:

用户

前置条件:

用户正确登入后

后置条件:

正常过程:

1)发送、接收信息的同时将信息保存在本地文件中

2)信息发送框中可以查询历史聊天记录

3)从本地文件中读取信息,并显示在记录显示匡中

异常过程(可选):

服务端异常导致客户端退出,客户端提示服务器异常。

客户端读取信息时目标文件不存在。

2.2.3显示当前登录过聊天室的访客姓名

需求描述:

在局域网中的用户可以清晰的看到当前在聊天室的聊友

执行者:

有服务器执行

前置条件:

用户正确登陆后

后置条件:

正常过程:

当用户正确登录聊天室以后,系统会自动显示当前在聊天室中的人的姓名

2.2.4 用户退出

需求描述:

用户在正常情况下退出聊天室

执行者:

用户

前置条件:

用户成功登录聊天室

后置条件:

正常过程:

1)向服务器发送用户登出消息

2)服务器进行用户退出的数据处理

3)服务器向聊天室其他用户发送登出消息

刷新其他在线用户的用户列表信息

2.3 质量性能需求

2.3.1 容错性需求

当出现代码异常时,出现正确的提示,不会影响整个系统的运行。

用户之间信息传输不会因为数据封装问题出现丢失或乱码。

因用户的误操作产生的异常应做出及时的处理或信息提示。

2.3.2 稳定性需求

软件应正常完成所有功能需求。

服务器端应长时间运行无故障,故障修复时间一般控制在3小时内,除非出现恶性攻击、病毒破坏、系统资源不足、硬件故障、操作系统或数据库系统崩溃网络中断等情况,要求系统连续运行一周,不允许出现内存泄露。

要求系统可以承受告警风暴和大数据量的冲击,不出现内存溢出等现象。

2.3.3 软件设计可靠性

要确定合适的模块粒度,各模块之间要求松耦合,高内聚;从而使整个系统的可靠性和稳定性得到提高,并且便于系统维护,和新模块的添加。

2.3.4 安全性

安全性是防止网络方面的攻击。

2.3.5 扩展性

系统建成后,应在现行系统上不需要做大的改动或不影响整个系统结构,就可以增加功能模块,这就必须在系统设计时留有接口,使其具有可扩展性和维护性。

2.3.6 易用性

系统操作的界面必须简洁、操作方便易用、设计合理。

第三章聊天室系统的总体设计

3.1聊天室结构分析

本聊天室采用的是当前流行的Browser/Server(浏览器/服务器)结构,B/S结构是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。

在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。

B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。

本聊天室主要由注册界面、登录界面、聊天室界面、私聊界面、查看聊天内容界面、功能设置界面等构成。

整个设计简洁明了、实用,使用简单。

 

图1客户端结构

 

图2服务器结构图

 

第四章各模块功能及主要模块的流程图

4.1各模块功能简介

4.1.1服务器

服务器共有四大模块,分别为:

窗体、客户连接、启动与关闭、线程(客户信息处理)

①窗体:

可视化,能了解服务器运行状况,知道客户连接数。

②客户连接:

为客户建立连接线程。

③启动与关闭:

控制服务器启动与关闭。

④线程(客户信息处理):

接收客户发来的信息,并判断,做相应的处理。

服务器代码:

packagechatroom01;

import.*;

importjava.awt.*;

importjava.util.Date;

importjavax.swing.*;

importjava.awt.event.*;

importjava.io.*;

importjava.util.ArrayList;

publicclassServerextendsThreadimplementsActionListener{

TextAreaxinxikou;

Buttonqidong,guanbi;

JLabelduankou;

JTextAreadkhao;

ServerSocketss;

threadth;

Stringtime;

publicServer()

{

JFramekou=newJFrame("聊天服务器系统");

kou.setBounds(200,200,300,300);

kou.setLayout(null);

qidong=newButton("启动服务器");

guanbi=newButton("停止服务器");

duankou=newJLabel("端口号:

");

dkhao=newJTextArea("8888",1,4);

xinxikou=newTextArea();

qidong.setBackground(Color.GREEN);

guanbi.setBackground(Color.RED);

duankou.setForeground(Color.red);

dkhao.setForeground(Color.red);

xinxikou.setForeground(Color.red);

qidong.setBounds(10,10,70,25);

guanbi.setBounds(90,10,70,25);

duankou.setBounds(170,10,70,25);

dkhao.setBounds(220,15,60,20);

xinxikou.setBounds(10,40,270,220);

kou.add(qidong);

kou.add(guanbi);

kou.add(duankou);

kou.add(dkhao);

kou.add(xinxikou);

qidong.addActionListener(this);

guanbi.addActionListener(this);

kou.setResizable(false);

kou.setVisible(true);

}

publicvoidrun()

{

while(true)

{

try{

Socketso=ss.accept();//客户连接

th=newthread(so);

th.start();

Dated=newDate();

time=d.toLocaleString();

xinxikou.append("\n"+time+"\n有客户连接服务器!

");

}catch(IOExceptione){}

}

}

publicvoidactionPerformed(ActionEvente)

{

if(e.getSource()==qidong)

{

try{

ss=newServerSocket(Integer.parseInt(dkhao.getText()));

}catch(IOExceptione1){}

xinxikou.setText("等待客户端连接.......");

this.start();

}

elseif(e.getSource()==guanbi)

System.exit(0);

}

publicstaticvoidmain(Stringargs[])throwsException

{

newServer();

}

}

//-------------------------------------------------------------------------

classthreadextendsThread

{

privatestaticArrayListyonghu=newArrayList();

privatestaticSocketso;

privatestaticStringname,xx,xinxi="",allname="来过聊天室的有:

";

publicthread(Socketso)

{this.so=so;

yonghu.add(so);

}

publicvoidrun()

{

try{

InputStreamis=so.getInputStream();

OutputStreamos=so.getOutputStream();

BufferedReaderbr=newBufferedReader(newInputStreamReader(is));

PrintStreamps=newPrintStream(os);

name=br.readLine();

allname+=name+"";

xinxi="欢迎"+name+"来到聊天室!

";

ps.println(allname+"\n"+xinxi);

ps.flush();

while(true)

{

xx=br.readLine();

if(0==1)break;

if("离开了聊天室!

".equals(xx))

xinxi=name+""+xx;

elseif("yaoxinxi".equals(xx))

{

ps.println(xinxi);

ps.flush();

}

elsexinxi=xx;

}

ps.close();

br.close();

so.close();

}catch(Exceptione){}

}

}

 

3.2主要流程图

服务器

 

 

 

 

4.1.2客户机共有三大模块,分别为:

登录、聊天窗口、线程)

①登录:

为客户输入用户名,及服务器的IP地址。

②聊天窗口:

可视化窗体,方便客户使用系统。

③线程:

处理客户要发送的信息,接收服务器发来的信息!

 

客户机

 

 

 

客户机代码:

packagechatroom01;

importjava.awt.event.*;

importjava.io.*;

import.*;

import

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1