2019秋招的结束,突然不知道做些什么,总不能天天躺尸吧哈哈。好了,在2019年10月27日的晚上辗转反侧想做出一个完全出自自己的一款软件,类似QQ的软件。体验腾讯初创QQ时,创业的艰难情景。以及对自己所学知识的汇总。
所用到的技术包含C语言,C++语言,数据结构与算法(如vector,map,链表),操作系统(如进程线程等),网络(HTTP,三次握手,Socket,IP及端口号等),以及MySQL数据库等
QZ聊天系统
项目介绍:模拟QQ进行研发在线用户的聊天系统,支持多人群聊,一对一,聊天及文件,图片发送。
两大模块:客户端及服务端。
客户端:
客户端负责
1.0开始界面通过进度条刷新进入进行可服务端连接
2.0用户注册(个人昵称+最少6位数字+密码+绑定邮箱)昵称不允许为空
3.0用户登录(QZ号+密码+忘记密码通过邮箱找回)忘记QZ号仍旧可以通过邮箱找回
4.0创建好友分组,基本分组:1.家人咯,2.朋友们,3.闺蜜呀,4.老铁们,5.恋人
5.0搜索添加好友,通过QZ号搜索,进行添加会选择相应分组。
6.0创建群聊,通过选择需要群聊的好友的QZ号拉入,(至少拉入一个方能创建成功)
7.0每次进行聊天时需要手动选择所需要聊天的对象。
服务端:
1.0处理客户端发送的注册申请,之后去MySQL中查找StartEnd表中的最后未被注册QZ号,并且进行返回,
将昵称+用户注册QZ号和密码后及邮箱的数据插入PersonInforQZ表中(start始终是100000)(临界资源加锁保护)
2.0用户登录时,通过客户端发送过来的QZ号和密码,去PersonInforQZ表中查找相关信息进行匹配,如果匹配正确则进行反馈客户端登陆成功,
否则登陆失败,并且提供重新登录以及邮箱找回密码或者QZ号的方法
3.0一个邮箱只能绑定一个QZ号,服务端会对绑定邮箱时进行检测。
4.0登录成功后,服务端会对新用户创建一个PersonGroups表即存储用户分组,并为每一个组创建一个表来存储每个组成员的信息。
5.0客户端再对添加用户时,去已注册的PersonInforQZ中去查找,如果有则返回查找成功,返回,添加好友到对应分组中。对该用户的对应分组进行更新。
6.1一对一聊天:在进行聊天时,选择对应好友中特定人,与对方进行三次握手连接。进行聊天。
并将聊天信息存储到表名为"PersonAnd100000"中的消息MessageLogg中,如果有文件交互则存储到FileS中
如果以前有与该用户通信过则给选择1.是否获取聊天记录,2.直接聊天。通过服务器进行两个客户的交互
6.2群聊: 创建群聊时添加所群聊的对象创建群聊总表GroupChatSNum,并创建群名,群用户信息。
这是当前想要做的QZ聊天系统的雏形框架。后面在进行添加修改。
在自己构思的过程中发现有许多的东西使自己没有掌握的像QT界面开发,对数据库的操作不够熟练等等,不要放弃坚持。。。2019.10.28
珍&源码