欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    JAVA课程设计报告聊天软件.docx

    • 资源ID:13614195       资源大小:3.43MB        全文页数:49页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    JAVA课程设计报告聊天软件.docx

    1、JAVA课程设计报告聊天软件Java2实用教程课程设计报告课题名称:用JAVA设计的聊天软件系别: 计算机科学系 班级: 08软件工程2班 学号: 081403223 姓名: 一、 课程设计的目标二、 开发及运行环境三、 设计方法1. 程序功能1) 服务器功能2) 客户端功能2. 程序实现3. 类的实现4. 程序结果 1)服务器端的运行结果 2)客户端的运行结果四、 设计心得五、 参考文献 一、 课程设计的目标此次课程设计的目标是用JAVA语言实现一个功能比较完善的聊天软件,功能包含(用户注册、登录、修改昵称、更新心情、查找并添加好友、基本的文字聊天、传送文件、发送图片、窗口抖动、保存聊天记录

    2、等等 ),在设计该软件的过程中,综合运用了本学期所学的所有JAVA语言的基本知识,特别是线程、数据库、Swing、异常处理等知识。通过这次课程设计,使我们对JAVA语言以及面向对象编程有了更深的体会,我们的程序设计能力也有了很大地提高。二、 开发及运行环境硬件:PC机操作系统:Windows XP 数据库:MySQL开发工具:EclipseJDK 要求 jdk 7.0 三、 设计方法1. 程序功能(1) 服务器功能(2) 客户端功能层次功能图:程序流程:(1)登录模块流程图 (2) 注册模块流程图(3)发送文件模块流程图 2. 程序实现客户端:设计的类功能FriendData保存每个好友的数据

    3、类FriendList保存好友列表类FriendMap保存好友图类PersonalData保存自己的数据类UserManager管理数据库处理相关函数的类ChatMainMap管理主界面的图类ChatWinMap管理聊天窗口的图类ClientConnServerThread客户端连接到服务器的线程类ClientThreadMap管理客户端的线程类FileClient接收文件的客户端类FileServer发送文件的服务器类LoginCheck客户端登录检验类ConnMySQL建立连接数据库类ChatLogin登录界面类ChatMain_center主界面中间部分面板类ChatMain主界面类Ch

    4、atWindow_right聊天窗口右侧面板类ChatWindow聊天窗口类ConfirmRequestMessage确认消息框MessageBox自定义普通消息框Online_message上线消息框ReceiverFileTransMessage接收文件确认消息框ReceiverMessage消息管理器类ReceiverRequestMessage好友请求显示框Register注册面板TransportFile发送文件的文件选择器FileTranMes发送文件携带信息类Message发送信息类MessageType信息类型User用户ColorTools自定义颜色工具FontTools自定

    5、义字体工具ImagePanel图片面板ChatServer服务器处理类ServerConnClientThread服务器接收线程类ThreadMap管理客户端连接到服务器的线程类ServerWindow服务器窗口类服务器端:设计的类功能ChatServer服务器处理类ServerConnClientThread服务器接收线程类ThreadMap管理客户端连接到服务器的线程类ServerWindow服务器窗口类Message发送信息类MessageType信息类型User用户3. 类的实现各主要类的方法、函数的核心代码:(附:源代码)(1) 数据库处理源代码: /* * 在数据库中查询用户的资料

    6、,保存在本地的PersonalData中 * return */ public void checkPersonalData(String id) PersonalData pd = PersonalData.getInstance(); Connection conn = null; ResultSet rs = null; PreparedStatement pstmt = null; String sql = select * from user where userid=?; try conn = ConnMySQL.getConnection(); pstmt = conn.prep

    7、areStatement(sql); pstmt.setString(1, id); rs = pstmt.executeQuery(); if (rs.next() pd.setUserId(rs.getString(userId); pd.setUserName(rs.getString(username); pd.setPicNo(rs.getString(picNo); catch(SQLException e) e.printStackTrace(); finally ConnMySQL.close(rs); ConnMySQL.close(pstmt); ConnMySQL.clo

    8、se(conn); (2) 其他数据处理关键语句: /* * 在数据库中查询用户的资料,保存在本地的PersonalData中 * return */ String sql = select * from user where userid=?; /* * 在数据库中查询最新的心情 * return */ String sql = select moodcontent from moodlist where moodid = (select max(moodid)from moodlist where pid=?); /* * 查找用户的所有好友,保存在本地程序中 * param id * r

    9、eturn */ String sql = select * from user where userId in (select friendid from relationlist where pid=?); /* * 修改用户的昵称 * return */ String sql = update user set username=? where userId=?; /* * 修改用户的密码 * return */ String sql = update user set password=? where userId=?; /* * 获取自动编号ID * param gen_name *

    10、 return */ String sql = select gen_number from generator where gen_name =?; /* * 更新Id维护列表,此方法给此类别的函数调用 * param gen_name * param current_id * param conn */ String sql = update generator set gen_number =? where gen_name = ?; /* * 添加心情 * param userId * param mood * return */ String sql = insert into mo

    11、odlist values(?,?,?,?); String sql = select * from moodlist order by moodId desc limit 20; /* * 加好友 * param args */ String sql = insert into relationlist values(?,?,?); String sql = insert into user values(?,?,?,?);(3) 客户端接收线程的run()函数:public void run() while(run1) try ObjectInputStream ois = new Obj

    12、ectInputStream(sk.getInputStream(); Message mes = (Message)ois.readObject(); String messageType = mes.getMessageType(); String sender = mes.getSender(); String receiver = mes.getReceiver(); if(messageType.equals(MessageType.CONTENT) | messageType.equals(MessageType.EXPRESSION) / System.out.println(r

    13、eceiver); ChatWindow cw = ChatWinMap.getChatWindow(sender);/ System.out.println(来自用户+cw); if(null = cw) if(null != FriendMap.getFriendData(mes.getSender() ReceiverMessage rm = new ReceiverMessage(mes); Thread th = new Thread(rm); th.start(); else cw.showMessage(mes); else if(messageType.equals(Messa

    14、geType.ON_LINE) System.out.println(更新在线好友); String all_online_ip = mes.getAll_online_id().split(,); ChatMainMap.getChatMain(mes.getReceiver().getJp_center().changeOnlineState(all_online_ip); Online_message on_mes = new Online_message(mes.getSender(); Thread th = new Thread(on_mes); th.start(); else

    15、if(messageType.equals(MessageType.SHAKE_WIN) ChatWindow cw = ChatWinMap.getChatWindow(sender); Thread th = new Thread(cw); th.start(); cw.showMessage(mes); else if(messageType.equals(MessageType.REQUEST) /把该好友的资料丛数据库中取出并保存在客户端程序中 ReceiverRequestMessage rsm = new ReceiverRequestMessage(mes); Thread t

    16、h = new Thread(rsm); th.start(); else if(messageType.equals(MessageType.REQUEST_CONFIRM) /把双边的关系加入数据库 UserManager.getInstance().addFriend(mes.getSender(), mes.getReceiver(); System.out.println(保存好友:+mes.getSender(); System.out.println(mes.getReceiver(); UserManager.getInstance().addFriend(mes.getRec

    17、eiver(),mes.getSender(); /把该好友资料从数据库中取得并保存在客户端程序中 String fds = UserManager.getInstance().checkUser(mes.getSender(); FriendData fd = new FriendData(); fd.setFriendId(fds0); fd.setFriendName(fds1); fd.setFriendPic(fds2); FriendList.getFriendList().add(fd); FriendMap.addFriendData(fds0, fd); /更新好友列表 St

    18、ring all_ip = mes.getAll_online_id(); ChatMainMap.getChatMain(PersonalData.getUserId().updataCenter(all_ip); ConfirmRequestMessage rm = new ConfirmRequestMessage(mes); Thread th = new Thread(rm); th.start(); else if(messageType.equals(MessageType.REQUEST_REFUSE) ConfirmRequestMessage rm = new Confir

    19、mRequestMessage(mes); Thread th = new Thread(rm); th.start(); else if(messageType.equals(MessageType.NOT_ONLINE) MessageBox msb = new MessageBox(对方不在线); Thread th = new Thread(msb); th.start(); else if(messageType.equals(MessageType.OFF_LINE) System.out.println(有人下线了); /更新好友列表 if(sender.equals(Perso

    20、nalData.getUserId() break; String all_ip = mes.getAll_online_id(); System.out.println(当前在线好友:+mes.getAll_online_id(); ChatMainMap.getChatMain(PersonalData.getUserId().updataCenter(all_ip); else if(messageType.equals(MessageType.FILE_TRAN) ReceiverFileTransMessage rftm = new ReceiverFileTransMessage(

    21、mes); Thread th = new Thread(rftm); th.start(); else if(messageType.equals(MessageType.FILE_TRAN_CONFIRM) ConfirmRequestMessage rm = new ConfirmRequestMessage(mes); Thread th = new Thread(rm); th.start(); else if(messageType.equals(MessageType.FILE_TRAN_REFUSE) ConfirmRequestMessage rm = new Confirm

    22、RequestMessage(mes); Thread th = new Thread(rm); th.start(); catch (Exception e) e.printStackTrace(); (4) 接收文件的客户端run()函数public void run() Socket server; try server = new Socket(msg.getFileTranMes().getServerIp(), Integer.parseInt(msg.getFileTranMes().getServerPort(); /创建网络接受流接受服务器文件数据 InputStream n

    23、etIn = server.getInputStream(); InputStream in = new DataInputStream(new BufferedInputStream(netIn); /创建缓冲区缓冲网络数据/ System.out.println(传输文件的长度:+in.available(); byte buf = new byte2048; int num = in.read(buf); while (num != (-1) /是否读完所有数据 raf.write(buf, 0, num);/将数据写往文件 raf.skipBytes(num);/顺序写文件字节 num

    24、 = in.read(buf);/继续从网络中读取文件 width = width+1; width_1 = width/size * 180; jl2.setBounds(10,40,(int)(width_1),20); jl2.setText( +(int)(width/size*100)+%); jl2.setText(传送完成); in.close(); raf.close(); catch (UnknownHostException e) / TODO Auto-generated catch block e.printStackTrace(); catch (IOExceptio

    25、n e) / TODO Auto-generated catch block e.printStackTrace(); (5) 发送文件的服务器run()函数public void run() /创建网络服务器接受客户请求 ServerSocket ss; Socket client = null; try ss = new ServerSocket(5678); client = ss.accept(); catch (IOException e) / TODO Auto-generated catch block/ e.printStackTrace(); /创建网络输出流并提供数据包装器

    26、 OutputStream netOut; try netOut = client.getOutputStream(); OutputStream doc = new DataOutputStream( new BufferedOutputStream(netOut); /创建文件读取缓冲区 byte buf = new byte2048; int num = fos.read(buf); while (num != (-1) /是否读完文件 doc.write(buf, 0, num);/把文件数据写出网络缓冲区 doc.flush();/刷新缓冲区把数据写往客户端 num = fos.re

    27、ad(buf);/继续从文件中读取数据 width = width+1; width_1 = width/size * 180; jl2.setBounds(10,40,(int)(width_1),20); jl2.setText( +(int)(width/size*100)+%); jl2.setText(传送完成); fos.close(); doc.close(); catch (IOException e) / TODO Auto-generated catch block e.printStackTrace(); (6) 客户端登录验证的函数public boolean Chec

    28、kUser (Message msg) boolean check = false; try sk = new Socket(ip,port); System.out.println(获取socket); catch (UnknownHostException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); try ObjectOutputStream oos = new ObjectOutputStream(sk.getOutputStream(); oos.writeObject(msg); ObjectInputStream ois=new Obje


    注意事项

    本文(JAVA课程设计报告聊天软件.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开