当前位置: 首页 > wzjs >正文

wordpress文章瀑布流厦门seo传播

wordpress文章瀑布流,厦门seo传播,中文 wordpress插件下载,长域名转换短域名数据管理模块实现 1.数据库表的设计2.数据管理模块的封装和实现2.1 user_table() && ~user_table()2.2 insert() 注册时新增用户2.3 login() 登录验证,并返回详细的用户信息2.4 通过用户名获取用户信息 && 通过用户id获取用户信息2.5 win() &&a…

数据管理模块实现

  • 1.数据库表的设计
  • 2.数据管理模块的封装和实现
    • 2.1 user_table() && ~user_table()
    • 2.2 insert() 注册时新增用户
    • 2.3 login() 登录验证,并返回详细的用户信息
    • 2.4 通过用户名获取用户信息 && 通过用户id获取用户信息
    • 2.5 win() && lose()

项目链接: 五子棋项目

1.数据库表的设计

在数据库表的成员变量中,除了id,用户名,密码之外,还有一些是是针对于游戏中的设计

  1. id
  2. username
  3. password
  4. score:分数
  5. total_count:总场数
  6. win_count:赢的场数
create database if not exists gobang;
use gobang;
create table if not exists user(id int primary key auto_increment,username varchar(32) not null,password varchar(32) not null,score int,total_count int,win_count int 
);

2.数据管理模块的封装和实现

实现一个mysql客户端来访问服务器进行数据的操作,为了项目的可拓展性,针对管理的每一张表都去设计一个类,我们这里是针对用户的数据所以设计的就是user类
在这里插入图片描述
这里的函数实现要搭配着上一篇文章实现的使用工具类中的mysql_util这个类。

2.1 user_table() && ~user_table()

user_table的初始化就是mysql_create()要传入的参数也是mysql_create这个函数所需要的参数,析构函数就直接调用mysql_destroy即可。

2.2 insert() 注册时新增用户

这里就是简单的使用sql语句即可,要对用户和密码不全的情况进行判断

     bool insert(Json::Value &user){
#define INSERT_USER "insert user values(null, '%s', '%s', 1000, 0, 0);"//密码用户不全if (user["password"].isNull() || user["username"].isNull()){DLOG("INPUT PASSWORD OR USERNAME");return false;}char sql[4096] = {0};// sprintf(void *buf, char *format, ...)sprintf(sql, INSERT_USER, user["username"].asCString(), user["password"].asCString());bool ret = mysql_util::mysql_exec(_mysql, sql);if (ret == false){DLOG("insert user info failed!!\n");return false;}return true;}

2.3 login() 登录验证,并返回详细的用户信息

mysql链接共享,所以在多个线程同时执行sql语句时会导致竞争,所以需要加锁保护,这里有一个新的写法在加锁的地方用括号括起来,这样就变成了一个区间,区间结束之后锁会自动释放。

          {std::unique_lock<std::mutex> lock(_mutex);bool ret = mysql_util::mysql_exec(_mysql, sql);if (ret == false){DLOG("user login failed!!\n");return false;}// 要么有数据,要么没有数据,就算有数据也只能有一条数据res = mysql_store_result(_mysql);if (res == NULL){DLOG("have no login user info!!");return false;}}

2.4 通过用户名获取用户信息 && 通过用户id获取用户信息

这两个的函数几乎一模一样,就是在sql查询语句中的查询条件不同

     bool select_by_name(const std::string &name, Json::Value &user){
#define USER_BY_NAME "select id, score, total_count, win_count from user where username='%s';"char sql[4096] = {0};sprintf(sql, USER_BY_NAME, name.c_str());MYSQL_RES *res = NULL;{std::unique_lock<std::mutex> lock(_mutex);bool ret = mysql_util::mysql_exec(_mysql, sql);if (ret == false){DLOG("get user by name failed!!\n");return false;}// 要么有数据,要么没有数据,就算有数据也只能有一条数据res = mysql_store_result(_mysql);if (res == NULL){DLOG("have no user info!!");return false;}}int row_num = mysql_num_rows(res);if (row_num != 1){DLOG("the user information queried is not unique!!");return false;}MYSQL_ROW row = mysql_fetch_row(res);user["id"] = (Json::UInt64)std::stol(row[0]);user["username"] = name;user["score"] = (Json::UInt64)std::stol(row[1]);user["total_count"] = std::stoi(row[2]);user["win_count"] = std::stoi(row[3]);mysql_free_result(res);return true;}

2.5 win() && lose()

这也类似,一个是加分一个是减分

  1. 胜利时天梯分数增加30分,战斗场次增加1,胜利场次增加1
  2. 失败时天梯分数减少30,战斗场次增加1,其他不变
     bool win(uint64_t id){
#define USER_WIN "update user set score=score+30, total_count=total_count+1, win_count=win_count+1 where id=%ld;"char sql[4096] = {0};sprintf(sql, USER_WIN, id);bool ret = mysql_util::mysql_exec(_mysql, sql);if (ret == false){DLOG("update win user info failed!!\n");return false;}return true;}

文章转载自:

http://K6YH6o9O.kqLrL.cn
http://MosLmdD5.kqLrL.cn
http://TQIyRIgz.kqLrL.cn
http://1Q6jVKxr.kqLrL.cn
http://NHbyMhvD.kqLrL.cn
http://lW0nYoNJ.kqLrL.cn
http://qHwDq3uU.kqLrL.cn
http://sGB9bqzj.kqLrL.cn
http://ZX5ARrPr.kqLrL.cn
http://2GF91eU9.kqLrL.cn
http://5MDnPihB.kqLrL.cn
http://JD2f17X5.kqLrL.cn
http://ykjBreCT.kqLrL.cn
http://18QeHMq7.kqLrL.cn
http://KuG7tUdo.kqLrL.cn
http://ftMkjoel.kqLrL.cn
http://lGWWTcOh.kqLrL.cn
http://U5wHQ1bf.kqLrL.cn
http://F1LtdbUD.kqLrL.cn
http://dOO97Vyt.kqLrL.cn
http://1OdYrYe2.kqLrL.cn
http://JCo3puTt.kqLrL.cn
http://PdG6b7UF.kqLrL.cn
http://gvoVcg6H.kqLrL.cn
http://FPVSXY2M.kqLrL.cn
http://e4Fk2S5t.kqLrL.cn
http://0UHd2oxH.kqLrL.cn
http://tfuZv6Lx.kqLrL.cn
http://xQcB8g7z.kqLrL.cn
http://NM8GUWG4.kqLrL.cn
http://www.dtcms.com/wzjs/740323.html

相关文章:

  • 创建商务站点的主要工作惠州网站建设方案报价
  • 个人网站如何加入百度联盟建设网站怎么制作
  • 贵阳做网站软件网站开发涉及技术
  • 线上购物网站开发wordpress加载相册慢
  • 专业网站开发费用海口装饰设计网站建设
  • 如何建立像淘宝一样的网站flash网站源码下载
  • 怎么查网站点击量制作小诗集
  • 为什么选用美食做网站主页网站建设流程表
  • 彩票网站怎么做ip管理网页顶部导航栏设计
  • 关于加强政务网站建设的通知微信小程序线上商城怎么申请
  • 山西电力建设三公司网站劲松网站建设公司
  • 台州网站建设推广济南房产网签查询系统
  • 网站设计与网页制作教程简单设计网站
  • 论坛网站开发框架angular上海自助建站工具
  • 网站建设与实训深圳市龙华区大浪街道
  • 南宁建站模板大全技术支持 东莞网站建设
  • 企业模拟网站建设开发公司招聘
  • 专业营销网站开发高端网页开发公司
  • 家庭农场做网站北京小程序制作实惠华网天下
  • 东莞网站设计如何中心建设投官方网站 软件下载
  • 免费发布信息网站大全注册做网站一般用什么程序
  • 创建网站的软件什么梦微信开发显示wordpress
  • 哪有做奇石网站男生学计算机哪个专业最吃香
  • 学院网站建设计划网站建设的一般流程是
  • 北京永安市政建设投资有限公司网站关于icp备案信息中注销网站的通知
  • 怎么样建设一个电影网站视频下载数据库策略网站推广的有效方法有
  • html网站建设实例代码网页源码提取工具
  • .net网站设计Wordpress可以做门户
  • 网站导航栏三根横线怎么做的电子商城采购平台官网
  • 龙华做棋牌网站建设哪家好哔哩哔哩网站分析