用数据库实现通讯录

#include
#include
#include


static sqlite3 *db = NULL;
static char **Result = NULL;
static char *errmsg = NULL;
char name[20];
char age[20];
char phone[20];
char num[20];
int Row;
int ncolumn;
int i;
int j;


int print()
{
    int num;


    printf("==========================================\n");
    printf("\n");
    printf("||            1)录入联系人              ||\n");
    printf("||            2)显示联系人              ||\n");
    printf("||            3)更新联系人              ||\n");
    printf("||            4)删除联系人              ||\n");
    printf("||            5)搜索联系人              ||\n");
    printf("||            6)退出系统                ||\n");
    printf("\n");
    printf("==========================================\n");
    printf("请输入你想要执行的操作(1-6):");
    scanf("%d",&num);
    return num;
}


void insert()
{
    int ret;
    int flag = 1;
    int i;
    char sql[100];


    while(flag)
    {
        printf("请输入需要添加的人数:");
        scanf("%d",&ret);
    
        for(i = 1;i <= ret;i++)
        { 
            printf("ID:");
   scanf("%s",num);
   printf("姓名:");
   scanf("%s",name);
   printf("年龄:");
   scanf("%s",age);
   printf("电话:");
   scanf("%s",phone);
   getchar();
   sprintf(sql,"insert into book (id,name,age,phone) values ('%s','%s','%s','%s' );",num,name,age,phone);


   sqlite3_exec(db, sql, NULL, NULL, &errmsg);
        /*
   if(ret)
   {
       printf("insert record error :%s\n", errmsg);
       exit (-1);
   }
*/
        }
        printf("是否继续输入(Y(1) N(0)):");
        scanf("%d",&flag);
    }
}


void display()
{
    int res;
    res = sqlite3_get_table(db,".mode column",&Result,&Row,&ncolumn,&errmsg);
    res = sqlite3_get_table(db,".head on",&Result,&Row,&ncolumn,&errmsg);
    res = sqlite3_get_table(db,"select *from book order by name asc;",&Result,&Row,&ncolumn,&errmsg);


    if(res)
    {
        printf("fail to exec database!\n");

    }
    for(i = 0;i <= Row;i++)
    {
for(j = 0;j < ncolumn;j++)
{
   printf("%8s |",Result[i*ncolumn+j]);
}
printf("\n");
    }
    printf("打印成功!\n");
}


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


void update()
{
    char sql[100];
    int ret;
    int ch;
    int flag = 1;
    char id[20];
    char c_name[20];
    char c_age[20];
    char c_phone[20];


    printf("你想要修改的联系人的姓名:");
    scanf("%s",name);
    
    sprintf(sql,"select *from book where name='%s';",name);
    ret = sqlite3_exec(db,sql,displaycb,NULL,&errmsg);


    if(ret)
    {
        printf("select error:%s\n",errmsg);
exit(-1);
    }


    while(flag)
    {
        printf("请选择需要修改项(ID(0),姓名(1),年龄(2),电话(3)):");
scanf("%d",&ch);
        getchar();
        
if(ch == 0)
{
   printf("将ID修改为:");
   scanf("%s",&id);
   sprintf(sql,"update book set ID='%s' where name='%s';",id,name);
   sqlite3_exec(db,sql,NULL,NULL,&errmsg);
}
if(ch == 1)
{
   printf("将姓名修改为:");
   scanf("%s",&c_name);
   sprintf(sql,"update book set name='%s' where name='%s';",c_name,name);
   sqlite3_exec(db,sql,NULL,NULL,&errmsg);
}
if(ch == 2)
{
   printf("将年龄修改为:");
   scanf("%s",&c_age);
   sprintf(sql,"update book set age='%s' where name='%s';",c_age,name);
   sqlite3_exec(db,sql,NULL,NULL,&errmsg);
}
if(ch == 4)
{
   printf("将电话修改为:");
   scanf("%s",&c_phone);
   sprintf(sql,"update book set c_phone='%s' where name='%s';",c_phone,name);
   sqlite3_exec(db,sql,NULL,NULL,&errmsg);
}


printf("是否继续修改(Y(1) N(0)):");
scanf("%d",&flag);
    }


}


void delete()
{
    char sql[100];
    int ret;


    printf("请输入你想要删除的联系人的姓名:");
    scanf("%s",name);
        
    sprintf(sql,"select *from book where name='%s';",name);
    
    ret = sqlite3_exec(db,sql,displaycb,NULL,&errmsg);


    if(ret)
    {
        printf("select error:%s\n",errmsg);
exit(-1);
    }


    printf("请输入需要删除的联系人的ID:");
    scanf("%s",num);


    sprintf(sql,"delete from book where id='%s';",num);
    ret = sqlite3_exec(db,sql,displaycb,NULL,&errmsg);


    if(ret)
    {
        printf("delete error:%s\n",errmsg);
exit(-1);
    }


    printf("删除成功!\n");
    


}


void search(sqlite3 *db)
{
    char sql[100];
    int ret;
    int ch;
    int flag = 1;


    while(flag)
    {
        printf("请输入需搜索的联系人的姓名:");
        scanf("%s",name);
        sprintf(sql,"select *from book where name='%s';",name);
    
        ret = sqlite3_exec(db,sql,displaycb,NULL,&errmsg);
        if(ret != SQLITE_OK)
        {
            printf("select error:%s\n",errmsg);
   exit(-1);
        }


        printf("是否继续搜索?Y(1)|N(0)");
        scanf("%d",&ch);
        flag = ch;
    }
}


int main()
{
    int num;
    int res ;
    res = sqlite3_open("albumn.db",&db);

    while(1)
    {
        num = print();

        if(num ==1)
{
   insert();
        }
if(num == 2)
{
   display();
}
if(num == 3)
        {
            update();
}
        if(num == 4)
{
   delete();
}
if(num == 5)
{
   search(db);
}
if(num == 6)
{
   exit(0);
}
    }
    //sqlite3_free_table(Result);
    sqlite3_close(db);
    return 0;
}

你可能感兴趣的:(Linux,C)