《局域网聊天室 java课程设计》由会员分享,可在线阅读,更多相关《局域网聊天室 java课程设计(63页珍藏版)》请在金锄头文库上搜索。
1、 面向对象程序设计面向对象程序设计课程设计报告课程设计报告题目:局域网聊天室程序设计院 (系) :信息科学与工程学院专业班级:计算机科学与技术 1201 班学生姓名:程伟学号:20121183011指导教师:吴奕20 14 年 12月29日至 20 15 年1月9日华中科技大学武昌分校制华中科技大学武昌分校制面向对象程序设计面向对象程序设计 课程设计任务书课程设计任务书一、设计(调查报告一、设计(调查报告/ /论文)题目论文)题目局域网聊天室程序设计二、设计(调查报告二、设计(调查报告/ /论文)主要内容论文)主要内容内容:用来提供局域网中用户之间的交互通讯,使用 Eclipse 与 JDK1
2、.6 工具,操作系统为WINDOWS,采用面向对象方法完成,包括总体设计、详细设计、编码实现、测试。运用套接字 Socket 连接技术, 实现客户端的套接字对象和服务器端的套接字对象之间的输入输出流的连接,达到数据报通信的目的基本功能与要求:实现聊天室服务器端的要求:设计实现在特定端口上进行侦听,等待客户端的连接。用户确定服务器的侦听端口。系统能向已经连接到服务器端的用户发送系统消息。系统能统计在线人数。当系统停止服务时,设计程序应能断开所有的用户连接。实现聊天室客户端的要求:系统能连接已经开启聊天服务的服务端。用户确定要连接服务器端的 IP 地址与端口号,连接后系统应能提供显示的用户名。当服
3、务器端开启的话,实现用户的登录与注销。用户可以通过设计的系统向所有人或者某一个人发送消息。 三、原始资料三、原始资料1.面向对象程序设计课程设计指导书2. 耿祥义JAVA 大学实用教程北京:清华大学出版社,2009四、要求的设计(调查四、要求的设计(调查/ /论文)成果论文)成果1.课程设计报告2.课程设计软件五、进程安排五、进程安排布置任务,查找资料、需求分析 1 天总体设计 1 天详细设计 1.5 天编制源程序实现 3.5 天测试与修改 1 天撰写课设报告 2 天六、主要参考资料六、主要参考资料1 张广彬. Java 课程设计案例精编(第二版).北京:清华大学出版社, 2011.2 耿祥义
4、. Java 课程设计(第二版).北京:清华大学出版社, 2008.3 耿祥义JAVA 大学实用教程北京:清华大学出版社,20094 邹林达陈国君 Java2 程序设计基础北京:清华大学出版社,20105 邹林达Java2 程序设计基础实验指导北京:清华大学,2010指导教师(签名指导教师(签名) :2020年年月月日日目录1 需求与总体设计 1 1.1 需求与系统功能图 1 1.2 系统类图.2 1.2.1 服务端系统. 2 1.2.2 客户端服务系统 3 2 详细设计.4 2.1 聊天室服务器端的设计.4 2.1.1 ChatServer 类 4 2.1.2 ServerListen 类
5、5 2.1.3 ServerReceive 类 5 2.1.4 PortConf 类 6 2.1.5 Help 类 6 2.1.6 UserLinkList 类 7 2.1.7 Node 类 7 2.2 聊天室客户端设计 8 2.2.1 ChatClient 类 8 2.2.2 ConnectConf 类 9 2.2.3 UserConf 类 9 2.2.4 Help 类 10 2.2.5 ClientReceive 类10 3 编码实现.11 3.1 服务器编码实现.11 3.1.1 ChatServer 类.11 3.1.2 ServerListen 类.21 3.1.3 ServerRe
6、ceive 类23 3.1.4 PortConf 类 27 3.1.5 UserLinkList 类 30 3.1.6 Node 类 31 3.1.7 Help 类 32 3.2 客户端编码实现. 34 3.2.1 ChatClient 类 34 3.2.2 ClientReceive 类.46 3.2.3 ConnectConf 类.48 3.2.4 UserConf 类. 51 3.2.5 Hlep 类. 54 4 系统测试.56 总结5711 1 需求与总体设计需求与总体设计1.11.1 需求与系统功能图需求与系统功能图本系统所要实现的主要功能是为广大用户提供一个借助网络进行人际交往的平
7、台。因为服务端采用多线程,所以性能有很大提升。因为服务端和客户端之间采用 TCP 协议进行网络通信,建立的是可靠的、端到端的网络连接,所以可靠性和安全性都很好。21.21.2 系统类图系统类图1.2.11.2.1 服务端系统服务端系统31.2.2 客户端服务系统客户端服务系统42 2 详细设计详细设计2.12.1 聊天室服务器端的设计聊天室服务器端的设计2.1.12.1.1 ChatServerChatServer 类类ChatServer.java包含名为 ChatServer 的 public 类,其主要功能为定义服务器端的界面,添加时间监听与时间处理。调用 ServerListen 类来
8、实现服务端用户上线与下线的监听,调用ServerListen 来实现服务器端的消息收发。52.1.22.1.2 ServerListenServerListen 类类ServerListen.java该类实现服务器用户上线与下线的监听。该类对用户上线下线的监听是通过调用用户链表类(UserLinkList)来实现的。当用户上线与下线情况发生变化时,该类会对主类的界面进行相应的修改。2.1.32.1.3 ServerReceiveServerReceive 类类ServerReceive.java该类是实现服务器消息收发的类,该类分别定义了向某用户及所有人发送消息的方法,发送的消息会显示在主界面
9、类的街面上。62.1.42.1.4 PortConfPortConf 类类PortConf.java该类继承自 Jdialog,是用户对服务器端监听端口进行修改配置的类。2.1.52.1.5 HelpHelp 类类Help.java服务端程序帮助类。72.1.62.1.6 UserLinkListUserLinkList 类类UserLinkList.java用户链表节点的具体实现类。该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这 5 个方法。2.1.72.1.7 NodeNode 类类Node.java用户链表的节点类,定义了链表中
10、的用户。该类与前面所讲的链表节点 Node 类的功能相当82.22.2 聊天室客户端设计聊天室客户端设计2.2.12.2.1 ChatClientChatClient 类类ChatClient.java包含名为 ChatClient 的 public 类,其主要功能为定义客户端的界面,添加时间监听与事件处理。该类定义了 Connect()与 DisConnect()方法实现与客户端的连接与断开连接。当登陆到指定的服务器时,调用 ClientReceive 类实现消息收发,同时该类还定义了 SendMessaga()方法来其他用户发送带有表情的消息或悄悄话。92.2.22.2.2 Connect
11、ConfConnectConf 类类ConnectConf.java该类继承自 Jdialog, 是用户对所有要连接的服务器 IP 及监听端口进行修改配置的类。2.2.32.2.3 UserConfUserConf 类类UserConf.java该类继承自 Jdialog, 是用户对链接到服务器时所显示的用户名进行修改配置的类。102.2.42.2.4 HelpHelp 类类Help.java客户端程序的帮助类。2.2.52.2.5 ClientReceiveClientReceive 类类ClientReceive.java该类是实现服务器端与客户端消息收发的类。113 3 编码实现编码实现
12、3.1 服务器编码实现3.1.13.1.1 ChatServerChatServer 类类ChatServer.java包含名为 ChatServer 的 public 类,其主要功能为定义服务器端的界面,添加时间监听与时间处理。调用 ServerListen 类来实现服务端用户上线与下线的监听,调用 ServerListen 来实现服务器端的消息收发。/ * 聊天服务端的主框架类*/public class ChatServer extends JFrame implements ActionListenerprivate static final long serialVersionUID
13、 = 1L;public static int port = 8888;/服务端的侦听端口ServerSocket serverSocket;/服务端 SocketJComboBox combobox;/选择发送消息的接受者JTextArea messageShow;/服务端的信息显示JScrollPane messageScrollPane;/信息显示的滚动条JTextField showStatus;/显示用户连接状态JLabel sendToLabel,messageLabel;JTextField sysMessage;/服务端消息的发送JButton sysMessageButton
14、;/服务端消息的发送按钮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 J
15、MenuItem (“退出(X)“);JMenu helpMenu=new JMenu (“帮助(H)“);12JMenuItem helpItem=new JMenuItem (“帮助(H)“);/建立工具栏JToolBar toolBar = new JToolBar();/建立工具栏中的按钮组件JButton portSet;/启动服务端侦听JButton startServer;/启动服务端侦听JButton stopServer;/关闭服务端侦听JButton exitButton;/退出按钮/框架的大小Dimension faceSize = new Dimension(400,
16、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 = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation( (int) (screenSize.width - faceSize.getWidth() / 2,(int) (screenSize.height - faceSize.