ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:314.39KB ,
资源ID:28376293      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28376293.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JAVA课程设计.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JAVA课程设计.docx

1、JAVA课程设计JAVA课程设计报告聊天工具姓 名: 专业班级: 10级计科一班 系 (院): 计算机科学学院 1课程设计目的本次课程设计的目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。2功能设计与实现(1)服务器端程序:负责发送用户列表和转发客户端发送来的信息(2)客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的信息。(3)其它内容:面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用类、包、接口的定义与使用 a.常用工具类与算法的

2、实现(数组、向量、字符串、链表) b.Java常用标准GUI组件及其事件处理 c.Java的异常处理机制(4)连接:登陆界面输入完整之后将用户的信息发送到服务器端,服务器端创建相应的连接,并将更新后的用户列表发送给所有用户。 a.刷新列表:使客户端发送一段指令到服务器端,然后由服务器端广播新的用户列表到所有的客户端。 b.发送:根据发送者、发送对象、发送的话创建一个字段发送到服务器端 c.接收:根据从服务器端接收到的信息判断发送者、接受者、以及要听的话,选择显示在公共聊天区还是私人聊天区。 d.颜色:设置字体颜色。 e.字体:设置字体,在楷体和宋体之间切换。 f.主题:设置背景图片。 g.快捷

3、键:设置是否开启shift+enter发送快捷键。3概要设计本程序根据功能设置了两个界面:登陆界面以及聊天界面。(1)登陆界面:如下图(2)聊天界面:如下图4主要源代码 (1)登陆界面连接服务器:public void link() throws Exception /连接服务器 核心代码 hostName = jTextField2.getText().trim(); /主机地址 port = Integer.parseInt(jTextField3.getText(); /端口号,默认是4331,参考教科书 client = new Socket(hostName,port); /主机地址

4、和端口号组成套接字 in = new BufferedReader(new InputStreamReader(client.getInputStream(); /从服务器接收到的 out = new PrintWriter(client.getOutputStream(); /发送出去的 out.println(jTextField1.getText()+&+sex); /类似这种格式 123&Boy out.flush(); /刷新.输出缓冲区 (2)聊天界面发送信息: public void enter() String mywords,outmsg; String withWho =

5、(String)jComboBox1.getSelectedItem(); /获取是和谁说话try mywords = jTextArea4.getText(); /我说的话 if (mywords.trim().length() != 0) /不能发送空消息也不能都发空格 outmsg = withWho&+name+&+withWho+&+mywords;/类似 withWho&tom&hello out.println(outmsg); out.flush(); if (withWho.equals(所有人) jTextArea2.append(name+说:+mywords+n); e

6、lse /对某个人交谈 jTextArea2.append(name+ 对+withWho+说: +mywords+n); catch (Exception ee) System.out.println(ee); jTextArea2.append(与服务器连接中断,请重新登陆!n); finally jTextArea4.setText(); (3)聊天界面接收信息代码:public void run() String inmsg; while (true) /循环 try inmsg = in.readLine(); /从流中输入 System.out.println(inmsg +inm

7、sg); jList1.setModel(model1); /model和jList参考网上 String userInfo = inmsg.split(&); if (inmsg.startsWith(new) /新人 jTextArea1.append(欢迎 +userInfo1+n); model1.addElement(userInfo1+ +userInfo2+); else if( inmsg.startsWith(old) model1.addElement(userInfo1+ +userInfo2+); /更新用户列表 /一般消息 if (inmsg.startsWith(w

8、ithWho) String showmsg = inmsg.split(&); System.out.println(接收者的名字:+showmsg2+我的名字+name+;n); if (showmsg2.equals(name) /如果是发给自己的消息 jTextArea2.append(showmsg1+说: +showmsg3+n); else jTextArea1.append(showmsg1+说:+showmsg3+n); catch (Exception ee) System.out.println(Error at run()+ee); jTextArea2.append(

9、与服务器连接中断,请重新登陆!n); / 输出流,输入流设置为 null in = null; out = null; return; (4)服务器发送给所有人代码:public static void sendAll(String s) if (connections != null) Enumeration e = connections.elements(); while(e.hasMoreElements() try PrintWriter pw = new PrintWriter( ( (Socket) e.nextElement() ).getOutputStream() ); p

10、w.println(s); pw.flush(); catch (IOException ex) System.out.println(s); (5)服务器发送给指定人代码: public static boolean sendOne(String name,String msg) if (clients != null) Enumeration e = clients.elements(); while(e.hasMoreElements() ) ClientProc cp = (ClientProc)e.nextElement(); /枚举所有连接中的用户 if (cp.getName()

11、.equals(name) try PrintWriter pw = new PrintWriter(cp.getSocket().getOutputStream(); pw.println(msg); pw.flush(); return true; /找了返回 且返回值为真 catch (IOException ioe) return false;/没有找到 (6)服务器发送更新用户信息代码:private void updateList() / 更新用户列表 Vector cs = ChatServer.getClients(); if (cs != null) for (Enumera

12、tion e = cs.elements(); e.hasMoreElements() ;) ClientProc cp = (ClientProc)e.nextElement(); String exist_name = cp.getName(); String exit_sex = cp.getSex(); out.println(old+&+exist_name+&+exit_sex); /在这里标记以便判断 out.flush(); 服务器处理接收到的信息:public void run() while (name = null) try String inmsg; inmsg = i

13、n.readLine(); / 1111&Boy ChatServer.sendAll(new+&+inmsg);/发送信息更新用户列表 new&1111&Boy String userInfo; userInfo = inmsg.split(&); name = userInfo0; sex = userInfo1; /out.println(欢迎 +name); /初次登陆 /out.flush(); catch (IOException ee) while (true) try /通过客户端发送代码到服务器来执行相应的功能,in.readLine()监视 String line = in

14、.readLine(); String inmsg = line.split(&); if (line.equals(quit) /处理退出事件 ChatServer.sendAll(withWho&+【系统消息】& +所有人&+this.name+ 退出了聊天室); ChatServer.deleteConnection(s,this); return; else if (line.equals(refurbish) /处理刷新用户列表请求 this.updateList(); else if (line.startsWith(withWho) if(inmsg2.equals(所有人) C

15、hatServer.sendAll(line); else if (ChatServer.sendOne(inmsg2,line) /out.println(line); /out.flush(); else out.println(withWho&+【系统消息】& +inmsg1+&+inmsg2+已经退出了聊天室); out.flush(); / else ChatServer.sendAll(line); /发给所有的人 catch (IOException e) System.out.println(事件 +e); try s.close(); catch (IOException e2) return; 5设计心得: 我自己感觉此次课程设计做得挺成功的,通过这一次,我学到了不少实际编程的知识。在这次设计开始的第一天开始,我就开始着手修改一个书上的基于客户-服务器的java程序,这个程序的大框架给了我很大的启发。我刚开始很自信自己能顺顺利利编写成功,但这一过程太不顺利。用了两天时间来研究改写那个程序,但总是发现和我要实现的局域网聊天功能相差甚远。后来我抛弃了那个例子,全部重写,磕磕绊绊的不断发现错误,并改正它们,功夫不负有心人人,我的程序最后运行成功了。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1