课程设计简单聊天室JAVA课程设计Word格式.docx
- 文档编号:828341
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:77
- 大小:229.39KB
课程设计简单聊天室JAVA课程设计Word格式.docx
《课程设计简单聊天室JAVA课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《课程设计简单聊天室JAVA课程设计Word格式.docx(77页珍藏版)》请在冰点文库上搜索。
4.2.11Help类 16
4.2.12ClientReceive类 16
5系统实现 16
5.1系统主要用例的实现 16
5.1.1聊天室服务端用例运行效果 17
5.1.2聊天室客户端用例运行效果 18
5.2系统发布与运行 18
5.2.1系统打包 18
5.2.2系统发布与运行 18
6结束语 19
参考文献 19
致谢 19
附录A:
系统源程序 20
1、ChatServer类 20
2、ServerListen类 31
3、ServerReceive类 32
4、UserLinkList类 37
5、Node类 39
6、PortConf类 40
7、Help类 42
8、ChatClient类 44
9、ClientReceive类 56
10、ConnectConf类 58
11、UserConf类 61
12、Help类 64
附录B:
编码规范 66
摘 要
本课程设计我们通过聊天室的代码实现,体会到将理论知识与具体实现相结合,巩固Java相关方法。
聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的消息,客户端需登陆到服务器才可以实现正常的聊天功能。
本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型网站。
关键词:
(3-5个,每个之间用分号隔开)聊天室;
多线程;
C/S模式
Abstract
Thecoursedesignourchatroomthroughthecode,understandthetheoreticalknowledgeandpracticalrealizationofthecombination,theconsolidationofjava-relatedmethods.Chatclientandtheserverisdividedintotwoparts,theclient,server-sideprogramismainlyresponsibleforlisteningclientsentthenewstobelandingtheclienttotheserverwillberealizedonlyifthenormalchat.Thechatsystemtoexchange-basedchat,inordertoprovidecustomerswithanetworkplatformforinterpersonalcommunication,butalsonetworkwiththerealityofthepracticalistheclosestsite.
Keywords:
Chatrooms,multi-threaded,C/Smode
简单聊天室
1引言
随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见,最直接的网上交流的方式。
本文所介绍的网络聊天系统是基于开放的JAVA应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的处理客户请求,且具有脱离数据库技术方法,易于维护和更新的特点。
2设计任务与目的
本聊天室程序基于C/S模式,聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的消息,客户端需登陆到服务器才可以实现正常的聊天功能。
通过本项目的设计实践,力求熟练掌握GUI程序设计、多线程技术、基于TCP
的Socket通信编程。
3需求分析
本系统所要实现的主要功能是为广大用户提供一个借助网络进行人际交往的平台。
因为服务端采用多线程,所以性能有很大提升。
因为服务端和客户端之间采用TCP协议进行网络通信,建立的是可靠的、端到端的网络连接,所以可靠性和安全性都很好。
3.1系统用例图
图3-1 系统用例图
3.2主要用例分析
服务器端的主要功能如下:
1,在特定端口上进行侦听,等待客户端连接
2,用户可以配置服务端的侦听端口,默认端口为8888.
3,向已经连接到服务端的用户发送系统消息。
4,统计在线人数
5,当停止服务时,断开所有的用户连接。
客户端的主要功能如下:
1,连接到已经开启的聊天服务的服务端。
2,用户可以配置要连接服务器端的IP地址和端口号。
3,用户可以配置连接后显示的用户名。
4,当服务器端开启的时候,用户可以随时登录和注销。
5,用户可以向所有人或者某一个人发送消息。
4系统设计
4.1总体设计
4.1.1系统类图
图4-1-1 服务端系统类图
图4-1-2 客户端系统类图
4.1.2主要时序图
图4-2-1 服务端主要时序类图
4.2详细设计
图4-2-2 客户端主要时序类图
聊天室服务器端的设计
聊天室服务端主要包括7个类,放在server包中:
4.2.1ChatServer类
ChatServer.java
图4-3 ChatServer类图
包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加时
间监听与时间处理。
调用ServerListen类来实现服务端用户上线与下线的监听,调用
ServerListen来实现服务器端的消息收发。
4.2.2ServerListen类
ServerListen.java
图4-4 ServerListen类图
该类实现服务器用户上线与下线的监听。
该类对用户上线下线的监听是通过调用用户链表类(UserLinkList)来实现的。
当用户上线与下线情况发生变化时,该类会对主类的界面进行相应的修改。
4.2.3ServerReceive类
图4-5 ServerReceive类图
ServerReceive.java
该类是实现服务器消息收发的类,该类分别定义了向某用户及所有人发送消息的方法,发送的消息会显示在主界面类的街面上。
4.2.4PortConf类
图4-6 PortConf类图
PortConf.java
该类继承自Jdialog,是用户对服务器端监听端口进行修改配置的类。
4.2.5Help类
图4-7 Help类图
Help.java
服务端程序帮助类。
4.2.6UserLinkList类
图4-8 UserLinkList类图
UserLinkList.java
用户链表节点的具体实现类。
该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这5个方法。
4.2.7Node类
图4-9 Node类图
Node.java
用户链表的节点类,定义了链表中的用户。
该类与前面所讲的链表节点Node类的功能相当。
聊天室客户端设计
聊天室客户端主要包括5个类,放在client包中:
4.2.8ChatClient类
ChatClient.java
图4-10 ChatClient类图
包含名为ChatClient的public类,其主要功能为定义客户端的界面,添加时间监听与事件处理。
该类定义了Connect()与DisConnect()方法实现与客户端的连接与断开连接。
当登陆到指定的服务器时,调用ClientReceive类实现消息收发,同时该类还定义了SendMessaga()方法来其他用户发送带有表情的消息或悄悄话。
4.2.9ConnectConf类
ConnectConf.java
图4-11 ConnectConf类图
该类继承自Jdialog,是用户对所有要连接的服务器IP及监听端口进行修改配置的类。
4.2.10UserConf类
UserConf.java
图4-12 UserConf类图
该类继承自Jdialog,是用户对链接到服务器时所显示的用户名进行修改配置的类。
4.2.11Help类
客户端程序的帮助类。
4.2.12ClientReceive类
图4-13 Help类图
ClientReceive.java
图4-14 ClientReceive类图
该类是实现服务器端与客户端消息收发的类。
5系统实现
5.1系统主要用例的实现
5.1.1聊天室服务端用例运行效果
图5-1 聊天室服务端用例运行效果图
5.1.2聊天室客户端用例运行效果
图5-2 聊天室客户端用例运行效果图
5.2系统发布与运行
5.2.1系统打包
使用MyEclipse自带的打包工具分别将server包和client包中的.class文件打成两个Jar包:
ChatServer.jar和CharClient.jar 。
5.2.2系统发布与运行
将server包和client包中的.class文件打成两个Jar包,就可以发布系统了。
直接分别双击两个Jar包(ChatServer.jar和CharClient.jar),就可以运行服务端和客户端了。
6结束语
Java面向对象程序设计是一门应用广泛并且实用性极强的高级程序设计语言。
通过本次课程设计,我们对面向对象的基本思想有了进一步的理解,对项目的各个阶段的任务也有了一定的了解。
设计开始阶段必须明确设计的目的与需求分析,总体设计要全面分析聊天室系统的架构。
通过这次设计,使我们认识到体系的架构是最重要的,只有准确的系统设计、很好的定义各个模块及模块之间的关系,才能在编码阶段更轻松的的实现。
通过这次课程设计,对我们的逻辑思维能力是一个很大的锻炼,它不仅加强了我们的系统思考问题的能力,而且还改变了我们以前不好的编程习惯,虽然花费了不少的时间,但是我们学到了丰富的知识。
另外,此次课程设计也提高了我们的团对合作精神,让我们明白不是不能一个人能单独完成,而是要集思广益,结合更多的人的创意思维。
让我们大家深刻的体会到理论与实际相结合的重要性与微妙之处。
对于不同的想法我们都会集中讨论并对好的意见加以借鉴,在这个讨论的过程中,还更正了不少我们各自自身对于某个知识点的误区。
这次程序设计也是一个毅力的考验过程。
有时候往往只是一个小小的错误,却要花出几小时甚至是一两天的时间才可能发现它。
所以在这个过程不能过于急躁,要很有耐心将程序反复调试,
参考文献
[1]张广彬,孟红蕊,张永宝.Java课程设计案例精编[M].北京:
清华大学出版社,2007,1.
[2]黄晓东.Java课程设计案例精编[M].北京:
中国水利水电出版社,2004,5.
[3]求是科技.Java信息管理系统开发实例导航[M].北京:
人民邮电出版社,2005,4.
[4]求是科技.Java数据库系统开发实例导航[M].北京:
人民邮电出版社,2004,9.
[5]廖卫东Java程序设计实用指南[M].北京:
机械工业出版社,2002.1[3]
[6]李卫华,傅晓东.Java语言基础及其应用[M]北京:
中国水利水电出版社,1996[5]
致谢
本次课程由上海杰普公司三为指导老师以及我们任课老师郭老师精心辅导,让我
们大家深刻的体会到理论与实际相结合的重要性与微妙之处。
使我们对java有了更深刻的认识,产生浓厚的学习兴趣。
我们由衷对他们表示感谢。
系统源程序
1、ChatServer类
功能:
为定义服务器端的界面,添加时间监听与时间处理。
调用ServerListen类来实现服务端用户上线与下线的监听,调用ServerListen来实现服务器端的消息收发。
代码:
packageserver;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
import.*;
/*
*聊天服务端的主框架类
*/
publicclassChatServerextendsJFrameimplementsActionListener{
/**
*
privatestaticfinallongserialVersionUID=1L;
publicstaticintport=8888;
//服务端的侦听端口
ServerSocketserverSocket;
//服务端SocketJComboBoxcombobox;
//选择发送消息的接受者JTextAreamessageShow;
//服务端的信息显示JScrollPanemessageScrollPane;
//信息显示的滚动条JTextFieldshowStatus;
//显示用户连接状态
JLabelsendToLabel,messageLabel;
JTextFieldsysMessage;
//服务端消息的发送
JButtonsysMessageButton;
//服务端消息的发送按钮UserLinkListuserLinkList;
//用户链表
//建立菜单栏
JMenuBarjMenuBar=newJMenuBar();
//建立菜单组
JMenuserviceMenu=newJMenu("
服务(V)"
);
//建立菜单项
JMenuItemportItem=newJMenuItem("
端口设置(P)"
JMenuItemstartItem=newJMenuItem("
启动服务(S)"
JMenuItemstopItem=newJMenuItem("
停止服务(T)"
JMenuItemexitItem=newJMenuItem("
退出(X)"
JMenuhelpMenu=newJMenu("
帮助(H)"
JMenuItemhelpItem=newJMenuItem("
帮助(H)"
//建立工具栏
JToolBartoolBar=newJToolBar();
//建立工具栏中的按钮组件
JButtonportSet;
//启动服务端侦听JButtonstartServer;
//启动服务端侦听JButtonstopServer;
//关闭服务端侦听JButtonexitButton;
//退出按钮
//框架的大小
DimensionfaceSize=newDimension(400,600);
ServerListenlistenThread;
JPaneldownPanel;
GridBagLayoutgirdBag;
GridBagConstraintsgirdBagCon;
*服务端构造函数
publicChatServer(){init();
//初始化程序
//添加框架的关闭事件处理this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.pack();
//设置框架的大小
this.setSize(faceSize);
//设置运行时窗口的位置
DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)(screenSize.width-faceSize.getWidth())/2,
(int)(screenSize.height-faceSize.getHeight())/2);
this.setResizable(false);
this.setTitle("
聊天室服务端"
//设置标题setVisible(true);
//为服务菜单栏设置热键'
V'
serviceMenu.setMnemonic('
//为端口设置快捷键为ctrl+pportItem.setMnemonic('
P'
portItem.setAccelerator (KeyStroke.getKeyStroke
(KeyEvent.VK_P,InputEvent.CTRL_MASK));
//为启动服务快捷键为ctrl+sstartItem.setMnemonic('
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.getKeyStroke
(KeyEvent.VK_X,InputEvent.CTRL_MASK));
//为帮助菜单栏设置热键'
H'
helpMenu.setMnemonic('
//为帮助设置快捷键为ctrl+phelpItem.setMnemonic('
helpItem.setAccelerator (KeyStroke.getKeyStroke
(KeyEvent.VK_H,InputEvent.CTRL_MASK));
}
*程序初始化函数
publicvoidinit(){
ContainercontentPane=getContentPane();
contentPane.setLayout(newBorderLayout());
//添加菜单栏serviceMenu.add(portItem);
serviceMenu.add(startItem);
serviceMenu.add(stopItem);
serviceMenu.add(exitItem);
jMenuBar.add(serviceMenu);
helpMenu.add(helpItem);
jMenuBar.add(helpMenu);
setJMenuBar(jMenuBar);
//初始化按钮
portSet=newJButton("
端口设置"
startServer=newJButton("
启动服务"
stopServer=newJButton("
停止服务"
);
exitButton=newJButton("
退出"
//将按钮添加到工具栏toolBar.add(portSet);
toolBar.addSeparator();
//添加分隔栏
toolBar.add(startServer);
toolBar.add(stopServer);
toolBar.add(exitButton);
contentPane.add(toolBar,BorderLayout.NORTH);
//初始时,令停止服务按钮不可用stopServer.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(this);
stopServer.addActionListener(this);
exitButton.addActionListener(this);
combobox=newJComboBox();
combobox.insertItemAt("
所有人"
0);
combobox.setSelectedIndex(0);
messageShow=newJTextArea();
messageShow.setEditable(false);
//添加滚动条
messageScrollPane=newJScrollPane(messageShow,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 简单 聊天室 JAVA