下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、南京晓庄学院« JAVA程序设计课程设计报告题 目: Java聊天室的设计与实现姓名:戴佳伟学号:14552019班级:14软件工程3班指导教师:王峥完成时间2016.10.7成绩:信息工程学院2016年6月16目录1 引言 31.1 java 聊天室开发背景 31.2 java聊天室开发的目的和意义 31.3 完成的主要工作 42 需求分析和总体设计52.1 需求分析与设计思路52.1.1 关键技术说明52.1.2 需求分析62.1.3 java 聊天室设计方案与思路62.1.4 java 聊天室目录结构说明72.2 java 聊天室功能结构83 详细设计103.1 java 聊天
2、室模块实现103.1.1 XX 模块实现104 java 聊天室运行结果135 课程设计总结15Java聊天室的设计与实现1引言1.1 Java聊天室开发背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊 天工具越来越多,类似 QQ MSN网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一 个有简单聊天功能的网络聊天程序;而且通过制作该程序还能更好的学习网络软件编程知识。本程序设计简单可以实现在同一局域网的聊天,程序可以自动扫描已经上线的用户,上线用户 可在同一聊天界面中实现群聊。如果需要与其中的用户进行交谈,则只需双击右侧用户列表,读取 对方IP地址
3、,便可在下面的输入框内输入信息进行发送,实现一对一私聊功能。1.1 Java聊天室开发的目的和意义目的:(1)理解进程消息通信的概念,如何实现两个创建进程之间的数据传递。(2)理解进程共享变量的进程通信。(3)熟悉并掌握java语言的代码编写(4)熟练使用开发工具 Eclipse(5)实现聊天室的一些基本功能意义:(1)实现局域网中的信息交互,界面尽量人性化且美观,让用户便于接受(2)用户及时获取自己想要的信息、促进交谈(3)异常处理,对于用户错误的操作使用程序会有提示消息(4)前期仅实现其基本雏形,后期可扩性很高,可实现统计在线人数,发送图片,界面美 化,用户登 陆注册信息的采集,连接到数据
4、库etc.(5)后期可便于网站自身的广告宣传与商品推广因所学知识和能力的局限性,仅能完成有限范围内的雏形生成与功能实现,后期的功能实现 需要进一步的深入学习才能使本课程设计日益完善。1.2 完成的主要工作( 1)需求分析与总体设计、详细设计、代码分析( 2)实现程序所能运行的功能(3)选择 Window系统,并选择该操作系统中一种进程通信的方式。( 4)运用Eclipse 开发工具和java 语言实现该应用程序。2需求分析和总体设计2.1 需求分析与设计思路2.1.1 关键技术说明程序开发环境与运行环境介绍:JDK(Java Development kit)是SUN公司提供的一套 Java开发
5、环境,通常称之为它主要包括了一些 常用的JDK工具、执行时需要的函数库、与C连接时所需的文件及一些Java应用程序范例等。是一个编写Java的Applet小程序和应用程序的程序开发环境。JDK是整个Java的核心,包括了 Java运行环境(Java Runtime Envirnment), 一些 Java工具和Java的核心类库(Java API )。不论什么 Java应用服务器实质都是内置了某个版本的JDK。Java语言介绍:Java是一门面向对象编程语言,不仅吸收了 C+语言的各种优点,还摒弃了 C+里难以理解的多继 承、指针等概念,因此 Java语言具有功能强大和简单易用两个特征。Jav
6、a语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。通过继承和重载机制子从而既实现了代码的复用又提供了一它除了数组、布尔和字符二个基本数据类 Java中如果不创建新类就无法创建程 然后才能提交运行。Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型类可以使用或重新定义父类或超类所提供的一方
7、法种动态的解决方案。Java是一种完全面向对象的程序设计语一言 型外的其它类都是对象它不再支持全局变量。在序Java程序在运行时必须先创建一个类的实例Java同样支持继承特性Java的类可以从其它类中继承行为但Java只支持类的单重继承即每个类只能从一个类中继承。Java支持界面界面允许程序员定义方法但又不立即实现一个类可以实现多个界面利用界面可以得到多重继承的许多优点而又没有多重继承的问题。编程工具介绍:Eclipse: 一个开放源代码的、基于Java的可扩展开发平台Eclipse语言发展:Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,通过安装不同的
8、插件Eclipse可以支持不同的计算机语言,比如C+和Python等开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于 1999年4月。旧M提供了最 初的Eclipse代码基础,包括 Platform、JDT和PDE。Eclipse项目 旧M 发起,围绕着 Eclipse项目已 经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到 Eclipse项目中,其中包括Borla
9、nd、Rational Software、Red Hat 及 Sybase 等。Eclipse 是一个开放源码项目,它其实是Visual Age for Java的替代品,其界面跟先前的 Visual Age for Java差不多,但由于其开放源码, 任何人都可以免费得到, 并可以在此基础上开发各自的插件,因此越来越受人们关注。随后还有包括Oracle在内的许多大公司也纷纷加入了该项目,Eclipse的目标是成为可进行任何语言开发的IDE集成者,使用者只需下载各种语言的插件即可。2.1.2 需求分析随着网络和IT技术的快速发展以及日新月异的更新换代,不断渗透到人们的日常生活。如今 Inter
10、net已经成为于人们生活息息相关的一部分,也是人们获取有用信息和促进彼此之间相互交流 的便捷重要的途径之一。同时,日益增多的机构和企业组织开始利用网络资源传递、发布、收集和 管理信息,这对网络进行信息交互这种活动是一次很大的机遇与挑战,从而使网络的经营方式充满 了活力。用户需求主要功能分析:(1)聊天交谈功能:用户获取信息的有效途径(2)当前用户显示功能:用户明确自身的登陆状态(3)文本框显示聊天功能:便于用户浏览信息(4)发送消息框显示功能:存放用户输入想要发送的信息(5)发送按钮功能:鼠标点击一一发送用户输入消息框的信息(6)用户头像显示功能:个性化用户使用2.1.3 Java聊天室设计方
11、案与思路1 .设计方案:(1)把自身本机的IP地址发送给所有正在打开这个聊天室程序的人(2)其他人获取了这个IP地址后,会监听这个地址(3)如果有人发送了消息,所有的人都会接收并查看到(4)设计登录程序,使其显示登录的ip地址端口号,以及用户昵称,通过登录按钮可以调用客户端程序,实现聊天功能2.1. 计思路聊天系统的设计跟普通网站设计有着许多不同的地方,普通网站设计所考虑的因素,例如,普 通网站需要对布局进入大量美化以及动画设计等等,而聊天室只要提供满足访客双方直接实时聊天 即可。因此,在设计聊天系统的过程中,必须要考虑好以下几个设计要点:在Internet上的聊天程序一般都是以服务器提供服务
12、端连接响应,使用者通过客户端程序登录到服务器,就可以与登录在 同一服务器上的用户交谈,这是一个面向连接的通信过程。因此,程序要在TCP/IP环境下,实现服务器端和客户端两部分程序。1 .首先通过继承JFrame类构造服务器界面。2 .设计客户端程序使其能够完成正常的通信功能,并且可以更改背景颜色,设置字体颜色。3 .设计侦听程序,使其显示登录的ip地址端口号,以及用户昵称,通过侦听按钮可以调用客户端程序,实现聊天功能。2.1.3 Java聊天室目录结构说明对系统包结构、文件结本列表说明,如表 2-1、2-2所示。表2-1包名作用java.io提供了用于系统的输入和输出,通过数据流,序列化和文件
13、系统。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 )为基础使跨平台应用程序可以使用任何可插拔的外
14、观风格,利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面表2-2文件名作用image存放用户头像图片2.2 Java聊天室功能结构对系统实现功能进行说明,分析系统功能结构,画出系统功能结构图,如图 2-1所示。总体功能:(1)实现在同一局域网的聊天(2)程序可以自动扫描已经上线的用户(3)需要与其中的用户进行交谈,则只需双击右侧用户列表,输入对方IP地址,便可在下面的输入框内输入信息进行发送。(4)添加了用户头像(5)调整了界面窗口(6) Enter键实现发送消息功能分段功能:1、服务器端功能描述:启动服务器端。2、客户端功能描述:启动客户端;显示登录昵称:显示系统时间:显示聊天
15、记录:发送信息(实现按回车键发送消息);退出聊天室。功能实现:1、采用套接字实现网络中的数据传输2、尽量使用某个或某些应用层的协议实现系统的部分功能3、系统设计规范合理,操作流程方便简单详细设计3.1 Java聊天室模块实现3.1.1 聊天功能模块实现一、 实现原理启动该程序时运行如下过程:(1)把自身本机的ip地址发送给所有正在打开这个聊天室程序的人(2)其他人获取了这个IP地址后,会监听这个地址(3)如果有人发送了消息,所有的人都会接收并查看到分层结构及调用关系说明(1)从main ()函数入口开始分析,实例化 ChatLineFrame这个类并执行类repaint方法,重绘事 件,刷新弹
16、出的窗口的内容(2)在实例化 ChatLineFrame这个类过程中,首先定义 ChatLineFrame类继承JFrame,声明成员 变量和框架布局内容,然后构造方法,实例化该类的时候,会自动执行函数内的内容。(3)初始化窗口和其他部分(4)实例化 chatJFrame(5)实例化ChatJFrame类,该类实现向外广播消息(6)实例化ReceiveMessage类,该类实现监听并接受消息(7)启动 UDPReceive 类、UserBroadcast 的线程。(8)在定义初始化方法中,为按钮增加监听行为,实例化 IPListListener类与 SendButtonListener 类。3
17、、 关键代码分析class ChatJFrame extends JFrame / 定义 ChatLineFrame 类继承 JFrame JTextFieldtext1=new JTextField();JTextFieldtext2=new JTextField();JTextFieldtext3=new JTextField( "目的主机 IP 地址:"JTextAreaTAreaMessage = new JTextArea();JButton button = new JButton("发送");DefaultListModel model =
18、 newDefaultListModel();ChatJFrame.SendButtonListener listener ;ChatJFrame.IPListListener listener2static DatagramSocketsocket = null ; /消息发送插口static DatagramSocketsocketBroadcast = null ;/ 广播发送插口/声明成员变量publicstaticfinalint publicstaticfinalint publicstaticfinalint publicstaticfinalintpublicstatic St
19、ringUDP_CONNECT0;UDP_EXIT = 1;UDP_MESSAGE2;UDP_USER_ACK 6;SEP = "!" ; / 分隔符publicstaticint publicstaticint publicstaticint publicstaticint publicstaticintInetAddressUDPport = 3333; / 消息发送端口UDPDesPort = 3333;/ 消息接收端口BroadcastPort = 5555; / 广播端口BroadcastDesPort = 5555;/ 接收广播端口DataLength = 81
20、92; 数据报默认长度 iaSource ; / 本机 IP 地址String MylPAddress ; /IP 地址字符串/如果IP地址为空,则执行下面的操作if ( this . text2 .getText().equals( "")this . TAreaMessage .append("注意:IP地址栏为空,请双击用户列表,输入对 方 IP ! n");void init()setLayout( null ); / 设置布局方式为NULLthis . TAreaMessage .setEditable( false );设置容器X轴上的起点
21、和Y轴上的起点 以及组件的长度和组件的高度this . TAreaMessage .setBounds(10, 70, 300, 200);this . TAreaMessage .setLineWrap( true );JScrollPane localJScrollPane = newJScrollPane( this . TAreaMessage );localJScrollPane .setBounds(10, 70, 300, 200);add( localJScrollPane );publicvoid run()String str1 = ChatJFrame. this . M
22、yIPAddress ; / 获取 IP 地址信息int i = str1 .lastIndexOf( '.' ); / 用分割符. 将 IP 区分割开SEP;String str2 = String. valueOf (0) + ChatJFrame. SEP+ChatJFrame. this . MyIPAddress + ChatJFrame.byte arrayOfByte = str2 .getBytes();while ( true )try/ 获取目的IP 地址Stringstr3 = str1 .substring(0, i + 1) +String. valu
23、eOf (255);/ getAllByName() 方法是根据主机名返回其可能的所有InetAddress 对象,保存在一个数组中。InetAddresslocalInetAddress =InetAddress. getByName( str3 );/ 封装要发送的信息DatagramPacketlocalDatagramPacketnewDatagramPacket( arrayOfByte , arrayOfByte . length , locallnetAddress , ChatJFrame. BroadcastDesPort );/发送消息ChatJFrame. socketB
24、roadcast .send( localDatagramPacket );Thread. sleep (2000L);4、 分析总结总结本模块开发工作,遇到问题如何解决、改进设想及心得体会。此聊天室小系统从整体上是实现的,大部分功能都可以应用,但是个人能力有限,还是有一些不足之处,有如下几点:(1)客户端的发送文件功能不完善,本想实现可发送和接收所有文件的功能,但是最终尝试过改进,无法实现,知识简单的文本文档传送功能,而且这也不一定成功。应该是程序不够完善,或是哪里出错(2)客户端的发送表情功能也没有实现,本来的意图是像QQ那样,实现表情图形发送,更加形象,最终还是无法做到,查找相关资料,也
25、没有这部分的讲解,再有时间有限,我也就打消这个功能,改用简单的文字传输(3)服务器的关闭服务器按钮实现有点问题,刚开始调试的时候可以,第二次调试下面就出现广播用户命令失败的提示,并且不强行停止还不会自己停下来,不知道是什么地方出现了问题,希望老师能给予我提示解答。Java聊天室运行结果这里可以实现两个人在同一局域网的聊天,程序可以自动扫描上线的用户。如果需要与其中的用户进行交谈,则只需双击用户列表,输入对方ip ,便可在下面的输入框内输入信息进行发送。在聊天框中输入想要发送的信息,会出现本机发送的信息,以及本机的IP地址。4 课程设计总结总结本次工作内容及存在的不足,改进设想。经过一个多星期的努力,我实现了用JAVA程序设计语言开发的简单聊天室系统,代码部分参照网上资源,部分用老师以前讲过的知
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 廊坊三中2026届初三第二次综合考试试题含解析
- 2022自然流产诊治共识
- 江苏省盐城市东台市七校2025-2026学年初三第一次质量检查试题物理试题含解析
- 陕西省咸阳市兴平市2026年初三5月第二次阶段考试物理试题试卷含解析
- 2026年换电站设备运维安全规范
- 2026年加油加气站卸油作业规范
- 2026年机修工岗位职责考试题及答案
- 防静电门窗安装施工工艺流程
- 2026年医疗器械管理计划
- 2026年工会经费使用管理制度规范
- 2024届新高考语文高中古诗文必背72篇 【原文+注音+翻译】
- 第五讲铸牢中华民族共同体意识-2024年形势与政策
- 组织工程学(新)
- 2023年胎膜早破的诊断和处理指南
- 府谷县新民镇丈八崖联办煤矿矿山地质环境保护与土地复垦方案
- 部队保密安全教育课件
- 交通基础设施智能建造技术探索与发展交流
- 计算机网络实验指导(郑宏等编著 华为)课件PPT(计算机网络实验指导)
- 国家基本药物培训
- 中学语文课程标准与教材研究
- 芜湖供电专项规划(2017-2030)环境影响报告书
评论
0/150
提交评论