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

discuz和wordpress区别湖南靠谱seo优化

discuz和wordpress区别,湖南靠谱seo优化,网站建设事项,学校网站建设解决方案数据管理模块实现 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://www.dtcms.com/wzjs/118996.html

相关文章:

  • 高唐做创建网站的公司旅游景区网络营销案例
  • 做公众号和网站主页的区别网页开发需要学什么
  • 零基础jsp网站开发网站推广公司大家好
  • 电脑建设网站在互联网访问网站统计系统
  • 电器类网站设计百度快速排名提升
  • 淄博网站建设服务合肥百度搜索排名优化
  • 中国建设银行网站地址游戏推广代理平台
  • 爱站网长尾挖掘工具seo服务公司
  • 哪个网站可以做自己的网页百度收录技巧
  • 网站建设投标评分标准如何优化培训体系
  • 微信社区官网长沙seo外包
  • 跨境自建站模板上海推广网站
  • 手机网站开发与pc网站开发的不同seo关键词排名优化方案
  • 网站设计风格有哪些公司企业网站制作
  • 免费建立手机网站软文推广营销
  • 电脑自带做网站的软件网络服务公司
  • 如何做网站谷歌seo网站推广
  • 做设计用的素材下载网站seo初级入门教程
  • 高端建设网站公司杭州seo公司哪家好
  • 网站基本配置国外市场网站推广公司
  • 华亭网站建设app拉新渠道商
  • 公司如何做自己的网站肇庆疫情最新情况
  • 门户网站建设系统杭州推广系统
  • 网站作为医院形象建设网店推广是什么
  • 这么做介绍网站的ppt实体店100个营销策略
  • 泰州网站建设费用刷推广链接人数的软件
  • 北海网站建设服务商上海网站建设推广服务
  • 安顺公司做网站合肥网络推广平台
  • 应用市场最新版下载什么是搜索引擎优化seo
  • 新服务器做网站seo宣传网站