1、完整版基于J2SE的即时通信软件毕业设计论文优秀论文 归档资料 未经允许 切勿外传目 录摘要: IAbstract: II第一章 前 言 11.1 选题背景 11.2国内外研究现状及发展趋势 11.2.1 国外研究现状及发展趋 11.2.2国内研究现状及发展趋势 11.3选题意义 2第二章 系统分析 32.1系统的可行性分析 32.1.1技术可行性 32.1.2 经济可行性 32.2 系统的关键技术 32.3业务流程分析 4第三章 系统设计 53.1 软件模型概述 53.2功能结构设计 53.3数据库设计 7第四章 详细设计 94.1系统总体实现 94.1.1 开发平台与开发工具 94.1.2
2、 系统架构图 94.2系统实现主要功能如下: 104.2.1 服务器端界面 114.2.2 客户端登录界面 124.2.3 客户端登录后显示好友界面 134.2.4 客户端好友聊天界面 13结 论 15致 谢 16参考文献(Reference) 17附录 18 基于J2SE的即时通信软件 专业:07软件工程 学号: 姓名:刘贤荣 指导老师:罗丹摘要:信息时代的到来引发了一场知识和信息革命,计算机和现代网络技术的广泛应用极大地促进了社会经济的发展,同时也带来了一些新兴产业的发展,比如网络间的即时通讯软件。即时通讯已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。即时通讯是一个通过国
3、际互联信息网络进行多人通讯的一款软件,它具有其他传统通讯方式无法比拟的优势,快速,便捷、信息多元化等。正是这些特点,使它能够成为当今最流行的信息交流方式。Java因其简单,安全,跨平台等特点成为当今最流行的编程语言之一,已广泛用于PC,Internet,移动设备上。因为Java的“一次编写到处运行”的特点,所以已编写的软件不用修改或只需少量的修改就可以在其他设备上和操作系统上成功运行,可以极大的减少开发商的开发和维护成本。在当今硬件设备和软件平台(操作系统)多元化的时代,用Java开发即时通信软件是明智之举关 键 词:即时通信,Java,Access,网络,Socket编程 第一章 前 言1.
4、1 选题背景要问到网络时代发展最快的领域,无疑的,答案是即时通讯。即时通讯工具的实时交互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的一部分,比如大家都很熟悉的腾讯QQ,MSN等。网民们通过即时通信进行沟通交流、结识新朋友、娱乐消遣时间、实现异地文字、语音、视频的实时互通交流。同时,人们也认识到即时信息工具能够带来极高的生产力,诸多企事业单位借助它的使用,来提高业务协同性及反馈的敏感度和快捷度。作为使用频率最高的网络软件,即时通讯已经突破了作为技术工具的极限,被认为是现代交流方式的象征。即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。目前有2种架构形式,1、一种是CS架
5、构,采用客户端服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、XXHI 、Skype、Gtalk、新浪UC、MSN等;2、采用BS架构,即浏览器服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商,典型的代表、53KF、live800等。1.2国内外研究现状及发展趋势1.2.1 国外研究现状及发展趋 自1996年11月全球范围内推出的第一款即时通讯软件以来,即时通讯软件得到了迅速的发展。随着各大互联网巨头公司的崛起,各互联网公司根据各公司主要业务推出不同的即时通讯软件。雅虎公司:雅
6、虎通(Yahoo! Messenger)是一款比较流行的即时通讯软件,允许用户与朋友、家人、同事及其朋友经行即时的交流。用户只需麦克风、扬声器或耳机,就能轻松地与好友语音通话,且设有语音留言与呼叫记录。即使用户不在线,也可以收到好友的语音留言。雅虎通内置了股票、新闻、计分板等选项卡,不论用户在何处浏览,都可以监视用户所有个性化信息。微软公司:MSN是微软公司开发的即时聊天工具,由于微软产品用户众多,操作简单,运行稳定,且与Windows XP进行了无缝结合,使得MSN的普及速度非常快,现在已经是世界主流的聊天工具,MSN支持手写功能,但与其他即时通讯软件最大的不同是不支持离线消息。MSN采用邮
7、件地址作为用户名,借此建立MSN与Hotmail之间的连接,当对方不在线时,你可以选择给对方的MSN邮箱或Hotmail发送邮件。这样MSN就不仅是一个简单的即时通讯软件,而演变为以MSN为中心的整合服务。谷歌公司:谷歌公司出的一款即时通讯工具。支持文字信息以及网络语音交流。Google Talk与Gmail进行了整合应用,使用Gmail账号登录,并支持检查Gmail邮件。虽然Google公司在搜索引擎方面是绝对的龙头,不过在即时通讯领域的产品还是有蛮多缺憾的。国外即时通讯软件技术上已发展得相当成熟,技术上的发展空间相对来说比较的少,即时通讯软件今后将会更多的用来弥补和整合本公司的主要业务。1
8、.2.2国内研究现状及发展趋势腾讯公司:据腾讯QQ官方消息,2005年,QQ在国内已拥有24亿多的注册用户,7 000多万活跃用户,同时在线人数700万以上。目前,腾讯QQ已成为国内用户最多的个人即时通讯工具,占据着国内约65以上的市场份额。1999年2月,腾讯推出基于互联网的即时通讯工具QQ,支持在线消息收发,即时传送语音、视频和文件,并且整合移动通讯手段,可通过客户端发送信息给手机用户。目前QQ已开发出穿越防火墙、动态表情、给好友放录像、捕捉荧屏、共享文件夹、提供聊天场景、聊天时可显示图片等强大的使用功能。另外,QQ还增加了QQ群、QQ秀、QQ宠物、QQ游戏等娱乐功能。由于QQ良好的开放功
9、能、休闲娱乐服务,使其拥有了庞大的用户群,在近几年内突飞猛进,牢牢占据着国内即时通讯霸主地位。阿里巴巴:阿里巴巴推出的软件阿里旺旺是将原先的淘宝旺旺与阿里巴巴贸易通整合在一起的新品牌。它是淘宝和阿里巴巴为商人度身定做的免费网上商务沟通软件。它能帮您轻松找客户,发布、管理商业信息;及时把握商机,随时洽谈做生意!即时通讯软件市场结构分为个人应用和企业应用两部分,因此它的发展趋势也必然要围绕这两部分应用进行探讨。我认为未来的即时通讯市场发展趋势包括:综合化、专业化、互联互通和安全化这四个方面的内容。他们之间有着很强的逻辑关系,个人应用领域的综合化和企业应用领域的专业化导致了用户对互联互通的需求,而互
10、联互通的实现需要安全技术作为保证。1.3选题意义21世纪是信息的时代,人与人之间的交流越来越密切,传统的通信方式,如电话,电报等在实时上虽仍占有一定的优势,但是在信息高速发展的今天,传统通信方式由于其成本过高,方式单一的缺点,越来越暴露其弊端。传统的通讯方式的缺点: (1)成本高。目前人们所使用的通讯方式普遍价格过高,移动通信的价格更是不菲。这就在某种程度上限制了用户的使用和数量。作为用户来讲,消费水平是一个很重要的选择标准。(2)使用方式单一。我们现在使用的传统通信方式主要是电话,电报,传真等。这些方式只能听到声音或看到文字,用户并不能感受到对方,缺乏身临其境的感觉。(3)传输数据量少。传统
11、的通讯方式的带宽并不高,所以传输的数据量大大受到限制。新兴的网络通讯的优点:(1)成本低。网络具有价格便宜,对于大多数用户来说,购买一台电脑不仅可以成为日常的通信工具,更重要的是电脑可以作为很多方面的用途,如处理日常的文件,存储个人的资料等,而网络通讯仅仅是一个很小的附加功能,更由于随着经济的发展,拥有电脑就像拥有电视机一样普遍,电脑的价值已经被普遍认可。(2)方便快捷。网络聊天非常方便,传统的手机短信编辑相比电脑键盘来说具有很大的劣势,电脑打字要更加地快速,同时网络也可以进行语音聊天,更加省去了输入的麻烦。视频聊天也是网络通信的一个很大的优势,拉近了聊天双方的距离,使交流更加亲切。(3)传输
12、的信息量大。和传统的方式相比较,其数据量提高了数十倍,并且随着科技的进步,这种优势将会继续扩大。我国拥有世界上最多的网络用户,目前正在进行高速信息化建设,因此对网络的使用将会进一步扩大。网络通讯软件具有上述的优势,因此其发展的前景将是广阔的,这也是研究它的意义所在。 第二章 系统分析分析即综合采用系统的思想和方法,把一个比较复杂的系统对象拆解成若干个简单易懂的组成部分,并定义这些组成部分的基本属性和相互之间的关联,进而按照软件开发流程对软件系统进行开发和设计。分析过程一半包括研究当前同类别系统的特点和不足,进而对所要开发的系统进行完善化的设计,使开发出的软件的在最节省资源的情况下开发出符合需求
13、的产品。2.1系统的可行性分析综合即时通讯软件发展形势和对即时通讯市场的调研,本即时通讯软件在技术上,经济上,操作方面均具备可行性,具备了软件开发实施的条件。2.1.1技术可行性 Win XP操作系统的稳定性,安全性可满足用户的要求。后台的数据库使用的是Office Access 2003。软件开发工具语言选用的是当前最流行的开发工具语言Java。Java是一种简单的面向,分布式,解释型的,健壮安全的,结构中立的,可移植的,性能优异的,多线程的动态语言。JavaSwing具有良好的图形编程能力,可以实现良好的用户界面,Java Socket可以实现网络间的通信。综上,完全具备技术可行性。2.1
14、.2 经济可行性费用:本系统要求的计算机配置并不高(400M Hz以上处理器。64M内存及以上,硬盘空间100M以上),当前中低档计算机即可满足要求。设备的安装调试工作简单,软件的价格不高,操作简单,对用户进行少量的培训讲解即可较为熟练的操作本软件,因而培训费用较低。而且,Java是跨平台的语言,编写好的软件不需要改动或只需要少量改懂就可以在移植到其他平台上,对于程序开发来说,可以减少大量的开发和维护成本。收益:用户使用本软件以后,能较大的用户之间的传播效率,节省较多的人力资源,为企业创造经济效益,利于企业单位的发展,因而在经济上是可行的。2.2 系统的关键技术(1)TCP传输协议。TCP协议
15、是面向连接的协议,即在点点进行连接之前必须首先建立数据通路,就向我们平时打电话一样,在通话之前必须先拨号,等待对方的接听以后才能进行通话。它的数据传输采取的是同步方式,当数据发送到对方时,必须等待接收方的应答信号后才能继续下一次的发送工作,即我们平时所说的“握手”方式。由于TCP协议采用的是这种连接方式,因此由它建立的连接,是可靠的,在网络不是十分理想的情况下,速度牺牲很大,但是却能够保证所传输的数据的正确性。(2)UDP传输协议。UDP协议采用的是面向无连接的通信方式,它在通信前不需要提前建立通信链路,它是异步的,数据的发送比较迅速,不需要等待应答信号。优点是发送速度较快,但是在数据的一致性
16、方面不好,在网络差的情况下,容易丢失数据包。一般用于远程视频等对一致性要求并不是很高的数据传输方面。2.3业务流程分析业务流程分析是对业务功能分析的进一步细化,从而得到业务流程图,是一个反映软件业务处理过程的“流水帐本”, 帮助确定流程工作与合作建模的基本要素,更好地分析理解其同其他要素的关系。业务流程图反映了实际业务活动的整个流程,它以业务处理过程为中心。业务流程分析的目的是:形成合理、科学的业务流程。通过分析现有业务流程的基础上进行业务流程重组,产生新的更为合理的业务流程。本即时通讯软件业务流程图反映了软件内部各功能之间的关联以及业务处理的流程。流程图如图2.1所示: 图 2.1 业务流程
17、图第三章 系统设计系统的设计通常是自顶向下逐步细化的,使一个较为复杂的问题分解成若干个比较简单、容易解决的小问题。概要设计的主要任务是得到系统的软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、确定数据的结构特性、以及数据库的设计。总体设计的目标是建立系统的逻辑模型。3.1 软件模型概述在基于CS模型的网络通信软件中,包括客户端和服务器端,其中服务器在整个系统的作用很关键,处于中心位置,客户端主要用来获取从服务器传过来的数据,提供给用户友好的界面,显示用户的好友信息,并且接
18、受用户的各种操作,用户操作完毕软件会把各种操作封装成信息,并把这个请求信息发送到服务器端。服务器端主要接受客户端的请求,并且解析其封装的信息内容,并根据信息内容做相应的操作(例如:转发信息,查询好友资料等等),最后将这些信息发送到指定的客户端上,最终实现各用户之间通讯的目的。下图展示了CS结构的模型图: 图 3.1 CS结构模型图3.2功能结构设计本软件适用于中小型局域网的聊天软件,为中小型企业提供局域网沟通软件,该软件可以为客户提供文字信息交流,震动窗口,文件传输等信息交流。数据流图,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统
19、分析方法的主要表达工具及用于表示软件模型的一种图示方法。本系统总功能结构数据流图如图3.1所示:图3.2 系统总功能结构图系统各功能详细数据流图如下 图 3.3 各功能详细结构和数据流图3.3数据库设计数据库是用户所需要的各种数据管理的方式的总称,它是数据库应用系统的核心部分。数据库结构的设计是相当重要的一个环节,它将直接影响到系统的数据处理效率和系统的总体性能,良好的数据库结构应该选择合理的数据库范式,减少数据的存储量,同时保证恰当的数据冗余。数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求。在数据库领域内,常
20、常把使用数据库的各类系统统称为数据库应用系统。数据库设计的基本步骤如下:1、 需求分析:首先明确用户对数据的需求。2、 概念结构设计:概念模型主要是用来反映用户的现实环境和需求,它独立于具体的数据库管理系统,并且与数据库怎样实现无关。3、 逻辑结构设计:在逻辑结构设计阶段,主要完成建立数据库的逻辑模型,并解决数据的完整性、一致性、安全性和有效性等问题;4、 物理结构设计:该阶段的任务是为系统逻辑结构模型确定合理的存储结构、存取方法、以及数据表示和数据存储空间分配等内容,从而得到具体的数据库物理结构。5、 数据库实施:数据库实施主要包括用DDL定义数据库结构、组织数据入库、编制与调试应用程序、数
21、据库试运行等步骤。6、 数据库运行与维护:数据库投入运行标着开发任务的基本完成和维护工作的开始,数据库物理存储也会不断变化,对数据库设计进行评价、调整、修改等维护工作是一个长期的任务。该系统的ER图如图3.2所示: 图 3.4 E-R图数据库最终要存储于存储设备上,数据库在物理设备上的存储结构和存取方法称为数据库的物理结构。以下是本系统的物理结构的具体实现:表 3.1 账户表字段名称数据类型长度说明账户号码文本10主键账户密码文本10表 3.2 用户信息表字段名称数据类型长度说明用户号文本10主键用户名文本10主键性别文本10主键出生日期文本10个性签名文本10头像文本10表 3.3 用户好友
22、表字段名称数据类型长度说明账户号文本10主键好友账户文本10主键关系文本10主键第四章 详细设计4.1系统总体实现4.1.1 开发平台与开发工具 1.操作系统:Windows XP 2.系统开发环境:MyEcplise 8.5 3.数据库:Microsoft Access 2003 4.开发语言:Java 5.界面开发:Photoshop cs4.1.2 系统架构图该软件是基于J2SE编写的程序,Java是纯面向对象的语言,一切皆为对象。面向对象的思想更加符合人们的思维方式,封装的思想可以比较好保证代码的安全性而且可以更好地实现代码的复用。软件是基于网络Socket编程实现网络通信,由服务器端
23、程序和客户端程序构成。服务器端的主要任务是监听客户端传来的信息,并且根据信息的类型做出相应的处理,实现转发功能。客户端程序的主要任务是接受服务器端的信息,并且向服务器发送信息,通过服务器实现转发功能。 本系统采用简单的MVC设计模式,具体架构图如图4.1图4.1 系统整体架构图 备注:client为客户端程序1login,friendlist,chitchat包分别是登录,好友列表和聊天窗口的视图层2model包是业务逻辑层3mon主要是存储客户端和服务器端传输的信息类4tools包主要是字体定义等工具类 server为服务器端程序1mon主要是存储客户端和服务器端传输的信息类2. db包进行
24、数据库进行操作的类3. model包主要是服务器端的业务逻辑层 4.2系统实现主要功能如下:通过调查分析研究,本系统主要实现以下功能:客户端各功能模块如下:(一) 用户登录:用户必须输入自己的用户号和密码,当用户点击登录按钮以后,软件会把用户和密码封装成一条信息,传到后台服务器验证用户和密码,服务器验证完会返回一个结果。如果结果为真,会进入好友界面窗口。如果结果为假,会弹出对话框,告知用户信息(用户号或密码输入错误)(二) 注册:通过登录界面的注册按钮,可以进入注册画面。进入注册画面,用户可以填入账户号,账户昵称,性别,生日等信息,当用户点击注册画面的按钮时,如果用户号已存在会提示用户重新输入
25、用户号。(三) 好友界面(登录成功会显示自己的头像和好友界面)(四) 1.查看自己的账户信息: 点击自己的头像,会弹出窗口显示自己的信息。(五) 2.查看好友的信息:右键好友的名字,弹出快捷菜单,在点击查询好友信息菜单,会弹出窗口显示被点击的好友的信息。3.聊天:右键点击好友头像,弹出快捷菜单,点击“发送信息”菜单,会弹出聊天窗口,在文本框输入文字信息,在点击发送按钮,文字会显示在好友的窗口中,且显示在自己的已发送窗口。4.删除好友: 点击头像右键,弹出快捷菜单,点击“删除好友”,就可以实现删除好友操作。5.查询好友:可以在文本框输入ICQ号码,点击查询就可以实现查询功能, 如果该ICQ不是自
26、己的好友,可添加为好友服务端各功能模块如下: (一)开启服务端:点击服务器端菜单可以开启和关闭服务器监听。 (二)显示用户的在线状态:可以通过界面的小窗口显示用户的在线状态。 (三)显示用户的行为:可以监听用户之间传输的信息。4.2.1 服务器端界面 服务器端有控制菜单,通过菜单可以控制服务器的开启和关闭。通过显示面板可以查看用户的在线的状态和用户的通信记录。图 4.1 服务器端界面服务器端监听代码: public void run() while(true) 服务器通过该线程可以不断的接受客户端发来的信息 ObjectInputStream ois=null; try ois = new O
27、bjectInputStream(s.getInputStream(); catch (IOException e1) TODO Auto-generated catch block e1.printStackTrace(); try Message ms=(Message)ois.readObject(); if(ms.getMesType()=MessageType.message_comm)普通聊天 ServerList.jtext.append(ms.getTime()+-+ms.getFormUser()+ 对 +ms.getToUser()+ 说 +ms.getCon()+n);
28、SenMesToFri(ms); else if(ms.getMesType()=MessageType.message_zd)震动窗口 ServerList.jtext.append(ms.getTime()+-+ms.getFormUser()+ 对 +ms.getToUser()+ 发送震动窗口 !n); SenMesToFri(ms); else if(ms.getMesType()=MessageType.message_file)服务器接受发送的文件并转发给接受方 ServerList.jtext.append(ms.getTime()+-+ms.getFormUser()+ 对
29、+ms.getToUser()+发送文件:+ms.getCon()+n);SenMesToFri(ms); else if(ms.getMesType()=MessageType.message_personalImformation); ServerList.jtext.append(ms.getTime()+-+ms.getFormUser()+ 查看好友 +ms.getToUser()+的信息+ms.getCon()+n); GetMesToSer(ms); catch(Exception e) e.printStackTrace(); 4.2.2 客户端登录界面 用户需要通过输入正确的
30、用户名和密码才能登进软件。如果没有账号,可以点击注册新号按钮,进入注册界面,填入相应的信息完成注册,然后再使用新注册的账户和密码登录。图 4.2 客户端登录界面 验证用户名和密码代码: public boolean checkUser(String user,String psw)user是用户的登录账号(Icq账号),psw是用户的登录密码 boolean b=false; try 组织sql语句访问数据库和条件参数列表 String sql=select Icq_No,Icq_Nc,Icq_Icon from Icq where Icq_No=? and Icq_Psw=?;通过用户名和密码要求数据库返回用户的:账号,昵称,头像 String paras=user,psw; shp=new SqlHelper(); ResultSet rs=shp.query(sql,paras); if(rs.next() ch0=rs.getString(1);用户Icq账号 ch1=rs.getString(2);用户的昵称 ch2=rs.getString(3);用户的头像 b=true; catch(Exception e)