JAVA 仿QQ聊天程序(附源码)

一:三层架构简要分析

DAL----数据访问层 BLL-----业务逻辑层 UI-------表示层 (注:三层通过实体对象进行数据传递)

二:三层架构命名规范

6:Common:常用操作 com.cqgy.ui.commmon 将经常使用的方法进行封装到一个类中,避免代码重复书写,这里主要是文件的读取写入和验证码的生成,错误日志的写入。 7:Com.cqgy.util:工具类 对数据进行验证等工具方法。

四:相关功能的实现讲解

1.自动登入功能 [主窗体] 【自动登入窗体】

2.用户是否在线功能 【数据访问层】 【业务层】 【UI表示层】 3.注册功能 【数据访问层】 【业务逻辑层】

【UI表示层】 (1):数据验证部分 (2):初始化实体对象 (3):实现登入业务 4.找回密码功能 【数据访问层】 【业务逻辑层】 【UI表示层】 (1)数据验证 (2)封装对象 (3)实现业务

[5.查询用户信息功能;6.搜索功能;7.添加好友;8.删除好友;9.修改好友信息;10.聊天功能;5,6,7,8,9,10:功能和前面基本一致,Ui表示层实现业务,业务逻辑层提供业务,数据传输层提供业务对数据的操作方法]。

【调试】 搜索功能—搜索出来的用户不同可操作的信息也不同

11.文件传输功能 【注:】文件传输功能未采用线程方式,所以程序运行一次只可传输一次文件 【发送端】 (1)文件可以通过拖拽的方式获取文件全路径(接受端有讲解) 通过start进行发送 (2)当有接受端进行了解了才能进行下一步操作不然会一直阻塞accept()中 (3)通过流的方式发送数据 (4)更新count标识(接受端有讲解 【接受端】 (1)选择保存路径 这里通过拖拽的方式获取文件保存路径,也可以直接复制路径 声明路径变量 事件监听 实现事件逻辑 (2)用户点击接受后获取数据(这里要发送端发送数据后才能进行接受不然会产生异常) 处理该目录下的文件名是否重复,重复在文件名后加(i)形式 获取发送端的数据 如果未接受到数据,将会一直停留在这里,进度条显示进度 由于程序启动一次只能传输一次,所以这里加入count标志count=0表示未使用count=1表示已经使用 【调试】 12:图片传输功能(具体代码操作请查阅源码)

(1):数据库部署 在配置文件中配置自己数据库一致的参数 (2)在mysql5.6中加入数据库

Mysql8.0版本需要将配置文件中 driver=com.mysql.jdbc.Driver 修改为driver=com.mysql.cj.jdbc.Driver

(3)在数据库中创建数据库和表格并添加数据

------创建表结构和数据库

-------添加数据

【注意:插入数据时如果出现了以下错误】 14:00:58 INSERT INTO user VALUES(‘111’,‘123’, ‘关东升’,‘28’,0) Error Code: 1366. Incorrect string value: ‘xE5x85xB3xE4xB8x9C…’ for column ‘user_name’ at row 1 0.000 sec

在数据库中输入:

alter table user convert to character set utf8;    
alter table friend convert to character set utf8;

然后再执行添加数据操作:

(3)启动服务端接口 输入端口号,然后点击设置

(4)启动客服端,设置IP并点击设置

(5)程序运行

六:软件效果预览

七:下载链接

链接: https://pan.baidu.com/s/14BaDEJ9F0Tk8ToG0PmQl4Q 提取码:w5ae

经验分享 程序员 微信小程序 职场和发展