收藏 分享(赏)

《面向对象程序设计》课程设计指导.doc

上传人:dzzj200808 文档编号:2205611 上传时间:2018-09-05 格式:DOC 页数:11 大小:81KB
下载 相关 举报
《面向对象程序设计》课程设计指导.doc_第1页
第1页 / 共11页
《面向对象程序设计》课程设计指导.doc_第2页
第2页 / 共11页
《面向对象程序设计》课程设计指导.doc_第3页
第3页 / 共11页
《面向对象程序设计》课程设计指导.doc_第4页
第4页 / 共11页
《面向对象程序设计》课程设计指导.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、面向对象程序设计课程设计指导教案一、 题目:基于 Java Socket 通信的网络聊天室二、 作业形式:1 作业文本:纸张规格:A4内 容:作业的意义和实现目的、聊天室功能概述、总体设计方案概述、实现设计方案采用的关键技术、开发硬件/软件平台、用户界面考虑、事件响应处理、网络通信实现及信息传输处理、异常处理、源程序清单、程序安装和使用说明、设计体会。 2 磁盘文档:内容:作业文本文档磁盘文件、源程序、字节码文件、HTML 文件等作业相关文档。三、 作业要求:1、 开发环境:硬件环境: 初步编程和调试在单机环境中用本机“环绕地址”模拟网络环境实现所有功能。在有网络实验环境的情况下,实现真实网络

2、环境实验。软件环境:单机环境中为 Windows 2000/xp、 JDK1.3/1.4 及文本编辑器。网络环境中服务器端为 Windows2000/xp,客户端为Windows98/2000/xp。客户端浏览器在 DOS 中调用 appletviewer。2、 用户界面:服务器端:实现服务器端功能即可,不做界面设计。客户端:应用 Applet 实现 AWT 图形用户界面,将组件按功能分组纳入相应面板,所有面板纳入 Applet 对象容器。对各功能面板设计相应的类,由各自的类创建对象后加入 applet 容器。各面板和 applet 容器要定义布局。 注册面板: 面板 1标签 文本框 选择框组

3、 选择框 1、2、3 按钮 1、2 聊天面板:面板 2 文本域 标签 列表 list输入昵称: 男 女 不告诉你 进入聊天室 退出聊天室谈话区在线聊天者昵称清单聊天者列表 聊天信息录入、发送和界面信息整理面板: 聊天信息录入、发送和界面信息整理面板面板 3 标签 文本域 按钮 1、2、3 客户端 applet 界面:applet 窗口 注册面板 聊天面板您要说的话 送出信息 刷新谈话区 刷新聊天者列表区聊天信息录入、发送和界面信息整理面板应用 AWT 图形用户界面知识,自行设计用户界面。此方案作为参考方案。 客户端容器层次关系,组件对象及方法A pp l e t 窗 口注册面板 A标签:a.l

4、able1“输入昵称”文本框:a.name_txt 昵称内容选择框组:sex 选择框 1:box1 男选择框 2:box2 女选择框 3:box3 不告诉聊天面板 B标签:b.label“ 聊天者列表”文本区: b.chat_txt 谈话区按钮 1:a . button1 进入聊天室按钮 2:a . button2 退出聊天室列表: b.list 聊天者列表聊天信息录入,发送界面信息整理面板 C标签: c.label 您要说的话文本域:c.msg_txt 待发送谈话内容按钮 1:c.button1 发送按钮 2:button2 刷新谈话区选择框监听程序注册:a.box1.addItemList

5、ener(this);选择框监听程序:public viod itemStateChanged(ItemEvent e1)if(e1.getItemSelectedable()=a.box1)xingbie=”男” else 按钮监听程序:public void actionPerformed(ActionEvent e1)if(e1.getSouce()= =c.button1)String ti=c.msg_txt.getText标签内容获取:String ti=A . name_txt . getText();选择框组定义:CheckboxGroup sex=new checkboxGr

6、oup( );选择框定义:Checkbox box1=new Checkbox(“男 M”,false , sex );列表框定义:List list=new List( 25 , false);列表框添加内容:String line=in.readUTF( );b.b2.list.add(line.substring(6);创建列表框时要捕获NullPointerException 异常字符串首子串比较:if ( line.startsWith(“PEOPLE”)b.b2.list.add(line.substring(6);b.chat_txt.append(line.subString(

7、6)+”爬上大话西游网”+n); 悄悄话窗口双击聊天者列表 list 中选定的某聊天者后显示此窗口,输入悄悄话,实现两人单独对话。Fram label1、2 textfield1(双击面板 2list 列表中选项 item后由 list 列表的监听程序事件确定昵称后将该昵称加入此文本域) Textfield2 Buttom1 button2(监听程序中实现信息发送) 功能要求 建立服务器端和客户端建立 Socket 通信 建立客户端用户界面。 客户端线程处理。 客户端注册加入聊天。 客户端聊天信息输入、发送、在线聊天者昵称列表显示。 通信协议:客户端信息字串头处理。分类标准为:根据昵称注册登陆

8、、正常聊天按钮 3:button3 刷新聊天者列表区输入的悄悄话发送悄悄话到: 悄悄话接受者呢称你想说的话:关闭此窗口按 钮送出悄悄话按 钮信息、不良聊天信息、悄悄话。 悄悄话一对一聊天实现。 服务器端对各客户 socket 对象处理线程的建立和运行调度。 通信协议:服务器端根据客户端传输的信息字串头进行分类处理完成以下功能:1、 新客户上网后,客户对象的建立和存储。服务器端根据客户传输字串头判断,确定有新客户上网,服务器端建立客户 socket 对象,将新对象加入到 socket 对象存储向量对象 Vectort 中。2、 聊天信息广播,即某一客户的正常聊天信息在所有在线聊天者的谈话框中都能

9、显示。3、 不良谈话内容监听处理,某客户有不良谈话内容时,提出警示并将其踢出网络。4、 悄悄话一对一谈话处理 所有的异常处理 所有必要的组件监听程序注册和对应的监听程序实现。补充知识:向量类(矢量类)Vector向量类 Vector 的继承关系:java.lang.Objectjava.util.Vector顺序存储结构,不同类型的变长数组,任何类型的对象均能够顺序地加入到里面,以后又可以随时提取。其容量在有元素加入时相应增大。Vector 类的构造方法:public Vector(); 构造一个空矢量Public Vector(int n); /构造一个指定存储容量的空矢量略Vector 类

10、中的方法:Public final int size()返回矢量中的元素数量。Public final boolean contains(Object elem)如果对象 elem 是矢量中的一个元素值,则返回 true,否则返回 false.Public final int indexOf(Object elem)从矢量第一个元素开始搜索指定对象 elem,并返回该对象的索引值(搜索失败返回-1) 。Public final synchronized Object elementAt ( int index )返回指定索引下的元素。如果索引值 index 是负数或超出实际元素的个数,则抛出异

11、常ArrayIndexOutOfBoundsException.Public final synchronized void removeElementAt ( int index ) 删除指定索引下的元素。如果索引值 index 是负数或超出实际元素的个数,则抛出异常ArrayIndexOutOfBoundsException.其他方法略。Vector 类应用举例程序片段:Vector connections=new Vector(1000);/ 建立向量对象firstthread f=new firstthread(this,client);/调用线程类 firstthread 的构造方法

12、建立线程对象 fconnections.addElement(f) /将线程对象 f 存入 vector 对象int i;firstthread you;for(i=0;i“+n); 删除列表中的某项if(line.startsWith(“QUIT“)String str=line.substring(10);tryfor(int i=0,k=0;i=120;i+)String s=b.b2.list.getItem(i);if(s.equals(str)k=i;b.b2.list.remove(k);b.chat_txt.append(line.substring(10)+“-高兴地离开了大

13、话西游网“+n); 刷新列表和谈话区if(e.getSource()=c.button3)tryb.b2.list.removeAll();out.writeUTF(“newlist“);catch(IOException e1)if(e.getSource()=c.button2)b.chat_txt.setText(null);四、 服务器端和客户端建立套接字通信1、服务器端创建 ServerSocket 对象和 Socket 对象:ServerSocket listen=new ServerSocket (5432);Socket client=listen.accept();2、客户端

14、创建 Socket 对象:Socket socket=new Socket(“127.0.0.1”,5432);3、创建客户端和服务器端 socket 输入输出流:DataInputStream in=new DataInputStream(socket.getInputStream();DataOutputStream out=new DataOutputStream(socket.getOutputStream();五、 事件响应处理建立各组件必要的监听程序:在监听程序中编制相应的事件的处理代码。注册组件监听程序:对有事件响应的组件注册相应的监听程序。六、 异常处理对所有可能产生异常的代码

15、段,都要捕获异常并进行处理。七、 多线程处理首先建立服务器端处理线程。当服务器端每接受到一个新的 Socket 对象,又建立该 socket 对象的处理线程对象,启动该线程,实现对当前 Socket 对象的聊天信息的处理。客户端也要考虑线程建立和启动。八、 传输信息的分类(用字符串前加前缀子串的方法实现) 聊天者信息:新用户登陆进入聊天室后聊天者的昵称通过服务器端发布到所有聊天者的 list 列表框。登陆事件响应程序中在向服务器端传输字符串(昵称)前在昵称前加”USER”或“PEOPLE” 子串后再传输。 聊天信息:合法聊天信息,加合法标识子串(自定义标识子串) 。各聊天者的谈话内容通过服务器

16、端发布到所有聊天者的谈话区。 不良信息剔除:假定某字符串以某一子串开头时为不良信息(自定义标识子串) ,当进行字符串首子串比较,发现字符串以此不良信息开头,则进行相应处理例:if ( line.startsWith(“靠”) 代码实现以下功能:此信息不许广播,向此用户提出警告信息,将此用户踢出网。 九、 引入完成设计功能所需要的 java 包*;java.io.*;jiava.awt.*;java.awt.event*;java.applet.*;java.util.*;等十、 源程序服务器端程序、客户端 applet 小应用程序、客户端 HTML 文件。十一、设计体会谈谈对本课程设计的体会和收获、对面向对象的程序设计方法的进一步理解、对一实际项目设计应该如何通盘考虑?如何应用所学的理论知识解决具体问题、自己在独立思考和解决实际问题等方面有何提高?

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报