Java聊天系统实验报告.docx

上传人:b****3 文档编号:5920457 上传时间:2023-05-09 格式:DOCX 页数:47 大小:260.70KB
下载 相关 举报
Java聊天系统实验报告.docx_第1页
第1页 / 共47页
Java聊天系统实验报告.docx_第2页
第2页 / 共47页
Java聊天系统实验报告.docx_第3页
第3页 / 共47页
Java聊天系统实验报告.docx_第4页
第4页 / 共47页
Java聊天系统实验报告.docx_第5页
第5页 / 共47页
Java聊天系统实验报告.docx_第6页
第6页 / 共47页
Java聊天系统实验报告.docx_第7页
第7页 / 共47页
Java聊天系统实验报告.docx_第8页
第8页 / 共47页
Java聊天系统实验报告.docx_第9页
第9页 / 共47页
Java聊天系统实验报告.docx_第10页
第10页 / 共47页
Java聊天系统实验报告.docx_第11页
第11页 / 共47页
Java聊天系统实验报告.docx_第12页
第12页 / 共47页
Java聊天系统实验报告.docx_第13页
第13页 / 共47页
Java聊天系统实验报告.docx_第14页
第14页 / 共47页
Java聊天系统实验报告.docx_第15页
第15页 / 共47页
Java聊天系统实验报告.docx_第16页
第16页 / 共47页
Java聊天系统实验报告.docx_第17页
第17页 / 共47页
Java聊天系统实验报告.docx_第18页
第18页 / 共47页
Java聊天系统实验报告.docx_第19页
第19页 / 共47页
Java聊天系统实验报告.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java聊天系统实验报告.docx

《Java聊天系统实验报告.docx》由会员分享,可在线阅读,更多相关《Java聊天系统实验报告.docx(47页珍藏版)》请在冰点文库上搜索。

Java聊天系统实验报告.docx

Java聊天系统实验报告

Java实现的聊天系统实验报告

实验作者:

李敏、王永生、陈振锚、甘利军

第一章系统概述

本实验完成的聊天系统是一个C/S体系结构网络程序的实例,其操作原理为:

服务器程序会等待客户端联机,当有用户要求加入聊天室且联机成功后,便可开始发送消息,这些消息将会以广播的方式传送给所有其他在聊天室中的成员。

第二章系统框架

2.1网络架构

以Socket通信机制实现聊天程序。

允许多个客户机连接,并设置广播、私语等多种聊天方式。

服务器用ServerSocket“侦听”进入的连接;客户机用Socket初始一次连接。

一旦客户(程序)申请建立一个套接字连接,ServerSocket就会返回(通过accept()方法)一个对应的服务器端套接字,以便进行直接通信。

1. 服务器通过ServerListen这个线程来监听、负责响应客户端的的各种信息,包括用户的登陆,用户的注册,各个客户端的信息相互转发。

2. 客户端负责为用户提供登陆界面,将信息发送至服务器,通过 ClientReceive类负责与服务器其它客户端的通信工作。

2.2系统架构

本实验完成的聊天系统是一个C/S体系结构网络程序的实例,用户可以在客户端注册,登陆,与在线好友及私聊或群聊,能够查看在线用户,查看好友列表,修改个人信息!

2.3模块功能说明

①服务器程序

(1)能等待用户联机,并建立和客户端通信的I/O通道;

(2)当有用户要求加入聊天室,先验证其帐号和密码的合法性,验证成功后允许联机并将登陆信息写入日志log表;

(3)能将用户发来的信息存入数据库保存,以便查询统计,同时能将消息广播给所有聊天室成员;

(4)能清除不正常终端的联机;

(5)系统管理:

能设置加入聊天系统的人数限制,能查看用户登陆信息和聊天信息。

②客户端程序

(1)提供用户的注册、登陆及连接服务器时ip,port的修改

(2)用户登陆后,能修改注册信息以及查看在线用户,好友列表

(3)能够与其他客户端及服务端进行各种信息转发

第三章系统详细设计

说明各模块的功能,并列出UML类图,以及类的说明

系统用例图

UML类图

(服务端)

(客户端)

类的说明参考如下:

一、ServerGUI类

1、ServerGUI类简介

服务端的一个主窗口类,服务端的main()方法在这个类里,是首先启动的,所有服务端的功能都在这个类里调用,可以通过这个类设置端口,启动聊天服务,停止服务,向所有用户或个别用户发送消息,还设置客户端最大连接数,查看用户信息,是否联机情况和用户聊天记录等

2、变量说明

数据类型

变量名

变量作用

DataBaseManager

DBM

操作数据库的类

JButton

exitButton

退出按钮

JMenuItem

exitMenuItem

退出菜单

int

height

窗口的高

JMenu

helpMenu

帮助菜单

JMenuItem

helpMenuItem

帮助子菜单

JTextField

inputField

聊天信息输入框

JLabel

label_1

为了排版的标签

JLabel

label_2

为了排版的标签

JLabel

label_3

为了排版的标签

JLabel

label_4

为了排版的标签

ServerListen

listenThread

服务端的侦听类

JTextArea

messageArea

显示全部聊天信息

JScrollPane

messageScrollPane

滚动条

JPanel

panel

放置组件

JPanel

panel2

放置组件

JPanel

panel3

放置组件

JButton

portButton

端口设置

JMenuItem

portMenuItem

端口设置

JMenuItem

selectUserListMenuItem

查看用户列表

JButton

sendButton

发送按钮

JLabel

sendMsgLab

显示发送消息标签

JLabel

sendToLab

显示发送至标签

JMenu

serverMenu

服务菜单

ServerSocket

serverSocket

此类实现服务器套接字

JMenuItem

setChatNumMenuItem

设置(限制)聊天人数

JButton

startButton

启动服务

JMenuItem

startMenuItem

启动服务

int

startX

窗口左上角的X坐标

int

startY

窗口左上角的Y坐标

JToolBar

statusBar

创建状态栏

JTextField

statusBarLab

显示状态栏信息

JButton

stopButton

停止服务

JMenuItem

stopMenuItem

停止服务

JMenu

systemMagMenu

系统管理菜单

JToolBar

toolBar

创建工具栏

JComboBox

userComboBox

用户列表下拉框

UserLinkList

userLinkList

用户链表

String

userName

用户名

int

width

窗口的宽

3、构造方法说明

方法名及参数

构造方法作用

publicServerGUI()

初始化服务端窗口

4、方法说明

返回值类型

方法名及参数

方法作用

publicvoid

actionPerformed(ActionEvente)

监听事件的实现方法

publicvoid

sendMsgToAll(Stringmsg)

向所有人发送消息

publicvoid

sendStopToAll()

向所有人发送服务器关闭的消息

publicvoid

sendSystemMessage()

向客户端用户发送消息

publicvoid

setLoc(ContainerJF)

设置窗口的位置

publicvoid

startService()

启动服务端

publicvoid

stopService()

关闭服务端

方法详细说明

(1)actionPerformed方法

publicvoidactionPerformed(ActionEvente)

Parameters:

动作事件ActionEvente

方法体 :

首先判断传进来的参数,再根据参数类型执行相应的处理动作事件

(2)sendMsgToAll方法

publicvoidsendMsgToAll(Stringmsg)

Parameters:

聊天消息Stringmsg

(3)sendStopToAll方法

publicvoidsendStopToAll()

向所有人发送服务器关闭的消息

(4)sendSystemMessage方法

publicvoidsendSystemMessage()

向客户端用户发送消息

(5)setLoc方法

publicvoidsetLoc(ContainerJF)

Parameters:

容器ContainerJF

设置窗口的位置

(6)startService方法

publicvoidstartService()

启动服务端

(7)stopService方法

publicvoidstopService()

关闭服务端

二、UserList类

1、UserList类简介

可能通过该类查看所有用户的信息,可以删除用户,可以看到用户聊天信息。

2、变量说明

数据类型

变量名

变量作用

JButton

buttonCancer

退出

JButton

buttonDelete

删除

Container

container

容器

DataBaseManager

dbm

操作数据库的类

GridBagLayout

gridBagL

布局类

JScrollPane

messageScrollPane

滚动条

JPanel

panelButton

放置按钮

JPanel

panelContainer

放置组件

ResultSet

rst

得到从数据库返回的数据

JTextArea

showMessage

显示聊天记录

String

str

写SQL语句

JTable

table

Table组件,显示用户记录

3、构造方法说明

方法名及参数

构造方法作用

publicUserList(JFrameframe)

初始化用户列表窗口

4、方法说明

返回值类型

方法名及参数

方法作用

publicvoid

actionPerformed(ActionEvente)

监听事件的实现方法

privatevoid

addContainer(JPanelpanel,JComponentcomponent,GridBagConstraintsgbc,intgridx,intgridy,intgridwidth,intgridheight)

该方法为了把组件加到一个容器里,按照指定的布局坐标

方法详细说明

(1)actionPerformed方法

publicvoidactionPerformed(ActionEvente)

Parameters:

动作事件ActionEvente

方法体 :

首先判断传进来的参数,再根据参数类型执行相应的处理动作事件

(2)addContainer方法

publicvoidaddContainer(JPanelpanel,JComponentcomponent,GridBagConstraintsgbc,intgridx,intgridy,intgridwidth,intgridheight)

Parameters:

容器JPanelpanel,组件JComponentcomponent,布局容器GridBagConstraintsgbc,X坐标intgridx,Y坐标intgridy,宽度intgridwidth,高度intgridheight

该方法为了把组件加到一个容器里,按照指定的布局坐标

三、UserLinkList类

1、UserLinkList类简介

用户链表类,可以通过该类增加,删除用户,返回用户数,根据索引查找用户等

2、变量说明

数据类型

变量名

变量作用

int

count

存用户数

Node

pointer

用户链表的结点类对象

Node

root

用户链表的结点类对象

3、构造方法说明

方法名及参数

构造方法作用

publicUserLinkList()

构造用户链表

4、方法说明

返回值类型

方法名及参数

方法作用

publicvoid

addUser(Noden)

添加用户

publicvoid

delUser(Noden)

删除用户

publicNode

findUser(intindex)

根据索引查找用户

publicNode

findUser(Stringusername)

根据用户名查找用户

publicint

getCount()

返回用户数

方法详细说明

(1)addUser方法

publicvoidaddUser(Noden)

Parameters:

用户链表的结点类Noden

添加用户

(2)delUser方法

publicvoiddelUser(Noden)

Parameters:

用户链表的结点类Noden

删除用户

(3)findUser方法

publicNodefindUser(intindex)

Parameters:

索引intindex

Returns:

用户链表的结点类

(4)findUser方法

publicNodefindUser(Stringusername)

Parameters:

用户名Stringusername

Returns:

用户链表的结点类

(5)getCount方法

publicintgetCount()

Returns:

返回用户数

四、ServerReceive类

1、ServerReceive类简介

服务器收发消息的类,它继承了Thread这个多线程的类,向客户端发送各种类型的消息,向客户端发送用户的列表

2、变量说明

数据类型

变量名

变量作用

JTextArea

textarea

定义文本区域

JTextField

textfield

定义文本框

JComboBox

combobox

定义下拉框

Node

client

定义用户链表的结点类

UserLinkList

userLinkList

定义用户链表

boolean

isStop

是否停止

3、构造方法说明

方法名及参数

构造方法作用

publicServerReceive(JTextAreatextarea,JTextFieldtextfield,JComboBoxcombobox,Nodeclient,UserLinkListuserLinkList)

设置textarea,textfield,combobox,client,userLinkList的值

4、方法说明

返回值类型

方法名及参数

方法作用

publicvoid

run()

线程里的run方法

publicvoid

sendToAll(Stringmsg)

向所有人发送消息

publicvoid

sendUserList()

向所有人发送用户的列表

方法详细说明

(1)run方法

publicvoidrun()

方法体:

调用了sendUserList()方法,向所有人发送用户的列表

只要客户端连接还开着,就向所有人发送消息,要是有用户下线了,则告诉所有人再向所有人发送消息,重新发送用户列表,刷新

(2)sendToAll方法

publicvoidsendToAll(Stringmsg)

Parameters:

发送的消息Stringmsg

方法体 :

向所有人发送消息

(3)sendUserList方法

publicvoidsendUserList()

方法体 :

向所有人发送用户的列表

五、ServerListen类

1、ServerListen类简介

继承了Thread线程的一个服务端的侦听类,用于侦听用户上线下线

2、变量说明

数据类型

变量名

变量作用

ServerSocket

server

此类实现服务器套接字

JComboBox

combobox

定义下拉框

JTextArea

textarea

定义文本区域

JTextField

textfield

定义文本框

UserLinkList

userLinkList

用户链表

Node

client

用户链表的结点类

ServerReceive

recvThread

服务器收发消息的类

boolean

isStop

是否停止

3、构造方法说明

方法名及参数

构造方法作用

publicServerListen(ServerSocketserver,JComboBoxcombobox,JTextAreatextarea,JtextFieldtextfield,UserLinkListuserLinkList)

设置server,combobox,textarea,,textfield,userLinkList的值

4、方法说明

返回值类型

方法名及参数

方法作用

publicvoid

run()

线程里的run方法,侦听客户端是否发来了信息

方法详细说明

(1)run方法

publicvoidrun()

方法体:

侦听客户端是否发来了信息,接收客户端消息,再调用ServerReceive类的线程

六、PortConf类

1、PortConf类简介

生成端口设置对话框的类,可以通过该类设置服务器开的端口.

2、变量说明

数据类型

变量名

变量作用

JPanel

panelPort

定义一个容器

JButton

save

定义保存按钮

JButton

cancel

定义取消按钮

JPanel

panelSave

定义放按钮的容器

JLabel

message

定义显示的信息标签

JTextField

portNumber

定义输入框

JLabel

DLGINFO

定义提示信息的标签

3、构造方法说明

方法名及参数

构造方法作用

publicPortConf(JFrameframe)

初始化设置端口的对话框

4、方法说明

返回值类型

方法名及参数

方法作用

privatevoid

jbInit()

初始化对话框的组件

方法详细说明

(1)jbInit方法

privatevoidjbInit()

方法体 :

初始化对话框的组件

七、Node类

1、Node类简介

用户链表的结点类.

2、变量说明

数据类型

变量名

变量作用

String

username

定义用户名

Socket

socket

定义套接字

ObjectOutputStream

output

定义输出流

ObjectInputStream

input

定义输入流

Node

next

用户链表的结点类

八、Help类

1、Help类简介

一个帮助的类,可以通过该类获得使用的方法。

2、变量说明

数据类型

变量名

变量作用

JPanel

titlePanel

定义标题容器

JPanel

contentPanel

定义内容容器

JPanel

closePanel

定义放关闭按钮的容器

JButton

close

定义一个关闭的按钮

JLabel

title

定义一个显示标题的标签

JTextArea

help

定义显示帮助的文本区域

Color

bg

定义颜色

3、构造方法说明

方法名及参数

构造方法作用

publicHelp(JFrameframe)

调用jbInit()方法,初始化窗口内容

4、方法说明

返回值类型

方法名及参数

方法作用

privatevoid

jbInit()

初始化各种组件

方法详细说明

(1)jbInit方法

privatevoidjbInit()

方法体 :

初始化各种组件

九、DataBaseManager类

1、DataBaseManager类简介

可以通过该类连接数据库,使用JDBC连接。

2、变量说明

数据类型

变量名

变量作用

Connection

con;

定义一个连接数据库的类对象

ResultSet

rs

定义返回数据结果集的类对象

Statement

stmt

定义了一个执行静态SQL语句并返回它所生成结果的对象的类对象

3、构造方法说明

方法名及参数

构造方法作用

publicDataBaseManager()

连上一个已知的数据库

4、方法说明

返回值类型

方法名及参数

方法作用

publicvoid

closeConnection()

关闭数据库连接

publicResultSet

getResult(StringstrSQL)

执行SQL语句,返回数据结果集

publicboolean

updateSql(StringstrSQL)

更新数据,返回是否成功

方法详细说明

(1)closeConnection方法

publicvoidcloseConnection()

方法体:

关闭数据库的连接

(2)getResult方法

publicResultSetgetResult(StringstrSQL)

Parameters:

SQL语句StringstrSQL

Returns:

执行SQL语句得到的数据集

(3)updateSql方法

publicbooleanupdateSql(StringstrSQL)

Parameters:

SQL语句StringstrSQL

Returns:

是否更新成功

十、ClientGUI类

1、ClientGUI类简介

该类是聊天客户端的主界面,提供了客户端聊天的一个窗口,用户可以通过该类进行注册、登陆、信息修改、查看在线用户、添加好友及登陆前的连接设置。

2、变量说明

数据类型

变量名

变量作用

JMenu

operateMenu

定义操作menu

JMenu

settingMenu

定义设置menu

JMenu

helpMenu

定义帮助menu

JMenuItem

regMenuItem

定义注册MenuItem

JMenuItem

loggingMenuItem

定义登陆MenuItem

JMenuItem

onlineUserMenuItem

定义在线用户子MenuItem

JMenuItem

logoutMenuItem

定义注销MenuItem

JMenuItem

friendListMenuItem

定义好友列表MenuItem

JMenuItem

exitMenuItem

定义退出MenuItem

JMenuItem

userSetMenuItem

定义用户设置MenuItem

JMenuItem

connectSetMenuItem

定义连接设置MenuItem

JMenuItem

helpMenuItem

定义帮助MenuItem

JTextArea

messageArea

定义消息显示area

JTextField

inputField

定义消息输入field

JToolBar

toolBar

定义工具栏。

JToolBar

statusBar

定义状态栏

JButton

use

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

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2