基于Java技术的即时聊天系统实现_第1页
基于Java技术的即时聊天系统实现_第2页
基于Java技术的即时聊天系统实现_第3页
基于Java技术的即时聊天系统实现_第4页
基于Java技术的即时聊天系统实现_第5页
已阅读5页,还剩9页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

尚丘麻怅号发2015届本科毕业论文(设计)基于Java技术的即时聊天系统实现代码:姓名:XXXX系 别:计算机与信息技术学院专业: 网络安全 _学号: XXXXXXXX指导教师: XXXXX2015年5月8日TOC\o"1-5"\h\z\o"CurrentDocument"1绪论 1\o"CurrentDocument"背景 1\o"CurrentDocument"论文研究内容与方法 1\o"CurrentDocument"2开发环境介绍 1\o"CurrentDocument"Java技一术简介 1\o"CurrentDocument"开发工具简介 1\o"CurrentDocument"3需求分析 1\o"CurrentDocument"功能性需求分析 2\o"CurrentDocument"非功能性需求分析 2\o"CurrentDocument"4总体设计 2\o"CurrentDocument"功能模块设计 2\o"CurrentDocument"数据库设计 3\o"CurrentDocument"5系统详细设计与实现 5\o"CurrentDocument"界面设计 5登录界面 5注册界面 5修改密码界面 6好友列表界面 7聊天窗口界面 8服务器端界面 9\o"CurrentDocument"功能实现 9实现登录 9实现注册 9实现修改密码 10添加、删除好友 10移动黑名单 11多对多聊天 12显示表情 12文件的发送 13历史记录 13\o"CurrentDocument"6测试阶段 14总结 14\o"CurrentDocument"参考文献 15致谢 15基于Java技术的即时聊天系统实现摘要基于Java技术的即时聊天系统采用C/S架构,MyEclipse集成开发环境和MySQL数据库为开发环境,在Window7系统下使用Java程序设计语言开发的一款聊天系统。系统主要分为:用户注册、用户登录、修改密码、好友列表、聊天等五大模块;在功能上用户能够进行添加删除好友,移动黑名单,一对一、多对多的聊天,发送表情,传送文件等操作。关键词Java;即时聊天系统;C/S;MyEclipse;MySQL;ImplementationofInstantMessagingSystemBasedonJavaTechnologyAbstractJavatechnologyandC/Sarchitectureisusedintheinstantmessagingsystem,theMyEclipseintegrateddevelopmentenvironmentandMySQLdatabaseasadevelopmentenvironmentbasedonJavaprogramminglanguage,theuseofWindow7systeminthedevelopmentofachatsystem.Thesystemismainlydividedinto:userregistration,userlogin,changepassword,listoffriends,chatandotherfivemodules;infunction,userscanaddanddeletefriends,mobileblacklist,onetoone,manytomanychat,sendexpression,transferfilesandotheroperations.KeywordsJava;instantmessagingsystem;C/S;MyEclipse;MySQL;1绪论背景随着互联网的蓬勃发展,即时聊天已经成为如今最流行的通讯方式,尤其在移动互联网方面,即时聊天已经与我们的生活息息相关。同时,Java是一种非常流行的程序设计语言,可以用来开发面向对象、跨平台的应用程序。即时聊天已经与我们的生活不可分割,利用自己学习到的Java语言开发一款自己的聊天软件是一个非常不错的选择,既能够检验自己对Java技术的掌握,同时又能够开发一款自己的聊天软件。论文研究内容与方法基于Java技术的聊天系统主要是探索如何在Java技术下能够实现即时聊天的一些基本功能:用户注册,用户登录,添加删除好友,移动黑名单,实现一对一、多对多的聊天,能够发送表情,传送图片、视频等[1]。论文的设计主要采用了两种研究方法:一是文献资料研究的方法。在研究聊天系统现实中,本人通过图书馆、电子图书馆学习了Java语言中的一些编程技术;二是理论与实际相结合,既然掌握了技术与方法,那么就应该快速的进行实践,在软件的设计过程中,才能够理解到理论与现实的差距,遇到棘手问题,应该快速查阅资料快速攻破。开发环境介绍本聊天系统是基于Java技术的,采用C/S结构,采用MVC的开发框架,利用MyEclipse、MySQL数据库作为开发工具。Java技术简介Java是一种程序设计语言,主要应用于Android应用、JSP网站、PC和游戏控制台等领域。Java语言能够使开发者在设计程序的时候能够根据自己的情况自定义数据类型和关联操作,对于程序中的数据结构的改变或者代码的改变进行相应的操作;Java语言编写的程序编译后无需再次编译,可以在任何硬件设备下运行[1]。本次课题中主要用到Swing工具包中JFrame类,采用Java和Windows混合界面风格,作为开发程序的外观风格来设计聊天系统界面;其次,使用JavaSocket编程技术实现系统之间的网络通信[2]。开发工具简介MyEclipse是一种集成开发软件。MyEclipse的功能强大,可以集成多种语言开发插件,进行相应开发语言的开发工作。MySQL是一个关系数据库,底层代码是C、C++编写的,通过编译测试达到代码的可移植;而且,它支持支持Linux、Windows、MscOS等多种操作系统,支持多线程。它的代码是开源的,用户可以在其基础上根据自己的需要进行二次开发;MySQL的体积小、速度快、成本低,因此一些小型网站的开发都选择MySQL作为其网站的数据库。需求分析软件系统的开发是根据用户的需求来设计开发出用户需要的软件系统或者系统中的软件部分的过程。项目流程化能够促进项目的监管、人员的合理分配。需求分析是指对即时聊天系统的功能、非功能进行全面分析的过程,对以后开发出来的软件应该实现什么样的功能,具有什么样的界面以及软件能够达到什么样的性能等。功能性需求分析即时聊天系统在功能上主要能够实现如今人们经常用到的各种即时通讯软件的一些基本交流聊天的功能,主要的功能性需求如下:登录界面:注册用户能够进行登录,通过连接数据库进行判断用户是否能够进入好友列表界面。注册界面:用户可以注册,注册信息可以被添加到数据库,然后用于确定用户的登录。好友列表界面:用户能够自由添加、删除好友,移动黑名单等;同时能够实现双击好友,能够进入对应好友聊天窗口等聊天界面:能够将聊天的信息、表情等显示到对应的聊天界面上;能够发送文件、音乐、视频等;能够对聊天的历史记录进行简单的查看、翻页等。修改密码界面:让用户在忘记密码或者想修改密码时候,能够进行修改密码操作。非功能性需求分析.操作系统:Windows7旗舰版;.硬盘:500G;.开发平台:MyEclipse2014;.数据库:MySQL。4总体设计软件设计是从软件的用户的需求出发,根据需求分析来确定软件系统功能设计的整体结构,然后划分各个功能模块,最后确定每个模块的实现算法以及编写具体的代码,最终形成了软件的具体设计方案[3]。功能模块设计根据系统分析的结果画出系统功能模块图,对各个模块进行细分,确定模块相互结构关系。

图4-1系统功能模块图数据库设计通过用户的注册,聊天等形成初步的数据需求;对数据需求进行概念上的设计,得到对应的E-R图;其次选择合适的方法,将E-R图转化为关系模型;然后对关系模型进行物理设计[4]。1.E-R图设计:分析确定各个数据表的字段、数据类型、关系等,画出E-R图。D图4-2用户属性

2.物理设计:根据系统的数据类型,型,字段大小,索引结构等[5]。我们可以选择为数据库表中字段最合适的数据类表4-1用户信息表口序列号字段描述类型空额外1234567idnamezhanghaopasswordsexbirthdayaddress用户编号用户名用户帐号用户密码性别出生年月地址int(11)varchar(16)varchar(11)varchar(32)varchar⑵varchar(32)varchar(32)否否否否否否否主键(自增)唯一表4-2好友信息表口序列号字段描述类型空额外1234idzhanghaofriendIdblackname编号用户帐号好友帐号黑名单int(11)varchar(11)varchar(255)varchar(255)否否主键(自增)外键表4-3历史记录表口序列号字段描述类型空额外123idzhanghaowho编号用户帐号属于者int(11)varchar(32)varchar(11)否否否主键(自增)外键4sendtime发送时间varchar(32)否5font字体类型varchar(64)否6record发送类容varchar(255)否7pic表情varchar(255)系统详细设计与实现编码阶段是将软件设计阶段的各种描述转变成程序代码,在编码阶段应该注意编程语言的选择,在本次课题中,我们使用的是Java语言。界面设计软件界面的设计是非常重要的,对于各个模块采用不同的组件进行设计。下面简单的介绍下如何设计软件的界面。登录界面本即时聊天系统的登录界面(图:3-5),采用JFram容器,使用默认布局,通过setBounds()方法自定义位置。上部是一个JPanel,内置一个JLabel;中间是根据需要放置JLabel、JTExtField、JPasswordField;最下方放置一个JButton。具体代码如下:Sjp1_jbl=newJLabel(newImageIcon("image/"));S(0,-5,428,159);Sjbl1=newJLabel("zhanghao");(70,165,30,30);Sjtf=newJTextField();(110,163,130,30);Sjbl2=newJLabel("mima");(70,200,30,30);Sjbl3=newJLabel("zhuce");(255,163,52,30);Sjpf=newJPasswordField();(110,200,130,30);Sjbl4=newJLabel("xiugai");(255,200,52,30);Sjp3_jb1=newJButton(newImageIcon("image/"));(85,270,195,30);图5-1登录界面注册界面在注册界面(3-6)中同样采用默认布局自定义位置。对于JLabel、JTExtField、JPasswordField如何放置就不讲太多了,在这里主要讲下新引入的知识点HashMap集合和Graphics绘画技术。HashMap是集合类,我们可以通过put、get方法向其中添值、取值,其最重要的一点是它是键值对形式的,通过一个键就能取出相应的值,对于本界面的全国省市联动,正好可以用到地址的灵活变动。通过For循环创建每个省份按钮,并添加addActionListener监听器,获取其对应省份代号,再通过get方法向HashMap索要其对应的ID值。代码如下:添加:HashMap<Object,Object>hm=newHashMap<>();FOR(INTi=0;i<;i++){(province[i],ar[i]);}获取:if(s)){RegisterAddressAddress=(RegisterAddress)(s); (),0,City,0,().length); for(inti=0;i<().length;i++){(City[i]);}Graphics可以对其进行重写,调用其方法进行绘画,对于本界面中的验证码,正是运用到此类,可以根据自己想要的样式进行绘制。代码如下:StringBufferrandomRecv=newStringBuffer();i<Recv; i++)FOR(INTi= 0;i<Recv; i++)建册帐号昵称帐号密码确认密码TOC\o"1-5"\h\z性别?同 女出生年月 年 ▼月 ▼日 ■斫在地 国籍 ▼省 ■市 ▼黔证码 看不清?立即注册

密码更改修改密码忘记密码,我的好友if";密码更改修改密码忘记密码,我的好友if";jl[i]=newJLabel(newChatIcon;jl[i].setToolTipText(i+"");jl[i].addMouseListener(newMouseAdapter(){publicvoidmouseClicked(MouseEvente){if()==1){JLabelfacelabel=(JLabel)());());}}});(jl[i]);依12正正却11以王 !三 IAI国回 班踢天田|发:法图5-5聊天窗口界面服务器端界面服务端仅是用来开启$“卜03界面并没有什么太多的功能,只是两个按钮而已,在这里就不做过多的介绍了。功能实现在实现功能之前我们需要做一些必要的共同类。首先我们需要做一个用户信息类(User),接着是信息类。6$$@86),其次是消息类型类(MessageType),它们不需要做过多的设计,只需要定义一些需要的变量,然后对其进行Set和Get即可。实现登录实现登录功能还是一个比较简单的功能,只需要我们获取到用户的登录帐号和登录密码,通过对象流将对象(u)给传递给服务器,服务器通过Get方法获取帐号和密码,然后从数据库中查询用户的密码字段信息进行对比,将对比的后的信息再通过对象流的方式传递给客户端,再进行相应的处理。代码如下:UserM=newUser();().Trim());(newString())));;QqClientUserqqClientUser=newQqClientUser();if(M)){QqFriendListFramePeopleList=newQqFriendListFrame(M.getUserNo());etS().getOutputStream());}catch(IOExceptione1){();}MsgesS=newMsges();oString()+().toString()+().toString();Str[5]=().toString()+""+().toString()+().toString();(Str);UserM=newUser();(Str);;ClientUserqqClientUser=newClientUser();if(M)){dispose();newClientLogin();}实现修改密码密码的修改相对的简单,用户只需要根据相应的选项卡填写,就能够进行密码的修改,至于实现的代码如下:UserM=newUser();(m[0]);("1");(m[1]));(m[2]));;ClientUserqqClientUser=newClientUser();if(M)){dispose();newClientLogin();}添加、删除好友添加好友相对于删除好友,是一件比较麻烦的事情,具体的思路是:当用户在添加好友输入框中输入想要添加好友的帐号,然后通过对象流将对象(m)传送给服务器,服务器通过后台HashMap集合获取好友的线程,然后将对象传递给好友。对于如何获取到好友的线程呢在这里就粗略的讲述一下:本系统在每个用户登录的时候,服务器都会为每个用户新建一个线程,同时将每个用户的线程和其帐号通过HashMap进行键值对的绑定,到使用的时候服务器只需通过帐号就能获取到相应的帐号线程,这样就能够很简单的帮我们想要传递的信息转发给相应的好友。代码如下:publicHashMapThread=newHashMap<String,ServerConnecClient>();quals(tr2[j])){(tr1[i]);}}}Object[]tr=();();(Str);(str2);returnal;多对多聊天多对多的聊天是本系统的一个比较亮点的设计,用户能够在同一时间跟多个用户进行聊天,对于聊天的内容不会错乱。同绑定线程一样,在用户开启好友聊天界面的时候,客户端将你的帐号同聊天好友的帐号组合在一起,通过HashMap的键值对的形式将组合后的字符串和这个窗口进行绑定,每开启一个窗口都进行绑定,等到客户端接受到服务器发送来的信息,进行相应的处理,即可将信息追加到对应的聊天窗口中。代码如下:MsgesS=newMsges();ifMsges().equals("3")){if()+""+())==null){QqFriendChatFrameFriendChat=newQqFriendChatFrame(),());()+""+(),qqChat);}QqFriendChatFrameFriendChat=()+""+());if(!()){(true);}(),(),(),(),(),(),());quals("icon")){Iconicon=().getAttributes());FriendChatIconFch=(FriendChatIcon)icons;PictureInfopictureInfo=newPictureInfo(i,()));(pictureInfo);(i+"#"+()+"+");}}}重组收到的表情信息串:publicvoidreceivedPicInfo(Stringpic){String[]PicInfo=("[+]");FOR(Inti=0;i<;i++){String[]pp=PicInfo[i].split("[#]");if==2){PicInfoSpic=newPicInfo(pp[0]),pp[1]);(17,Fmsg[3].length()-1).split(",");intr=(ss[0]);intg=(ss[1].substring(2));intb=(ss[2].substring(2));myFont=getRecivedFont(str[3],Fmsg[0],(Fmsg[1]),(Fmsg[2]),newColor(r,g,b));pos3=();insertrecord(myFont);receivedPicInfo(str[4]);insertchatpic();}}测试阶段软件测试不是等到开发完成以后才进行的,而是伴随着软件生命周期的整个过程,判断软件是否达到要求等。对于本软件的测试情况,我本着一个经过惠普软件测试培训者的心态,对即时聊天系统进行了相对全面的测试,各个界面的功能全部实现,从登录到注册再到修改密码,完全的没有问题,从用户添加好友、删除好友,移动黑名单,多人聊天,到发送文件等都已经实现了软件需求的功能,因此,对于此次设计的软件我还是相对比较满意的。对于软件中存在的Bug已经进行了相对的修改,对于可能隐藏的问题,我只能在后续的发现后立即进行修改;没有一个软件是没有绝对没有漏洞的,唯有我们慢慢的去发现。总结通过本次毕业设计,能够从中学到很多以前在课堂上学不到的知识。我们在大学的前三年中学到了很多编程语言知识,无论从最初的C语言,接着C++,后来的VB,到最后的Java等,虽然我们学了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论