基于Linux的即时通信系统的设计与实现

写在前面

刚刚做完毕设,论文也查完重,有了时间写下总结。说实话毕设选这个题其实是有点水的,原因呢,就是由于年前在公司实习,年后也准备去,结果疫情影响导致最后提前结束实习(emmm题外话)。总体来说呢,网上关于即时通信的内容很多,所以在完成毕设的过程中也基本上顺风顺水,没遇到什么大问题。

开发环境

  1. 数据库: MySQL5.6
  2. 操作系统: ubuntu18.04
  3. QT版本: Qt5.12.3

系统概述

系统分为两部分内容:服务器端和客户端,服务器端存储用户数据、进行消息处理,客户端进行与其他客户端的交互,客户端主要实现的内容包括登录、注册、单聊、群聊、收发文件(支持任意格式)、增删好友、截图、换肤、搜索功能。

数据库表设计

服务器的数据库表

服务器包含四大类表:
·1. 用户信息概要表(表名为userGenerInfo)
基于Linux的即时通信系统的设计与实现主键为ID,8位
2 .用户好友列表(表名为用户ID+FriendList)
基于Linux的即时通信系统的设计与实现
主键为用户ID
3 .群组摘要信息(表名为userGroupInfo)
基于Linux的即时通信系统的设计与实现
主键为群组ID,10位
4 .群组成员信息(表名为群组ID+GroupUserList)
基于Linux的即时通信系统的设计与实现
ID为用户Id,8位

客户端的数据库表

客户端只有一类表,和其他用户的聊天信息记录表,表名为(ChatMsgWith对方ID)
基于Linux的即时通信系统的设计与实现

实现结果

废话不多说,直接看效果

服务器效果展示

这是对用户基本信息的浏览,在第一列提供了用户的状态信息,如果用户在线,图标会变绿,如果不在线,图标变灰。双击用户ID可以查看用户基本信息,以及修改用户密码、删除用户等。
基于Linux的即时通信系统的设计与实现
接下来是对用户群组信息的预览,提供了查看群组成员信息以及删除群组操作
基于Linux的即时通信系统的设计与实现
基于Linux的即时通信系统的设计与实现

客户端效果展示

.登录窗口
基于Linux的即时通信系统的设计与实现
.注册窗口
基于Linux的即时通信系统的设计与实现
当用户没有选择头像时,在登录时服务器会使用默认头像
.主界面
基于Linux的即时通信系统的设计与实现
在主界面的绘制过程中,建议大家采用UI和代码共同绘制的方式。
在搜索框内输入字符好友列表中含有该字符以及他的分组信息会显示出来
.聊天室
双击好友列表、群聊列表或群组列表打开聊天室,需要从数据库文件中读取消息记录
基于Linux的即时通信系统的设计与实现
.单聊
客户端向好友发送信息,对面的收到信息后会播放一段提示音效,然后回话列表中的发送者信息会变红。
基于Linux的即时通信系统的设计与实现
.收发文件
.基于Linux的即时通信系统的设计与实现
.群聊
基于Linux的即时通信系统的设计与实现
添加好友
基于Linux的即时通信系统的设计与实现
截图
截图功能没法展示,简单描述一下,可以利用按钮和快捷键(Ctrl+ALt+f)然后弹出截图框,自己选择区域,可拖动、可增大缩小选择完毕后,回车保存在默认位置,右键菜单保存在指定位置。

写在最后

代码的话等我答辩完成以后,我会放在****博客上面供大家下载,前前后后写了三千多行,虽然做的不是特别完美,但是基本功能已经实现了。如果有什么疑问也可以在下面留言,如果我会的,也会尽力帮助大家。