基于Java聊天室的设计与实现毕业设计报告.docx
《基于Java聊天室的设计与实现毕业设计报告.docx》由会员分享,可在线阅读,更多相关《基于Java聊天室的设计与实现毕业设计报告.docx(55页珍藏版)》请在冰豆网上搜索。
基于Java聊天室的设计与实现毕业设计报告
论文分类号:
TP学校代码:
13681
毕业设计说明书(论文)
题目:
基于Java聊天室的设计与实现
学生姓名:
学号:
系部:
专业班级:
指导教师:
二〇一一年六月
ThedesignandexploitationofchartroombasedonJava
ABSTRACT
Theinformationagearrivalhasinitiatedaknowledgeandinformationrevolution,widespreadapplicationofthecomputerandthemodernnetworktechnologyenormouslypromotedthesocialeconomydevelopment,atthesametimehasalsobroughtsomeemergingindustrialdevelopment,forinstancechatroom.Chatroomhasalreadybecomeapartofpeople'slifeslowly,presentedthegoodtendencyandthebroadprospectsfordevelopment.
AchatroomwasintroducedbyapopularWeb'sdesignlanguageJavaServerPage-JSP'slanguagepresentlyinthiscontext.Thisisachatroomthatdesignedtomanyfriendwholikeschattingonline.Thehopecangiveeverybodyintheexistingmultitudinouschatroommorethanonekindofchoices.Comparedwithmanylarge-scalenetworkschatroomsthissmallchatroomisquitetobesimple,butcanrealizethebasicfunctionwhichthedottedpairischattedmore,point-to-pointchats,transmissiondocumentandsoon.Thischatroommainlyconsistwithregisteringthepage,confirmingthepage,thechatroompage,leavingthepage,theexaminationofchatingguestpage,helpingpageconstitutionandsoon.EntiredesignConcise,practicalandtheuseissimple.
KEYWORDS:
Web’sdesignlanguage,chatroom,javaSocket
基于网络的聊天室系统的设计开发
摘要
信息时代的到来引发了一场知识和信息革命,计算机和现代网络技术的广泛应用极大地促进了社会经济的发展,同时也带来了一些新兴产业的发展,比如聊天室。
聊天室已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。
本文主要介绍了以当前流行Web设计语言javaSocket技术语言开发的一个简单的网络聊天室。
该小聊天室重要是为许多喜爱上网聊天的朋友开发设计的,希望能在现有的众多聊天室中给大家多一种的选择。
和许多大型的网络聊天室相比该小聊天室比较简单,但能实现聊天的基本功能,点对多聊天,点对点聊天,传送文件等。
本聊天室主要由登录页面、验证页面、聊天室页面、离开页面、查看聊客页面、帮助页面等页面构成。
整个设计简洁明了、实用,使用简单。
关键字:
Web设计语言,聊天室,javaSocket技术
1绪论
聊天室系统的基本概念
聊天室系统是一个通过国际互联信息网络进行多人通讯的一个系统。
该系统在一定网络通讯及高级语言程序设计和JSP应用程序设计的基础上,利用计算机通讯原理,形成一个聊天室平台,使得用户在进入这个聊天室系统平台的同时,可以通过网络在线与距离遥远的其他一位或多位用户进行信息交流。
聊天室主要分为WebChat、BBSChat两种。
BBSChat是基于Telnet的Tcp协议,是BBS的附设功能,需要客户端Telnet程序。
WebChat则采用浏览器方式,实际上是一个多人共同使用的CGI程序。
其基本原理是把每个用户的发言通过浏览器传给系统,再由系统收集处理后分发给特定用户。
WebChat一般采用ServerPush或ClientPull技术。
两种技术的区别在于使用不同的方式将数据分发给用户,ServerPush是由服务器将数据以多重MIME编码,发送给(push)使用者端,目前较少网站使用这种方式。
ClientPull则是用户从服务器接收(pull)所要的数据。
开发聊天室系统的意义
在这个信息极其发达的时代,我们目前可以用来进行信息交流的方法也有非常多,比如电报、电话、电子邮件等通讯手段,但是这些或者不方便或者有局限性或者有费用的问题,比如电话就是属于费用比较高的一种方式,而且一般情况下不能进行多人会谈,只能2方通话,那么一个需要几个人一起讨论的会议就不能举行,一般情况下都需要花费大量的人力物力把这几个人聚集到同一地点才能进行讨论。
非但费时费力费钱而且效果也不一定很好。
电子邮件则不是一种及时联系的手段,需要一定时间才能到达,只能作为一种辅助交流的手段。
但是,聊天室这个就能很好的解决这个问题,我们不需要聚集在同一地点,各自在不同的地点就可以在聊天室中发言,大家互相讨论。
而且好的聊天室还有各种表情符号等可以加强我们的表达。
而且费用低廉,信息交流速度快,只有这样,才能在这个涌动的社会中加强联系,创造出更多的财富。
本次毕业设计所要完成的主要工作
通过所学知识,根据网络聊天室系统的发展动态,结合自己个人的兴趣爱好,建立一个功能丰富,操作简便快捷的通用网络聊天室系统。
本文的主要安排了对聊天室技术的一些相关介绍,比如javaSocket技术。
接着是关于对聊天室系统的分析和设计,通过对聊天室的结构的分析来设计聊天室系统,并根据自己的兴趣和想法来丰富聊天室的功能。
2课题介绍
课题的目的
聊天室虽然其功能简单,但是在其设计与开发过程中,能够充分学习和使用Java2的技术,如:
开发各界面(登入、注册、群聊等界面)使用到Swing技术;随着模仿QQ,实现简单的qq功能:
注册、登陆、查找好友、聊天功能。
实现配置文件设置、用户管理、日志显示的功能。
实现群聊功能用到基于Cliet/Server的面向连接编程技术。
使用多线程进行多个客户端和服务端的连接。
使用文件方式保存用户信息,实现数据的保存与读取使用到数据库连接和操作技术。
使用对象的方式在服务端和客户端之间传递信息。
老师可以通过JavaQQ向同学们发送及时的信息如学院的通知、考试通知、成绩通告,及时掌握学生的动态,提供必要的帮助。
这就有效地解决老师与老师之间的,老师与学生之间的,学生与学生之间的通讯问题。
课题的意义
课题设计的主要任务是运用已知的知识理论联系实践模仿QQ,实现简单的QQ功能如注册、登陆、查找好友、聊天功能。
服务端还能实现配置文件设置、用户管理、日志显示的功能。
从而对Java的开发背景有更进一步的认识,充分掌握Java在现实生活中的应用。
深入调查腾讯QQ的各种功能,分析腾讯QQ的功能,运用相关的Java知识对腾讯QQ进行模仿。
从而设计出Java版的QQ。
要认真分析设计出的Java版的QQ会存在怎样的问题。
怎样可以以有效的解决这一问题。
提出有关设计的难点重点,完成对课题的全面系统的研究。
将设计和规划与现实教育教学工作相结合,使得此系统真实意义上实现对新教育教学工作的一次有益尝试。
认真完成毕业设计论文以及开题报告答辩,中期答辩和终期答辩。
一个网络聊天室的运行,首先是要有一个完整稳定的服务器端,并且拥有多个客服端。
客服端要具有实现用户注册和用户登入,在登入成功后,要显示出公聊界面,实现聊天功能并且能够发送表情和保存聊天内容和显示聊天记录等功能,在新用户上线和用户下线时要更新每个客户端在线用户列表名,并且可以和在线的用户实现一对一的私聊功能。
在服务器端可以实现不断的监听客户的连接,并且根据客户端发送过来的不同信息,如注册信息、登入信息、公聊信息、私聊信息、退出信息等,服务器端要作出不同的响应,并且要实现数据库的操作,如根据用户注册的信息保存在数据库中,根据登入时发送来的用户名和密码检测是否合法用户等。
课题的主要任务
主要涉及图形用户界面的开发、布局和输入/输出流数据的控制,并且要通过Socket技术实现网络功能,整个程序采用Swing图形界面,要求熟练掌握Java2图形用户界面的事件处理及部分Swing组件的使用。
在代码的编写上要充分体现Java面向对象开发思想和多态性,提高代码的重用性和高效性,要深入理解接口的作用和内部对象等特性等。
课题设计的主要任务是运用已知的知识理论联系实践模仿QQ,实现简单的QQ功能如注册、登陆、查找好友、聊天功能。
服务端还能实现配置文件设置、用户管理、日志显示的功能。
从而对Java的开发背景有更进一步的认识,充分掌握Java在现实生活中的应用。
深入调查腾讯QQ的各种功能,分析腾讯QQ的功能,运用相关的Java知识对腾讯QQ进行模仿。
从而设计出Java版的QQ。
要认真分析设计出的Java版的QQ会存在怎样的问题。
怎样可以以有效的解决这一问题。
提出有关设计的难点重点,完成对课题的全面系统的研究。
将设计和规划与现实教育教学工作相结合,使得此系统真实意义上实现对新教育教学工作的一次有益尝试。
认真完成毕业设计论文以及开题报告答辩,中期答辩和终期答辩。
3系统开发环境与工具的选择
Java简介
Java语言
Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。
用Java实现的HotJava浏览器(支持Javaapplet)显示了Java跨平台、动态的Web、Internet计算等一系列的魅力。
从此Java被广泛接受并推动了Web的迅速发展。
Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。
另一方面,Java丢弃了C++很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动强制类型转换。
而且,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
Java语言是一个面向对象的、提供类和接口以及继承的原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制。
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口,它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket(实现客户端的套接字)、ServerSocket(实现服务器端的套接字)等。
Java的强制型机制、异常处理、废料的自动收集等都是Java程序健壮性的重要保证。
Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。
Java语言的优良特性使得Java应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。
Java对对象技术的全面支持和Java平台内嵌的API能缩短应用系统的开发时间并降低成本。
Java编译一次,处处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。
丰富的类库为Java提供了大量的类以满足网络化、多线程、面向对象系统的需要。
同时Java程序可以获取网络上节点的图像、声音、HTML文档及文本资源。
Java架构设计
从技术角度来说,软件架构随着技术的革新不断地更新其内容,软件架构建立于当前技术和一些基本原则的基础之上。
架构的一些基本原则:
分层化原则:
分层是为了降低软件深度复杂性而使用的关键思想,就像社会有了阶级一样,软件有了层次结构。
模块化原则:
模块化是化解软件广度复杂的必然手段,模块化的目的就是让软件分工。
接口分离原则:
随着软件模块化的不断深入改进,面向接口编程而不是面向实现编程可以让复杂度日趋增高的软件降低模块之间的耦合度,从而让各模块更轻松改进。
依赖倒置原则:
随着软件结构的进一步发展,层与层之间、模块与模块之间的依赖逐渐加深,而层、模块的动态可插拔要求不端增大。
当前最典型的三层次架构就架构在以上几项原则的基础之上,用数据库作存储层、用面向对象来实现业务层、用web作为用户接口层。
这种三层次架构同样应用于此次系统的设计。
本课题开发环境的选择
在进行开发之前,首先决定的第一个问题就是,该使用什么开发环境来编写该系统?
以目前常用的开发语言来讲有C/C++、.NET技术,JAVA、VisualBasic几种。
还有Eclipse,、BorlandJBuilder等,这些并不是程序语言,而是程序语言在建构程序时的“集成开发工具”,不过它们在开发设计的过程中也占有相当重要的角色,因为选用正确的集成开发工具,可以加速程序设计的进行、测试与排错,因而对整体进度具有决定性的影响。
基于以下几点,选择JAVA语言开发技术。
1)就执行平台而言,必须考虑的问题之一是用户可能使用的操作系统。
用户可能使用的是WindowsLinux。
JAVA语言具有平台无关性,可以不需要任何修改就可以运行在支持JAVA的任何计算机上。
2)JAVA的Swing组件开发技术可以开发丰富的图形界面,并且SwingAPI类提供了丰富的外部接口和方法,可以方便实现系统功能。
3)就项目开发而言,纯粹的面向对象,加上数量巨大的类所提供的方法(函数)库的支持,使得利用Java开发各种应用程序,可以说是易如反掌。
此外,在程序除错、修改、升级和增加新功能等方面,因其面向对象的特性,使得这些维护也变得非常容易。
4)Java支持内在的多线程运行,提供分布式的并发机制,运行效率高。
5)异常处理,为了使Java程式更稳定、更安全,Java引入了异常处理机制。
能够在程序中产生异常情况的地方,执行相对应的处理,不至于因突发或意外的错误造成执行中断或是死机。
通过这种异常处理,不仅能够清晰地掌握整个程序执行的流程,也使得程序的设计更为严谨。
6)高性能,Java可以在运行时直接将目标代码翻译成机器指令。
Sun用直接解释器一秒钟内可调用300,000个过程。
翻译目标代码的速度与C/C++的性能没什么区别。
7)网络功能,Java可以说是借助因特网而重获新生的,自然具备编写网络功能的程序。
不论是一般因特网/局域网的程序,如Socket、Email、基于Web服务器的Servlet、JSP程序,甚至连分布式网络程序,如CORBA、RMI等的支持也是非常丰富的,使用起来也很方便。
8)源回收处理,Garbage Collection是由JVM对内存实行动态管理的。
程序需要多少内存、哪些程序的内存已经不使用了,需要释放归还给系统,这些烦琐危险的操作全部交由JVM去管理。
让我们能够更专心地编写程序,而不需要担心内存的问题。
内存的统一管理,对于跨平台也有相当大的帮助。
本课题开发工具的选择
Java的开发工具很多,而且各有优缺点,Eclipse是一个开放可扩展的集成开发环境(IDE)。
它不仅可以用于Java的开发,通过开发插件,它可以构建其他的开发工具。
Eclipse是开放源代码的项目,并可以免费下载。
支持最新的Java标准,并且缩短了开发周期。
一直以其友好的集成开发环境在业界受到广泛的赞誉,这也是Eclipse一直是广大程序员最喜爱的Java开发工具的原因之一。
Eclipse的可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。
用户可以在集成开发环境中创建工程和打开工程,建立、打开和编辑文件,并可以编译、运行和调试应用程序。
可以说在Eclipse集成开发环境中开发Java程序,快速而且高效。
其主要特点如下:
1)开放的可扩展的IDE
2)成功的底层图形界面API
3)强大的插件加载功能
4)可以通过导入一些CVS相关的插件来实现版本管理的便易性
本课题开发技术的选择
本课题选择了javaSocket技术开发网络聊天室。
什么是socket?
socket是一种用于表达两台机器之间连接“终端”的软件抽象。
对于一个给定的连接,在每台机器上都有一个socket,你可以想象一个虚拟的"电缆"工作在两台机器之间,“电缆”插在两台机器的socket上。
当然,物理硬件和两台机器之间的“电缆”这些连接装置都是未知的,抽象的所有目的就是为了让我们不必了解更多的细节。
简单的说,一台计算机上的socket同另一台计算机通话创建一个通信信道,程序员可以用这个信道在两台机器之间发送数据。
当你发送数据TCP/IP协议栈的每一层都给你的数据里添加适当的报头。
有个好消息是java语言隐藏了所有这些细节,这也是为什么他们有时被叫做“流socket”。
思考一下socket像电话听筒一样在电话的任意一端--你和我通过一个专门的信道来进行通话和接听。
会话将一直进行下去直到我们决定挂断电话(除非我们使用蜂窝电话),除非我们挂断电话,否则我们各自的电话线路都会占线。
如果你需要在两台机器之间进行通讯而不使用高级机制像ORBs(以及CORBA,RMI,IIOP等等),socket比较适合你。
Socket的底层机制则相当棘手。
4需求分析
以往聊天室系统的缺陷
通过对以往聊天室的研究及分析,发现聊天室系统存在以下问题:
1)以往聊天室只能看到用户ID而不能看到用户的个人形象,包括个人头像和个人服装SHOW。
2)不能轻易分辨出自己谈话和别人的谈话。
3)用户聊天只有单纯的文字表达,不能通过丰富的表情和图片来增添聊天的乐趣。
4)聊天背景只有单纯的白色,没有任何可供选择的背景颜色和画面,使整个聊天环境显的呆板。
聊天室系统作为网络通讯工具的作用
聊天室是提供给网民一个交友与娱乐的场所,在聊天室里网民可选择自己的聊天对象,与其进行对话交流,是网民之间相互沟通、交流情感的最佳方式之一。
用户可以通过网络在线与距离遥远的其他一位或多位用户进行信息交流。
在聊天室里网民可选择自己的聊天对象,进行对话交流。
既可以一对一,又可以一对多,还可以形成小组进行多对多讨论,方便网民在线私聊与群聊。
是现行网络最流行、最被广泛应用的通讯工具。
现行聊天室系统的功能需求
聊天室系统虽然满足了人们的在线通讯,但是随着聊天室被广泛应用,人们对于聊天的要求也越来越高,单纯的聊天已不能满足人们的需要,人们更需要多功能的聊天室系统,来丰富聊天环境。
聊天室系统功能具体需求包括:
1)一个聊天室里所有的人都可以互相密谈。
2)可以通过用鼠标点击页面上出现的或者人名列表的人名来选择人名。
3)可以使用颜色来轻易分辨出别人的谈话和自己的谈话。
4)可以察看进入房间以后的所有聊天纪录。
5)可以通过贴图在您聊天中加入卡通图片,使聊天内容丰富多采,充满活力。
6)可以根据您的自己喜好来设置背景颜色和画面,使您更加舒适的聊天。
用户注册
需求描述:
用户填写系统给出的注册项目,并提交给系统,成功注册后,系统生成用户所注册的登入ID,并保存在数据库当中。
执行者:
用户
前置条件:
无
后置条件:
无
正常过程:
1)向服务端发送注册请求
2)服务端响应客户端,客户端弹出注册信息表单
3)用户填写完表单后将注册数据传给服务端处理,并保存在数据库中
4)返回客户端一个响应,显示用户注册的ID,提示注册成功
异常过程(可选):
用户填写表单的数据格式不正确或表单中存在空缺的项,客户端给予提示信息,并将光标定位到出错的地方。
用户注册的项在数据库中发生冲突,客户端提示注册不成功并提示用户重新填写表单。
服务器未启动或出现异常
通过注册模块实现用户的在线注册,所填写的注册项目有:
用户名、密码、密码确认、性别、年龄、E-mail。
图4-3-1 注册活动图图4-3-2 登录活动图
用户登入
需求描述:
用户填写登入ID和密码,经服务器验证成功后进入聊天室主界面。
执行者:
用户
前置条件:
用户成功注册或已经拥有一个合法的ID号
后置条件:
无
正常过程:
1)向服务端请求连接,并发送登录信息。
2)服务端处理并查询数据库中的用户信息
3)返回客户端一个响应,提示登录成功,弹出聊天室主界面。
4)刷新其他在线用户的用户列表信息
异常过程(可选):
用户填写的ID或密码与数据库中的纪录不匹配,客户端
提示登录失败。
客户端设置的服务器地址或端口有误。
服务器未启动或出现异常。
私聊
需求描述:
用户可选择聊天室的在线用户列表中其他用户聊天。
并且对方有消息提示,双方发送的信息对于聊天室的其他用户是不可见的。
执行者:
用户
前置条件:
用户登录成功,私聊的对方在线
后置条件:
无
正常过程:
1)客户端与服务端建立通讯。
2)客户端将用户发送的信息打包传送给服务端。
3)服务端进行数据分析,查找目的用户的ID,并将用户的信息传给目的用户。
4)目的用户收到服务器的信息后,正确的显示并保存。
异常过程(可选):
客户端与服务端断开连接,客户端提示信息发送失败。
客户端发送的私聊内容包含不合法的字符特殊需求(可选):
不能与不在线的用户进行私聊。
图4-3-4 私聊流程图
聊天记录
需求描述:
用户可以查询聊天的历史纪录,包括公聊记录和私聊记录。
执行者:
用户
前置条件:
用户正确登入后
后置条件:
无
正常过程:
1)发送、接收信息的同时将信息保存在本地文件中
2)信息发送框中可以查询历史聊天记录
3)从本地文件中读取信息,并显示在记录显示匡中
异常过程(可选):
服务端异常导致客户端退出,客户端提示服务器异常。
客户端读取信息时目标文件不存在。
系统消息
需求描述:
在聊天室的每一个用户都能接收服务端发送的的信息提示消息
执行者:
服务端
前置条件:
服务端正常运行
后置条件:
无
正常过程:
服务器向所有在线用户发送消息
客户端接收到消息,进行消息处理,并正确显示
异常过程(可选):
1)服务端异常,重启服务器
2)出现网络异常,发送系统消息失败
3)用户管理员通过启动服务器后,可以通过服务器操作界面象全部在线的用户发送系统消息
4)用于发送公告,提示等系统消息,可以方便管理员和客户的交流和管理
图4-3-5 系统消息活动图
用户退出
需求描述:
用户在正常情况下退出聊天室
执行者:
用户
前置条件:
用户成功登录聊天室
后置条件:
无
正常过程:
1)向服务器发送用户登出消息
2)服务器进行用户退出的数据处理
3)服务器向聊天室其他用户发送登出消息
4)刷新其他在线用户的用户列表信息
质量性能需求
容错性需求
当出现代码异常时,出现正确的提示,不会影响整个系统的运行。
用户之间信息传输不会因为数据封装问题出现丢失或乱码。
因用户的误操作产生的异常应做出及时的处理或信息提示。
稳定性需求
软件