JAVA聊天室课程设计报告材料含源代码压缩文件资料.docx
- 文档编号:24798135
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:15
- 大小:45.55KB
JAVA聊天室课程设计报告材料含源代码压缩文件资料.docx
《JAVA聊天室课程设计报告材料含源代码压缩文件资料.docx》由会员分享,可在线阅读,更多相关《JAVA聊天室课程设计报告材料含源代码压缩文件资料.docx(15页珍藏版)》请在冰豆网上搜索。
JAVA聊天室课程设计报告材料含源代码压缩文件资料
南京晓庄学院
《JAVA程序设计》
课程设计报告
题 目:
Java聊天室的设计与实现
姓名:
戴佳伟
学号:
14552019
班级:
14软件工程3班
指导教师:
王峥
完成时间
2016.10.7
成绩:
信息工程学院
2016年6月
Java聊天室的设计与实现
1引言
1.1Java聊天室开发背景
在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、MSN,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个有简单聊天功能的网络聊天程序;而且通过制作该程序还能更好的学习网络软件编程知识。
本程序设计简单可以实现在同一局域网的聊天,程序可以自动扫描已经上线的用户,上线用户可在同一聊天界面中实现群聊。
如果需要与其中的用户进行交谈,则只需双击右侧用户列表,读取对方IP地址,便可在下面的输入框内输入信息进行发送,实现一对一私聊功能。
1.1Java聊天室开发的目的和意义
目的:
(1)理解进程消息通信的概念,如何实现两个创建进程之间的数据传递。
(2)理解进程共享变量的进程通信。
(3)熟悉并掌握java语言的代码编写
(4)熟练使用开发工具Eclipse
(5)实现聊天室的一些基本功能
意义:
(1)实现局域网中的信息交互,界面尽量人性化且美观,让用户便于接受
(2)用户及时获取自己想要的信息、促进交谈
(3)异常处理,对于用户错误的操作使用程序会有提示消息
(4)前期仅实现其基本雏形,后期可扩性很高,可实现统计在线人数,发送图片,界面美化,用户登陆注册信息的采集,连接到数据库etc.
(5)后期可便于网站自身的广告宣传与商品推广
因所学知识和能力的局限性,仅能完成有限范围内的雏形生成与功能实现,后期的功能实现需要进一步的深入学习才能使本课程设计日益完善。
1.2完成的主要工作
(1)需求分析与总体设计、详细设计、代码分析
(2)实现程序所能运行的功能
(3)选择Window系统,并选择该操作系统中一种进程通信的方式。
(4)运用Eclipse开发工具和java语言实现该应用程序。
2需求分析和总体设计
2.1需求分析与设计思路
2.1.1关键技术说明
程序开发环境与运行环境介绍:
JDK(Java Development kit)是 SUN公司提供的一套Java开发环境,通常称之为它主要包括了一些常用的JDK工具、执行时需要的函数库、与C连接时所需的文件及一些Java应用程序范例等。
是一个编写Java的Applet小程序和应用程序的程序开发环境。
JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一些Java工具和Java的核心类库(JavaAPI)。
不论什么Java应用服务器实质都是内置了某个版本的JDK。
Java语言介绍:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。
Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java提供了简单的类机制和动态的构架模型。
对象中封装了它的状态变量和方法
很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型通过继承和重载机制子
类可以使用或重新定义父类或超类所提供的一方法从而既实现了代码的复用又提供了一
种动态的解决方案。
Java是一种完全面向对象的程序设计语一言它除了数组、布尔和字符二个基本数据类
型外的其它类都是对象它不再支持全局变量。
在Java中如果不创建新类就无法创建程
序Java程序在运行时必须先创建一个类的实例然后才能提交运行。
Java同样支持继承特性Java的类可以从其它类中继承行为但Java只支持类的
单重继承即每个类只能从一个类中继承。
Java支持界面界面允许程序员定义方法但又不立即实现一个类可以实现多个界面
利用界面可以得到多重继承的许多优点而又没有多重继承的问题。
编程工具介绍:
Eclipse:
一个开放源代码的、基于Java的可扩展开发平台
Eclipse语言发展:
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
Eclipse项目IBM发起,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开放源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
随后还有包括Oracle在内的许多大公司也纷纷加入了该项目,Eclipse的目标是成为可进行任何语言开发的IDE集成者,使用者只需下载各种语言的插件即可。
2.1.1需求分析
随着网络和IT技术的快速发展以及日新月异的更新换代,不断渗透到人们的日常生活。
如今Internet已经成为于人们生活息息相关的一部分,也是人们获取有用信息和促进彼此之间相互交流的便捷重要的途径之一。
同时,日益增多的机构和企业组织开始利用网络资源传递、发布、收集和管理信息,这对网络进行信息交互这种活动是一次很大的机遇与挑战,从而使网络的经营方式充满了活力。
用户需求主要功能分析:
(1)聊天交谈功能:
用户获取信息的有效途径
(2)当前用户显示功能:
用户明确自身的登陆状态
(3)文本框显示聊天功能:
便于用户浏览信息
(4)发送消息框显示功能:
存放用户输入想要发送的信息
(5)发送按钮功能:
鼠标点击——发送用户输入消息框的信息
(6)用户头像显示功能:
个性化用户使用
2.1.2Java聊天室设计方案与思路
1.设计方案:
(1)把自身本机的IP地址发送给所有正在打开这个聊天室程序的人
(2)其他人获取了这个IP地址后,会监听这个地址
(3) 如果有人发送了消息,所有的人都会接收并查看到
(4)设计登录程序,使其显示登录的ip地址端口号,以及用户昵称,通过登录按钮可以调用客户端程序,实现聊天功能
2..设计思路
聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天即可。
因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:
在Internet上的聊天程序一般都是以服务器提供服务端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在同一服务器上的用户交谈,这是一个面向连接的通信过程。
因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。
1.首先通过继承JFrame类构造服务器界面。
2.设计客户端程序使其能够完成正常的通信功能,并且可以更改背景颜色,设置字体颜色。
3.设计侦听程序,使其显示登录的ip地址端口号,以及用户昵称,通过侦听按钮可以调用客户端程序,实现聊天功能。
2.1.3Java聊天室目录结构说明
对系统包结构、文件结构列表说明,如表2-1、2-2所示。
表2-1
包名
作用
java.io
提供了用于系统的输入和输出,通过数据流,序列化和文件系统。
java.io.IOException
捕获捕获输入输出异常
提供了可移植的网络I/O接口,包括TCP/IP、UDP、域名解析和Unix域socket
.DatagramPacket
储存接收到的数据,使用其中的方法提取传送的内容
.InetAddress
封装IP地址
.UnknownHostException
捕获主机IP地址无法确定异常
java.awt
提供了一套与本地图形界面进行交互的接口,建立和设置Java的图形用户界面
java.awt.event
提供接口和类来解决由awt组件引起的各种类型的事件
javax.swing
抽象窗口工具包(AWT)为基础使跨平台应用程序可以使用任何可插拔的外观风格,利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面
表2-2
文件名
作用
image
存放用户头像图片
2.2Java聊天室功能结构
对系统实现功能进行说明,分析系统功能结构,画出系统功能结构图,如图2-1所示。
总体功能:
(1)实现在同一局域网的聊天
(2)程序可以自动扫描已经上线的用户
(3)需要与其中的用户进行交谈,则只需双击右侧用户列表,输入对方IP地址,便可在下面的输入框内输入信息进行发送。
(4)添加了用户头像
(5)调整了界面窗口
(6)Enter键实现发送消息功能
分段功能:
1、服务器端功能描述:
启动服务器端。
2、客户端功能描述:
启动客户端;
显示登录昵称:
显示系统时间:
显示聊天记录:
发送信息(实现按回车键发送消息);
退出聊天室。
功能实现:
1、采用套接字实现网络中的数据传输
2、尽量使用某个或某些应用层的协议实现系统的部分功能
3、系统设计规范合理,操作流程方便简单
详细设计
3.1Java聊天室模块实现
3.1.1聊天功能模块实现
一、实现原理
启动该程序时运行如下过程:
(1)把自身本机的IP地址发送给所有正在打开这个聊天室程序的人
(2)其他人获取了这个IP地址后,会监听这个地址
(3) 如果有人发送了消息,所有的人都会接收并查看到
二、分层结构及调用关系说明
(1)从main()函数入口开始分析,实例化ChatLineFrame这个类并执行类repaint方法,重绘事件,刷新弹出的窗口的内容
(2)在实例化ChatLineFrame这个类过程中,首先定义ChatLineFrame类继承JFrame,声明成员变量和框架布局内容,然后构造方法,实例化该类的时候,会自动执行函数内的内容。
(3)初始化窗口和其他部分
(4)实例化chatJFrame
(5)实例化ChatJFrame类,该类实现向外广播消息
(6)实例化ReceiveMessage类,该类实现监听并接受消息
(7)启动UDPReceive类、UserBroadcast的线程。
(8)在定义初始化方法中,为按钮增加监听行为,实例化IPListListener类与SendButtonListener类。
三、关键代码分析
classChatJFrameextendsJFrame//定义ChatLineFrame类继承JFrame
{
JTextFieldtext1=newJTextField();
JTextFieldtext2=newJTextField();
JTextFieldtext3=newJTextField("目的主机IP地址:
");
JTextAreaTAreaMessage=newJTextArea();
JButtonbutton=newJButton("发送");
DefaultListModelmodel=newDefaultListModel();
ChatJFrame.SendButtonListenerlistener;
ChatJFrame.IPListListenerlistener2;
staticDatagramSocketsocket=null;//消息发送插口
staticDatagramSocketsocketBroadcast=null;//广播发送插口
//声明成员变量
publicstaticfinalintUDP_CONNECT=0;
publicstaticfinalintUDP_EXIT=1;
publicstaticfinalintUDP_MESSAGE=2;
publicstaticfinalintUDP_USER_ACK=6;
publicstaticStringSEP="!
";//分隔符
publicstaticintUDPport=3333;//消息发送端口
publicstaticintUDPDesPort=3333;//消息接收端口
publicstaticintBroadcastPort=5555;//广播端口
publicstaticintBroadcastDesPort=5555;//接收广播端口
publicstaticintDataLength=8192;//数据报默认长度
InetAddressiaSource;//本机IP地址
StringMyIPAddress;//IP地址字符串
//如果IP地址为空,则执行下面的操作
if(this.text2.getText().equals(""))
this.TAreaMessage.append("注意:
IP地址栏为空,请双击用户列表,输入对方IP!
\n");
}
voidinit()
{
setLayout(null);//设置布局方式为NULL
this.TAreaMessage.setEditable(false);
//设置容器X轴上的起点和Y轴上的起点以及组件的长度和组件的高度
this.TAreaMessage.setBounds(10,70,300,200);
this.TAreaMessage.setLineWrap(true);
JScrollPanelocalJScrollPane=newJScrollPane(this.TAreaMessage);
localJScrollPane.setBounds(10,70,300,200);
add(localJScrollPane);
publicvoidrun()
{
Stringstr1=ChatJFrame.this.MyIPAddress;//获取IP地址信息
inti=str1.lastIndexOf('.');//用分割符.将IP区分割开
Stringstr2=String.valueOf(0)+ChatJFrame.SEP+ChatJFrame.this.MyIPAddress+ChatJFrame.SEP;
byte[]arrayOfByte=str2.getBytes();
while(true)
try
{
//获取目的IP地址
Stringstr3=str1.substring(0,i+1)+String.valueOf(255);
//getAllByName()方法是根据主机名返回其可能的所有InetAddress对象,保存在一个数组中。
InetAddresslocalInetAddress=InetAddress.getByName(str3);
//封装要发送的信息
DatagramPacketlocalDatagramPacket=newDatagramPacket(arrayOfByte,arrayOfByte.length,localInetAddress,ChatJFrame.BroadcastDesPort);
//发送消息
ChatJFrame.socketBroadcast.send(localDatagramPacket);
Thread.sleep(2000L);
四、分析总结
总结本模块开发工作,遇到问题如何解决、改进设想及心得体会。
此聊天室小系统从整体上是实现的,大部分功能都可以应用,但是个人能力有限,还是有一些不足之处,有如下几点:
(1)客户端的发送文件功能不完善,本想实现可发送和接收所有文件的功能,但是最终尝试过改进,无法实现,知识简单的文本文档传送功能,而且这也不一定成功。
应该是程序不够完善,或是哪里出错
(2)客户端的发送表情功能也没有实现,本来的意图是像QQ那样,实现表情图形发送,更加形象,最终还是无法做到,查找相关资料,也没有这部分的讲解,再有时间有限,我也就打消这个功能,改用简单的文字传输(3)服务器的关闭服务器按钮实现有点问题,刚开始调试的时候可以,第二次调试下面就出现广播用户命令失败的提示,并且不强行停止还不会自己停下来,不知道是什么地方出现了问题,希望老师能给予我提示解答。
Java聊天室运行结果
这里可以实现两个人在同一局域网的聊天,程序可以自动扫描上线的用户。
如果需要与其中的用户进行交谈,则只需双击用户列表,输入对方IP,便可在下面的输入框内输入信息进行发送。
在聊天框中输入想要发送的信息,会出现本机发送的信息,以及本机的IP地址。
4课程设计总结
总结本次工作内容及存在的不足,改进设想。
经过一个多星期的努力,我实现了用JAVA程序设计语言开发的简单聊天室系统,代码部分参照网上资源,部分用老师以前讲过的知识进行修改,经过细心的调试和排错解决了绝大部分的问题。
但计算机程序总会有一些不足之处,一些无法实现的功能等。
我做的这个系统只是简单的一个聊天页面,然后能看到自己主机发送的信息。
本聊天系统对于刚刚接触JAVA程序设计语言一年的我们来说已经算是比较容易实现的,基于对面向对象程序设计有了初步的概念,同时也设计到类似的编程思想,所以此次设计上手比较容易,而且我还是选择了比较容易的课题。
但是我知道我还有很多不足之处,尤其在开始初期,感觉逻辑复杂,难以控制,因此至今还有很多未解决的缺陷。
到目前为止,对JAVA的学习知识在老师和自己的努力下学了JAVAEE的一些基本知识,今后的学习和工作中,还有很多方面等着自己去学。
目前本聊天系统还有待完善的功能列表如下:
聊天系统发送和接收文件的功能;
聊天系统缺乏各种表情选择,屏蔽发言,播放音乐,悄悄话聊天室等功能;
没有详细考虑聊天室管理功能。
对于上述的缺陷,本人还会不断对聊天系统进一步的完善它,期望在今后的日子里凭借自己的技术以及跟同学相互交流JAVA技术,争取把本聊天室有待完善的部分尽快做出来,并且完成一些更好的作品。
源代码:
参考文献
文献写法如下:
1.专著、论文集、毕业论文、报告等
[序号]作者.书名[文献类型标志].出版地:
出版者,出版年.起止页码(任选).(文献类型标志:
专著M;论文集C;报告R;其它文献Z)
2.期刊
[序号]作者.篇名[J].刊名,年,卷(期刊).
3.电子文献
[序号]主要责任者.电子文献题名[文献类型/载体类型].电子文献的出版或可获得地址,发表或更新的期/引用日期(任选).
例如:
[1]孟彩霞.计算机软件基础[M].西安:
西安电子科技大学出版社,2003.
[1]CayS.HorstmannGaryCornell.Java核心技术卷
基础知识[M].北京:
机械工业出版社,2013.11
[2]张光彬孟红蕊张永宝..Java课程设计(案例精编)[M].北京:
清华大学出版社.2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 聊天室 课程设计 报告 材料 源代码 压缩文件 资料