|
|
|
=====================================
|
结构体的规则:
|
|
分成两部分:
|
数据头:
|
int type; 用来区分不同的功能
|
int len; 用来表示封包的总长度,解决粘包问题
|
数据体:
|
具体的功能字段
|
如登录:
|
char user_name[32];
|
char password[32];
|
----------------------
|
命名规则:
|
结构体一般是成对出现:有请求,有响应
|
xxReq // Request
|
xxRes // Response
|
---------------------
|
初始化规则:
|
默认给一个无参构造函数
|
xx(){
|
// 对数据头进行初始化
|
}
|
-------------------------
|
给type统一起来,使用枚举来统一赋值
|
enum TypeInfo{
|
LOGIN_REQ, // 登录请求
|
LOGIN_RES, // 登录响应
|
|
};
|
-------------------------
|
必须把所有的结构体以及枚举等,都放到同一个头文件中
|
并且前后端都使用同一个头文件
|
|
common.h
|
-----------------------
|
提升扩展性:
|
把数据头部分,单独拎出来
|
struct Head
|
{
|
int type;
|
int len;
|
};
|
-----使用
|
如:登录请求
|
struct LoginReq
|
{
|
Head head;
|
char user_name[32];
|
char password[32];
|
LoginReq(){
|
head.type = LOGIN_REQ;
|
head.len = sizeof(LoginReq);
|
}
|
};
|
|
登录响应:
|
struct Permission
|
{
|
int admin;
|
int log_search;
|
int history;
|
int map_change;
|
int version_manage;
|
int warning;
|
int device_manage;
|
int pro_plan;
|
//char role_name[32]; // 角色名
|
int role_id; // 角色id
|
};
|
|
struct LoginRes
|
{
|
Head head;
|
char user_name[32];
|
int status; // 登录状态
|
// 成功时,该账号对应的权限组合
|
Permission per;
|
LoginRes()
|
{
|
head.type = LOGIN_RES;
|
head.len = sizeof(LoginRes);
|
};
|
};
|
----------------------
|
特殊要求:
|
可以使用json的格式,
|
也可以使用xml的格式,
|
甚至直接使用特定字符串等
|
|
前提条件:有特殊要求的协议,提前跟网络/协议敲定;
|
---------------------
|
============================================================
|
|
数据库表的一些规则:
|
|
表名: 业务名_info 【考虑合并,提炼出表达意思到位的名字】
|
如:登录、注册、权限管理共用相同的2张表
|
用户信息表 user_info
|
角色权限表 role_info
|
每一个表的第一个字段[第一列]:
|
是 id,int,主键,自增(从1开始)
|
----------------
|
写sql语句时,尽量一条语句完成操作
|
【意思你要写高级语句】
|
----------------
|
数据库负责人:多个功能,用到同一张表了,要把所有字段合并
|
并且去重[相同意思的保留一个字段]
|
----------------
|
================================================
|
变量名命名规则:
|
普通成员变量:类型 m_变量名; // 加前缀
|
静态成员变量:类型 s_变量名; // sm_变量名
|
|
局部变量:类型 变量名; // 不要前缀
|
================================================
|
模块名命名规则:禁止使用工程创建默认的名字
|
业务名
|
如登录:C端:
|
类名: LoginMainWindow
|
或者 LoginBusiness
|
|
================================================
|
Qt--UI
|
--实现功能:
|
-- 添加设备:UI上填一些设备信息:名字 型号 经度 纬度 等
|
-- 添加按钮:把设备信息拿出来--添加到结构体里面[请求结构体]
|
-- 使用socket--发送请求结构体
|
|
VS--处理一些业务:
|
其他人负责:收包--解包--拿到请求结构体--调用添加设备的业务API[负责]
|
--参数:请求结构体指针,套接字
|
--操作:通过请求信息--组装SQL语句[插入语句]--调用MySQL类的API--拿到SQL语句的执行结果--根据结果组装 响应结构体 -- 发包--给客户端
|
|
Qt--UI:
|
-- 收包-解包--拿到响应结构体[别人]--调用响应业务API[负责]--提示添加的状态[成功/失败]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|