ImageVerifierCode 换一换
格式:DOCX , 页数:77 ,大小:229.39KB ,
资源ID:584849      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-584849.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(课程设计简单聊天室JAVA课程设计.docx)为本站会员(wj)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

课程设计简单聊天室JAVA课程设计.docx

1、课程设计报告课程名称 : Java 程序设计 课程代码 : 题 目 :简单聊天室年级/专业/班: 学生姓名:孟青学号: 09308910203指导老师 : 开题时间 : 完 成 时 间 : 目录摘要I1 引言12 设计任务与目的13 需求分析13.1 系统用例图13.2 主要用例分析24 系统设计34.1 总体设计34.1.1 系统类图34.1.2 主要时序图64.2 详细设计84.2.1 ChatServer 类94.2.2 ServerListen 类104.2.3 ServerReceive 类104.2.4 PortConf 类114.2.5 Help 类114.2.6 UserLin

2、kList 类114.2.7 Node 类124.2.8 ChatClient 类134.2.9 ConnectConf 类154.2.10 UserConf 类154.2.11 Help 类164.2.12 ClientReceive 类165 系统实现165.1 系统主要用例的实现165.1.1 聊天室服务端用例运行效果175.1.2 聊天室客户端用例运行效果185.2 系统发布与运行185.2.1 系统打包185.2.2 系统发布与运行186 结束语19参考文献19致谢19附录 A:系统源程序201、ChatServer 类202、ServerListen 类313、ServerRece

3、ive 类324、UserLinkList 类375、Node 类396、PortConf 类407、Help 类428、ChatClient 类449、ClientReceive 类5610、ConnectConf 类5811、UserConf 类6112、Help 类64附录 B:编码规范66摘要本课程设计我们通过聊天室的代码实现,体会到将理论知识与具体实现相结合, 巩固 Java 相关方法。聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的消息,客户端需登陆到服务器才可以实现正常的聊天功能。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是

4、网络与现实最贴近的实用型网站。关键词:(3-5 个,每个之间用分号隔开) 聊天室;多线程;C/S 模式AbstractThe course design our chat room through the code, understand the theoretical knowledge and practical realization of the combination, the consolidation of java-related methods. Chat client and the server is divided into two parts, the client,

5、 server-side program is mainly responsible for listening client sent the news to be landing the client to the server will be realized only if the normal chat. The chat system to exchange-based chat, in order to provide customers with a network platform for interpersonal communication, but also netwo

6、rk with the reality of the practical is the closest site.Key words: Chat rooms, multi-threaded, C / S mode简单聊天室1 引言随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持, 而聊天室是人们最常见, 最直接的网上交流的方式。本聊天系统以聊天交流为主,为广大用户提供一个借助网络进行人际交往的平台,也是网络与现实最贴近的实用型网站。本文所介绍的网络聊天系统是基于开放的 JAVA 应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的处理客户请

7、求, 且具有脱离数据库技术方法, 易于维护和更新的特点。2 设计任务与目的本聊天室程序基于 C/S 模式,聊天室共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的消息,客户端需登陆到服务器才可以实现正常的聊天功能。通过本项目的设计实践,力求熟练掌握 GUI 程序设计、多线程技术、基于 TCP的 Socket 通信编程。3 需求分析本系统所要实现的主要功能是为广大用户提供一个借助网络进行人际交往的平台。因为服务端采用多线程,所以性能有很大提升。因为服务端和客户端之间采用 TCP 协议进行网络通信,建立的是可靠的、端到端的网络连接,所以可靠性和安全性都很好。3.1 系统用例图图 3

8、-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

9、.1.2 主要时序图图 4-2-1服务端主要时序类图4.2 详细设计图 4-2-2客户端主要时序类图聊天室服务器端的设计聊天室服务端主要包括 7 个类,放在 server 包中:4.2.1 ChatServer 类ChatServer.java图 4-3ChatServer 类图包含名为 ChatServer 的 public 类,其主要功能为定义服务器端的界面,添加时间监听与时间处理。调用 ServerListen 类来实现服务端用户上线与下线的监听,调用ServerListen 来实现服务器端的消息收发。4.2.2 ServerListen 类ServerListen.java图 4-4S

10、erverListen 类图该类实现服务器用户上线与下线的监听。该类对用户上线下线的监听是通过调用用户链表类(UserLinkList)来实现的。当用户上线与下线情况发生变化时,该类会对主类的界面进行相应的修改。4.2.3 ServerReceive 类图 4-5ServerReceive 类图ServerReceive.java该类是实现服务器消息收发的类,该类分别定义了向某用户及所有人发送消息的方法,发送的消息会显示在主界面类的街面上。4.2.4 PortConf 类图 4-6PortConf 类图PortConf.java该类继承自 Jdialog,是用户对服务器端监听端口进行修改配置的

11、类。4.2.5 Help 类图 4-7Help 类图Help.java服务端程序帮助类。4.2.6 UserLinkList 类图 4-8UserLinkList 类图UserLinkList.java用户链表节点的具体实现类。该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这 5 个方法。4.2.7 Node 类图 4-9Node 类图Node.java用户链表的节点类,定义了链表中的用户。该类与前面所讲的链表节点 Node 类的功能相当。聊天室客户端设计聊天室客户端主要包括 5 个类,放在 client 包中:4.2.8 ChatCl

12、ient 类ChatClient.java图 4-10ChatClient 类图包含名为 ChatClient 的 public 类,其主要功能为定义客户端的界面,添加时间监听与事件处理。该类定义了 Connect()与 DisConnect()方法实现与客户端的连接与断开连接。当登陆到指定的服务器时,调用 ClientReceive 类实现消息收发,同时该类还定义了 SendMessaga()方法来其他用户发送带有表情的消息或悄悄话。4.2.9 ConnectConf 类ConnectConf.java图 4-11ConnectConf 类图该类继承自 Jdialog,是用户对所有要连接的服

13、务器 IP 及监听端口进行修改配置的类。4.2.10 UserConf 类UserConf.java图 4-12UserConf 类图该类继承自 Jdialog,是用户对链接到服务器时所显示的用户名进行修改配置的类。4.2.11 Help 类Help.java客户端程序的帮助类。4.2.12 ClientReceive 类图 4-13Help 类图ClientReceive.java图 4-14ClientReceive 类图该类是实现服务器端与客户端消息收发的类。5 系统实现5.1 系统主要用例的实现5.1.1 聊天室服务端用例运行效果图 5-1聊天室服务端用例运行效果图5.1.2 聊天室客

14、户端用例运行效果图 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面向对象程序设计是一门应用广泛并且实用性极强

15、的高级程序设计语言。通过本次课程设计,我们对面向对象的基本思想有了进一步的理解,对项目的各个阶段的任务也有了一定的了解。设计开始阶段必须明确设计的目的与需求分析,总体设计要全面分析聊天室系统的架构。通过这次设计,使我们认识到体系的架构是最重要的, 只有准确的系统设计、很好的定义各个模块及模块之间的关系,才能在编码阶段更轻松的的实现。通过这次课程设计,对我们的逻辑思维能力是一个很大的锻炼,它不仅加强了我们的系统思考问题的能力,而且还改变了我们以前不好的编程习惯,虽然花费了不少的时间,但是我们学到了丰富的知识。另外,此次课程设计也提高了我们的团对合作精神,让我们明白不是不能一个人能单独完成,而是要

16、集思广益,结合更多的人的创意思维。让我们大家深刻的体会到理论与实际相结合的重要性与微妙之处。对于不同的想法我们都会集中讨论并对好的意见加以借鉴,在这个讨论的过程中,还更正了不少我们各自自身对于某个知识点的误区。这次程序设计也是一个毅力的考验过程。有时候往往只是一个小小的错误,却要花出几小时甚至是一两天的时间才可能发现它。所以在这个过程不能过于急躁,要很有耐心将程序反复调试,参考文献1 张广彬,孟红蕊,张永宝.Java 课程设计案例精编M.北京:清华大学出版社,2007,1.2 黄晓东.Java 课程设计案例精编M.北京:中国水利水电出版社,2004,5.3 求是科技. Java 信息管理系统开

17、发实例导航M.北京:人民邮电出版社,2005,4.4 求是科技.Java 数据库系统开发实例导航M.北京:人民邮电出版社,2004,9.5 廖卫东 Java 程序设计实用指南M.北京:机械工业出版社,2002.136 李卫华,傅晓东.Java 语言基础及其应用M北京:中国水利水电出版社, 19965致谢本次课程由上海杰普公司三为指导老师以及我们任课老师郭老师精心辅导,让我们大家深刻的体会到理论与实际相结合的重要性与微妙之处。使我们对 java 有了更深刻的认识,产生浓厚的学习兴趣。我们由衷对他们表示感谢。附录 A:系统源程序1、ChatServer 类功能:为定义服务器端的界面,添加时间监听与

18、时间处理。调用 ServerListen 类来实现服务端用户上线与下线的监听,调用 ServerListen 来实现服务器端的消息收发。代码:package server; import java.awt.*;import java.awt.event.*; import javax.swing.*; import .*;/* 聊天服务端的主框架类*/public class ChatServer extends JFrame implements ActionListener/*/private static final long serialVersionUID = 1L; public

19、static int port = 8888;/服务端的侦听端口ServerSocket serverSocket;/ 服 务 端 Socket JComboBox combobox;/选择发送消息的接受者JTextArea messageShow;/服务端的信息显示JScrollPane messageScrollPane;/信息显示的滚动条JTextField showStatus;/显示用户连接状态JLabel sendToLabel,messageLabel; JTextField sysMessage;/服务端消息的发送JButton sysMessageButton;/服务端消息的

20、发送按钮UserLinkList userLinkList;/用户链表/建立菜单栏JMenuBar jMenuBar = new JMenuBar();/建立菜单组JMenu serviceMenu = new JMenu (服务(V);/建立菜单项JMenuItem portItem = new JMenuItem (端口设置(P); JMenuItem startItem = new JMenuItem (启动服务(S); JMenuItem stopItem=new JMenuItem (停止服务(T); JMenuItem exitItem=new JMenuItem (退出(X);J

21、Menu helpMenu=new JMenu ( 帮 助 (H); JMenuItem helpItem=new JMenuItem (帮助(H);/建立工具栏JToolBar toolBar = new JToolBar();/建立工具栏中的按钮组件JButton portSet;/启动服务端侦听JButton startServer;/启动服务端侦听JButton stopServer;/关闭服务端侦听JButton exitButton;/退出按钮/框架的大小Dimension faceSize = new Dimension(400, 600); ServerListen liste

22、nThread;JPanel downPanel ; GridBagLayout girdBag; GridBagConstraints girdBagCon;/* 服务端构造函数*/public ChatServer() init();/初始化程序/添加框架的关闭事件处理this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.pack();/设置框架的大小this.setSize(faceSize);/设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getSc

23、reenSize(); this.setLocation( (int) (screenSize.width - faceSize.getWidth() / 2,(int) (screenSize.height - faceSize.getHeight() / 2); this.setResizable(false);this.setTitle(聊天室服务端); /设置标题setVisible(true);/为服务菜单栏设置热键VserviceMenu.setMnemonic(V);/为端口设置快捷键为 ctrl+p portItem.setMnemonic (P);portItem.setAc

24、celerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK);/为启动服务快捷键为 ctrl+s startItem.setMnemonic (S);startItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK);/为端口设置快捷键为 ctrl+T stopItem.setMnemonic (T);stopItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T

25、,InputEvent.CTRL_MASK);/为退出设置快捷键为 ctrl+x exitItem.setMnemonic (X);exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK);/为帮助菜单栏设置热键H helpMenu.setMnemonic(H);/为帮助设置快捷键为 ctrl+p helpItem.setMnemonic (H);helpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent

26、.CTRL_MASK);/* 程序初始化函数*/public void init()Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout();/ 添 加 菜 单 栏 serviceMenu.add (portItem);serviceMenu.add (startItem);serviceMenu.add (stopItem); serviceMenu.add (exitItem); jMenuBar.add (serviceMenu); helpMenu.add (helpItem);

27、 jMenuBar.add (helpMenu); setJMenuBar (jMenuBar);/初始化按钮portSet = new JButton(端口设置); startServer = new JButton(启动服务); stopServer = new JButton(停止服务 ); exitButton = new JButton(退出 );/将按钮添加到工具栏toolBar.add(portSet);toolBar.addSeparator();/添加分隔栏toolBar.add(startServer); toolBar.add(stopServer);toolBar.ad

28、dSeparator();/添加分隔栏toolBar.add(exitButton); contentPane.add(toolBar,BorderLayout.NORTH);/初始时,令停止服务按钮不可用stopServer.setEnabled(false); stopItem .setEnabled(false);/为菜单栏添加事件监听portItem.addActionListener(this); startItem.addActionListener(this); stopItem.addActionListener(this); exitItem.addActionListene

29、r(this); helpItem.addActionListener(this);/添加按钮的事件侦听portSet.addActionListener(this); startServer.addActionListener(this); 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_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZ

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2