简易聊天工具详细设计报告讲解Word格式文档下载.docx

上传人:b****8 文档编号:22445273 上传时间:2023-02-04 格式:DOCX 页数:48 大小:327.94KB
下载 相关 举报
简易聊天工具详细设计报告讲解Word格式文档下载.docx_第1页
第1页 / 共48页
简易聊天工具详细设计报告讲解Word格式文档下载.docx_第2页
第2页 / 共48页
简易聊天工具详细设计报告讲解Word格式文档下载.docx_第3页
第3页 / 共48页
简易聊天工具详细设计报告讲解Word格式文档下载.docx_第4页
第4页 / 共48页
简易聊天工具详细设计报告讲解Word格式文档下载.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

简易聊天工具详细设计报告讲解Word格式文档下载.docx

《简易聊天工具详细设计报告讲解Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《简易聊天工具详细设计报告讲解Word格式文档下载.docx(48页珍藏版)》请在冰豆网上搜索。

简易聊天工具详细设计报告讲解Word格式文档下载.docx

3.2.2.1用户注册模块............................................7

3.2.2.2用户登陆模块............................................7

3.2.2.3用户密码修改模块........................................7

3.3两大模块工作流程............................................8

3.4系统数据结构设计...........................................9

3.4.1数据逻辑设计..............................................9

3.4.2数据字典..................................................9

四、详细设计与编码实现..........................10

4.1服务器端详细设计..........................................10

4.1.1服务器界面设计...........................................10

4.1.2服务器程序类.............................................11

4.1.3服务器端连接用户的线程设计...............................12

4.1.4服务器端线程的管理.......................................13

4.2客户端的详细设计........................................13

4.2.1界面包的设计(view包)................................14

4.2.1.1用户登录界面...........................................14

4.2.1.2用户好友列表界面.......................................15

4.2.1.3用户聊天界面...........................................18

4.2.2模块包的设计(model包)...............................19

4.2.2.1客户端连接服务器类.....................................19

4.2.2.2客户检查使用者类.......................................20

4.2.3用户端工具包的设计(tools包)........................21

4.2.3.1客户端连接服务器线程类.................................21

4.2.3.2管理客户端连接服务器线程类.............................22

4.2.3.3管理用户的聊天界面的类.................................23

4.2.3.4管理好友列表、黑名单界面类.............................23

4.3公共包的详细设计..........................................23

4.3.1User类...................................................23

4.3.2包的种类定义类...........................................24

4.3.3传输包定义类.............................................24

五、运行测试......................................26

1.首先开启服务器..............................................26

2.进行用户登录................................................26

3.用户之间聊天................................................28

六、结束语........................................29

参考文献..........................................30

一、引言

1.1设计聊天工具的背景及意义

随着计算机科学技术的飞速发展,网络越来越深刻的改变着人们生活方方面面。

各种基于网络的应用技术在人们的政治、经济、生活等的各个方面都发挥着重要的作用。

例如QQ,MSN等基于Internet的即时聊天工具。

这些工具通过网络这个新兴的媒介进行信息交流相比其他传统媒介具有数据量大,实时性强,操作简单,成本低廉等优点。

不仅如此即时聊工具还具备许多传统媒介不具备的强大功能,它们能传送文字、声音、影像和文档,而且能更加人性化的显示联络人的名单和通信状态。

因而它们在现实生活中受到了广泛的欢迎,这是有目共睹的。

目前基于Internet的即时聊天工具已经做的非常完美,然而基于局域网的即时聊天工具却不如人意。

而在高等教育方面,网络展现出不可替代的作用。

为了适应现代信息化,教学局域网就应运而生。

而教学局域网内的即时通信能力则显得尤为重要。

所以对于学校和公司内部网络等机构,局域网即时聊天的应用还是相当重要的。

一个好的局域网通信软件将对学校和公司的运作产生积极的影响。

1.2课题现状

基于局域网的即时通信软件的核心技术其实与基于Internet的即时通信软件的设计技术是一样的,只是规模较小。

基于Internet的通信工具一般是采用UDP或TCP协议来实现的,开发技术已经非常成熟。

比如QQ、MSN等等,它们都是基于Internet的即时通信软件,它们不仅实现了即时聊天、文件传输等功能,而且还能够实现网络即时视频、语音聊天功能。

它们的功能正在不断扩充,使其更加人性化,满足人们更多的需求。

这类软件其实都是在下层协议的基础之上,通过网络通信接口进行设计的软件产品。

在局域网内,这类软件的设计比在Internet中设计更为简单。

因为Internet是网络的网络,结构更为复杂,碰到的状况比在局域网中要多。

而局域网中事情就简单的多了,所以局域网聊天工具在实现即时通信时就相对容易些了。

1.3开发平台介绍

这次课题设计主要用Java语言,所以就选择相应的开发平台和工作、测试环境为MyEclipse。

MyEclipse是一个十分优秀的用于开发Java,J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。

MyEclipse目前支持JavaServlet,AJAX,JSP,JSF,Struts,Spring,Hibernate,EJB3,JDBC数据库链接工具等多项功能。

可以说MyEclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。

二、需求分析

2.1编写目标

聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客服机/服务器架构模式,也就是通常所简称的C/S模式。

通过Java提供的Socket类来连接客户机和服务器并使客户机与服务器之间相互通信。

由于聊天是多点对多点的而Java提供的多线程功能,用多线程可完成多点对多点的聊天。

主要有两个应用程序,分别为服务器程序和客户端程序。

服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;

客户端应用程序主要用于客户聊天记录的显示和信息输入。

采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。

聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。

该聊天系统实现私聊,一对多聊,用户登陆,退出聊天系统等功能。

2.2可行性分析

经济可行性:

由于本系统的主要背景是课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行Java软件的电脑便可,所以不用考虑到经济问题。

技术可行性:

使用Java作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。

运行可行性:

本系统为一个小型的局域网聊天系统,所耗费的资源非常的小,现在一般的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。

综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的

2.3分析需求

2.3.1功能需求分析

程序要实现的功能:

程序启动之后要能够知道局域网内哪些用户在线,并可以与之通信;

一旦某个网内用户上线或离线,需要立即更新信息,并通知所有在线用户;

当双击用户列表中某个列表项时,要能够弹出信息发送框,并可以编辑要发送的信息,然后发送。

2.3.2数据需求分析

对于局域网内的用户需要具体的数据信息来表示,服务器则需要一个保存所有用户信息数据表,其基本内容应包括用户ID,用户名,密码,状态,及IP地址。

2.3.3性能需求分析

实用性:

为局域网聊天提供方便,有效进行作业管理。

操作简单:

本系统应该适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。

技术先进:

产品的系统设计和开发应紧跟着整个计算机发展潮流,采用当时最先进的设计思想,利用最新的开发技术和开发工具。

使系统能够无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。

安装使用简便:

服务器端的安装简洁明了,客户机无需再装任何软件就可以直接注册登陆聊天。

适应性:

应该能广泛应用于不同类型的企事业单位。

系统采用模块化设计,用户可以根据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。

代码可读性好:

文中的代码将尽可能简洁,易懂。

2.3.4系统运行需求

运行环境:

Windows9x、2000、xp、2003,Linux

必要环境:

JDK1.5以上

硬件环境:

CPU400MHz以上,内存64MB以上

2.4.1服务器端模块:

服务器启动,进行监听

功能:

转发用户传播的信息

服务器自动更新用户状态信息

2.4.2客户端模块:

登陆服务器

列出当前在线用户信息;

聊天好友的的选择;

发言:

对输入的数据进行发送;

离开状态;

2.5数据流图

2.5.1顶层数据流图

顶层数据流图

2.5.2一层数据流图

一层数据流图

2.5.3二层数据流图

系统二层数据流图

三、概要设计

3.1系统总模块图

用户端

服务器端

简易聊天工具

3.2模块功能之间的关系

3.2.1服务器端模块

3.2.1.1用户上下线识别及显示模块

服务器开启使用设定的端口进行监听,识别并显示用户上下线信息。

目标:

当有用户请求登陆时,服务器通过套接字获取用户端的IP地址以及用户名和对应密码,识别是否一致,从而显示用户在线信息,当用户下线时,断开连接,显示用户下线信息。

基本实现用户状态与信息显示一致。

3.2.1.2信息识别转发模块

服务器将用户发送的信息接收、分析、存储并转发到目标用户。

服务器定义一个用z于存储要求请求连接用户的端口号以及该端口客户发送的信息的数组,该数组服务器、客户端共享,服务器将发送端的基本信息存储,目的段可以读取该信息,从而实现信息转发。

3.2.2客户端模块

3.2.2.1用户注册模块

实现用户账号的注册

通过用户端的一个线程与服务器数据库连接,用户输入创建的用户名、密码,若通过合法性检测,则将该用户注册的信息写入后台数据库

3.2.2.2用户登陆模块

实现用户登陆。

用户输入用户名、密码并点击登陆,服务器端接收用户端登陆请求,存储请求信息,并进行检验,如果通过合法性检测则进入聊天主界面。

(1)群聊模块

能够进行类似于qq群聊的聊天功能。

客户端点击“发送信息”按钮,该客户端的ip地址、端口号以及信息内容一起打包写入服务器的存储数组,客户端通过线程可以读取该数组中的内容,从而实现群聊。

(2)单聊模块

功能:

能够进行点对点的聊天方式。

目标:

客户端用户点击“开始私聊”按钮,输入对方的昵称以及ip地址,从而该用户开启端口用于监听,同时定义输入、输出流文件,客户端延迟片刻,然后与该端口取得连接。

当任意一方点击“发送信息”按钮时,和群聊同一机理,通过读取共享文件内容实现私聊。

3.2.2.3用户密码修改模块

用户能够修改自己账号的密码。

用户输入用户名、旧密码、新密码,服务器端接收用户端密码修改请求,存储修改信息,并进行检验,若通过合法性检测,则把修改后的信息重新写入后台数据库。

3.3两大模块工作流程

客户端工作流程图

服务器端工作流程图

3.4系统数据结构设计

3.4.1数据逻辑设计

组成(用户qq,状态,好友,分组)

用户qq(qq号码,昵称,密码,性别,年龄,好友名字,分组名称)

状态(qq号码,是否在线,ip地址,端口)

好友(好友qq号码,好友名字,所在分组名字)

分组(分组ID,分组名称,所属qq号码)

3.4.2数据字典

名称

取值类型

长度

描述

位置

QQ号码

Int

5-8

唯一标示用户,不可为空

用户qq表,状态表

昵称

Char

8

用户昵称

用户qq表

密码

6-16

用户身份鉴定,不可为空

性别

2

用户性别,

可空

年龄

Smallint

0-99

用户年龄,

好友名字

好友昵称

用户qq表,好友表

分组名称

分组名字

用户qq表,分组表

是否在线

1

记录当前用户状态,不可为空

状态表

Ip地址

32

当前登录IP地址

端口

4

登录端口号

好友qq号码

唯一标示好友,不可为空

好友表

所在分组名字

所在分组名字,不可为空

所属qq号码

所属用户,不可为空

分组表

四、详细设计与编码实现

4.1服务器端详细设计

设计中我在服务器端建立了四个包,分别是com.qq.server.view包,com.qq.server.tools包,com.qq.server.model包以及公用mon包;

根据包的名称就很容易理解各个包中所包含的类的功能。

View包主要是存放服务器界面设计类的,model包中包含的是服务器各个模块设计类,tools包中包含的是服务器工作时所要用的工具设计类,最后commo包中包含的是服务器端和客户端所需共同使用的内容设计类。

其实还有一个包com.qq.server.db包,是用来放置管理用户中号和密码的数据库设计类,但是最终没有设计,只是偷懒的将用户是账号和密码在客户和服务器连接的程序代码中进行固化了。

4.1.1服务器界面设计

服务器界面设计类的类名为MyServerFrame,是存放在view包中,主要是实现服务器端的控制界面,其可以实现启动服务器、关闭服务器、管理和监控服务器等功能。

通过java界面设计语句设计出服务器界面的布局:

整体只是由一个JPanel放在中间,JPanel主要是有两个JButton按钮组合而成,分别为启动和关闭按钮,至于服务器界面的监督管理功能在此没有进行设计,以后会在加以补充。

此服务器界面涉及的变量如下

JPaneljpl;

JButtonjbt1,jbt2;

其中对jbt1做了一个监听,当点击这个按钮时就会执行MyQqServer类中的代码,从而完成服务器开启功能。

publicMyServerFrame()

{

jpl=newJPanel();

jbt1=newJButton("

启动服务器"

);

jbt1.addActionListener(this);

对jbt1的监听

jbt2=newJButton("

关闭服务器"

jpl.add(jbt1);

jpl.add(jbt2);

this.add(jpl,"

Center"

this.setSize(500,400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==jbt1)如果点击了jbt1

{

newMyQqServer();

跳转到MyQqServer继续执行程序

}

}

4.1.2服务器程序类

服务器程序类类名为MyQqServer,存放在model包中,它是真正的聊天工具服务器程序,其目的是在9999端口监听等待、监听是客户端否有客户发起连接,接受客户端发来的连接请求并且检查客户输入信息的合法性,当用户名和密码对应且正确时,返回登陆成功的信息包,服务器为用户单开一个线程,让线程与该客户端保持通讯,启动客户端与服务器间的线程,并通知其其他在线的好友;

try{

//在端口号为9999处监听

System.out.printf("

我是服务器,在9999端口监听"

ServerSocketss=newServerSocket(9999);

//阻塞,等待连接

while(true)

{

Sockets=ss.accept();

定义套接字接受

//接受客服端发来的信息是以对象流的方式

ObjectInputStreamois=newObjectInputStream(s.getInputStream());

Useru=(User)ois.readObject();

Messagem=newMessage();

ObjectOutputStreamoos=newObjectOutputStream(s.getOutputStream());

if(u.getPassword().equals("

123456"

))

{

//返回一个登陆成功包

m.setMesType("

1"

oos.writeObject(m);

//里就单开一个线程,让该线程与该客户端保持通讯

SerConClientThreadscct=newSerConClientThread(s);

MangeClientThread.addClientThread(u.getUserid(),scct);

//启动与该客户端通信的线程

scct.start();

//并通知其他在线用户

scct.notifyother(u.getUserid());

}else{

2"

//关闭链接

s.close();

}

在设计这个程序是要注意,服务器接受用户的信息别且进行检验但是不能以以字节读的方式接受读取,因为以字节

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

当前位置:首页 > 解决方案 > 学习计划

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

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