JAVA课程设计报告(聊天软件)

上传人:飞****9 文档编号:129187516 上传时间:2020-04-22 格式:DOC 页数:41 大小:3.99MB
返回 下载 相关 举报
JAVA课程设计报告(聊天软件)_第1页
第1页 / 共41页
JAVA课程设计报告(聊天软件)_第2页
第2页 / 共41页
JAVA课程设计报告(聊天软件)_第3页
第3页 / 共41页
JAVA课程设计报告(聊天软件)_第4页
第4页 / 共41页
JAVA课程设计报告(聊天软件)_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《JAVA课程设计报告(聊天软件)》由会员分享,可在线阅读,更多相关《JAVA课程设计报告(聊天软件)(41页珍藏版)》请在金锄头文库上搜索。

1、Java2实用教程课程设计报告 08软件工程2班 081403223 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. 程序实现客户端:设计的

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

4、面中间部分面板类ChatMain主界面类ChatWindow_right聊天窗口右侧面板类ChatWindow聊天窗口类ConfirmRequestMessage确认消息框MessageBox自定义普通消息框Online_message上线消息框ReceiverFileTransMessage接收文件确认消息框ReceiverMessage消息管理器类ReceiverRequestMessage好友请求显示框Register注册面板TransportFile发送文件的文件选择器FileTranMes发送文件携带信息类Message发送信息类MessageType信息类型User用户ColorT

5、ools自定义颜色工具FontTools自定义字体工具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();pstm

7、t = conn.prepareStatement(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

8、.close(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 * ret

9、urn */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 * return

10、*/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 moodlist values

11、(?,?,?,?);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 ObjectInputStream(sk.

12、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(receiver);ChatWindow cw =

13、 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(MessageType.ON_LINE) System.out.println(更新在线好友);String all_online_ip = mes.getAll_online_id().split(,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

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