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

上传人:wj 文档编号:584849 上传时间:2023-04-29 格式:DOCX 页数:77 大小:229.39KB
下载 相关 举报
课程设计简单聊天室JAVA课程设计.docx_第1页
第1页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第2页
第2页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第3页
第3页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第4页
第4页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第5页
第5页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第6页
第6页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第7页
第7页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第8页
第8页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第9页
第9页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第10页
第10页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第11页
第11页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第12页
第12页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第13页
第13页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第14页
第14页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第15页
第15页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第16页
第16页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第17页
第17页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第18页
第18页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第19页
第19页 / 共77页
课程设计简单聊天室JAVA课程设计.docx_第20页
第20页 / 共77页
亲,该文档总共77页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《课程设计简单聊天室JAVA课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计简单聊天室JAVA课程设计.docx(77页珍藏版)》请在冰点文库上搜索。

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

课程设计报告

课程名称:

Java程序设计 课程代码:

题目:

简单聊天室

年级/专业/班 :

学生姓名 :

孟青

学 号 :

09308910203

指导老师:

开题时间:

完成时间:

目 录

摘 要 I

1引言 1

2设计任务与目的 1

3需求分析 1

3.1系统用例图 1

3.2主要用例分析 2

4系统设计 3

4.1总体设计 3

4.1.1系统类图 3

4.1.2主要时序图 6

4.2详细设计 8

4.2.1ChatServer类 9

4.2.2ServerListen类 10

4.2.3ServerReceive类 10

4.2.4PortConf类 11

4.2.5Help类 11

4.2.6UserLinkList类 11

4.2.7Node类 12

4.2.8ChatClient类 13

4.2.9ConnectConf类 15

4.2.10UserConf类 15

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类

Help.java

客户端程序的帮助类。

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有了更深刻的认识,产生浓厚的学习兴趣。

我们由衷对他们表示感谢。

附录A:

系统源程序

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('V');

//为端口设置快捷键为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('H');

//为帮助设置快捷键为ctrl+phelpItem.setMnemonic('H');

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.addSeparator();//添加分隔栏

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

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

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