1 需求分析
经分析,本程序是一个C/S结构,使用TCP协议实现聊天功能,需要实现的功能有如下几点。
- 本程序需要有客户端以及服务器端。
- 客户端应有良好的交互界面,服务器端应有转发客户端发来的消息和临时保存客户端发来的文件
- 本程序应支持多用户,用户可在线进行即时交流
- 用户端可发送文字,图片。且支持群聊和私聊
- 本程序登陆需要提供账号和密码,账号密码由数据库保存。
- 客户端提供注册功能,可选择设置自己的账号密码和昵称。
1.1客户端功能
- 客户端可在好友列表看到已上线的好友。
- 客户端可在输入框中编辑文字并且可以发送文字消息。
- 客户端可选择图片发送给指定好友
- 客户端可以进行群聊和私聊。
- 客户端保存服务器发来的图片文件,并显示。
- 客户端可显示服务器发过来的消息。
1.2服务器功能
- 接受文字消息并转发给指定客户端
- 接受并且保存客户端发来的图片并转发
- 每当有一个客户端连接,就给所有客户端更新好友列表
- 每当有一个客户端连接,就给所有客户端发送好友上线通知
- 每当有一个客户端离线,就给所有客户端发送好友下线通知
程序流程图
用例图
2.3.1用户用例图
用户用例图如下
2.3.2客户端用例图
2.3.3服务器端用例图
数据库设计
本程序使用mySQL数据库保存用户信息。
本程序所涉及到的表有用户表qq_user。
3.1用户表设计
如图为qq_user表的设计
数据库连接关键代码
private static String userName;
private static String password;
private static String id;
private static String connectString = "";
static {
try {
connectString = "jdbc:mysql://localhost:3306/qqpro"; //端口+数据库名字
password = "123456"; //mysql账号
userName = "root"; //mysql密码
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnect() {
try {
return DriverManager.getConnection(connectString, userName,password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
界面设计
4.1.1登录界面
图4-1登陆界面
4.1.2 注册界面
图4-2注册界面
4.1.3聊天主界面
图4-3主界面
5 功能展示
启动SERVER,然后启动三次Login,打开三个客户端。
点击登录进入主界面
接着PYTHON发送一条信息给所有人
再发一条图片给所有人
再由JAVA发送一条消息给C++。双击好友栏可私聊。
再发送图片给PYTHON
</