Java课程设计---JAVA聊天室的系统的设计与开发_第1页
Java课程设计---JAVA聊天室的系统的设计与开发_第2页
Java课程设计---JAVA聊天室的系统的设计与开发_第3页
Java课程设计---JAVA聊天室的系统的设计与开发_第4页
Java课程设计---JAVA聊天室的系统的设计与开发_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、 Java程序课程设计任务书程序课程设计任务书JAVAJAVA聊天室的系统的设计与开发聊天室的系统的设计与开发1 主要内容:主要内容:用JAVA实现基于C/S模式的聊天室系统。聊天室分为效劳器端和客户端两局部,效劳器端程序主要负责侦听客户端发来的信息,客户端需要登陆到效劳器端才可以实现正常的聊天功能。2.具体要求具体要求包括技术要求等包括技术要求等:系统的功能要求:A.效劳器端主要功能如下:1.在特定端口上进行侦听,等待客户端连接。2.用户可以配置效劳器端的侦听端口,默认端口为8888。3.向已经连接到效劳器端的用户发送系统消息。4.统计在线人数。5.当停止效劳时,断开所有的用户连接。B.客户

2、端的主要功能如下:1.连接到已经开启聊天效劳的效劳器端。2.用户可以配置要连接的效劳器端的IP地址和端口号。3.用户可以配置连接后显示的用户名。4.当效劳器端开启的话,用户可以随时登录和注销。5.用户可以向所有人或某一个人发送消息。学习并掌握一下技术:学习并掌握一下技术:Java JavaBean 等等熟练使用一下开发工具:熟练使用一下开发工具:Eclipse, JCreator 等等实现系统上述的功能。实现系统上述的功能。3.进度安排:进度安排:5月20日 5月21日:课程设计选题,查找参考资料 5月22日 5月23日: 完成系统设计5月24日 5月27日: 完成程序代码的编写5月28日:系

3、统测试与完善5月29日:完成课程设计报告,准备辩论4.4.主要参考文献:主要参考文献:1.张广彬 孟红蕊 张永宝.Java课程设计案例精编M.摘要摘要在网络越来越兴旺的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。 一般来说,聊天工具大多数由客户端程序和效劳器程序外加效劳器端用于存放客户数据的数据库组成,本系统采用客户机/效劳器架构模式通过Java提供的Soket类来连接客户机和效劳器并使客户机和效劳器之间相互通信,由于聊天是多点对多点的而

4、Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQL Server2000完成并通过JDBC-ODBC桥访问数据库。本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原那么。系统采用C/S结构,客户端与客户端以及客户端与效劳器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。效劳器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对效劳器资源的利用。聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。关

5、键词关键词:多线程 ;客户机/效劳器 ;JAVA ; Socket ; Eclipse ; TCP/IP目目 录录JAVA程序课程设计任务书程序课程设计任务书.II摘要摘要 .III目目 录录.IV第第1章章 引言引言.11.1 背景.11.2 课程设计内容.11.3 任务分工.2第第2章章 聊天室系统聊天室系统.32.1 聊天室系统概述.32.1.1 聊天室系统的定义.32.1.2 聊天室系统的任务及目的.32.2 主要聊天室系统介绍.42.3 本章小结.5第第3章章 聊天室系统的设计聊天室系统的设计.63.1 系统需求分析.63.2 系统开发及运行环境.63.3 系统主要功能要求.63.4

6、 系统模块化分析.73.4.1 聊天室系统总体结构.73.4.2 聊天室系统各模块介绍.83.5 系统数据流图.103.6 本章小结.10第第4章章 系统的具体实现系统的具体实现.11界面设计.11效劳器启动界面图.11效劳器启动成功界面图.12客户端界面图.12用户设置界面图.13用户成功登录界面图.13两人私聊界面图.14多人群聊界面图.14程序设计及调试运行.144.2.1 程序调试以效劳器为例.154.2.2 JCreator.204.3 本章小结.21第第5章章 结束语结束语.22致谢致谢.23附录附录 源代码源代码.24第第1章章 引言引言1.11.1 背景背景当今主流的聊天工具有

7、QQ,ICQ,MSN Messenger,Yahoo Messenger等,国内最热门的当属QQ,腾讯QQOICQ是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。您可以使用QQ和好友用户进行交流,信息即时发送,即时回复,收发及时、功能全面。此外QQ还具有BP机网上寻呼、聊天室、传输文件、语音邮件、 短讯效劳等功能,QQ不仅仅是虚拟的网络寻呼机,更可与传统的无线寻呼网、GSM移动 的短消息系统互联,目前QQ和全国多家寻呼台、移动通信公司有业务合作。是国内不可多得的中文网络寻呼机。QQ支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和网址。QQ可以在Win95/9

8、8/NT/2000操作系统下运行,是十分灵活的网络寻呼工具。它会自动检查您是否已联网,如果您的电脑已连入Internet,可以搜索网友、显示在线网友,可以根据QQ号、昵称、姓名、email地址等关键词来查找,找到后可参加到通讯录中。当您的通讯录中的网友在线时,QQ中朋友的头像就会显示在线,根据提示就可以发送信息,如果对方登记了寻呼机或开通了GSM 短消息,即使离线了,您也可及时将信息传递给您的好友。虽然以上这些软件是免费的,并且功能越来越强大。但是它们的唯一的缺乏就是必须要联网或者下载到它们的效劳端,要不然是没法脱离Intenet使用的。为了能在一个没有连接到Intenet的局域网使用聊天工具

9、,那就必须要有效劳器端。本系统就是包括效劳器端与客户端,可以在局域网聊天的一个工具。1.21.2 课程设计内容课程设计内容实现的是局域网中的聊天功能,运行效劳程序后,效劳器创立成功,然后使效劳器对某一个设定的端口处于监听状态,当有客户端请求建立连接时,效劳器就可接受请求,建立连接!这样效劳器和客户端就可相互发送消息,实现聊天功能!系统的功能要求:A.效劳器端主要功能如下:1.在特定端口上进行侦听,等待客户端连接。2.用户可以配置效劳器端的侦听端口,默认端口为8888。3.向已经连接到效劳器端的用户发送系统消息。4.统计在线人数。5.当停止效劳时,断开所有的用户连接。B.客户端的主要功能如下:1

10、.连接到已经开启聊天效劳的效劳器端。2.用户可以配置要连接的效劳器端的IP地址和端口号。3.用户可以配置连接后显示的用户名。4.当效劳器端开启的话,用户可以随时登录和注销。5.用户可以向所有人或某一个人发送消息1.3 任务分工任务分工邱晓峰 ChatClient.java ChatServer.java ClientReceive.java 郑亚楠 :Help.java Node.java PortConf.java 第第2章章 聊天室系统聊天室系统2.12.1 聊天室系统聊天室系统概述概述聊天室是一种基于互联网的即时交流系统,最初是ICQ,也称网络寻呼机。此类软件使得人们可以运用连上INTE

11、RNET网的电脑用户可以随时跟另外一个在线网民交谈,甚至可以通过视频看到对方的适时图像。使人们不必担忧昂贵的话费而畅快交流,并工作、交流两不误。2.1.1 聊天室系统的定义聊天室系统的定义聊天时系统是通过即时通讯技术来实现在线聊天、交流的软件。目前有2种架构形式,1、一种是C/S架构,采用客户端/效劳器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、百度HI 、Skype QQ VS GU、Gtalk、新浪UC、MSN等;2、采用B/S架构,即浏览器/效劳端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验效劳器端进行沟通对话,一般运用在电子

12、商务网站的效劳商,典型的代表有Websitelive 、53KF、live800等。2.1.2 聊天室系统的任务及目的聊天室系统的任务及目的本系统主要通过客户端,效劳器端来表达聊天系统的根本功能。1效劳器端1.处理用户注册3.处理用户发送信息,效劳器监控聊天内容,效劳器过滤非法内容8. 效劳器踢人。9. 保存效劳器日志。 10.保存用户聊天信息。2客户端 2.22.2 主要聊天室系统介绍主要聊天室系统介绍目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN新版改名为Live Messenger以及跨平台Gaim等。本人取最具代表性的QQ和

13、MSN进行了一些研究,作为我开发聊天系统的准备。腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。可以确定腾讯QQ是以多效劳器提供效劳、效劳器总控客户端、客户端之间UDP直连通信的。并且在两个客户端之间不能建立直连的情况下,才由效劳器进行中转通信。其模型如图1-1图1-1 腾讯QQ效劳器-客户端模型1与腾讯QQ不同,微软的MSN Messenger只使用了

14、TCP作为传输层通信协议,所有客户端与效劳器进行连接,然后通过与效劳器的TCP连接进行中转通信。其模型如图1-2图1-2 MSN效劳器-客户端模型2腾讯使用的模型中,效劳器主要处理客户端各种状态的控制,可以极大减轻效劳器的处理压力,但其内部协议和实现复杂度都较高。而MSN Messenger所有数据都要经过效劳器,效劳器压力可想而知难怪平时很少见到使用MSN进行语音视频聊天的。2.32.3 本章小结本章小结这一章介绍了当前聊天室系统应该具备的功能模块,并提供了市面上比拟流行的聊天室系统作为参考。在这一章中,我们可以了解什么是聊天室系统,当前聊天室系统的市场需求,还有一个聊天室系统应该的开发目标

15、。第第3章章 聊天室系统的设计聊天室系统的设计这一章是聊天室系统的设计,从系统需求分析开始,介绍开发环境和用到的开发工具,系统主要的功能设计,系统的数据流程图。3.13.1 系统需求分析系统需求分析聊天室的设计目标:通过做稳固所学Java语言根本知识,增进Java语言编辑根本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用,用JAVA实现基于C/S模式的聊天室系统。3.23.2 系统开发及运行环境系统开发及运行环境硬件平台:CPU:Pentium 2.8GHz以上。内存:256MB以上。软件平台:操作系统:Windows XP。运行环境:JDK Version1.6 JCr

16、eator。 3.33.3 系统主要功能要求系统主要功能要求本系统针对局域网进行联机聊天。聊天室分为效劳器端和客户端两局部,效劳器端程序主要负责侦听客户端发来的信息,客户端需要登陆到效劳器端才可以实现正常的聊天功能。本系统主要实现如下功能:效劳器:在特定端口上进行侦听,等待客户端连接。用户可以配置效劳器端的侦听端口,默认端口为8888。向已经连接到效劳器端的用户发送系统消息。统计在线人数。当停止效劳时,断开所有的用户连接。系统运行稳定、平安可靠。一台主机只能启动一个效劳器。客户端:连接到已经开启聊天效劳的效劳器端。用户可以配置要连接的效劳器端的IP地址和端口号。用户可以配置连接后显示的用户名。

17、用户可以更改聊天时的表情。当效劳器端开启后,用户可以随时登录和注销。用户可以向所有人或某一个人发送消息。系统运行稳定、平安可靠。可以默认连接到自己主机启动的效劳器。3.43.4 系统模块化分析系统模块化分析3.4.1 聊天室系统总体结构聊天室系统总体结构主要功能框架如下列图所示:效劳器效劳器端端口口设设置置启启动动效效劳劳系系统统消消息息停停止止效效劳劳退退出出客户端客户端用用户户设设置置注注销销登登录录发发送送消消息息连连接接设设置置退退出出各功能模块实现的功能为:效劳器:端口设置:设置倾听的端口号,默认为8888。启动效劳:开启倾听端口,允许客户端连接。系统消息:效劳器启动后可以在聊天室内

18、发送消息。停止效劳:关闭倾听端口,中断所有客户端的连接。退出:关闭效劳器。客户端:用户设置:设置聊天时显示的名称,默认为匆匆过客。连接设置:设置要连接的效劳器所在主机的IP地址和倾听端口。登录:连接效劳器。发送消息:进行聊天,可单独发送消息给聊天室中的一个人。注销:与效劳器断开连接。退出:关闭客户端。3.4.2 聊天室系统各模块介绍聊天室系统各模块介绍效劳器包含效劳、帮助、聊天三大模块,其效劳器包含效劳、帮助、聊天三大模块,其中效劳模块包含端口设置、启动效劳、停止中效劳模块包含端口设置、启动效劳、停止效劳和退出四个小模块效劳和退出四个小模块聊天模块可以向聊天室内聊天模块可以向聊天室内所有人或个

19、人发送系统消所有人或个人发送系统消息或以管理员身份与其他息或以管理员身份与其他人聊天人聊天表表3-1 效劳器各模块名称功能汇总表效劳器各模块名称功能汇总表序号模块名根本功能1端口设置设置倾听的端口号,默认为8888。2启动效劳开启倾听端口,允许客户端连接。3停止效劳关闭倾听端口,中断所有客户端的连接。4退出关闭效劳器。5帮助显示各个模块的功能及操作方法。6发送向聊天室内发送系统消息。客户端包含操作、设置、帮助、聊天四大客户端包含操作、设置、帮助、聊天四大模块,其中操作包含用户登录、用户注销模块,其中操作包含用户登录、用户注销和退出三个小模块,设置包含用户设置和和退出三个小模块,设置包含用户设置

20、和连接设置两个小模块聊天模块除连接设置两个小模块聊天模块除 具备普通聊天功能外,还能进行聊天时的表情选择具备普通聊天功能外,还能进行聊天时的表情选择表表3-2 客户端各模块名称功能汇总表客户端各模块名称功能汇总表序号模块名根本功能1用户设置设置聊天时显示的名称,默认为匆匆过客。2连接设置设置要连接的效劳器所在主机的IP地址和倾听端口。3用户登录连接到效劳器端。4用户注销与效劳器断开连接。5退出关闭客户端。6发送发送聊天内容7悄悄话聊天内容不会被效劳器和说话对象以外的人看到3.53.5 系统数据流图系统数据流图系统数据流图系统数据流图3.63.6 本章小结本章小结本章是聊天室系统的具体设计过程,

21、有具体的需求分析、系统功能模块、系统数据流图。这里我们开始接触聊天室系统开发的最初步骤,也是很重要的一步。效劳器效劳器客户端客户端A客户端客户端E客户端客户端D客户端客户端C客户端客户端B悄悄话第第4章章 系统的具体实现系统的具体实现界面是系统之间最直接的交互界面,界面的友好性表达了软件设计的质量, 并在很大程度上决定了软件是否成功。4效劳器启动界面图效劳器启动界面图4.1.2效劳器启动成功界面图效劳器启动成功界面图4.1.3客户端界面图客户端界面图4.1.4用户设置界面图用户设置界面图4.1.5用户成功登录界面图用户成功登录界面图4.1.6两人私聊界面图两人私聊界面图4.1.7多人群聊界面图

22、多人群聊界面图利用JCreator“一次编写,各处运行的编程优点,按功能模块结构设计菜单,布置各明细模块工作界面,编写各个模块的程序代码,进行编译连接运行,经过反复调试修改,以到达系统功能要求。这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、编写程序并调试,做到程序简洁清楚,尽量防止可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。4.2.1 程序调试程序调试以效劳器为例以效劳器为例 import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;im

23、port .*;import java.io.*;/* * 聊天效劳端的主框架类 */public class ChatServer extends JFrame implements ActionListenerpublic static int port = 8888;/效劳端的侦听端口ServerSocket serverSocket;/效劳端SocketImage icon;/程序图标JComboBox combobox;/选择发送消息的接受者JTextArea messageShow;/效劳端的信息显示JScrollPane messageScrollPane;/信息显示的滚动条JT

24、extField showStatus;/显示用户连接状态JLabel sendToLabel,messageLabel;JTextField sysMessage;/效劳端消息的发送JButton sysMessageButton;/效劳端消息的发送按钮UserLinkList userLinkList;/用户链表/建立菜单栏JMenuBar jMenuBar = new JMenuBar(); /建立菜单组JMenu serviceMenu = new JMenu (效劳(V); /建立菜单项JMenuItem portItem = new JMenuItem (端口设置(P);JMenu

25、Item startItem = new JMenuItem (启动效劳(S);JMenuItem stopItem=new JMenuItem (停止效劳(T);JMenuItem exitItem=new JMenuItem (退出(X);JMenu helpMenu=new JMenu (帮助(H);JMenuItem helpItem=new JMenuItem (帮助(H);/建立工具栏JToolBar toolBar = new JToolBar();/建立工具栏中的按钮组件JButton portSet;/启动效劳端侦听JButton startServer;/启动效劳端侦听JB

26、utton stopServer;/关闭效劳端侦听JButton exitButton;/退出按钮/框架的大小Dimension faceSize = new Dimension(400, 600);ServerListen listenThread;JPanel downPanel ;GridBagLayout girdBag;GridBagConstraints girdBagCon;/* * 效劳端构造函数 */public ChatServer()init();/初始化程序/添加框架的关闭事件处理this.setDefaultCloseOperation(JFrame.EXIT_ON_

27、CLOSE);this.pack();/设置框架的大小this.setSize(faceSize);/设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation( (int) (screenSize.width - faceSize.getWidth() / 2, (int) (screenSize.height - faceSize.getHeight() / 2);this.setResizable(false);this.setTitle(聊天室效劳端); /设

28、置标题/程序图标icon = getImage(icon.gif);this.setIconImage(icon); /设置程序图标show();/为效劳菜单栏设置热键VserviceMenu.setMnemonic(V);/为端口设置快捷键为ctrl+pportItem.setMnemonic (P); portItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_P,InputEvent.CTRL_MASK);/为启动效劳快捷键为ctrl+sstartItem.setMnemonic (S); startItem.setAccel

29、erator (KeyStroke.getKeyStroke (KeyEvent.VK_S,InputEvent.CTRL_MASK);/为端口设置快捷键为ctrl+TstopItem.setMnemonic (T); stopItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_T,InputEvent.CTRL_MASK);/为退出设置快捷键为ctrl+xexitItem.setMnemonic (X); exitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_X,

30、InputEvent.CTRL_MASK);/为帮助菜单栏设置热键HhelpMenu.setMnemonic(H);/为帮助设置快捷键为ctrl+phelpItem.setMnemonic (H); helpItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_H,InputEvent.CTRL_MASK);/* * 程序初始化函数 */public void init()Container contentPane = getContentPane();contentPane.setLayout(new BorderLayout();

31、/添加菜单栏serviceMenu.add (portItem);serviceMenu.add (startItem);serviceMenu.add (stopItem);serviceMenu.add (exitItem);jMenuBar.add (serviceMenu); helpMenu.add (helpItem);jMenuBar.add (helpMenu); setJMenuBar (jMenuBar);/初始化按钮portSet = new JButton(端口设置);startServer = new JButton(启动效劳);stopServer = new JB

32、utton(停止效劳 );exitButton = new JButton(退出 );/将按钮添加到工具栏toolBar.add(portSet);toolBar.addSeparator();/添加分隔栏toolBar.add(startServer);toolBar.add(stopServer);toolBar.addSeparator();/添加分隔栏toolBar.add(exitButton);contentPane.add(toolBar,BorderLayout.NORTH);/初始时,令停止效劳按钮不可用stopServer.setEnabled(false);stopIte

33、m .setEnabled(false);/为菜单栏添加事件监听portItem.addActionListener(this);startItem.addActionListener(this);stopItem.addActionListener(this);exitItem.addActionListener(this);helpItem.addActionListener(this);/添加按钮的事件侦听portSet.addActionListener(this);startServer.addActionListener(this);stopServer.addActionList

34、ener(this);exitButton.addActionListener(this); combobox = new JComboBox();combobox.insertItemAt(所有人,0);combobox.setSelectedIndex(0);messageShow = new JTextArea();messageShow.setEditable(false);/添加滚动条messageScrollPane = new JScrollPane(messageShow,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.

35、HORIZONTAL_SCROLLBAR_AS_NEEDED);messageScrollPane.setPreferredSize(new Dimension(400,400);messageScrollPane.revalidate();showStatus = new JTextField(35);showStatus.setEditable(false);sysMessage = new JTextField(24);sysMessage.setEnabled(false);sysMessageButton = new JButton();sysMessageButton.setTex

36、t(发送);/添加系统消息的事件侦听sysMessage.addActionListener(this);sysMessageButton.addActionListener(this);sendToLabel = new JLabel(发送至:);messageLabel = new JLabel(发送消息:);downPanel = new JPanel();girdBag = new GridBagLayout();downPanel.setLayout(girdBag);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0

37、;girdBagCon.gridy = 0;girdBagCon.gridwidth = 3;girdBagCon.gridheight = 2;girdBagCon.ipadx = 5;girdBagCon.ipady = 5;JLabel none = new JLabel( );girdBag.setConstraints(none,girdBagCon);downPanel.add(none);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 2;girdBagCon.insets

38、 = new Insets(1,0,0,0);girdBagCon.ipadx = 5;girdBagCon.ipady = 5;girdBag.setConstraints(sendToLabel,girdBagCon);downPanel.add(sendToLabel);girdBagCon = new GridBagConstraints();girdBagCon.gridx =1;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LINE_START;girdBag.setConstraints(combobox,

39、girdBagCon);downPanel.add(combobox);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 3;girdBag.setConstraints(messageLabel,girdBagCon);downPanel.add(messageLabel);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 1;girdBagCon.gridy = 3;girdBag.setConstraints(sysMe

40、ssage,girdBagCon);downPanel.add(sysMessage);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 2;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessageButton,girdBagCon);downPanel.add(sysMessageButton);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 4;girdBagCon.g

41、ridwidth = 3;girdBag.setConstraints(showStatus,girdBagCon);downPanel.add(showStatus);contentPane.add(messageScrollPane,BorderLayout.CENTER);contentPane.add(downPanel,BorderLayout.SOUTH);/关闭程序时的操作this.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)stopService();System.ex

42、it(0););/* * 事件处理 */public void actionPerformed(ActionEvent e) Object obj = e.getSource();if (obj = startServer | obj = startItem) /启动效劳端startService();else if (obj = stopServer | obj = stopItem) /停止效劳端int j=JOptionPane.showConfirmDialog(this,真的停止效劳吗?,停止效劳,JOptionPane.YES_OPTION,JOptionPane.QUESTION

43、_MESSAGE);if (j = JOptionPane.YES_OPTION)stopService();else if (obj = portSet | obj = portItem) /端口设置/调出端口设置的对话框PortConf portConf = new PortConf(this);portConf.show();else if (obj = exitButton | obj = exitItem) /退出程序int j=JOptionPane.showConfirmDialog(this,真的要退出吗?,退出,JOptionPane.YES_OPTION,JOptionPa

44、ne.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)stopService();System.exit(0);else if (obj = helpItem) /菜单栏中的帮助/调出帮助对话框Help helpDialog = new Help(this);helpDialog.show();else if (obj = sysMessage | obj = sysMessageButton) /发送系统消息sendSystemMessage();/* * 启动效劳端 */public void startService()tryserver

45、Socket = new ServerSocket(port,10);messageShow.append(效劳端已经启动,在+port+端口侦听.n);startServer.setEnabled(false);startItem.setEnabled(false);portSet.setEnabled(false);portItem.setEnabled(false);stopServer .setEnabled(true);stopItem .setEnabled(true);sysMessage.setEnabled(true);catch (Exception e)/System.o

46、ut.println(e);userLinkList = new UserLinkList();listenThread = new ServerListen(serverSocket,combobox,messageShow,showStatus,userLinkList);listenThread.start();/* * 关闭效劳端 */4.2.2 JCreatorJcreator是一个用于Java程序设计的集成开发环境,具有编辑、调试、运行Java程序的功能。当前最新版本是Jcreator3.10,它又分为LE和Pro版本。LE版本功能上受到一些限制,是免费版本。Pro版本功能最全,但

47、这个版本是一个共享软件。这个软件比拟小巧,对硬件要求不是很高,完全用C+写的,速度快、效率高。具有语法着色、代码自动完成、代码参数提示、工程向导、类向导等功能。第一次启动时提示设置JavaJDK主目录及JDKJavaDoc目录,软件自动设置好类路径、编译器及解释器路径,还可以在帮助菜单中使用JDKHelp。4.34.3 本章小结本章小结本章介绍了系统的具体实现和局部关键代码,其中包括用户登录所要用到的函数和主界面的框架设计。第第5章章 结束语结束语本文讨论了如何利用JAVA技术开发聊天室系统,根本满足了结构化、界面友好、速度快、平安性以及稳定性等特点。系统着重研究并实现了网络应用的局部。根据实

48、现的情况看,具有较友好的聊天界面生成效果,以及流畅的网络通信效果。生成的聊天室可以到达根本的聊天要求,具有较高的研究价值。系统具有目前聊天室的根本功能:包括支持语气选择,支持私聊,可以给所有聊友发公共信息,具有速度快,高稳定性,占用系统资源少,用户界面友好等特点。通过设计,发现自己在理论研究和实际工作能力等方面都得到了提高,受益匪浅,同时在老师的指导和课题组同学的共同帮助下,及时总结研究成果,这些无疑会对我今后的工作和学习带来很大的帮助。致谢致谢附录附录 源代码源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;i

49、mport javax.swing.event.*;import .*;import java.io.*;/* * 聊天效劳端的主框架类 */public class ChatServer extends JFrame implements ActionListenerpublic static int port = 8888;/效劳端的侦听端口ServerSocket serverSocket;/效劳端SocketImage icon;/程序图标JComboBox combobox;/选择发送消息的接受者JTextArea messageShow;/效劳端的信息显示JScrollPane m

50、essageScrollPane;/信息显示的滚动条JTextField showStatus;/显示用户连接状态JLabel sendToLabel,messageLabel;JTextField sysMessage;/效劳端消息的发送JButton sysMessageButton;/效劳端消息的发送按钮UserLinkList userLinkList;/用户链表/建立菜单栏JMenuBar jMenuBar = new JMenuBar(); /建立菜单组JMenu serviceMenu = new JMenu (效劳(V); /建立菜单项JMenuItem portItem =

51、new JMenuItem (端口设置(P);JMenuItem startItem = new JMenuItem (启动效劳(S);JMenuItem stopItem=new JMenuItem (停止效劳(T);JMenuItem exitItem=new JMenuItem (退出(X);JMenu helpMenu=new JMenu (帮助(H);JMenuItem helpItem=new JMenuItem (帮助(H);/建立工具栏JToolBar toolBar = new JToolBar();/建立工具栏中的按钮组件JButton portSet;/启动效劳端侦听JB

52、utton startServer;/启动效劳端侦听JButton stopServer;/关闭效劳端侦听JButton exitButton;/退出按钮/框架的大小Dimension faceSize = new Dimension(400, 600);ServerListen listenThread;JPanel downPanel ;GridBagLayout girdBag;GridBagConstraints girdBagCon;/* * 效劳端构造函数 */public ChatServer()init();/初始化程序/添加框架的关闭事件处理this.setDefaultCl

53、oseOperation(JFrame.EXIT_ON_CLOSE);this.pack();/设置框架的大小this.setSize(faceSize);/设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation( (int) (screenSize.width - faceSize.getWidth() / 2, (int) (screenSize.height - faceSize.getHeight() / 2);this.setResizable(fals

54、e);this.setTitle(聊天室效劳端); /设置标题/程序图标icon = getImage(icon.gif);this.setIconImage(icon); /设置程序图标show();/为效劳菜单栏设置热键VserviceMenu.setMnemonic(V);/为端口设置快捷键为ctrl+pportItem.setMnemonic (P); portItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_P,InputEvent.CTRL_MASK);/为启动效劳快捷键为ctrl+sstartItem.setMnem

55、onic (S); startItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_S,InputEvent.CTRL_MASK);/为端口设置快捷键为ctrl+TstopItem.setMnemonic (T); stopItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_T,InputEvent.CTRL_MASK);/为退出设置快捷键为ctrl+xexitItem.setMnemonic (X); exitItem.setAccelerator (KeyStroke.

56、getKeyStroke (KeyEvent.VK_X,InputEvent.CTRL_MASK);/为帮助菜单栏设置热键HhelpMenu.setMnemonic(H);/为帮助设置快捷键为ctrl+phelpItem.setMnemonic (H); helpItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_H,InputEvent.CTRL_MASK);/* * 程序初始化函数 */public void init()Container contentPane = getContentPane();contentPane.s

57、etLayout(new BorderLayout();/添加菜单栏serviceMenu.add (portItem);serviceMenu.add (startItem);serviceMenu.add (stopItem);serviceMenu.add (exitItem);jMenuBar.add (serviceMenu); helpMenu.add (helpItem);jMenuBar.add (helpMenu); setJMenuBar (jMenuBar);/初始化按钮portSet = new JButton(端口设置);startServer = new JButt

58、on(启动效劳);stopServer = new JButton(停止效劳 );exitButton = new JButton(退出 );/将按钮添加到工具栏toolBar.add(portSet);toolBar.addSeparator();/添加分隔栏toolBar.add(startServer);toolBar.add(stopServer);toolBar.addSeparator();/添加分隔栏toolBar.add(exitButton);contentPane.add(toolBar,BorderLayout.NORTH);/初始时,令停止效劳按钮不可用stopServ

59、er.setEnabled(false);stopItem .setEnabled(false);/为菜单栏添加事件监听portItem.addActionListener(this);startItem.addActionListener(this);stopItem.addActionListener(this);exitItem.addActionListener(this);helpItem.addActionListener(this);/添加按钮的事件侦听portSet.addActionListener(this);startServer.addActionListener(th

60、is);stopServer.addActionListener(this);exitButton.addActionListener(this);combobox = new JComboBox();combobox.insertItemAt(所有人,0);combobox.setSelectedIndex(0);messageShow = new JTextArea();messageShow.setEditable(false)/添加滚动条messageScrollPane = new JScrollPane(messageShow,JScrollPane.VERTICAL_SCROLL

温馨提示

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

评论

0/150

提交评论