票务预约系统代码3
一.数据库部分系统接入了数据库用于存储注册用户的信息。其中创建了Project_DB数据库和user_info表。二.ser.h代码1.mysql_client类class mysql_client { public: mysql_client() { db_ips 127.0.0.1; db_username root; db_dbname Project_DB; db_passwd 00000000; } ~mysql_client() { mysql_close(mysql_con); } bool mysql_ConnectServer(); bool mysql_Register(const string tel, const string passwd,const string name); private: MYSQL mysql_con; string db_ips; string db_username; string db_dbname; string db_passwd; };功能用于连接 MySQL 数据库并执行用户注册操作。成员变量变量类型说明mysql_conMYSQLMySQL 连接句柄db_ipsstring数据库服务器 IPdb_usernamestring数据库用户名db_dbnamestring数据库名称db_passwdstring数据库密码成员函数函数功能mysql_ConnectServer()连接 MySQL 数据库mysql_Register()执行用户注册2.socket_con类class socket_con { public: socket_con(int fd) : c(fd) { c_ev NULL; } void Set_ev(struct event *ev) { c_ev ev; } ~socket_con() { event_free(c_ev); close(c); } void Recv_data(); void Send_err(); void Send_ok(); void User_Register(); void User_Login(); private: int c; struct event *c_ev; Json::Value val; //mysql_client cli; };功能客户端连接处理类负责与单个客户端的通信处理数据收发和业务逻辑。成员变量变量类型说明cint客户端套接字描述符c_evstruct event*客户端事件对象valJson::Value存储接收/发送的 JSON 数据成员函数函数功能Recv_data()接收客户端数据并处理Send_err()发送错误响应Send_ok()发送成功响应User_Register()处理用户注册请求User_Login()处理用户登录请求新增Json::Value成员变量用于服务端接收存储客户端发送的json数据。其余类没有变化不过多赘述。三.ser.cpp类1.MySQL 数据库操作实现mysql_client::mysql_ConnectServer()bool mysql_client::mysql_ConnectServer() { MYSQL *mysql mysql_init(mysql_con); if (mysql NULL) { return false; } mysql mysql_real_connect(mysql, db_ips.c_str(), db_username.c_str(), db_passwd.c_str(), db_dbname.c_str(), 3306, NULL, 0); if (mysql NULL) { cout connect db server err endl; return false; } return true; }功能连接 MySQL 数据库服务器实现步骤步骤函数说明1mysql_init()初始化 MySQL 句柄2mysql_real_connect()连接到数据库参数说明db_ips.c_str()- 数据库服务器 IPdb_username.c_str()- 用户名db_passwd.c_str()- 密码db_dbname.c_str()- 数据库名3306- 端口号mysql_client::mysql_Register()bool mysql_client::mysql_Register(const string tel, const string passwd, const string name) { // insert into user_info values(0,13200000000,小王,123456,1); string sql string(insert into user_info values(0,) tel string(,) name string(,) passwd string(,1)); if (mysql_query(mysql_con, sql.c_str()) ! 0) { return false; } return true; }该函数相当于sql语句INSERT INTO user_info VALUES(0, 手机号, 用户名, 密码, 1);2.客户端连接处理实现socket_con::Send_err()和socket_con::Send_ok()void socket_con::Send_err() { Json::Value res_val; res_val[status] ERR; send(c, res_val.toStyledString().c_str(), strlen(res_val.toStyledString().c_str()), 0); } void socket_con::Send_ok() { Json::Value res_val; res_val[status] OK; send(c, res_val.toStyledString().c_str(), strlen(res_val.toStyledString().c_str()), 0); }功能向客户端发送错误或成功响应发送的 JSON{ status : ERR } { status : OK }void socket_con::User_Register()void socket_con::User_Register() { string tel, passwd, username; tel val[user_tel].asString(); passwd val[user_passwd].asString(); username val[user_name].asString(); if (tel.empty() || passwd.empty() || username.empty()) { Send_err(); } mysql_client cli; if (!cli.mysql_ConnectServer()) { Send_err(); return; } if (!cli.mysql_Register(tel, passwd, username)) { Send_err(); return; } Send_ok(); return; }该函数实现了服务器端处理用户注册的核心逻辑包括数据验证、数据库连接、用户信息插入和响应发送。1.提取用户信息从Recv_data()中已解析的JSON对象val中提取客户端发送的注册信息。2.验证数据完整性若任何字段为空向客户端发送错误响应。3.连接数据库创建mysql_client对象并连接 MySQL 数据库4. 执行注册操作将用户信息插入数据库如果插入失败如手机号已存在发送错误响应并返回。5.发送成功响应。socket_con::Recv_data()void socket_con::Recv_data() { char buff[256] {0}; int n recv(c, buff, 255, 0); if (n 0) { cout client close endl; delete this; return; } // 测试 cout recv: buff endl; Json::Reader Read; if (!Read.parse(buff, val)) { cout Recv_data:解析json失败 endl; Send_err(); return; } int ops val[type].asInt(); // DL 1, ZC,CKYY,YD,CKYD,QXYD,TC switch (ops) { case DL: User_Login(); break; case ZC: User_Register(); break; default: break; } // 解析 }1.接受客户端数据2.处理连接关闭3.打印接收到的JSON数据4.解析JSON数据Json::Reader Read; if (!Read.parse(buff, val)) { cout Recv_data:解析json失败 endl; Send_err(); return; }功能将接收到的数据解析为 JSON 对象处理逻辑使用Json::Reader解析 JSON 数据解析失败打印错误信息发送错误响应返回5. 根据操作类型分发处理int ops val[type].asInt(); // DL 1, ZC,CKYY,YD,CKYD,QXYD,TC switch (ops) { case DL: User_Login(); break; case ZC: User_Register(); break; default: break; }功能根据 JSON 中的type字段判断操作类型并调用相应的处理函数操作类型DL (1)登录ZC (2)注册其他功能暂未处理

相关新闻

Java Web 开发中,Restful 风格是一种设计 API 的风格,不是硬性标准,通过请求方式 GET、POST、PUT、DELETE,加上资源的地址 URL,服务器就能明白你想要做什么

Java Web 开发中,Restful 风格是一种设计 API 的风格,不是硬性标准,通过请求方式 GET、POST、PUT、DELETE,加上资源的地址 URL,服务器就能明白你想要做什么

一、用通俗易懂的语言,讲一讲,Java Web 开发中的 Restful 风格 Java Web 开发中,Restful 风格是一种设计 API 的风格,不是硬性标准,通过请求方式 GET、POST、PUT、DELETE,加上资源的地址 URL,服…

2026/5/17 11:53:25 阅读更多 →
python 五子棋游戏

python 五子棋游戏

pip install pygame import pygame import sys from pygame import gfxdrawclass GomokuGame:def __init__(self):pygame.init()# 游戏配置self.BOARD_SIZE 15self.CELL_SIZE 35self.MARGIN 40self.BOARD_PIXEL_SIZE (self.BOARD_SIZE - 1) * self.CELL_SIZEself.WINDOW_WI…

2026/5/17 11:53:24 阅读更多 →
大白话之——本地部署的大模型文件实际保存的是什么

大白话之——本地部署的大模型文件实际保存的是什么

大白话之——大模型生成答案的核心原理 大白话之——大模型训练过程 大白话之——本地部署的大模型文件实际保存的是什么 大白话之——大模型相同问题为啥答案不完全相同 大白话之——大模型训练好了,使用为啥还需要GPU 训练好的大模型文件里,只存了一堆…

2026/5/17 11:53:24 阅读更多 →

最新新闻

企业级AI编排:MuleSoft集成LLM的工程化实践

企业级AI编排:MuleSoft集成LLM的工程化实践

1. 项目概述:当企业级集成平台遇上大语言模型“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题不是一句空泛的营销口号,而是我在过去18个月里亲手搭建、上线并持续迭代的三个核心生产系统的真实写照…

2026/7/3 20:45:23 阅读更多 →
MuleSoft企业级AI编排:安全、可审计的大模型集成实践

MuleSoft企业级AI编排:安全、可审计的大模型集成实践

1. 项目概述:当企业级集成平台遇上大语言模型“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题不是一句空泛的行业口号,而是我在过去18个月里亲手落地的三个核心生产系统的真实写照。它讲的不是“用…

2026/7/3 20:45:23 阅读更多 →
如何彻底解决Windows 10/11中PL2303老芯片的驱动兼容性问题

如何彻底解决Windows 10/11中PL2303老芯片的驱动兼容性问题

如何彻底解决Windows 10/11中PL2303老芯片的驱动兼容性问题 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 如果你在Windows 10或Windows 11系统中使用PL-2303 USB转串…

2026/7/3 20:43:22 阅读更多 →
Spring Boot集成Cassandra:高性能数据存储实战指南

Spring Boot集成Cassandra:高性能数据存储实战指南

1. 为什么选择 Cassandra 作为 Spring Boot 的数据存储方案在分布式系统架构设计中,数据库选型往往直接决定了系统的扩展上限。三年前我在处理一个物联网平台项目时,曾面临日均千万级设备状态写入的挑战。当时测试了多种数据库方案,最终 Cass…

2026/7/3 20:43:22 阅读更多 →
Magpie窗口超分辨率工具:3步实现游戏画面高清重制

Magpie窗口超分辨率工具:3步实现游戏画面高清重制

Magpie窗口超分辨率工具:3步实现游戏画面高清重制 【免费下载链接】Magpie A general-purpose window upscaler for Windows 10/11. 项目地址: https://gitcode.com/gh_mirrors/mag/Magpie 还在为老旧游戏在4K显示器上模糊不堪而烦恼吗?Windows平…

2026/7/3 20:41:21 阅读更多 →
如何免费永久使用IDM:开源激活脚本的完整解决方案

如何免费永久使用IDM:开源激活脚本的完整解决方案

如何免费永久使用IDM:开源激活脚本的完整解决方案 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 你是否厌倦了Internet Download Manager&#xff0…

2026/7/3 20:39:20 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻