240717班级,工业化控制系统,煤矿相关行业,昆仑系统
编辑 | blame | 历史 | 原始文档


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