# 一、引言
**项目概述**
项目目的:在已掌握的数据结构和算法的相关知识基础上,借助数据库和 Qt 以团队形式开发个性化即时通讯软件。
**项目背景**:
- 通过前两年学校课程的学习,我们初步掌握了计算机领域的基础知识及常用算法,并对计算机结构系统的设计有了初步认识,在此基础上,需要通过适当程度的项目开发工作,将学校中学到的知识应用于实践,在实践中发现自己的知识薄弱之处,不断反思提升,并锻炼团队工作能力,为未来的职业生涯打下基础
- 随着时代的发展,人与人之间的距离逐渐被拉近,人们对于通讯的即时性的要求也越来越高,即时通讯软件也成为业界开发重点,相关领域的积累也较为丰富
- 在老师的指导下,我们初步掌握了 Windows 环境下 QT 的安装和开发技能,并持续学习 MySQL 和服务器相关知识,为项目的开发打下了较为完善的基础。
**项目意义**:
- 通过项目开发,在实战中检验自己的课程学习能力和掌握程度,在实战的思考与反思中提升自己的技术水平
- 团队项目开发过程中相互学习,相互帮助,锻炼自己的团队合作意识和分工协作能力,积累工作经验
- 在开发过程中收集相关领域的学习资料,从而接触到业界最前沿的研究工作,拓展自己的视野
**需求分析**
人与人之间良好而高效的沟通,是现代社会运行的基础条件。而在社会发展的浪潮之下,社会分工开始变得更加复杂,更加多样化,每个人对于社会交流和信息分享的需求也更加个性化。在这种情况下,针对特定人群的即时通讯软件就体现出其在保护个人隐私,方便信息分享方面的独特优势,,其价值也体现于此。
**运行环境**
客户端 windows10、服务器 Linux 端、Qt Creator
# 二、项目设计
**设计思路**
将即时通讯软件命名为 OChat,以客户端/服务器(C/S)的模式来设计。客户端负责对话功能,接受用户的输入数据并发送,显示接受的数据;服务器将具体的业务逻辑编入程序中,维护数据库,承担用户的信息储存和消息中转作用。
**模块功能介绍**
| 序号 | 模块 | 功能点 | 功能点详细内容 |
| ---- | -------- | ------------------ | -------------------------------------------------- |
| 1 | 注册模块 | 检查注册用户名 | 如果用户名已注册,提示注册出错 |
| 2 | | 校验用户输入密码 | 校验用户输入密码是否合法 |
| 3 | | 传送数据到服务器端 | 将用户填写信息提交到服务器端 |
| 4 | | 存储到数据库 | 将注册信息存储入数据库,返回注册成功 |
| 5 | | 修改密码 | 输入用户名、密码向服务器端申请修改密码 |
| 6 | | 确认密码 | 输入新密码并确认,修改数据库存储密码 |
| 7 | 登录模块 | 校检用户输入内容 | 校检用户输入用户名、密码是否合法 |
| 8 | | 传送数据到服务器端 | 将用户填写内容提交到服务器端 |
| 9 | | 返回匹配结果 | 匹配成功返回登录成功,否则返回登陆出错 |
| 10 | 好友模块 | 搜索用户 | 搜索添加好友/删除好友是否存在 |
| 11 | | 添加好友 | 向服务器发送添加好友请求 |
| 12 | | 发送好友申请 | 向被添加为好友的用户发送好友申请 |
| 13 | | 同意好友申请 | 向服务器提交同意好友申请,向数据库添加好友关系 |
| 14 | | 拒绝好友申请 | 向服务器提交拒绝好友申请 |
| 15 | | 返回好友申请结果 | 向用户反馈好友申请是否成功 |
| 16 | | 发送好友列表 | 服务器在用户登陆成功时发送好友列表 |
| 17 | | 发送好友信息 | 服务器发送所查询好友的填写信息 |
| 18 | | 删除好友 | 选择好友从好友列表中删除,删除数据库中对应好友关系 |
| 19 | 聊天模块 | 发送消息 | 向服务器提交发送消息和好友 |
| 20 | | 接收消息 | 服务器将发送的消息发送给好友接收 |
| 21 | | 存储离线消息 | 服务器检测好友离线将消息暂存 |
| 22 | | 发送离线消息 | 登陆成功后向用户发送离线期间被发送的消息 |
**模块结构图**
![](https://www.writebug.com/myres/static/uploads/2021/10/26/1786a869036d5e2f40d5a42da047f25b.writebug)
| 模块名称 | 模块类型 | 概要说明 |
| ------------ | -------- | ------------------ |
| 登陆界面 | 外部模块 | |
| 注册界面 | 外部模块 | |
| 好友增删界面 | 外部模块 | |
| 聊天界面 | 外部模块 | |
| 修改密码界面 | 外部模块 | |
| 个人信息界面 | 外部模块 | |
| 数据库模块 | 内部模块 | 数据库底层函数设计 |
| Socket 模块 | 内部模块 | 数据传输函数设计 |
**程序流程图**
登录时序
![](https://www.writebug.com/myres/static/uploads/2021/10/26/913de970c83c5488d0c10b5051509e76.writebug)
注册时序
![](https://www.writebug.com/myres/static/uploads/2021/10/26/6faccb92b2f3b9cf581aa6f33e5f3d16.writebug)
通信时序图
![](https://www.writebug.com/myres/static/uploads/2021/10/26/c5a509946b896005644deec4fe7268fb.writebug)
功能设计分工
| 设计登录注册页面 Ui | 刘睿 |
| -------------------------- | -------------------- |
| 添加客户端内的通信交互函数 | 梅浩楠 |
| 主页面聊天窗口多开,头像框 | 梅浩楠 |
| 好友列表及界面布局美化 | 刘睿 |
| 修改密码,添加删除好友 UI | 刘睿 |
| 服务器多线程及通信逻辑 | 徐尘化 |
| 数据库建立与维护 | 姜福伟 |
| 局域网通信测试 | 梅浩楠,徐尘化,刘睿 |
| 部分文档编写 | 姚淞瀚 |
# 三、详细设计
**服务器部分**:
服务器设计:服务器端由 socket 通讯部分、IO 复用部分(多并发)、数据库操作部分(MySQL API for C)、客户端消息处理部分以及功能实现函数组成。
其逻辑功能结构如下:
socket 通讯部分、IO 复用部分、客户端消息处理部分置于主函数 int main()中,相互穿插。在 socket 通讯部分的 listen()函数之后,通过 fd_set 和 select()函数、clifd[i]数组进行多并发,每有一个客户端通过连接发来消息,就进入客户端消息处理部分,对客户端消息进行解析,进而根据结果调用各个功能函数,在调用功能函数的过程中,会与数据库进行交互,同时将相应的反馈信息通过 send()函数发送给客户端。
所涉技术:
- 使用 socket 进行网络通讯
- 使用 IO 复用的 select 实现多并发
- 使用 sscanf()函数进行字符串的分解存入
- 使用 MySQL API for C 建立与数据库的连接并使用数据库
核心功能:
- 与客户端进行通讯
- 同时与多个�
没有合适的资源?快使用搜索试试~ 我知道了~
基于QT开发的CS架构即时聊天软件【100012920】
共82个文件
png:43个
cpp:10个
ui:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 93 浏览量
2023-07-13
09:15:04
上传
评论 1
收藏 3.21MB ZIP 举报
温馨提示
将即时通讯软件命名为 OChat,以客户端/服务器(C/S)的模式来设计。客户端负责对话功能,接受用户的输入数据并发送,显示接受的数据;服务器将具体的业务逻辑编入程序中,维护数据库,承担用户的信息储存和消息中转作用。
资源推荐
资源详情
资源评论
收起资源包目录
100012920-基于QT开发的CS架构即时聊天软件.zip (82个子文件)
ochat
程序
通讯协议.txt 1KB
文件说明.txt 100B
servermain.c 17KB
OChat
OChat.pro.user 44KB
pwordchange.cpp 950B
chat.ui 375B
addfriend.ui 2KB
chatui.h 715B
login.cpp 4KB
customtabstyle.cpp 1KB
chatui.cpp 2KB
addfriend.h 617B
chatui.ui 3KB
pwordchange.h 441B
addfriend.cpp 1KB
chat.h 479B
register.cpp 2KB
login.ui 5KB
portrait.cpp 1023B
Photo.qrc 620B
main.cpp 162B
maininterface.cpp 9KB
register.ui 10KB
register.h 890B
maininterface.h 2KB
old.ui 7KB
pwordchange.ui 5KB
portrait.ui 2KB
portrait.h 360B
photo
color_login.png 1KB
registerbg.png 4KB
3.png 14KB
login.png 12KB
min_close.png 114B
1.png 14KB
min.png 108B
close.png 339B
white.png 2KB
mainlogin1.png 5KB
color.png 2KB
5.png 14KB
4.png 14KB
icon.ico 3KB
close_blue.png 367B
mainlogin.png 5KB
icon.png 3KB
2.png 16KB
maininterface.ui 9KB
customtabstyle.h 529B
OChat.pro 1006B
chat.cpp 622B
login.h 1KB
LICENSE 1KB
文档
项目总结.docx 1.61MB
img.docx-md
20-965d80ff3701dffa834c63829bf43a83.png 5KB
12-9333079ff4b22a99515b32eb151a1f0b.png 91KB
25-f8695de892046760428e076aba5e5ede.png 12KB
14-a3b4f2f67e7316bde285abc58ee2e451.png 19KB
15-9536636a6c783aa9f129774667d5567b.png 11KB
1-a8fb3f87762ef5fd309c0a03be10cead.png 30KB
18-2a9f55eb7f8b81e91e108e6f2e84ee81.png 10KB
16-9cb90c127e780cd8b32a6ae357bde753.png 24KB
17-d43e42cfeb8a5f35cdb56308edf9c472.png 39KB
4-cf17c38fe1d3287e591fa2360a5cd5ae.png 53KB
21-7e6de16e14291dff77b5e5763dc4eb70.png 18KB
24-f428dd8cf144133e821a6bd23c0adde2.png 8KB
22-667eec4c781ef001ae9eb5135643799d.png 15KB
8-420541cdcb339140ec9e44468738f2d9.png 192KB
9-220ce5e2ba9bb9f57e9a654b3fe7859f.png 230KB
13-f16755403ccf82533efed030942ae789.png 3KB
7-736507e1af9be73852daa9bb8875fda8.png 48KB
10-d6b355639cac2a2d0580f053db577139.png 168KB
2-00e476835a5b542583bb457d19c2bb05.png 50KB
3-075c012d8f7b0d86b6209d570170ce51.png 46KB
6-71b1c75b62fb4c3e9e154873020a58eb.png 191KB
26-604bb1ed45c4a09a136db5253a664130.png 16KB
23-03e4f6848a0f93f84c57ef2a0beb85bc.png 14KB
5-d3cd6ebad31ae0d7f33d5880e2d6e083.png 299KB
19-0e684e09528e3a2c450f2e07358aa5c0.png 5KB
11-36cdda084178d35d7f843ad43bef2561.png 9KB
README.md 22KB
视频链接.md 98B
共 82 条
- 1
资源评论
神仙别闹
- 粉丝: 3867
- 资源: 7472
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功