===================================== 结构体的规则: 分成两部分: 数据头: 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[负责]--提示添加的状态[成功/失败]