基于JAVA的聊天系统的设计与实现课程设计说明书论文Word下载.docx
《基于JAVA的聊天系统的设计与实现课程设计说明书论文Word下载.docx》由会员分享,可在线阅读,更多相关《基于JAVA的聊天系统的设计与实现课程设计说明书论文Word下载.docx(56页珍藏版)》请在冰豆网上搜索。
![基于JAVA的聊天系统的设计与实现课程设计说明书论文Word下载.docx](https://file1.bdocx.com/fileroot1/2022-11/27/f69fa9f6-4787-4798-a3c3-7991587fb5b9/f69fa9f6-4787-4798-a3c3-7991587fb5b91.gif)
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
3、学生综合运用所学知识和专业技能分析和解决问题的能力
4、研究方法的科学性;
技术线路的可行性;
设计方案的合理性
5、完成毕业论文(设计)期间的出勤情况
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
2、是否完成指定的论文(设计)任务(包括装订及附件)?
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
2、论文的观念是否有新意?
设计是否有创意?
3、论文(设计说明书)所体现的整体水平
建议成绩:
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
二、论文(设计)水平
评阅教师:
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
2、对答辩问题的反应、理解、表达情况
3、学生答辩过程中的精神状态
评定成绩:
教研室主任(或答辩小组组长):
(签名)
教学系意见:
系主任:
基于JAVA的聊天系统的设计与实现
摘要
网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。
目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有Netmeeting、腾讯QQ、MSN-Messager等等。
该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。
前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。
后者通过与服务器建立连接,来进行客户端与客户端的信息交流。
其中用到了局域网通信机制的原理,通过直接继承Thread类来建立多线程。
开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。
在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。
经过分析这些情况,该聊天工具采用Eclipse为基本开发环境和java语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统
关键词:
即时通讯系统B/SC/SMySQLSocketSwing
4.3.1Message类的设计14
4.2.2截图类的设计15
4.2.3聊天记录类的设计16
4.2.4服务器线程类设计17
第1章引言
1.1开发背景
随着互联网的快速发展,网络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。
无论是个人还是企业等组织机构,对沟通的需求也在不断发展,传统的电话、传真、邮件等沟通方式显然已无法满足当今人们工作和生活沟通的需要。
随着软件、网络和通讯三大现代信息技术的发展,在沟通、协作方面有着更多方便、快捷、实时等优势的即时通讯,成为继电话、E-Mail之后又一个完全融入每个人生活的互联网工具。
Java是一个由Sun公司开发而成的新一代编程语言。
使用它可在各式各样不同种机器、不同种操作平台的网络环境中开发软件。
不论你使用的是哪一种WWW浏览器,哪一种计算机,哪一种操作系统,只要WWW浏览器上面注明了“支持Java”,你就可以看到生动的主页。
Java正在逐步成为Internet应用的主要开发语言。
它彻底改变了应用软件的开发模式,带来了自PC机以来又一次技术革命,为迅速发展的信息世界增添了新的活力。
1.2开发目的和意义
网络通信在当今信息社会中起着不可或缺的作用,人们可以利用网络通信技术进行即时的信息交流。
比如说QQ聊天工具,它就是利用网络通信技术开发的一款众所周知的网络聊天工具。
通讯工具最初虽为聊天而诞生,但其作用早已超出了聊天的范畴,随着企业即时通讯工具的出现,即时信息在网络营销中将发挥更大的作用。
目前,信息交流是互联网提供的主要内容,网络通信系统有多种实现方式,类似ICQ属于一种点对点的聊天系统;
还有一种是基于Socket的集中式聊天系统,这种聊天系统需要登录统一的聊天服务器。
考虑到要可以在局域网中应用,本系统使用的是第二种方法,经过设置,在局域网或internet上都可以使用。
1.3研究内容
1、即时通讯原理
首先验证登陆,如果成功,则建立与服务端的socket连接,服务端新开启一个线程专门为它服务,将打包好的Message发送给服务器端,服务器端根据Message里面的信息,再将信息转发给其他用户。
一个标准的C/S模式。
2、Swing技术
Swing是一个用于开发Java应用程序用户界面的开发工具包。
它以抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格。
用来实现客服端的界面设计。
3、Javaweb和struts2技术
采用B/S的结构实现服务器端,对用户和在线用户进行增删改查,和踢用户下线,以及开启服务器和关闭服务器。
4、系统的构建
客户端采用C/S结构,管理端采用B/S的结构,用Tomcat作为服务器,MySQL作为数据库,还使用到了WindowBuilder开源框架进行界面开发。
第2章即时通讯系统的相关研究
2.1C/S开发模式
C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。
对应的优点就是客户端响应速度快。
缺点主要有以下几个:
而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。
这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
客户端需要安装专用的客户端软件。
首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。
还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
(大多数没法自动升级而需要人工升级)
对客户端的操作系统一般也会有限制。
可能适应于Windows98,但不能用于Windows2000或WindowsXP。
或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。
2.2B/S开发模式
B/S结构(Browser/Server结构)结构即浏览器和服务器结构。
它是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。
在这种结构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。
这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO)。
以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。
它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;
它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。
特别是在JAVA这样的跨平台语言出现之后,B/S架构管理软件更是方便、速度快、效果优。
2.3即时通讯原理
登陆进入聊天软件后,即显示出好友列表,在线的显示亮头像,不在线的显示灰色头像。
双击好友头像即会显示出聊天界面。
在聊天页面上,有发送文字,发送截图,和发送文件的功能按钮。
点击“发送”按钮之后,程序就会把输入的信息的种类,信息内容、本人的ID号、对方的ID号以及当前的时间等内容打包成一个Message对象通过Socket发送到服务器端。
服务器接收到Message之后,按照协议进行解析和转发。
这样,双方的即时通讯就实现了。
2.4JavaWeb、struts2、Ajax、javascript应用技术
通过这些技术,实现服务器的后台管理端,对用户和在线用户进行增删改查,和踢用户下线,以及开启服务器和关闭服务器。
以及用户的注册,前台验证等等
2.5MySQL数据库应用技术
使用MySQL存储用户信息,采用JDBC技术对其进行增删改查。
2.6Socket通信技术
Socket程序的工作过程:
1、建立Socket连接:
在通信开始之前由通信双方确认身份,建立一条专用的虚拟连接通道。
2、数据通信:
利用虚拟连接通道传送数据信息进行通信。
3、关闭:
通信结束时,再将所建的虚拟连接拆除。
具体如下:
服务器
图2-1socket通信
2.7开发环境的搭建
客户端采用C/S结构,管理端采用B/S的结构,用Tomcat作为服务器,MySQL作为数据库,还使用到了WindowBuilder开源框架进行界面开发。
第3章系统分析
3.1系统基本功能描述
客户端可以实现注册,即时聊天,相互之间收发文件,发送截图,查看历史聊天记录等功能。
收发消息时,可以实现离线接收。
服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接(包括判断没有响应的连接超时)。
服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。
在后台管理系统,可以到对用户进行增删改查,查看在线用户,和踢用户下线
3.2可行性分析
本系统的可行性分析包括以下几个方面的内容:
(1)技术可行性
使用Swing和socket技术,可以很轻松地开发出实用、简便、高效的基于网络的即时通讯系统。
因此技术上是可以实现的。
(2)经济可行性
计算机网络已经普及,因此在网络设备上不需要进行大的投入。
本系统需要一个MySQL数据库服务器,由于并发使用人数比较少,tomcat可以作为web服务器,所以成本很低。
(3)操作可行性
只要一台以上计算机连接在同一个局域网内,本系统就可以安装使用,所以操作上完全不存在问题。
如果要实现internet上通讯,只需要将服务器端运行在一个有固定IP的公网上就可以。
综上所述,即时Java即时通讯系统是可行的。
3.3系统需求分析
3.3.1功能分析
本系统要实现的功能如下:
1)注册
服务器收到用户的注册请求,便开始接受客户传递的信息,诸如客户的呢称,性别,籍贯,个人资料等,接受完毕后,便通过JDBC与后台数据库连接,然后向数据库添加记录,如果成功,便向客户返回其号码。
客户收到服务器返回的信息后,便打开窗口登陆。
2)登陆
在客户端,用户输入其号码和密码,然后建立与服务器的连接,告诉服务器我要登录,服务器收到后,开始通过JDBC读取数据库,然后与用户输入的信息进行比对,如果成功,便打开主程序窗口。
然后客户向服务器请求读取好友名单,服务器收到该请求,从数据库中取出好友列表,然后向客户端发送这些信息,客户收到后就在主窗口显示好友。
3)聊天
客户端首先发送消息到服务器端,服务器端根据发送人信息和接收者信息来转发。
例如服务器接收到一个A发给B的消息,先判断B是否已经在线,如果在线就将信息发送过去。
如果B不在线则把信息储存在服务器,等B上线了在发送给他。
B接收到A发来的信息,如果是未建立对话窗口,则自动打开显示。
4)发送截图
客户端A点击截图按钮,将屏幕锁定,截取图片,将图片储存在byte[]数组中发送到服务器端。
服务器端根据发送人信息和接收者信息来转发。
B接收到A发来的截图信息,会根据byte[]构造图片,将图片显示出来。
同样,如果是未建立对话窗口,则自动打开显示。
5)发送文件
客户端A点击发送文件按键,从本地选择文件,将文件在byte[]数组中分批次发送到服务器端。
B接收到A发来的文件信息,会根据文件发送的状态和byte[]构造文件。
6)日志
客户端发送和接收到的信息都会储存在文本文档中。
默认储存在C盘下面,会以用户的登录账号为名。
7)对用户的操作
管理员通过B/S的系统对用户进行增加,修改,删除,查找等操作,对系统进行维护。
8)在线用户的操作
管理员通过B/S的系统对在线用户操作,可以踢用户下线。
第4章系统设计
4.1数据库设计
本系统中所涉及的主要实体及其属性有:
用户(用户账号,用户名,密码,个性签名,头像ID,年龄,性别)
E-R模型如图所示。
图4-1系统实体及其属性
表4-1User
字段名
数据类型
字段说明
键引用
备注
account
int(6)
ID
PK
主键(自动增一)
name
varchar(20)
用户名称
非空
password
用户密码
signature
Varchar(255)
签名
profileID
int
(2)
头像ID
age
int(3)
年龄
sex
sexchar
(2)
性别
4.2系统模块设计
4.2.1聊天系统工作原理图
图4-2系统工作原理
4.2.2系统功能模块图:
图4-3系统模块
4.2.3系统用例图:
普通用户的用例图:
图4-4普通用户用例图
后台管理员的用例图:
图4-5后台用户用例图
4.2.4活动图:
1)用户登陆活动图
首先填写登陆信息,提交以后服务器会对用户名和密码进行验证。
如果不正确,返回一个提示信息。
如果登陆成功,就更新在线状态。
通知所有好友自己已经上线。
服务器再检查是否有他的离线消息,如果有这立即发送给用户。
图4-6用户登录活动图
2)发送消息活动图
短消息发送以后,服务器端对应的监听线程会接收到一个数据包。
此包中包含接收者的信息,如果接收者在线,数据包将会转发到接收者。
如果不在线,存在服务器端,等它上线在发送。
图4-7发送消息活动图
4.3系统类设计
4.3.1Message类的设计:
客户端和服务器端通信时,发送的都是Message类的对象,因此Message类的设计很重要。
表4-2Message
属性名
作用
privateIntegermsgType;
信息类型
privateStringcontent;
信息的文本内容
privateIntegersenderAccount;
发送者account
privateIntegerreceiverAccount;
接收者account
privateStringtime;
发送时间
privateUsermyself;
privateList<
User>
friends;
自己本身对象,用与好友列表头
好友列表
privatetransientImageimg;
图片对象(不传送)
privatebyte[]imageByte;
图片的内容
privateStringfileName;
文件名称
privatebyte[]fileByte;
文件的长度
privateintlength;
//文件长度,以KB为单位
文件的内容
privateintstate;
文件传输的状态:
0是不接受文件,1是接受文件,2请求发送文件,3文件传输中,4文件传送完成
privateIntegermsgType消息的类型有这么几种:
publicinterfaceMessageType{
Integermessage_succeed=1;
//表明是登陆成功
Integermessage_login_fail=2;
//表明登录失败
Integermessage_comm_mes=3;
//普通信息包
Integermessage_get_onLineFriend=4;
//要求在线好友的包
Integermessage_ret_onLineFriend=5;
//返回在线好友的包
Integermessage_offline=6;
//下线通知包
Integermessage_img=7;
//图片包
Integermessage_file=8;
//文件包
}
4.3.2截图类的设计:
截图类的实现类为:
classScreenshotextendsJFrameimplementsMouseListener,MouseMotionListener。
图4-8Screenshot类
截图类的核心是JDK中:
Robot类中createScreenCapture(Rectangle
screenRect)创建包含从屏幕中读取的像素的图像。
先用截取全部屏幕的图片,然后显示出来,覆盖住整个屏幕。
然后监听鼠标事件,再用createScreenCapture(Rectangle
screenRect)方法截图。
双击表示截图成功,右键表示取消截图。
4.3.3聊天记录类的设计:
记录日志的功能被封装在MessageRecord类中,所在包为com.im.client.record,在发送或接受到数据后,将其写入日志文件。
图4-9MessageRecord类
如果是图片则显示出,发送时间和图片大小。
如果是文件则显示出请求发送时间,同意接收时间,接收完成时间,和文件大小。
日志文件格式如下:
图4-10记录文件
4.3.4服务端线程的设计:
服务器端的核心是对应客户的线程,每个socket对应一个线程,也就是每一个客户端都在服务器端有一个相应的线程。
它负