简易聊天应用程序的设计与实现Word文档格式.docx
《简易聊天应用程序的设计与实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《简易聊天应用程序的设计与实现Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
1.2
人员分工
二、作品概述..............................................................................................................................1
2.1
创作背景
2.2
功能概要
2.3
相关技术
.......................................................................................................................2
2.4
作品可行性分析
..........................................................................................................3
三、需求分析..............................................................................................................................3
3.1
功能性需求
..................................................................................................................3
3.2
非功能性需求
..............................................................................................................6
四、作品实现..............................................................................................................................6
4.1
服务端界面实现
...........................................................................................................6
4.2
客户端界面实现
...........................................................................................................8
4.3
登录实现
.......................................................................................................................9
4.4
聊天功能实现
............................................................................................................11
4.5
退出功能实现
............................................................................................................12
五、作品设计、实现难点分析
................................................................................................14
5.1
难点分析
....................................................................................................................14
5.2
解决方案
5.3
测试结果
....................................................................................................................15
计算机科学与技术专业大作业报告
一、团队介绍及人员分工
团队介绍
吴益帆:
有良好的统筹能力和领导力,能合理安排各组员工作。
张咪:
踏实耐心,有良好的创新能力和策划能力。
沈丹丹:
勤奋刻苦、有钻研精神,对待编程工作热情细心,孜孜不倦。
吴晓晓:
对待工作细致专注,设计能力较强。
团队成员之间有较好的默契度及协作性。
分工明确,各司其职,在共同的努
力及相互的配合下,共同解决程序中出现的困难并尽可能的优化程序,最终完成
整个项目。
人员分工
负责程序最后的整理,完成部分功能及错误的处理。
负责程序的编码部分及项目具体功能的实现。
负责程序的界面部分,为改程序搜索解决的方案。
负责程序的策划部分,项目的可行性分析及文档的编写工作。
二、作品概述
创作背景
网络聊天室通常直称聊天室,是一种人们可以在线交谈的网络论坛,在同一
聊天室的人们通过广播消息进行实时交谈。
在当今信息时代,越来越多的聊天工具被应用,java
语言是当今流行的网络
编程语言,它具有面向对象,与平台无关,安全,多线程等特点。
使用
语
言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备
进行应用程序的开发。
面向对象的开发是当今世界最流行的开发方法,它不仅具
有更贴近自然地语义,而且有利于软件的维护和继承,锻炼我们熟练地应用面向
对象的思想和设计方法解决实际问题的能力。
功能概要
它是图形界面,线程,流
与文件系统等技术的综合应用。
其界面主要采用了
java.awt
包,java.swing
包等。
程序实现了聊天室的基本功能,其中有:
(1)
服务器端功能描述:
启动服务器端:
点击“开启”按钮,启动服务;
端口服务:
输入服务器的某个端口号,开启服务器的这个端口;
显示在线用户信息:
在右边的用户列表显示所有在线的用户信息;
显示用户聊天信息:
在左边的聊天信息区域内显示所有用户所发的信息;
服务端关闭:
点击“关闭’按钮,关闭服务。
(2)
客户端功能描述:
启动客户端:
运行客户端程序,启动客户端;
选择服务器端口号:
输入想要连接的服务器的端口号;
用户登录:
填入用户名,点击“登录”按钮,连接相应服务器;
显示在线用户:
在右边的用户列表中可以看到当前在线的用户;
发送/接受聊天消息:
在下面的文本输入区域输入要发送的内容,点击发送可以在
左边的聊天信息区域内显示自己以及其他用户所发的信息;
用户离线:
点击“离线”按钮,与服务器断开连接;
客户端关闭:
关闭客户端图形用户界面,关闭客户端。
相关技术
概述
JAVA
语言有下面一些特点:
简单、面向对象、分布式、解释执行、鲁棒、
安全、体系结构中立、可移植、高性能、多线程以及动态性。
丰富的类库
提供了大量的类以满足网络化、多线程、面向对象系统的
需要。
语言包提供的支持包括字符串处理、多线程处理、数学函数处理等,可以
用它简单地实现
程序的运行平台。
实用程序包提供的支持包括哈希表、堆
栈、可变数组、时间和日期等。
输入输出包用统一的"
流"
模型来实现所有格式的
I/O,包括文件系统、网络、输入低级网络包用于实现
Socket
编程。
抽象图形用
户接口包实现了不同平台的计算机的图形用户接口部件,包括窗口、菜单、滚动
条、对话框等,使得
可以移植到不同平台的机器。
网络包支持
Internet
的
TCP/IP
协议,提供了与
的接口。
它支持
URL
连接,WWW
的即时访问,并且
简化了用户/服务器模型的程序设计。
套接字
Socket,简称套接字,用于实现网络上客户和服务器之间的连接。
也就是说
1
网络上两个或两个以上双工方式通信的进程之间总有一个连接,这个连接的端点
成为套接字,套接字是在比较低的层次上通信的。
具体的说:
一个服务器应用程序一般侦听一个特定的端口等待客户端的连接
请求,当一个连接请求到达时,客户端和服武器端建立一个通信连接,在连接过
程中,客户端被分配一个本地端口与一个
建立连接,客户端通过写
来通知服务器,以读
中的信息,类似的服务器也获得一个本地端
口,它需要一个新的端口号来侦听原始端口上的其他连接请求。
服务器也通过它
的本地端口连接一个
Socket,通过读写和客户端通信。
程序的工作过程:
1.建立
连接:
在通信开始之前由通信双方确认身份,建立一条专用
的虚拟连接道。
2.数据通信:
利用虚拟连接通道传送数据信息进行通信。
3.关闭:
通信结束时,再将所建的虚拟连接拆除。
作品可行性分析
由于本软件知识一个聊天程序,程序只提供用户之间的聊天功能,故对网络
传输数据要求不是很高,只要正常的传输速度就可以了。
三、需求分析
功能性需求
本聊天室分为聊天室服务端和聊天室客户端,服务端与客户端之间通过套接
字
Socket(TCP)连接。
在
中使用套接字相当简单,JavaAPI
为处理套接口
的通信提供了一个类
.Socket.,使得编写网络应用程序相对容易.服务
器采用多线程以满足多用户的请求,并通过创建一个
ServerSocket
对象来监听
来自客户的连接请求,默认
IP
地址为:
localhost
默认端口为
8888。
(1)聊天室服务端模块,包括端口服务、启动服务、关闭服务、显示在线用
户、显示用户聊天信息,如图
所示;
2
图
聊天室服务端模块图
输入要侦听的端口,默认为
8888;
启动服务:
启动服务器,并开始在设置的端口中侦听,客户端用户可以
登录并开始聊天;
关闭服务:
关闭服务器,侦听结束。
客户端用户不能再聊天;
服务器列表显示在线用户数和所有在线用户名称;
在文本区中显示所有用户聊天信息和登录、退出信
息。
(2)聊天室客户端模块,包括用户登录、用户离线、连接设置、发送和接收
聊天信息、显示在线用户、退出,如图
所示:
聊天室客户端模块图
3
只能在聊天室服务端已开启的情况下,用户点击“按钮”才能登
录,用户登录之后才能开始聊天,登录后不能再修改用户设置和连接设置;
用户点击“离线”按钮,退出聊天,与服务器断开连接;
连接设置:
用户可以设置自己连接的服务器的
地址和端口号,默认的连
接地址为:
localhost:
发送和接收聊天信息:
用户可以给所有人发送信息,并能看到其他用户发送
给所有人的消息;
退出:
关闭所有聊天并退出客户端。
(3)程序流程:
首先启动服务器,用户打开客户端,输入服务器端口号,再
输入用户名就可以登录,登录以后会显示当前在线的用户信息,用户可以看到其
他用户所发的信息,自己也可以发送信息。
用户点击离线就会与服务器断开连接,
最后关闭服务器,如图
3.3
入入入入
入入入入入
入入入
入入
4
程序流程图
非功能性需求
安全需求
本程序能防卫禁止未登录用户进行通信,防止数据丢失,需要输入用户名、
端口号连接相应的服务器才允许用户间的通信。
性能需求
本程序使用的对象是所有运行该程序的用户,用户在连接服务器可以进行客
户端之间的通信。
(3)
易用性需求
本程序的使用对象计算机水平一般,有一定的易用性上的要求,程序应当存
在着一些友好性的提示,提高程序的友好度。
(4)
可维护性需求
本程序能够及时发现并纠正系统故障,对系统数据进行备份,有系统还原功
能。
(5)
健壮性需求
本程序在遭遇非法输入数据,能够排除该数据并继续运行;
对于系统异常有
完备的预警预防处理机制。
四、作品实现
服务端界面实现
在服务端启动后,要显示“简易聊天室服务器”的图形用户界面,如图6.1
6.1
服务端图形用户界面
“简易聊天室服务器”的图形用户界面实现的主要代码如下:
private
Label
svrIP
=
new
Label("
服务器IP:
"
);
TextField
showSvrIP
TextField();
svrPort
服务器端口:
getSvrPort
TextField("
8888"
Button
enter
Button("
启动"
5
TextArea
output
TextArea();
user
当前在线用户(0)"
List
list
List();
void
setup()
{
Panel
top
Panel();
top.setLayout(new
FlowLayout());
top.add(svrIP);
svrIP.setBackground(bg);
top.add(showSvrIP);
showSvrIP.setBackground(bg);
top.add(svrPort);
svrPort.setBackground(bg);
top.add(getSvrPort);
getSvrPort.setBackground(bg);
top.add(enter);
enter.setBackground(bg);
east
east.setLayout(new
BorderLayout());
east.add("
North"
user);
user.setBackground(bg);
Center"
list);
list.setBackground(bg);
setLayout(new
add("
top);
top.setBackground(bg);
East"
east);
east.setBackground(bg);
output);
output.setBackground(bg);
setBackground(bg);
}
点击“启动”按钮,开启默认的服务器8888端口,如图6.2所示:
6.2
服务端端口开启
8888
端口开启实现代码如下:
try
server
ServerSocket(Integer.parseInt(getSvrPort
.getText()));
rightNow
Calendar.getInstance().getTime()
.toLocaleString();
output.append(rightNow
+
\n开启服务器.\n\n"
enter.setLabel("
关闭"
ht
Hashtable();
ht_s
st
ServerThread();
serving
true;
6
}
catch
(IOException
ioe)
output.append("
Error:
ioe
\n\n"
客户端界面实现
在客户端启动后,显示“简易聊天室客户端”的图形用户界面,如图6.3所
示:
6.3
客户端图形用户界面
“简易聊天室客户端”的图形用户界面实现的主要代码如下:
B_login
登陆"
B_logout
离线"
B_send
发送"
userName
您的用户名:
getUserName
//
获取用户名
当前服务器IP:
getSvrIP
获取服务器
当前服务器端口:
获取服务器端口
input
输入文本框
输出文本框
top1
top1.setLayout(new
top1.add("
West"
userName);
userName.setBackground(bg);
getUserName);
getUserName.setBackground(bg);
top2
top2.setLayout(new
top2.add("
svrIP);
7
getSvrIP);
getSvrIP.setBackground(bg);
top3
top3.setLayout(new
top3.add("
svrPort);
getSvrPort);
top4
top4.setLayout(new
top4.add("
top1);
top2);
top3);