基于Java的仿QQ聊天系统文档格式.docx

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

基于Java的仿QQ聊天系统文档格式.docx

《基于Java的仿QQ聊天系统文档格式.docx》由会员分享,可在线阅读,更多相关《基于Java的仿QQ聊天系统文档格式.docx(37页珍藏版)》请在冰点文库上搜索。

基于Java的仿QQ聊天系统文档格式.docx

QQ不仅仅是简单的即时通信软件,它与全国多家寻呼台、移动通信公司合作,实现传统的无线寻呼网、GSM移动电话的短消息互联,是国内最为流行功能最强的即时通信(IM)软件,使QQ不仅仅是单纯意义的网络虚拟呼机,而是一种方便、实用、超高效的即时通信工具。

QQ可能是现在在中国被使用次数最多的通讯工具。

它可以在2000/XP/2003/Win7/Win8操作系统下运行,是十分灵活的网络寻呼工具。

它会自动检查您是否已联网,如果您的电脑已连入Internet,可以搜索网友、显示在线网友,可以根据QQ号、昵称、姓名、email地址等关键词来查找,找到后可加入到通讯录中。

当您的通讯录中的网友在线时,QQ中朋友的头像就会显示在线,根据提示就可以发送信息,如果对方登记了寻呼机或开通了GSM手机短消息,即使离线了,您也可及时将信息传递给您的好友。

虽然以上这些软件是免费的,并且功能越来越强大。

但是它们的唯一的不足就是必须要联网或者下载到它们的服务端,要不然是没法脱离Intenet使用的。

为了能在一个没有连接到Intenet的局域网使用聊天工具,那就必须要有服务器端。

本系统就是包括服务器端与客户端,可以在局域网聊天的一个工具。

1.2涉及的相关技术及协议

1.2.1JAVA语言

经过认真的讨论分析,综合各种计算机高级语言的特征和适应范围,最终决定选择纯面向对象的Java语言来完成课题的设计,下面就技术可行性方面,对Java语言作一简要介绍。

Sun公司的口号就是“网络就是计算机”,Java能使所有东西从桌面计算平稳的转变为基于网络的计算,它是专门为此而建立的,并显然是为了完成这个任务而来的。

使用Java语言,可以相对轻松的一天编写一个有条理的网络程序。

今天,Java的网络功能正在飞跃发展,不断有新的特性增加到这个有价值的基础上,JavaSoft实验室正在不断努力使Java更加完善。

就Java语言的主要特点,本人归纳如下:

Java程序设计的开发过程与运行环境Java是解释型的高级编程语言,所以Java程序的开发通常需要经过编写源程序、编译生成字节码和运行三个过程。

这里要提到,Java应用程序的开发周期包括编译、下载、解释和执行几个部分。

Java编译程序将Java源程序翻译为JVM可执行代码—字节码。

这一编译过程同C/C++的编译有些不同。

当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。

因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。

Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。

这样就有效的保证了Java的可移植性和安全性。

1.2.2C/S模式介绍

20世纪90年代出现并迅速占据主导地位的一种计算模式为客户机/服务器模式,简称为C/S模式,它实际上就是把主机—终端模式中原来全部集中在主机部分的任务一分为二,保留在主机上的部分负责集中处理和汇总运算,成为服务器;

而下放到终端的部分负责为用户提供友好的交互界面,称为客户机。

相对于以前的模式,C/S模式最大的改进是不再把所有软件都装进一台计算机,而是把应用系统分成两个不同的角色和两个不同的地位:

一般在运算能力较强的计算机上安装服务器端程序,而在一般的PC上安装客户机程序。

正是由于个人PC机的出现使客户机/服务器模式成为可能,因为PC机具有一定的运算能力,用它代替了上面第一种模式的哑终端后,就可以把主机端的一部分工作放在客户机端完成,从而减轻了主机的负担,也增加了系统对用户的响应速度和响应能力。

客户机和服务器之间通过相应的网络协议来进行通讯。

客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器。

这种模式的优点充分利用了客户机的性能,使计算能力大大提高;

另外,由于客户机和服务器之间的通讯是通过网络协议进行的,是一种逻辑的联系,因此物理上在客户机和服务器两端是易于扩充的。

C/S模式是目前占主流的网络计算模式。

该模式在操作过程中采取的是主动请示方式:

首先服务器方要先启动,并根据请示提供相应服务(过程如下):

(1)打开一个通信通道同时通知本地主机,服务器愿意在某一个公认地址上接收客户请求。

(2)等待某个客户请求到达该端口。

(3)接收到重复服务请求,处理该请求并发送应答信号。

(4)返回第二步,等待另一客户请求。

(5)关闭该服务器。

客户端:

(1)打开一个通信通道,并连接到服务器所在主机的特定端口。

(2)向服务器发送服务请求报文,等待并接收应答;

继续提出请求。

(3)请求结束后关闭通信通道并终止。

分布运算和分布管理是客户机/服务器模式的特点。

最后选择了C/S模式。

第二章系统分析

2.1可行性分析

(1)经济可行性:

本系统需要一个oracle数据库服务器,由于使用人数比较少,安装一个免费的oracle数据库完全可以应付需要,所以成本就不用考虑了。

(2)操作可行性:

只要一台以上计算机连接在同一个局域网内,本系统就可以安装使用,所以操作上完全不存在问题。

(3)技术可行性:

本系统采用Java语言,是基于CS架构的。

开发这个系统需要开发者对socket编程和javaSwing这两方面的技术比较熟。

由于本人长期从事于java语言编程,所以技术方面是可行的。

2.2需求分析

2.2.1功能分析

本系统要实现的功能如下:

1)注册

服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的呢称,性别,籍贯,个人资料等,接受完毕后,便通过Jdbc-Odbc与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其号码。

客户收到服务器返回的信息后,便打开主登陆窗口。

2)登陆

在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过JdbcOdbc读取数据库,然后与用户输入的信息比较,如果成功,便打开主程序窗口。

然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的表,得到好友的号码后,再在icq表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个矢量(Vector)用以存储好友的呢称,号码。

3)私聊

私聊就是两个聊天。

客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。

例如服务器接收到一个A发给B的消息先判断B是否已经在线,如果在线就将信息发送过去。

B接收到A发来的信息,如果是未建立对话窗口,就询问是否建立对话,否则就丢弃信息。

4)群聊

群聊,就是多人一起聊天。

过程与私聊差不多。

唯一的不同就是服务器会将信息转发给指定群的所有成员。

5)创建分组

用户注册以后默认的好友分组只有一个。

用户在执行添加分组操作以后,客户端分将一个这个动作的信息发送给服务器端(主要是FromClientlisten)。

服务器端的fromClientListen接收到这个请求,会进行数据库操作,将要添加的分组信息插入到数据库中。

如果成功,则返回这个分组的信息给客户端,否则返回错误提示信息。

6)创建群

用户注册以后群个数为0。

用户在执行添加群操作以后,客户端分将一个这个动作的信息发送给服务器端(主要是FromClientlisten)。

服务器端的fromClientListen接收到这个请求,会进行数据库操作,将要添加的群信息插入到数据库中。

如果成功,则返回这个群的信息给客户端,否则返回错误提示信息。

7)查找好友并加为好友

输入要查找的用户ID号,客户端发送一个查询信息给服务器端,如果找到就返回用户服务信息。

打开一个用户信息显示界面,该界面会提供一个“添加为好友”按钮,点击后可将此人加为好友。

如果未找到,弹出一个信息提示框。

8)查找群并加入群

输入要查找的群ID号,客户端发送一个查询信息给服务器端,如果找到就返回用户服务信息。

打开一个群信息显示界面,该界面会提供一个“加入此群”按钮,点击后可将此人加为好友。

如果未找到,则弹出一个信息提示框。

9)文件共享

在启动文件传输服务器的共享文件功能之前,要设置它的IP号和端口,如果设置不好。

好友将无法下看到这些共享的文件。

还有一个重要的步骤就是添加共享文件或目录。

最后启动文件共享。

10)下载文件

使用文件传输的客户端要正确配置好服务器的IP和端口号,以及下载好的文件的存放目录。

如果其中之一配置不好,文件下载将会失败。

设置好以后,点击“连接”按钮,如果配置正确,这时将会看到服务器共享的文件。

目前不能支持文件夹下载,当看到一个文件夹以后,可以双击该文件夹并查看文件夹里面的文件。

2.2.2性能分析

本系统由于采用免费的oracle数据库软件,连接数最多不能超过200,所以并发访问数据库的人数不能超过200人。

2.2.3用例图

2.2.4时序图

客户登陆、注册时的服务器端时序图

本图说明:

服务器接每次与一个客户连接以后,就会去创建一个监听线程。

通过线程来接收客户端发送的所有数据。

如果要查询数据库,监听线程会请求获得一个数据库连接.如果数据库连接已经获得,就把连接交给DBOperation对象,通过此对象可以返回给监听线程必要的结果。

最后监听线程会通过Socket将结果返回给客户端。

2.2.5活动图

1)用户登陆

活动图

(见右图)

本图说明:

首先填写登陆信息,提交以后服务器会对用户名和密码进行验证。

如果不正确,返回一个提示信息。

如果登陆成功,就更新在线状态。

通知所有好友自己已经上线。

2)客户之间的通信活动图

短消息发送以后,服务器端对应的监听线程会接收到一个数据包。

此包中包含接收者的信息,如果接收者在线,数据包将会转发到接收者。

如果不在线,就写入数据库。

3)客户之间的文件传送活动图

本图说明:

客户端向服务器发送文件下载请求。

如果服务器端同意下载,就读取文件流并将数据流写入到客户端。

客户端读取到文件名之后,立刻创建一个新的文件并将读取的数据写入到文件中。

4)新增好友活动图

根据好友ID号查找好友,如果此ID存在,就将用户信息发送到客户端。

同时将好友关系写入到数据库。

5)删除好友活动图

此图说明:

客户向服务器发送删除好友请求。

服务器接收到删除好友请求以后,将好友关系从数据库中删除。

第三章总体设计

3.1功能模块图

本系统主要由由两个子系统组成:

1)文件传输系统;

2)聊天子系统。

文件传输系统的功能主要有:

1)共享文件;

2)查看并下载文件。

聊天子系统的功能有:

1)注册;

2)登陆;

3)添加群;

4)查找群;

5)私聊;

6)群聊;

7)查看好友资料;

8)查找好友;

9)添加好友;

10)创建好友分组。

3.2数据库设计

3.2.1E-R图

用户表(QQUser):

属性:

id,account(登陆账号),pwd,nickname,sign(个性签名),sex,email,head(头像)

关系:

一个用户可以有多个好友分组。

一个用户可以有多个群。

一个用户可以有多条留言。

好友分组表(Qqperson_group):

属性:

id,userid(创建者ID),name(分组名)

关系:

一条记录只对应一个用户,但是可以拥有多个组成员。

群表(Qqpublic_group):

id,userid(创建者ID号),name(群名),sign(群公告)

一个群只有一个创建者,但是可以拥有多个群成员。

3.2.2表结构设计

客户信息表(qquser)

1

自动id号

Id

整数

2

用户账号

Account

3

用户密码

Pwd

字符

4

用户昵称

Nickname

5

用户签名

sign

6

用户性别

Sex

7

用户邮箱

email

8

用户头像

Head

Qq消息表(QQMessage)

自动ID

ID

发信人

Account_from

收信人

Account_to

发送内容

Content

用户分组表(qqpersongroup)

拥有者Id

userid

分组名称

name

公共群表(qqpublic_group)

创建人

群名称

群的公共消息

用户与群的中间表(qquser_publicgroup)

加入的群ID

groupid

加入的用户的ID

用户与分组的中间表(QQuser_persongroup)

加入的分组的id

加入分组的用户的id

以上各表创建的代码如下:

1)创建用户表

createtableqquser(

numberprimarykey,

accountnumberunique,

nicknamevarchar(100),

signvarchar(500),

sexvarchar(10),

emailvarchar(100),

headvarchar(200));

2)创建分组表

createtableqqperson_Group(

idnumberprimarykey,

useridreferencesqquser(id),

namevarchar(100));

3)创建群表

createtableqqpublic_group(

useridnumberreferencesqquser(id),

namevarchar(100),

signvarchar(800));

4)创建消息表

createtableqqmessage(

account_fromnumber,

account_tonumber,

contentvarchar(1000));

5)创建用户与群的中间表

createqquser_publicgroup(

groupidnumberreferencesqqpublic_group(id),

useridreferencesqquser(id);

);

6)创建用户与分组的中间表

createqquser_persongroup(

useridreferencesqquser(id));

7)为用户表插入数据

insertintoqquservalues(1,1,'

long'

,'

I'

mlong'

male'

******************'

48.gif'

insertintoqquservalues(2,2,'

a'

aa'

********'

insertintoqquservalues(3,3,'

b'

bb'

insertintoqquservalues(4,4,'

c'

cc'

insertintoqquservalues(5,5,'

d'

dd'

8)为分组表和群表插入数据

insertintoqqperson_groupvalues(1,1,'

myfriend'

intoqqpublic_groupvalues(1,1,'

haha'

mynewgroup'

9)为用户与群中间表插入数据

insertintoqqperson_group(1,1,1);

insertintoqqperson_group(1,1,2);

insertintoqqperson_group(1,1,3);

insertintoqqperson_group(1,1,4);

insertintoqqperson_group(1,1,5);

10)为用户与分组中间表加入数据

insertintoqqpublic_group(1,1,1);

insertintoqqpublic_group(1,1,2);

insertintoqqpublic_group(1,1,3);

intoqqpublic_group(1,1,4);

insertintoqqpublic_group(1,1,5);

3.3类图

Socket:

非自定义类,.Socket。

Thread:

非自定义类,java.util.Thread。

Client:

负责具体发送和接收数据。

FromServerListen:

监听服务器是否在发送数据。

MainFrame系统的主界面(包括用户列表等)。

QQUserInfo包括用户的好友分组信息和群信息。

QQUserClass包括用户的个人信息,如ID、用户名等。

第四章详细设计及实现

4.1界面设计

1)登陆界面

本界面需要填写的有两个,一个是用户账号,另一个是用户密码。

在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过Jdbc方式读取数据库,然后与用户输入的信息比较,否则返回错误,如果客户收到成功信息就打开主窗口,否则提示出错。

如果成功,便打开主程序窗口。

然后客户向服务器请求读取好友名单,服务器收到该请求,开始读取数据库中的friend表,得到好友的号码后,再在好友表中读取好友资料,然后向客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几个Vector用以存储好友的信息。

2)注册界面

本界面要填写的项目包括:

用户昵称,密码,邮件地址,个性签名。

需要选择的项目包括:

性别,头像。

本界面主要负责将用户的信息包装成一个QQUserClass对象。

注册按钮一旦被点击,就会试图创建一个与服务器端的连接。

连接创建成功就会将填写的信息发送到服务器端。

如果服务器写入数据库成功,就回返回一个账号。

使用这个账号,用户可以登陆到系统中。

3)主界面(如右图)

主界面是系统的核心部分。

它可以列出所有好友和客户所有加入的群,也可以提供共享文件和文件下载功能。

如果用户服务双击好友分组或群,好友列表或群成员列表将会显示出来。

双击一个好友,可以与他进行私聊。

双击一个群成员,可以与群里的所有成员对话。

本界面还提供了以下右键菜单:

添加好友分组、查找好友并加为好友、查找群并加为群、创建群、移动好友到其它分组、查看好友资料、查看群资料。

4)个人资料界面(如下图)

该界面主要显示某个用户信息,包括用户的账号,昵称,性别,个性签名,用户等级等。

本界面还提供了一个“加为好友”按钮,如果点击它,此人将会被加为用户的好友。

默认的是加到第一个好友列表,不过也可以移动其它好友分组。

5)文件传输服务器端界面

该界面使用的步骤为:

第一步:

设置好服务器的IP,端口。

IP一定要是本机的IP,如果是单机测试,IP可以填写“127.0.0.1”。

端口号尽量不要小于2000,小于两千的端口可能被系统占用。

设置完后点击“确定”按钮。

第二步:

添加共享文件。

单击“添加文件共享”按钮,将需要共享的文件或文件夹添加到共享列表中。

第三步:

点击“启动文件发送服务”。

第四步:

如果共享文件完毕,需要点击“退出”。

6)文件传输客户端界面

目前不能支持文件夹下载和多文件下载,当看到一个文件以后,可以双击该文件夹并查看文件夹里面的文件。

7)私聊界面

本界面主要用来显示两个人的对话信息以及发送信息。

发送的信息可以设置字体,大小,字体颜色。

也可以发送一个QQ表情。

8)群聊界面

本界面主要用来显示多人的对话信息以及发送信息。

右边显示的是群公告,可以用来公布一些必要的信息。

4.2数据输入输出设计

4.2.1数据输入

登陆界面数据的输入要求

Num

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

当前位置:首页 > PPT模板 > 中国风

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

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