欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    局域网聊天室Java课程设计.docx

    • 资源ID:17021878       资源大小:198.55KB        全文页数:74页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    局域网聊天室Java课程设计.docx

    1、局域网聊天室Java课程设计 面向对象程序设计课程设计报告题 目:局域网聊天室程序设计院 系: 信息科学与工程学院 专业班级: 计算机科学与技术1201班 学生某某:程伟 学 号: 20121183011指导教师: 吴奕 20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制面向对象程序设计 课程设计任务书一、设计调查报告/论文题目 局域网聊天室程序设计二、设计调查报告/论文主要内容内容:用来提供局域网中用户之间的交互通讯,使用Eclipse与JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括总体设计、详细设计、编码实现、测试。运用套接字S

    2、ocket连接技术,实现客户端的套接字对象和服务器端的套接字对象之间的输入输出流的连接,达到数据报通信的目的 根本功能与要求:实现聊天室服务器端的要求:设计实现在特定端口上进展侦听,等待客户端的连接。用户确定服务器的侦听端口。系统能向已经连接到服务器端的用户发送系统消息。系统能统计在线人数。当系统停止服务时,设计程序应能断开所有的用户连接。实现聊天室客户端的要求:系统能连接已经开启聊天服务的服务端。用户确定要连接服务器端的IP地址与端口号,连接后系统应能提供显示的用户名。当服务器端开启的话,实现用户的登录与注销。用户可以通过设计的系统向所有人或者某一个人发送消息。三、原始资料1.面向对象程序设

    3、计课程设计指导书2.耿祥义JAVA大学实用教程:清华大学,2009四、要求的设计调查/论文成果五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计编制源程序实现测试与修改1天撰写课设报告2天六、主要参考资料1 X广彬. Java课程设计案例精编第二版.:清华大学, 2011.2 耿祥义. Java课程设计第二版.:清华大学, 2008.3 耿祥义JAVA大学实用教程:清华大学,20094 邹林达陈国君 Java2程序设计根底:清华大学,20105 邹林达Java2程序设计根底实验指导:清华大学,2010指导教师签名: 20 年 月 日1需求与总体设计本系统所要实现的主要功能是为广阔

    4、用户提供一个借助网络进展人际交往的平台。因为服务端采用多线程,所以性能有很大提升。因为服务端和客户端之间采用TCP协议进展网络通信,建立的是可靠的、端到端的网络连接,所以可靠性和安全性都很好。1.2.1 服务端系统2详细设计聊天室服务器端的设计2.1.1 ChatServer类包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加时间监听与时间处理。调用ServerListen类来实现服务端用户上线与下线的监听,调用ServerListen来实现服务器端的消息收发。2.1.2 ServerListen类 该类实现服务器用户上线与下线的监听。该类对用户上线下线的监听是

    5、通过调用用户链表类UserLinkList来实现的。当用户上线与下线情况发生变化时,该类会对主类的界面进展相应的修改。2.1.3 ServerReceive类该类是实现服务器消息收发的类,该类分别定义了向某用户与所有人发送消息的方法,发送的消息会显示在主界面类的街面上。2.1.4 PortConf类 该类继承自Jdialog,是用户对服务器端监听端口进展修改配置的类。2.1.5 Help类服务端程序帮助类。2.1.6 UserLinkList类用户链表节点的具体实现类。该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这5个方法。2.1.7

    6、 Node类用户链表的节点类,定义了链表中的用户。该类与前面所讲的链表节点Node类的功能相当2.2.1 ChatClient类包含名为ChatClient的public类,其主要功能为定义客户端的界面,添加时间监听与事件处理。该类定义了Connect与DisConnect方法实现与客户端的连接与断开连接。当登陆到指定的服务器时,调用ClientReceive类实现消息收发,同时该类还定义了SendMessaga方法来其他用户发送带有表情的消息或悄悄话。2.2.2 ConnectConf类该类继承自Jdialog,是用户对所有要连接的服务器IP与监听端口进展修改配置的类。2.2.3 UserC

    7、onf类该类继承自Jdialog,是用户对到服务器时所显示的用户名进展修改配置的类。2.2.4 Help类客户端程序的帮助类。2.2.5 ClientReceive类该类是实现服务器端与客户端消息收发的类。3编码实现3.1.1 ChatServer类包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加时间监听与时间处理。调用ServerListen类来实现服务端用户上线与下线的监听,调用ServerListen来实现服务器端的消息收发。/ * 聊天服务端的主框架类*/public class ChatServer extends JFrame implements

    8、 ActionListenerprivate static final long serialVersionUID = 1L;public static int port = 8888;/服务端的侦听端口ServerSocket serverSocket;/服务端SocketoBox bobox;/选择发送消息的承受者JTextArea messageShow;/服务端的信息显示JScrollPane messageScrollPane;/信息显示的滚动条JTextField showStatus;/显示用户连接状态JLabel sendToLabel,messageLabel;JTextFi

    9、eld sysMessage;/服务端消息的发送utton sysMessageButton;/服务端消息的发送按钮UserLinkList userLinkList;/用户链表/建立菜单栏JMenuBar jMenuBar = new JMenuBar(); /建立菜单组JMenu serviceMenu = new JMenu (服务(V); /建立菜单项JMenuItem portItem = new JMenuItem (端口设置(P);JMenuItem startItem = new JMenuItem (启动服务(S);JMenuItem stopItem=new JMenuIt

    10、em (停止服务(T);JMenuItem exitItem=new JMenuItem (退出(X);JMenu helpMenu=new JMenu (帮助(H);JMenuItem helpItem=new JMenuItem (帮助(H);/建立工具栏JToolBar toolBar = new JToolBar();/建立工具栏中的按钮组件utton portSet;/启动服务端侦听utton startServer;/启动服务端侦听utton stopServer;/关闭服务端侦听utton exitButton;/退出按钮/框架的大小Dimension faceSize = ne

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

    12、 = Toolkit.getDefaultToolkit().getScreenSize();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+pportIt

    13、em.setMnemonic (P); (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 (K

    14、eyEvent.VK_T,InputEvent.CTRL_MASK);/为退出设置快捷键为ctrl+xexitItem.setMnemonic (X); exitItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_X,InputEvent.CTRL_MASK);/为帮助菜单栏设置热键HhelpMenu.setMnemonic(H);/为帮助设置快捷键为ctrl+phelpItem.setMnemonic (H); helpItem.setAccelerator(KeyStroke.getKeyStroke (KeyEvent.VK_H

    15、,InputEvent.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

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

    17、);/添加分隔栏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

    18、.addActionListener(this);/添加按钮的事件侦听portSet.addActionListener(this);startServer.addActionListener(this);stopServer.addActionListener(this);exitButton.addActionListener(this);bobox = new oBox();bobox.insertItemAt(所有人,0);bobox.setSelectedIndex(0);messageShow = new JTextArea();messageShow.setEditable(fa

    19、lse);/添加滚动条messageScrollPane = new JScrollPane(messageShow,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);messageScrollPane.setPreferredSize(new Dimension(400,400);messageScrollPane.revalidate();showStatus = new JTextField(35);showStatus.setEditable(false);sysMe

    20、ssage = new JTextField(24);sysMessage.setEnabled(false);sysMessageButton = new utton();sysMessageButton.setText(发送);/添加系统消息的事件侦听sysMessage.addActionListener(this);sysMessageButton.addActionListener(this);sendToLabel = new JLabel(发送至:);messageLabel = new JLabel(发送消息:);downPanel = new JPanel();girdBag

    21、 = new GridBagLayout();downPanel.setLayout(girdBag);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 0;girdBagCon.gridwidth = 3;girdBagCon.gridheight = 2;girdBagCon.ipadx = 5;girdBagCon.ipady = 5;JLabel none = new JLabel( );girdBag.setConstraints(none,girdBagCon);downPan

    22、el.add(none);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 2;girdBagCon.insets = new Insets(1,0,0,0);girdBagCon.ipadx = 5;girdBagCon.ipady = 5;girdBag.setConstraints(sendToLabel,girdBagCon);downPanel.add(sendToLabel);girdBagCon = new GridBagConstraints();girdBagCon.gr

    23、idx =1;girdBagCon.gridy = 2;girdBagCon.anchor = GridBagConstraints.LINE_START;girdBag.setConstraints(bobox,girdBagCon);downPanel.add(bobox);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 3;girdBag.setConstraints(messageLabel,girdBagCon);downPanel.add(messageLabel);gird

    24、BagCon = new GridBagConstraints();girdBagCon.gridx = 1;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessage,girdBagCon);downPanel.add(sysMessage);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 2;girdBagCon.gridy = 3;girdBag.setConstraints(sysMessageButton,girdBagCon);downPanel.add(sysMes

    25、sageButton);girdBagCon = new GridBagConstraints();girdBagCon.gridx = 0;girdBagCon.gridy = 4;girdBagCon.gridwidth = 3;girdBag.setConstraints(showStatus,girdBagCon);downPanel.add(showStatus);contentPane.add(messageScrollPane,BorderLayout.CENTER);contentPane.add(downPanel,BorderLayout.SOUTH);/关闭程序时的操作t

    26、his.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)stopService();System.exit(0););/* 事件处理*/public void actionPerformed(ActionEvent e) Object obj = e.getSource();if (obj = startServer | obj = startItem) /启动服务端startService();else if (obj = stopServer | obj = stopItem) /停止

    27、服务端int j=JOptionPane.showConfirmDialog(this,真的停止服务吗?,停止服务,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)stopService();else if (obj = portSet | obj = portItem) /端口设置/调出端口设置的对话框PortConf portConf = new PortConf(this);portConf.setVisible(true);else if (obj = exitBut

    28、ton | obj = exitItem) /退出程序int j=JOptionPane.showConfirmDialog(this,真的要退出吗?,退出,JOptionPane.YES_OPTION,JOptionPane.QUESTION_MESSAGE);if (j = JOptionPane.YES_OPTION)stopService();System.exit(0);else if (obj = helpItem) /菜单栏中的帮助/调出帮助对话框Help helpDialog = new Help(this);helpDialog.setVisible(true);else i

    29、f (obj = sysMessage | obj = sysMessageButton) /发送系统消息sendSystemMessage();/* 启动服务端*/public void startService()tryserverSocket = 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.out.println(e);userLinkList = new UserLinkList();listenThread = new ServerListen(serverSocket,bobox,messageShow,showStatus,userLinkList);listenThread.start();/* 关闭服务端*/p


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开