• 国庆作业day6


    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. #include
    14. #define ERR_MAG(msg) do{\
    15. fprintf(stderr,"__%d__",__LINE__);\
    16. perror(msg);\
    17. } while(0)
    18. #include
    19. #define DB "register.db"
    20. int insert_into(sqlite3 *sqldb);
    21. int find_by_uname(sqlite3 *sqldb, char *uname);
    22. int find_all(sqlite3 *sqldb);
    23. int main(int argc, const char *argv[])
    24. {
    25. // 打开数据库
    26. sqlite3 *sqldb = NULL;
    27. if (sqlite3_open(DB, &sqldb) != SQLITE_OK)
    28. {
    29. fprintf(stderr, "数据库打开错误 : %d : %s\t__%d__\n", sqlite3_errcode(sqldb), sqlite3_errmsg(sqldb), __LINE__);
    30. return -1;
    31. }
    32. // 创建表
    33. char *create_table = "CREATE TABLE if not exists register(uname char,passwd char)";
    34. char *err_msg = NULL;
    35. if (sqlite3_exec(sqldb, create_table, NULL, NULL, &err_msg) != SQLITE_OK)
    36. {
    37. fprintf(stderr, "create table : %d : %s : __%d__\n", sqlite3_errcode(sqldb), sqlite3_errmsg(sqldb), __LINE__);
    38. return -1;
    39. }
    40. char choose;
    41. // 操作选项
    42. while (1)
    43. {
    44. printf("---------------------------------------\n");
    45. printf("------------1. 用户注册----------------\n");
    46. // printf("------------2. 根据用户名注销用户----------------\n");
    47. // printf("------------3. 根据用户名修改密码----------------\n");
    48. // printf("------------4. 根据用户名查询信息----------------\n");
    49. printf("------------5. 查询全部信息-------------\n");
    50. printf("------------6. 退出--------------------\n");
    51. printf("---------------------------------------\n");
    52. printf("请选择操作 >>> ");
    53. choose = getchar();
    54. printf("choose = %c\n", choose);
    55. while (getchar() != 10);
    56. switch (choose)
    57. {
    58. case '1':
    59. // 增
    60. printf("注册\n");
    61. insert_into(sqldb);
    62. break;
    63. case '2':
    64. // 根据用户名删除
    65. break;
    66. case '3':
    67. // 根据用户名更改
    68. break;
    69. case '4':
    70. // 根据用户名查询
    71. break;
    72. case '5':
    73. // 查询全部用户
    74. find_all(sqldb);
    75. break;
    76. case '6':
    77. // 退出
    78. goto END;
    79. }
    80. }
    81. END:
    82. if (sqlite3_close(sqldb) != SQLITE_OK)
    83. {
    84. fprintf(stderr, "close database : %d : %s : __%d__\n", sqlite3_errcode(sqldb), sqlite3_errmsg(sqldb), __LINE__);
    85. return -1;
    86. }
    87. printf("数据库关闭成功\n");
    88. return 0;
    89. }
    90. return 0;
    91. }
    92. // 插入
    93. int insert_into(sqlite3 *sqldb)
    94. {
    95. char uname[128] = "";
    96. char passwd[128] = "";
    97. printf("请输入准备注册的用户名 >>> ");
    98. fgets(uname, sizeof(uname), stdin);
    99. uname[strlen(uname) - 1] = 0;
    100. // while (getchar() != 10)
    101. // ;
    102. printf("请输入密码 >>> ");
    103. fgets(passwd, sizeof(passwd), stdin);
    104. passwd[strlen(passwd) - 1] = 0;
    105. // while (getchar() != 10)
    106. // ;
    107. while (find_by_uname(sqldb, uname))
    108. {
    109. printf("请重新输入准备注册的用户名,输入exit取消注册 >>> ");
    110. fgets(uname, sizeof(uname), stdin);
    111. uname[strlen(uname) - 1] = 0;
    112. // while (getchar() != 10)
    113. // ;
    114. if (!strcmp(uname, "exit"))
    115. {
    116. printf("退出注册\n");
    117. return 0;
    118. }
    119. }
    120. char sql_str[256] = "";
    121. sprintf(sql_str, "insert into register (uname,passwd) values('%s','%s');", uname, passwd);
    122. char *errmsg = NULL;
    123. printf("sql_str = %s\n", sql_str);
    124. if (sqlite3_exec(sqldb, sql_str, NULL, NULL, &errmsg) != SQLITE_OK)
    125. {
    126. fprintf(stderr, "insert into register : %d : %s __%d__\n", sqlite3_errcode(sqldb), errmsg, __LINE__);
    127. return -1;
    128. }
    129. printf("用户 [%s] 注册成功\n", uname);
    130. return 1;
    131. }
    132. // 根据用户名删除
    133. int del_by_uname()
    134. {
    135. }
    136. // 根据用户名更改密码
    137. int updata_by_uname()
    138. {
    139. }
    140. // 根据用户名查询
    141. int find_by_uname(sqlite3 *sqldb, char *uname)
    142. {
    143. char sql_str[256] = "";
    144. char *errmsg = NULL;
    145. char **pres = NULL;
    146. int row, colum;
    147. sprintf(sql_str, "select * from register where uname='%s';", uname);
    148. if (sqlite3_get_table(sqldb, sql_str, &pres, &row, &colum, &errmsg) != SQLITE_OK)
    149. {
    150. fprintf(stderr, "find_by_uname error : %d : %s : __%d__\n", sqlite3_errcode(sqldb), errmsg, __LINE__);
    151. return 0;
    152. }
    153. return row;
    154. }
    155. // 查询所有
    156. int find_all(sqlite3 *sqldb)
    157. {
    158. char sql_str[256] = "";
    159. char *errmsg = NULL;
    160. char **pres = NULL;
    161. int row, colum;
    162. sprintf(sql_str, "select * from register;");
    163. if (sqlite3_get_table(sqldb, sql_str, &pres, &row, &colum, &errmsg) != SQLITE_OK)
    164. {
    165. fprintf(stderr, "find_by_uname error : %d : %s : __%d__\n", sqlite3_errcode(sqldb), errmsg, __LINE__);
    166. return 0;
    167. }
    168. for (int i = 0; i <= row; i++)
    169. {
    170. for (int j = 0; j < colum; j++)
    171. {
    172. printf("%s\t", pres[(row * i) + j]);
    173. }
    174. putchar(10);
    175. }
    176. return row;
    177. }

  • 相关阅读:
    ESP32智能手表项目总目录
    Nginx静态资源配置
    LSTM 词语模型上的动态量化
    wireshark抓包本地IDEA xml格式报文教程以及postman调用接口
    基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(七)
    CoppeliaSim机器人模拟器与Matlab Simulink环境
    VS Code结构体无法正确引出成员变量
    数一独有:多元函数积分的概念、计算及其应用
    业界中说的快速原型法是什么
    拓端tecdat|python在Scikit-learn中用决策树和随机森林预测NBA获胜者
  • 原文地址:https://blog.csdn.net/m0_72133977/article/details/133579349