面向对象程序设计课程设计报告---网络聊天工具

上传人:aa****6 文档编号:44741188 上传时间:2018-06-14 格式:DOC 页数:12 大小:288KB
返回 下载 相关 举报
面向对象程序设计课程设计报告---网络聊天工具_第1页
第1页 / 共12页
面向对象程序设计课程设计报告---网络聊天工具_第2页
第2页 / 共12页
面向对象程序设计课程设计报告---网络聊天工具_第3页
第3页 / 共12页
面向对象程序设计课程设计报告---网络聊天工具_第4页
第4页 / 共12页
面向对象程序设计课程设计报告---网络聊天工具_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《面向对象程序设计课程设计报告---网络聊天工具》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计报告---网络聊天工具(12页珍藏版)》请在金锄头文库上搜索。

1、课 程 设 计 报 告课程名称:面向对象程序设计课程设计任课教师:设计题目:网络聊天工具所学专业:信息管理与信息系统班级学号:学生姓名:报告完成日期: 2012 年 01 月 10 日目目 录录目 录 1一、项目目标 2二、功能描述 31.服务器端功能 3 2.客户端功能 3 三、设计思路 4(一)总体设计 41服务器端设计 4 2客户端设计 4(二)代码思路 51定义服务端类 CServer 继承 Frame 类 5 2定义 CClient 类继承 Frame 类 5 四、具体设计 7 总 结 10一、项目目标实现基于 C/S 模式的聊天室程序。聊天室共分为服务器端和客户端两部分。二、功能描

2、述1.服务器端功能(1)提供多线程的聊天服务处理。 (2)在服务器端屏幕上提示客户端进入,显示客户端聊天内容。 (3)当某客户端输入字符“quit”时断开该客户端的连接。2.客户端功能(1)可以配置要连接服务器的 IP 地址和端口号。 (2)配置用户昵称后连接。 (3)可以向所有人发送消息。 (4)显示本聊天室中的该用户登录后的所有消息。 (5)显示在该用户登录之后登录的用户登录信息。服务器端管理 图 服务器端管理用例图提供聊天服务处理提示客户端进入断开客户端连接显示客户端聊天内容三、设计思路三、设计思路(一)总体设计1服务器端设计定义一个服务端类,实现服务器端功能。 (1)定义内部类,此内部

3、类采用多线程,实现多客户端接入。 (2)当初始化界面时,启动服务器。 (3)当某客户端输入字符“quit”时断开该客户端的连接,关闭服务器窗口时关闭与 客户端的连接。 (4)服务器接收客户端信息,并把这些信息发送到连接服务器的客户端。2客户端设计定义一个客户端类,实现客户端功能。(1)定义三个内部类,以实现连接按钮的监听、信息接收、对自己信息的监听。 (2)定义输入服务器的 IP 地址、端口号的控件和用户昵称,在连接时把这些信息传 给服务器。 (3)发送消息时,通过对系统的监听显示自己发送的消息,其他用户发送的信息通过 服务器转发。图 C/S 聊天室的活动图编译源程序运 行监 听启动服务器客户

4、端接入显 示 消 息发 送 信 息 退 出 系 统(二)代码思路1定义服务端类 CServer 继承 Frame 类(1)定义两个构造方法,一个构造方法实现客户端不传参数时服务器窗口标题为空, 另外一个构造方法实现客户端传参数时服务器窗口标题为此参数值。都要执行窗口的初始 化操作。 (2)init()方法即窗口初始化方法,实现服务端界面,在界面中定义一个文本区域, 设定窗口关闭时系统退出,并启动服务器。 (3)boradCast(String str,Socket socket)方法,即向所有在服务器中的客户端广播方法, 有两个参数,一个传递只显示的字符串,另一个传递套接字。该方法要判断发送信

5、息的用 户是否是自己。 (4)startServer()方法,启动服务方法。等待客户端的请求,接收到请求后,产生 socket 对象,交给多线程的聊天服务处理。 (5)定义内部类 Service 类 ,实现 Runnable 接口。有两个属性套接字 socket 和用户 名 name。 定义两个构造方法,一个没有参数实现为空,另一个以套接字 socket 作参数,并 获取用户名。run()方法,没有参数。当用户发送“quit”时,关闭客户连接。用户发送其他信 息时广播信息。 (6)定义主方法,实例化 CServer 类。2定义 CClient 类继承 Frame 类(1)把界面组件定义为属性,

6、在 init()方法中构建界面,并调用与服务器连接的方法。(2)connect()方法实现与服务器的连接。 (3)Recive()方法实现接收服务器发送的信息。 (4)sendName()方法实现向服务器发送用户姓名。 (5)定义内部类 connBttnListener,实现 ActionLIstener。 (6)定义内部类 Recive,实现线程。 (7)定义内部类 MyListener,实现 ActionLIstener。 (8)定义 close()方法,实现关闭输出流,关闭套接字。 (9)定义主方法,实例化 CClient 类。图 自定义的类CClient textArea : Text

7、Area textField : TextField nickName : TextField address : TextField port : TextField sendBttn : Button connBttn : Button panel1 : Panel panel2 : Panel socket : Socket printStream : PrintStreamCClient() CClient(String) init() connet() recive() sendName()Serversocket : Socket name : StringService(Sock

8、et) Service() run()CServertextArea : TextArea socket : Socket socket1 : Socket hashtable : Hashtable CServer() CServer(String) init() boradCast(String, Socket) startServer()四具体设计四具体设计文件中函数的功能如下:文件名方法成员变量CServer() CServer(String) init() boradCast(String, Socket) startServer()textArea : TextArea socke

9、t : Socket socket1 : Socket hashtable : Hashtable 关键代码CServer.jav apublic void boradCast(String str,Socket self)Enumeration enumeration=hashtable.keys();System.out.println(“本聊天室共有:“+hashtable.size()+“人 “);PrintStream printStream=null;textArea.append(str);while(enumeration.hasMoreElements()String s=(

10、String) enumeration.nextElement();socket=(Socket)hashtable.get(s);if(socket!=self)tryprintStream=new PrintStream(socket.getOutputStream();printStream.println(str);该代码主要实现将客户端发送的信息,转发给接入服务器的其他客户端。该代码通过一个哈希表,返回一个Enumeration的对象,该对象主要存储的是客户端的名称及其与服务器之间的Socket连接,在下面的程序中通过Name关键字返回具体客户端与服务器之间的Socket连接,获取每

11、一个Socket连接的输出流,然后分别将某一个客户端发送的信息写入到输出流中,转发给其他的客户端。文件名方法成员变量CClient() CClient(String) init() connet() recive() sendName()panel1:Panel panel:Panel button:Button textField1:TextField textField2:TextField Name:TextField label1:Label textArea:TextArea sPanel:ScrollPane out:PrintWriter sock:Socket DEFAULT_

12、PORT:int printStream:PrintStream关键代码CClient.javaclass MyListener implements ActionListenerpublic void actionPerformed(ActionEvent arg0)tryPrintStream printStream=new PrintStream(socket.getOutputStream();printStream.println(textField.getText();textArea.append(“我说:“+textField.getText()+“n“); textField

13、.setText(“);catch(Exception e)该代码实现了一个事件监听的类,获取了客户端与服务器 Socket 连接对象的输出流,将该客户端文本区内的内容输入到该输出流中,然后通过 TextField 对象调用 append()方法,将该客户端发送的信息显示在该客户端的文本区内服务端程序运行界面10客户端程序运行界面总总 结结通过运用 java 语言编写网络聊天程序,使我懂得了更多的关于 java 语言的知识和用 法。程序代码中用了许多类函数,构造方法、实现监听。实现了多线程。内部资料 仅供参考*Jg&6a*CZ7H$dq8KqqfHVZFedswSyXTy#&QA9wkxFyeQ!djs#XuyUP2kNXpRWXmA&UE9aQGn8xp$R#͑GxGjqv$UE9wEwZ#QcUE%&qYpEh5pDx2zVkum&gTXRm6X4NGpP$vSTT#&ksv*3tnGK8!z89AmYWpazadNu#KN&MuWFA5uxY7JnD6YWRrWwcvR9CpbK!zn%Mz849GxGjqv$UE9wEwZ#QcUE%&q

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号