小组成员:张晨 宋浪峰 贺小宽
项目名称:聊天系统
小组分工:核心功能:张晨,宋浪峰 界面:贺小宽 调试:张晨,宋浪峰
完成设想:
运行环境:eclipse
使用语言:Java语言。
使用数据库:SQL server 数据库。
功能需求
(1)客户端:提供登录、主窗体及聊天等界面及对应的业务,向服务器发送相应的服务请求,并接受相应的处理结果。客户端只负责链接远程服务器,并发出相应的服务请求,不进行核心业务的处理。具体的处理交给服务器,而客户端只接收服务器处理的结果并显示给用户。
(2)服务器:监控登录信息及在线用户信息,接收客户端的服务请求,并做相应的处理,然后将处理结果发送给客户端。服务器负责处理核心的业务,并负责连接数据库,保存和读取数据。
(3)客户端TCP通信设计
设计ClientToServer类,该类实现了Runnable接口,是一个线程。
主要方法:
[1] boolean sendLoginInfoToServer(User u) :登录请求。
[2] void getProgerties():获取配置文件中的服务器IP地址信息。
[3] void logout(): 下线,通知服务器该用户下线。
[4]inttoRegister(UserInfoBean user):新用户注册,返回QQ号。
[5] void noticeUpdate():通知刷新好友信息。
服务器TCP通信设计
1)设计ServerThread线程类:处理用户连接服务器请求,并为其启动单独的服务(Server)线程。
主要方法:
[1] void run(): 重写线程类Thread的方法,不断的等待客户端的连接请求。
[2] void pauseThread():暂停服务。
[3] void reStartThread():恢复服务。
2)设计Server线程类:处理每个上线用户个各种服务请求。
主要方法:
[1] void run():不断的等待用户的请求信息,并判断请求类型。
[2] void login():处理用户登录。
[3] void registerNewUser():处理注册新用户
[4] void queryUser():处理查询用户。
[5] void addFriend():添加好友。
[6] void deleteFriend():删除好友。
[7] void updateOwnInfo():更新自己的信息。
[8] void logout():下线。
[9] void queryFriend():查询好友信息。
2.1.3.2基于UDP的通信
在进行用户聊天时,采用基于UDP的通信协议。
客户端UDP通信设计
设计ClientToServerThread线程类:负责UDP通信。
主要方法:
[1]void run():循环等待监听发来的数据。
[2]void getPropertieInfo():获取通信的服务器的IP地址及本机通信端口。
[3]void sendData(byte buffer[]):发送数据。
[4]void Object ByteToObject(byte[] bytes):将Byte数据转为Object类型。
[5]void ObjectToByte(Object obj):将Object型数据转为Byte型。
[6]void closeSocket():关闭收发数据报套接字。
服务器UDP通信设计
设计ClientToServerThread线程类:负责UDP通信,主要是转发用户发送的信息,并保存用户的聊天记录。
主要方法:
[1]void run():循环等待监听发来的数据。
[2]void getPropertieInfo():获取通信的服务器的IP地址及本机通信端口。
[3]void sendData(byte buffer[]):发送数据。
[4] void Object ByteToObject(byte[] bytes):将Byte数据转为Object类型。
[5]void ObjectToByte(Object obj):将Object型数据转为Byte型。
[6]void closeSocket():关闭收发数据报套接字。
数据访问层的实现
2.1.4.1 打开数据库连接类(ConnectionFactory)
[1]void getPropertiesInfo():从配置文件中获取数据库连接信息。
[2]Connection getConnection():打开数据库连接。
2.1.4.2 关闭数据库连接类(DbClose)
[1]void getPropertiesInfo():从配置文件中获取数据库连接信息。
[2]void close(Connection conn):关闭数据库连接。
[3]void close(PreparedStatement pre):关闭数据库语句
[4]void close(ResultSet rs):关闭结果集
[5]voidclose(Connection conn, PreparedStatement pre, ResultSet rs)
2.1.4.3 数据操作类(Dml)
[1]void insert(UserInfoBean user):增加新用户,插入信息。
[2]void update(UserInfoBean user):更新用户信息。
[3]void delete(int qq):删除信息。
(搜索)
(4)界面层的实现
登录界面
JLoginFrm登陆窗体主要用于用户登陆,注册和找回密码。
内部类:
BackgroundPanel 继承于JPanel主要用于设置窗体背景图片
主要函数:
1.actionPerformed(ActionEvent e)主要对窗体的按键监听
2.JLoginFrm()构造函数,控件的初始化。
注册界面
JRegisterFrm继承与JFrame主要用于用户基本信息的注册。
主要函数:
1. Void setDay()根据不同的年份和月份设置天数
2.String getBir()以1-1月-2014形式得到用户的生日
3.getUserInfo()得到用户的所有信息
聊天界面
ChatPanel主要用于用户间的聊天通信
主要函数:
1、setMessage()设置当前显示所有会话的面板,不可编辑
2、setSendMessage()设置当前发送消息的面板,可编辑
3、sendMessage()发送消息,讲发送消息面板的内容发送到会话面板和对方。
4、sendFile()传输文件
5、sendImage()发送图片
6、startShake()发送震动消息
主界面
public class findFriendFrm extends JFrame
//该类负责查找好友界面
[1] public String getName()//获得找到好友的昵称或者QQ号
[2] public class InformationFrm extends JFrame
//该类负责显示好友信息的界面
用户信息界面
好友信息界面主要是将从服务端读取的好友的个人信息显示出来。
[1] publicInformationFrm(UserInfoBean userInfo)
//在该构造方法中必须传入一个UserInfoBean 的对象,此对象中包含了好友的所有信息
[2] public class selectGroupFrm extends JFrame
//该类负责显示添加好友的一个界面