java课程设计报告-聊天室(5)

2019-01-07 16:37

课 程 设 计 报 告 书 专 用 纸

(5)Node.java:用户链表的节点类,定义了链表中的用户。该类与前面所讲的链表节点Node类的功能相当。

import java.net.*; import java.io.*; /**

* 用户链表的结点类 */

public class Node { String username = null; Socket socket = null; }

ObjectOutputStream output = null; ObjectInputStream input = null; Node next = null;

(6)UserLinkList.java:用户链表节点的具体实现类。该类通过构造函数构造用户链表,定义了添加用户,删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这5个方法。

/**

* 用户链表 */

public class UserLinkList {

Node root; Node pointer; int count; /**

* 构造用户链表 */

public UserLinkList(){ }

/**

* 添加用户

*/

public void addUser(Node n){

pointer = root;

while(pointer.next != null){ pointer = pointer.next; }

pointer.next = n; root = new Node(); root.next = null; pointer = null; count = 0;

第 20 页 共 18 页

课 程 设 计 报 告 书 专 用 纸

n.next = null;

count++; } /**

* 删除用户 */

public void delUser(Node n){ pointer = root;

while(pointer.next != null){ if(pointer.next == n){ pointer.next = n.next; count --;

break;

}

pointer = pointer.next;

}

} /**

* 返回用户数 */

public int getCount(){ return count;

}

/**

* 根据用户名查找用户

*/

public Node findUser(String username){ if(count == 0) return null; pointer = root; while(pointer.next != null){ pointer = pointer.next;

if(pointer.username.equalsIgnoreCase(username)){ return pointer;

}

}

return null;

} /**

* 根据索引查找用户

*/

public Node findUser(int index){ if(count == 0) {

return null;

第 21 页 共 18 页

课 程 设 计 报 告 书 专 用 纸

}

}

}

if(index < 0) { return null; }

pointer = root; int i = 0;

while(i < index + 1){

if(pointer.next != null){ pointer = pointer.next; }

else{ }

return null;

i++; }

return pointer;

(7)Help.java:服务端程序的帮助类。

import java.awt.*;

import javax.swing.border.*; import java.net.*; import javax.swing.*; import java.awt.event.*; /**

* 生成设置对话框的类 */

public class Help extends JDialog {

JPanel titlePanel = new JPanel(); JPanel contentPanel = new JPanel(); JPanel closePanel = new JPanel(); JButton close = new JButton();

JLabel title = new JLabel(\聊天室服务端帮助\JTextArea help = new JTextArea(); Color bg = new Color(255,255,255); public Help(JFrame frame) { super(frame, true);

try { jbInit();

}

catch (Exception e) { e.printStackTrace(); }

//设置运行位置,使对话框居中

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

第 22 页 共 18 页

课 程 设 计 报 告 书 专 用 纸

}

this.setLocation( (int) (screenSize.width - 400) / 2,

(int) (screenSize.height - 320) / 2);

this.setResizable(false); }

private void jbInit() throws Exception { }

this.setSize(new Dimension(400, 200)); this.setTitle(\帮助\

titlePanel.setBackground(bg);;

contentPanel.setBackground(bg); closePanel.setBackground(bg);

help.setText(\、设置服务端的侦听端口(默认端口为8888)。\\n\

\、点击 启动服务 按钮便可在指定的端口启动服务。\\n\

\、选择需要接受消息的用户,在消息栏中写入消息,之后便可发送消息。\\n\

\、信息状态栏中显示服务器当前的启动与停止状态、\ \用户发送的消息和\\n 服务器端发送的系统消息。\help.setEditable(false);

titlePanel.add(new Label(\titlePanel.add(title);

titlePanel.add(new Label(\contentPanel.add(help);

closePanel.add(new Label(\closePanel.add(close);

closePanel.add(new Label(\Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout());

contentPane.add(titlePanel, BorderLayout.NORTH); contentPane.add(contentPanel, BorderLayout.CENTER); contentPane.add(closePanel, BorderLayout.SOUTH); close.setText(\关闭\//事件处理

close.addActionListener(

new ActionListener() {

public void actionPerformed(ActionEvent e) { dispose(); } });

? 聊天室客户端设计:

聊天室客户端主要包括5个文件,它们的功能如下:

(1)ChatClient.java:包含名为ChatClient的public类,其主要功能为定义客户端的界面,添加事件侦听与事件处理。该类定义了Connect()与DisConnect()方法实现与服务器的连接与断开连接。当登录到指定的服务器时,调用

第 23 页 共 18 页

课 程 设 计 报 告 书 专 用 纸

ClientReceive类实现消息收发,同时该类还定义了SendMessage()方法来向其他用户发送带有表情的消息或者悄悄话。

//package Client;

import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.net.*; /*

* 聊天客户端的主框架类 */

public class ChatClient extends JFrame implements ActionListener{

/** * */

private static final long serialVersionUID = 1L; String ip = \连接到服务端的ip地址 int port = 8888;//连接到服务端的端口号 String userName = \匆匆过客\用户名 int type = 0;//0表示未连接,1表示已连接 JComboBox combobox;//选择发送消息的接受者 JTextArea messageShow;//客户端的信息显示

JScrollPane messageScrollPane;//信息显示的滚动条 JLabel express,sendToLabel,messageLabel ; JTextField clientMessage;//客户端消息的发送 JCheckBox checkbox;//悄悄话

JComboBox actionlist;//表情选择

JButton clientMessageButton;//发送消息 JTextField showStatus;//显示用户连接状态 Socket socket;

ObjectOutputStream output;//网络套接字输出流 ObjectInputStream input;//网络套接字输入流 ClientReceive recvThread; //建立菜单栏

JMenuBar jMenuBar = new JMenuBar(); //建立菜单组

JMenu operateMenu = new JMenu (\操作(O)\

//建立菜单项

JMenuItem loginItem = new JMenuItem (\用户登录(I)\

ImageIcon(\

JMenuItem logoffItem = new JMenuItem (\用户注销(L)\ImageIcon(\ JMenuItem exitItem=new ImageIcon(\

JMenuItem

(\

退

(X)\

第 24 页 共 18 页


java课程设计报告-聊天室(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高效课堂 - 语文教学的必由之路

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: