数据库通讯录

/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd.
File name:
Author:Jerey_Jobs    Version:0.1    Date:
Description:
Funcion List:
*****************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

#define NAME_MAX 20
#define GENDER_MAX 10
#define STR_MAX 20
#define TEL_MAX 20
#define COUNT_MAX 20
#define AGE_MAX 5
int create_table(sqlite3 *db);
int menu(sqlite3 *db);
int enter(sqlite3 *db);
int quit(sqlite3 *db);
int add(sqlite3 *db);
int find(sqlite3 *db);
int find_count(sqlite3 *db);
int find_name(sqlite3 *db);
int find_tel(sqlite3 *db);
int display_all(sqlite3 *db);
int displaycb(void *para,int n_column,char **col_name,char **col_value);
int delete(sqlite3 *db);
int del_count(sqlite3 *db);
int del_name(sqlite3 *db);
int del_tel(sqlite3 *db);
int revise(sqlite3 *db);
int rev_count(sqlite3 *db);
int rev_name(sqlite3 *db);
int rev_tel(sqlite3 *db);

int main()
{
 sqlite3 *db;
 int ret;

 ret = sqlite3_open("mydatabase.db",&db);
 if(ret != SQLITE_OK)
 {
  perror("open error!\n");
  exit(0);
 }
 else
 {
  printf("you have already opened a qulite3 database successfully!\n");
 }

 create_table(db);
 menu(db);

    return 0;
}

int create_table(sqlite3 *db)
{
 char *errmsg = NULL;
 char *sql;

 sql = "create table if not exists tongxunlu(count integer primary key,name txt,gender txt,age integer,tel txt,strict txt);";
   
 if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
 {
  printf("create error : %s\n",errmsg);
  exit(0);
 }
}

int menu(sqlite3 *db)
{
 int select;
 printf("\n");
 printf("//*********************************************************\\\\\n");
 printf("//*********************************************************\\\\\n");
    printf("//                  南京工程学院班级通讯录                 \\\\\n");
 printf("//                       Version 1.0                       \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                       (1)登录                           \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                       (2)退出                           \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//*********************************************************\\\\\n");
 printf("\n");
 printf("请输入您的选择...\n");
 scanf("%d",&select);
 switch(select)
 {
  case 1 :enter(db);break;
  case 2 :quit(db);break;
  default : {
       printf("您的输入有误...\n");
       menu(db);
      };break;
 }
}

int enter(sqlite3 *db)
{
 int select;
 printf("//*********************************************************\\\\\n");
 printf("//*********************************************************\\\\\n");
    printf("//                    南京工程学院通讯录                   \\\\\n");
 printf("//                       Version 1.0                       \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                       (1)查询                           \\\\\n");
 printf("//                       (2)添加信息                       \\\\\n");
 printf("//                       (3)删除信息                       \\\\\n");
 printf("//                       (4)修改信息                       \\\\\n");
 printf("//                       (5)退出                           \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//*********************************************************\\\\\n");
 printf("//*********************************************************\\\\\n");
 printf("\n");
 printf("请输入您的选择...\n");
 scanf("%d",&select);
 switch(select)
 {
  case 1 :find(db);break;
  case 2 :add(db);break;
  case 3 :delete(db);break;
  case 4 :revise(db);break;
  case 5 :quit(db);break;
  default : {
       printf("您的输入有误...\n");
                      menu(db);
      };break;
 }
 return;

}

int quit(sqlite3 *db)
{
    printf("\n");
 printf("//*********************************************************\\\\\n");
 printf("//*********************************************************\\\\\n");
    printf("//                    南京工程学院通讯录                   \\\\\n");
 printf("//                       Version 1.0                       \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                         谢谢使用                        \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//*********************************************************\\\\\n");
 printf("//*********************************************************\\\\\n");
 printf("\n");
}

int add(sqlite3 *db)
{
 char *errmsg = NULL;
 char sql[100];
 char count[COUNT_MAX];
 char name[NAME_MAX];
 char gender[GENDER_MAX];
 char age[AGE_MAX];
 char tel[TEL_MAX];
 char strict[STR_MAX];
 printf("\n");
 printf("//*********************************************************\\\\\n");
 printf("//**********************添加信息界面***********************\\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                                                         \\\\\n");
 printf("//                       请输入用户学号:");
 scanf("%s",count);
 printf("//                       请输入用户姓名:");
 scanf("%s",name);
 printf("//                       请输入用户性别:");
 scanf("%s",gender);
 printf("//                       请输入用户年龄:");
 scanf("%s",age);
 printf("//                       请输入用户电话:");
 scanf("%s",tel);
 printf("//                       请输入用户地区:");
 scanf("%s",strict);
 printf("//                                                         \\\\\n");
 printf("//*********************************************************\\\\\n");
 printf("//*********************************************************\\\\\n");

 sprintf(sql,"insert into tongxunlu(count,name,gender,age,tel,strict) values('%s','%s','%s','%s','%s','%s');",count,name,gender,age,tel,strict);
 if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
 {
  printf("add error : %s\n",errmsg);
  exit(0);
 }
 enter(db);
 return;
}

int find(sqlite3 *db)
{
 int select;
 printf("\n");
 printf("//*********************************************************\\\\\n");
 printf("//**********************查询信息界面***********************\\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                      (1)按学号查找                      \\\\\n");
    printf("//                      (2)按姓名查找                      \\\\\n");
    printf("//                      (3)按电话号码查找                  \\\\\n");
    printf("//                      (4)全部显示                        \\\\\n");
    printf("//                      (5)返回主菜单                      \\\\\n");
 printf("//                                                         \\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("\n");
 printf("请输入您的选择...\n");
 scanf("%d",&select);
 switch(select)
 {
  case 1 :find_count(db);break;
  case 2 :find_name(db);break;
  case 3 :find_tel(db);break;
  case 4 :display_all(db);break;
  case 5 :enter(db);break;
  default :{
      printf("您的输入有误!请重新输入...\n");
      find(db);
     };break;
 }
 return;
}

int find_count(sqlite3 *db)
{
 char count[COUNT_MAX];
    char sql[100];
    char *errmsg = NULL;
 printf("输入要查询的学号...\n");
 scanf("%s",count);

 sprintf(sql,"select * from tongxunlu where count = %s",count);
    if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
 {
  printf("find_count error : %s\n",errmsg);
  exit(0);
 }

    find(db);
}

int displaycb(void *para,int n_column,char **col_value,char **col_name)
{
 int i;
 for(i = 0;i < n_column;i++)
 {
  printf("%10s : %10s\n",col_name[i],col_value[i]);
 }
 printf("===============================================\n");
 return 0;
}

int find_name(sqlite3 *db)
{
 char name[NAME_MAX];
    char sql[100];
    char *errmsg = NULL;
 printf("输入要查询的姓名...\n");
 scanf("%s",name);

 sprintf(sql,"select * from tongxunlu where name = '%s'",name);
    if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
 {
  printf("find_name error : %s\n",errmsg);
  exit(0);
 }
    find(db);
}

int find_tel(sqlite3 *db)
{
 char tel[TEL_MAX];
    char sql[100];
    char *errmsg = NULL;
 printf("输入要查询的电话号码...\n");
 scanf("%s",tel);

 sprintf(sql,"select * from tongxunlu where tel = %s",tel);
    if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
 {
  printf("find_tel error : %s\n",errmsg);
  exit(0);
 }
    find(db);
}

int display_all(sqlite3 *db)
{
 char *errmsg = NULL;
 char *sql;
    sql = "select * from tongxunlu;";
 if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
 {
  printf("display_all error :%s\n",errmsg);
//  exit(0);
 }
 find(db);
}

int delete(sqlite3 *db)
{
 int select;
 printf("//*********************************************************\\\\\n");
 printf("//**********************删除信息界面***********************\\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                      (1)按学号查找删除                  \\\\\n");
    printf("//                      (2)按姓名查找删除                  \\\\\n");
    printf("//                      (3)按电话号码查找删除              \\\\\n");
    printf("//                      (4)返回主菜单                      \\\\\n");
 printf("//                                                         \\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("\n");
 printf("请输入您的选择...\n");
 scanf("%d",&select);
 switch(select)
 {
  case 1 :del_count(db);break;
  case 2 :del_name(db);break;
  case 3 :del_tel(db);break;
  case 4 :enter(db);break;
  default :{
      printf("您的输入有误!请重新输入...\n");
      delete(db);
     };break;
 }
}

int del_count(sqlite3 *db)
{
 char sql[100];
 char *errmsg = NULL;
 char count[COUNT_MAX];
    printf("enter the count :\n");
 scanf("%s",count);
 sprintf(sql,"delete from tongxunlu where count = %s;",count);
 if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
 {
  printf("del_count error : %s\n",errmsg);
  exit(0);
 }
 else
 {
  printf("delete succcess!\n");
 }
  delete(db);

}

int del_name(sqlite3 *db)
{
 char sql[100];
 char *errmsg = NULL;
 char name[NAME_MAX];
    printf("enter the name :\n");
 scanf("%s",name);

 sprintf(sql,"delete from tongxunlu where name = '%s';",name);
 if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
 {
  printf("del_name error : %s\n",errmsg);
  exit(0);
 }
 else
 {
  printf("delete succcess!\n");
 }
  delete(db);
}


int del_tel(sqlite3 *db)
{
 char sql[100];
 char *errmsg = NULL;
 char tel[TEL_MAX];
    printf("enter the tel :\n");
 scanf("%s",tel);

 sprintf(sql,"delete from tongxunlu where tel = %s;",tel);
 if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
 {
  printf("del_tel error : %s\n",errmsg);
  exit(0);
 }
 else
 {
  printf("delete succcess!\n");
 }
  delete(db);
}

int revise(sqlite3 *db)
{
 int select;
 printf("//*********************************************************\\\\\n");
 printf("//**********************修改信息界面***********************\\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                      (1)按学号查找修改                  \\\\\n");
    printf("//                      (2)按姓名查找修改                  \\\\\n");
    printf("//                      (3)按电话号码查找修改              \\\\\n");
    printf("//                      (4)返回主菜单                      \\\\\n");
 printf("//                                                         \\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("\n");
 printf("请输入您的选择...\n");
 scanf("%d",&select);
 switch(select)
 {
  case 1 :rev_count(db);break;
  case 2 :rev_name(db);break;
  case 3 :rev_tel(db);break;
  case 4 :enter(db);break;
  default : {
       printf("enter fail!\n");
       revise(db);
      };break;
 }
}

int rev_count(sqlite3 *db)
{
 char sql[100];
 char *errmsg = NULL;
 char cou[COUNT_MAX];
 char count[COUNT_MAX];
 char name[NAME_MAX];
 char gender[GENDER_MAX];
 char age[AGE_MAX];
 char tel[TEL_MAX];
 char strict[STR_MAX];
    printf("enter the count you want to revise\n");
 scanf("%s",cou);
 int select;
 printf("//*********************************************************\\\\\n");
 printf("//**********************修改信息界面***********************\\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                      (1)修改学号                        \\\\\n");
    printf("//                      (2)修改姓名                        \\\\\n");
    printf("//                      (3)修改性别                        \\\\\n");
    printf("//                      (4)修改年龄                        \\\\\n");
    printf("//                      (5)修改电话号码                    \\\\\n");
    printf("//                      (6)修改地区                        \\\\\n");
    printf("//                      (7)返回主菜单                      \\\\\n");
 printf("//                                                         \\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("\n");
 printf("请输入您的选择...\n");
 scanf("%d",&select);
 switch(select)
 {
  case 1 :{
     printf("enter the count \n");
     scanf("%s",count);
                    sprintf(sql,"update tongxunlu set count = %s where count = %s;",count,cou);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_count1 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 2 :{
     printf("enter the name \n");
     scanf("%s",name);
                    sprintf(sql,"update tongxunlu set name = '%s' where count = %s;",name,cou);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_count2 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 3 :{
     printf("enter the gender \n");
     scanf("%s",gender);
                    sprintf(sql,"update tongxunlu set gender = '%s' where count = %s;",gender,cou);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_count3 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 4 :{
     printf("enter the age \n");
     scanf("%s",age);
                    sprintf(sql,"update tongxunlu set age = %s where count = %s;",age,cou);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_count4 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 5 :{
     printf("enter the tel \n");
     scanf("%s",tel);
                    sprintf(sql,"update tongxunlu set tel = %s where count = %s;",tel,cou);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_count5 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 6 :{
     printf("enter the strict \n");
     scanf("%s",strict);
                    sprintf(sql,"update tongxunlu set strict = '%s' where count = %s;",strict,cou);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_count6 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 7 :enter(db);break;
  default : {
       printf("enter fail!\n");
       revise(db);
      };break;
 }
 enter(db);
}

int rev_name(sqlite3 *db)
{
 char sql[100];
 char *errmsg = NULL;
 char na[NAME_MAX];
 char count[COUNT_MAX];
 char name[NAME_MAX];
 char gender[GENDER_MAX];
 char age[AGE_MAX];
 char tel[TEL_MAX];
 char strict[STR_MAX];
    printf("enter the name you want to revise\n");
 scanf("%s",na);
 int select;
 printf("//*********************************************************\\\\\n");
 printf("//**********************修改信息界面***********************\\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                      (1)修改学号                        \\\\\n");
    printf("//                      (2)修改姓名                        \\\\\n");
    printf("//                      (3)修改性别                        \\\\\n");
    printf("//                      (4)修改年龄                        \\\\\n");
    printf("//                      (5)修改电话号码                    \\\\\n");
    printf("//                      (6)修改地区                        \\\\\n");
    printf("//                      (7)返回主菜单                      \\\\\n");
 printf("//                                                         \\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("\n");
 printf("请输入您的选择...\n");
 scanf("%d",&select);
 switch(select)
 {
  case 1 :{
     printf("enter the count \n");
     scanf("%s",count);
                    sprintf(sql,"update tongxunlu set count = %s where name = '%s';",count,na);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_name1 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 2 :{
     printf("enter the name \n");
     scanf("%s",name);
                    sprintf(sql,"update tongxunlu set name = '%s' where name = '%s';",name,na);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_name2 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 3 :{
     printf("enter the gender \n");
     scanf("%s",gender);
                    sprintf(sql,"update tongxunlu set gender = '%s' where name = '%s';",gender,na);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_name3 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 4 :{
     printf("enter the age \n");
     scanf("%s",age);
                    sprintf(sql,"update tongxunlu set age = %s where name = '%s';",age,na);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_name4 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 5 :{
     printf("enter the tel \n");
     scanf("%s",tel);
                    sprintf(sql,"update tongxunlu set tel = %s where name = '%s';",tel,na);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_name5 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 6 :{
     printf("enter the strict \n");
     scanf("%s",strict);
                    sprintf(sql,"update tongxunlu set strict = '%s' where name = '%s';",strict,na);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_name6 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 7 :enter(db);break;
  default : {
       printf("enter fail!\n");
       revise(db);
      };break;
 }
 enter(db);
}

int rev_tel(sqlite3 *db)
{
 char sql[100];
 char *errmsg = NULL;
 char t[TEL_MAX];
 char count[COUNT_MAX];
 char name[NAME_MAX];
 char gender[GENDER_MAX];
 char age[AGE_MAX];
 char tel[TEL_MAX];
 char strict[STR_MAX];
    printf("enter the tel you want to revise\n");
 scanf("%s",t);
 int select;
 printf("//*********************************************************\\\\\n");
 printf("//**********************修改信息界面***********************\\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                                                         \\\\\n");
    printf("//                      (1)修改学号                        \\\\\n");
    printf("//                      (2)修改姓名                        \\\\\n");
    printf("//                      (3)修改性别                        \\\\\n");
    printf("//                      (4)修改年龄                        \\\\\n");
    printf("//                      (5)修改电话号码                    \\\\\n");
    printf("//                      (6)修改地区                        \\\\\n");
    printf("//                      (7)返回主菜单                      \\\\\n");
 printf("//                                                         \\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("//*********************************************************\\\\\n");
    printf("\n");
 printf("请输入您的选择...\n");
 scanf("%d",&select);
 switch(select)
 {
  case 1 :{
     printf("enter the count \n");
     scanf("%s",count);
                    sprintf(sql,"update tongxunlu set count = %s where tel = %s;",count,t);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_tel1 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 2 :{
     printf("enter the name \n");
     scanf("%s",name);
                    sprintf(sql,"update tongxunlu set name = '%s' where tel = %s;",name,t);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_tel2 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 3 :{
     printf("enter the gender \n");
     scanf("%s",gender);
                    sprintf(sql,"update tongxunlu set gender = '%s' where tel = %s;",gender,t);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_tel3 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 4 :{
     printf("enter the age \n");
     scanf("%s",age);
                    sprintf(sql,"update tongxunlu set age = %s where tel = '%s';",age,t);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_tel4 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 5 :{
     printf("enter the tel \n");
     scanf("%s",tel);
                    sprintf(sql,"update tongxunlu set tel = %s where tel = %s;",tel,t);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_tel5 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 6 :{
     printf("enter the strict \n");
     scanf("%s",strict);
                    sprintf(sql,"update tongxunlu set strict = '%s' where tel = %s;",strict,t);
     if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
     {
      printf("rev_tel6 error :\n",errmsg);
                        exit(0);
     }
    };break;
  case 7 :enter(db);break;
  default : {
       printf("enter fail!\n");
       revise(db);
      };break;
 }
 enter(db);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值