数据库通讯录

  1. #include <stdio.h>  
  2. #include <sqlite3.h>  
  3. #include <stdlib.h>  
  4. #include <string.h>  
  5. #define N 1024  
  6.   
  7. void menu()  
  8. {  
  9.     printf("**********欢迎使用通讯录**********\n");  
  10.     printf("*                                                  *\n");  
  11.     printf("*1.                添加联系人信息                  *\n");  
  12.     printf("*2.                显示联系人信息                  *\n");  
  13.     printf("*3.                删除联系人信息                  *\n");  
  14.     printf("*4.                查询联系人信息                  *\n");  
  15.     printf("*5.                修改联系人信息                  *\n");  
  16.     printf("*6.                  退出通讯录                    *\n");  
  17.     printf("*                                                  *\n");  
  18.     printf("***************************\n");  
  19.     printf("\n");  
  20.     printf("请选择您需要的操作:");  
  21. }  
  22.   
  23. int creat_table(sqlite3 *db)  
  24. {  
  25.     char *errmsg = NULL;  
  26.     char *sql;  
  27.   
  28.     sql = "create table if not exists student(id integer,name text,tel text);";  
  29.     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
  30.     {  
  31.         printf("operator falied:%s\n",errmsg);  
  32.         exit(-1);  
  33.     }  
  34. }  
  35.   
  36. int delete_record(sqlite3 *db)  
  37. {  
  38.     char *errmsg = NULL;  
  39.     char sql[N] ;  
  40.     char name[N];  
  41.   
  42.     printf("请输入您想删除的联系人的姓名:");  
  43.     scanf("%s",name);  
  44.   
  45. //  sql = "delete from student where id = 2;";  
  46.     sprintf(sql,"delete from student where name = '%s';",name);  
  47.   
  48.     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
  49.     {  
  50.         printf("delete error: %s\n",errmsg);  
  51.         exit(-1);  
  52.     }  
  53. }  
  54.   
  55. int update_record(sqlite3 *db)  
  56. {  
  57.     char *errmsg = NULL;  
  58.     char sql[N];  
  59.     int id;  
  60.     int new_id;  
  61.     int i;  
  62.     char new_name[N];  
  63.     char new_tel[N];  
  64.   
  65.     printf("请输入您想修改的联系人的id:");  
  66.     scanf("%d",id);  
  67.     printf("您想修改该联系人的 1.id\n");  
  68.     printf("                   2.姓名\n");  
  69.     printf("                   3.联系方式\n");  
  70.       
  71.     scanf("%d",&i);  
  72.     switch(i)  
  73.     {  
  74.         case 1:  
  75.             {     
  76.                 printf("请输入新的id:");  
  77.                 getchar();  
  78.                 scanf("%d",new_id);  
  79.                 sprintf(sql,"update student set id = %d where id = %d;",new_id,id);  
  80.             }  
  81.             break;  
  82.         case 2:  
  83.             {  
  84.                 printf("请输入新的姓名:");  
  85.                 getchar();  
  86.                 scanf("%s",new_name);  
  87.                 sprintf(sql,"update student set name = '%s' where id = %d;",new_name,id);  
  88.             }  
  89.             break;  
  90.         case 3:  
  91.             {  
  92.                 printf("请输入新的联系方式:");  
  93.                 getchar();  
  94.                 scanf("%s",new_tel);  
  95.                 sprintf(sql,"update student set tel = '%s' where id = %d;",new_tel,id);  
  96.             }  
  97.             break;  
  98.         default:  
  99.             {  
  100.                 printf("输入有误,请重新输入!\n");  
  101.                 update_record(db);  
  102.             }  
  103.     }  
  104.     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
  105.     {  
  106.         printf("delete error: %s\n",errmsg);  
  107.         exit(-1);  
  108.     }  
  109. }  
  110.   
  111. int insert_record(sqlite3 *db)  
  112. {  
  113.     char *errmsg = NULL;  
  114.     char sql[N];  
  115.     char name[N];  
  116.     char tel[N];  
  117.     int id;  
  118.     int i,n;  
  119.       
  120.     printf("请输入联系人的id,姓名,联系方式:\n");  
  121.     scanf("%d %s %s",&id,name,tel);  
  122.     sprintf(sql,"insert into student (id,name,tel) values(%d,'%s','%s');",id,name,tel);  
  123.       
  124.     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
  125.     {  
  126.         printf("insert falied:%s\n",errmsg);  
  127.     }  
  128. }  
  129.   
  130. int search_record(sqlite3 *db)  
  131. {  
  132.     int i;  
  133.     int nrow,ncolumn;  
  134.     char **azresult;  
  135.     char sql[N];  
  136.     char *errmsg;  
  137.     char name[N];  
  138.   
  139.     printf("请输入您想查找的联系人的姓名:");  
  140.     scanf("%s",name);  
  141.   
  142.     sprintf(sql,"select id,name,tel from student where name = '%s';",name);  
  143.   
  144.     if(SQLITE_OK != sqlite3_get_table(db,sql,&azresult,&nrow,&ncolumn,&errmsg))  
  145.     {  
  146.         printf("selset error:%s\n",errmsg);  
  147.     }  
  148.   
  149.     for(i = 0;i < (nrow+1)*ncolumn;i++)  
  150.     {  
  151.         printf("%10s",azresult[i]);  
  152.   
  153.         if((i+1)%3 == 0)  
  154.         {  
  155.             printf("\n");  
  156.         }  
  157.     }  
  158.     sqlite3_free_table(azresult);  
  159. }  
  160.   
  161. int inquire_nocb(sqlite3 *db)  
  162. {  
  163.     int i;  
  164.     int nrow,ncolumn;  
  165.     char **azresult;  
  166.     char *sql;  
  167.     char *errmsg;  
  168.   
  169.     sql = "select * from student;";  
  170.   
  171.     if(SQLITE_OK != sqlite3_get_table(db,sql,&azresult,&nrow,&ncolumn,&errmsg))  
  172.     {  
  173.         printf("display error:%s\n",errmsg);  
  174.     }  
  175.   
  176.     for(i = 0;i < (nrow+1)*ncolumn;i++)  
  177.     {  
  178.         printf("%10s",azresult[i]);  
  179.   
  180.         if((i+1)%3 == 0)  
  181.         {  
  182.             printf("\n");  
  183.         }  
  184.     }  
  185.     sqlite3_free_table(azresult);  
  186. }  
  187.   
  188. void switch_menu(sqlite3 *db)  
  189. {  
  190.     int i;  
  191.     int n;  
  192.     int j;  
  193.   
  194.     scanf("%d",&i);  
  195.     switch(i)  
  196.     {  
  197.         case 1:  
  198.             {  
  199.                 insert_record(db);  
  200.                 printf("添加成功!\n");  
  201.                 for(j = 0;;j++)  
  202.                 {  
  203.                     printf("是否继续添加联系人?(1/0):\n");  
  204.                     scanf("%d",&n);  
  205.   
  206.                     if(1 == n)  
  207.                     {  
  208.                         insert_record(db);  
  209.                         printf("添加成功!\n");  
  210.                     }  
  211.                     else  
  212.                     {  
  213.                         system("clear");  
  214.                         menu();  
  215.                         switch_menu(db);  
  216.                         break;  
  217.                     }  
  218.                 }  
  219.             }  
  220.             break;  
  221.         case 2:  
  222.             {  
  223.                 inquire_nocb(db);  
  224.                 printf("\n");  
  225.                 printf("请选择您接下来的操作:");  
  226.                 switch_menu(db);  
  227.             }  
  228.             break;  
  229.         case 3:  
  230.             {  
  231.                 delete_record(db);    
  232.                 printf("删除成功!\n");  
  233.                 printf("\n");  
  234.                 printf("请选择您接下来的操作:");  
  235.                 switch_menu(db);  
  236.             }  
  237.             break;  
  238.         case 4:  
  239.             {  
  240.                 search_record(db);  
  241.                 printf("\n");  
  242.                 printf("请选择您接下来的操作:");  
  243.                 switch_menu(db);  
  244.             }  
  245.             break;  
  246.         case 5:  
  247.             {  
  248.                 update_record(db);  
  249.                 printf("修改成功!\n");  
  250.                 printf("请选择你您接下来的操作:");  
  251.                 switch_menu(db);  
  252.             }  
  253.             break;  
  254.         case 6:  
  255.             {  
  256.                 system("clear");  
  257.                 printf("******************\n");  
  258.                 printf("*                                *\n");  
  259.                 printf("*        谢谢使用通讯录          *\n");  
  260.                 printf("*                                *\n");  
  261.                 printf("******************\n");  
  262.                 printf("\n");  
  263.             }  
  264.             break;  
  265.         default:  
  266.             {  
  267.                 printf("您的选择有误,请重新输入!\n");  
  268.                 switch_menu(db);  
  269.             }  
  270.             break;  
  271.   
  272.     }  
  273. }  
  274.   
  275. int main()  
  276. {  
  277.     sqlite3 * db = NULL;  
  278.     int ret;  
  279.       
  280.     ret = sqlite3_open("mydatabase.db",&db);  
  281.     if(ret != SQLITE_OK)  
  282.     {  
  283.         perror("sqlite open");  
  284.         exit(1);  
  285.     }  
  286.       
  287.     system("clear");  
  288.     menu();  
  289.     creat_table(db);  
  290.     switch_menu(db);  
  291.   
  292.     return 0;  
  293. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值