网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx

上传人:b****7 文档编号:10829870 上传时间:2023-02-23 格式:DOCX 页数:40 大小:1.89MB
下载 相关 举报
网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx_第1页
第1页 / 共40页
网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx_第2页
第2页 / 共40页
网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx_第3页
第3页 / 共40页
网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx_第4页
第4页 / 共40页
网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx

《网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx》由会员分享,可在线阅读,更多相关《网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx(40页珍藏版)》请在冰豆网上搜索。

网络工程毕业设计论文 基于java的仿qq聊天程序的设计与实现.docx

网络工程毕业设计论文基于java的仿qq聊天程序的设计与实现

存档编号_______

 

基于Java的仿QQ聊天系统的设计与实现

 

内容摘要:

 计算机网络的迅速发展,对人类社会诸多领域产生了巨大的影响。

尤其是,随着信息时代的来临,人们之间愈来愈趋向于通过网络来交流和传递信息。

而聊天系统正是当前人们使用最多的中介。

在这个平台上,许多认识或不认识的人们彼此间能够随意的相互交流。

因此,开发和架构这种平台符合时代发展的需要。

本系统在开发中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。

开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。

在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。

关键字:

Socket;服务器端;客户端;连接(connection)

Abstract:

Therapiddevelopmentofthecomputernetworkshasbeenmakingagreatinfluenceinmanyfieldsofhumansociety.Inparticular,alongwithinformationageapproaching,betweenthepeopletendtoincreasinglyinexchangesandthetransmissioninformationthroughthenetwork.Butchatsthesystemispreciselythecurrentpeopleusesmanyintermediary,。

Inthisplatform,peopleeachotherwhichmanyunderstandingordidnotknowcanatwillmutualexchange.Therefore,thedevelopmentandoverheadconstructionthiskindofplatformconformstothetimeneedtodevelop.

ThissystemwiththeLANcorrespondencemechanismprinciple,throughinherittingtheThreadkindtoestablishthemultithreadingdirectly.Inthedevelopment,itusestheelementarytheoryknowledgewhichthecomputernetworkprogrammes.forexample,TCP/IPagreement,Client/Serverpattern,networkprogrammingdesignmethodandsoon.Inthenetworkprogramming,itrealizesreadingandtransmissionoftheinformation,thatis,informatonflowsrealizetheinformationexchange,introduceinformationflowanalysisforrealizingasystem,inwhichcontainessomebasicsoftwareengineeringmethods.

Keywords:

Socket;server;client;connection

 

1.引言

当今主流的聊天工具有QQ,ICQ,MSNMessenger,YahooMessenger等,国内最热门的当属QQ,腾讯QQ(OICQ)是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。

您可以使用QQ和好友用户进行交流,信息即时发送,即时回复,收发及时、功能全面。

此外QQ还具有BP机网上寻呼、聊天室、传输文件、语音邮件、手机短讯服务等功能,QQ不仅仅是虚拟的网络寻呼机,更可与传统的无线寻呼网、GSM移动电话的短消息系统互联,目前QQ和全国多家寻呼台、移动通信公司有业务合作。

是国内不可多得的中文网络寻呼机。

QQ支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和网址。

QQ可以在Win95/98/NT/2000操作系统下运行,是十分灵活的网络寻呼工具。

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

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

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

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

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

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

2.系统分析

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-1系统用例图

2.2.4时序图

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

图2-2注册、登陆时的服务端的时序图

本图说明:

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

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

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

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

2.2.5活动图

1)用户登陆活动图

图2-3用户登陆活动图

本图说明:

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

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

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

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

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

图2-4客户通信活动图

本图说明:

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

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

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

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

本图说明:

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

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

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

图2-5文件传送活动图

4)新增好友活动图

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

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

图2-6新增好友活动图

5)删除好友活动图

此图说明:

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

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

图2-7删除好友活动图

3.总体设计

3.1功能模块图

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

1)文件传输系统;2)聊天子系统。

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

1)共享文件;2)查看并下载文件。

聊天子系统的功能有:

1)注册;2)登陆;3)添加群;4)查找群5)私聊;6)群聊;7)查看好友资料;8)查找好友;9)添加好友;10)创建好友分组。

图3-1系统功能模块图

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-4系统各表之间的联系图

3.2.2表结构设计

表3-1客户信息表(qquser)

1

自动id号

Id

整数

2

用户账号

Account

整数

3

用户密码

Pwd

字符

4

用户昵称

Nickname

字符

5

用户签名

sign

字符

6

用户性别

Sex

字符

7

用户邮箱

email

字符

8

用户头像

Head

字符

表3-2Qq消息表(QQMessage)

1

自动ID

ID

整数

2

发信人

Account_from

整数

3

收信人

Account_to

整数

4

发送内容

Content

字符

表3-3用户分组表(qqpersongroup)

1

自动ID

ID

整数

2

拥有者Id

userid

整数

3

分组名称

name

字符

表3-4公共群表(qqpublic_group)

1

自动ID

ID

整数

2

创建人

userid

整数

3

群名称

name

整数

4

群的公共消息

sign

字符

表3-5用户与群的中间表(qquser_publicgroup)

1

自动ID

ID

整数

2

加入的群ID

groupid

整数

3

加入的用户的ID

userid

整数

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

1

自动ID

ID

整数

2

加入的分组的id

groupid

整数

3

加入分组的用户的id

userid

整数

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

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(

idnumberprimarykey,

useridnumberreferencesqquser(id),

namevarchar(100),

signvarchar(800));

4)创建消息表

createtableqqmessage(

idnumberprimarykey,

account_fromnumber,

account_tonumber,

contentvarchar(1000));

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

createqquser_publicgroup(

idnumberprimarykey,

groupidnumberreferencesqqpublic_group(id),

useridreferencesqquser(id););

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

createqquser_persongroup(

idnumberprimarykey,

groupidnumberreferencesqqpublic_group(id),

useridreferencesqquser(id));

7)为用户表插入数据

insertintoqquservalues(1,1,'long','I'mlong','male','helongyang@','48.gif');

insertintoqquservalues(2,2,'a','aa','male','a@','48.gif');

insertintoqquservalues(3,3,'b','bb','male','a@','48.gif');

insertintoqquservalues(4,4,'c','cc','male','a@','48.gif');

insertintoqquservalues(5,5,'d','dd','male','a@','48.gif');

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类图

图3-2系统类图

Socket:

非自定义类,.Socket。

Thread:

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

Client:

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

FromServerListen:

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

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

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

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

4.详细设计及实现

4.1界面设计

1)登陆界面

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

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

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

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

图4-1登陆界面图

2)注册界面

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

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

需要选择的项目包括:

性别,头像。

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

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

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

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

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

图4-2注册界面图

3)主界面

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

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

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

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

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

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

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

图4-3系统主要界面图

4)个人资料界面

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

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

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

图4-4查看好友资料图

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

该界面使用的步骤为:

第一步:

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

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

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

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

第二步:

添加共享文件。

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

第三步:

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

第四步:

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

图4-5文件传送服务器

6)文件传输客户端界面

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

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

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

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

图4-6文件传送客户端

7)私聊界面

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

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

也可以发送一个QQ表情。

图4-7私聊界面图

8)群聊界面

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

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

也可以发送一个QQ表情。

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

图4-8群聊天界面

4.2数据输入输出设计

4.2.1数据输入

4.2.1.1登陆界面数据的输入要求

Number(账号)输入的必须是整型,它是一个用户登陆的账号。

Password(密码)可以是你设置好的字符串,字符串内容可以随便。

如果用户设置不正确,将会导致登陆不成功,系统会弹出相应的对话框。

4.2.1.2注册界面的输入

Nickname(昵称),password(密码),sign(个性签名)可以是任意的字符串。

Email必须是Email地址格式,也就是中间必须含有“@”,否则提示输入不正确。

4.2.1.3共享界面的输入

服务器IP:

填入本机的IP地址,格式如:

172.168.1.253

端口号:

随便一个可以未被占用的端口都行(最好是2000以上)。

4.2.2数据输出

用户注册的信息必须写入数据库中。

下载的文件存放到的指定的目录中,如果未指定就存放到默认路径中,当默认路径不存在的时候给提示用户路径不存在。

4.3代码实现

4.3.1服务器端设计

4.3.1.1连接池的设计

连接池,就是生产一定数量的数据库连接存储在一个容

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

当前位置:首页 > 工作范文 > 演讲主持

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

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