您的位置:首页 > 数据库

实现用数据库存储通讯录 实现“增删改查”的功能

2016-12-28 13:01 381 查看
#include <stdio.h>

#include <stdlib.h>

#include <sqlite3.h>

#include <string.h>

char name[20];

int age;

char sex[20];

char phonenumber[20];

void Menu(sqlite3* db);

void insert(sqlite3* db);

void delete(sqlite3* db);

void update(sqlite3* db);

void query(sqlite3* db);

void showscreen(sqlite3* db);

int main()

{
int ret;
sqlite3 *db;
char* errmsg;
ret = sqlite3_open("cmdaddress.db", &db);
if(ret != SQLITE_OK)

    {

        perror("open");

        exit(1);

    }
char sql_create[] = "create table if not exists stu(name text, sex text, age integer, phonenumber text);";

    ret = sqlite3_exec(db, sql_create, NULL, NULL, &errmsg);

    if(ret != SQLITE_OK)

    {

        perror("create");

        exit(2);

    }

    
Menu(db);
showscreen(db);
ret = sqlite3_close(db);
if(ret != SQLITE_OK)

    {

        perror("close");

        exit(1);

    }
return 0;

}

void Menu(sqlite3* db)

{
int number;
printf("欢迎来到Coder通讯录!\n");
printf("\n");
printf("1:新增联系人\n");
printf("\n");
printf("2:删除联系人\n");
printf("\n");
printf("3:修改联系人信息\n");
printf("\n");
printf("4:查找通讯录信息\n");
printf("\n");
printf("5:弹出操作提示\n");
printf("\n");

    printf("q:退出菜单\n");
printf("\n");
printf("请输入指令\n");

while(scanf("%d", &number) == 1)

    {

   
   switch(number)
   {
   case 1:
   {
       insert(db);
       break;
   }
   case 2:
   {
   delete(db);
   break;
   }
   case 3:
   {
   update(db);
   break;
   }
   case 4:
   {
   query(db);
   break;
   }
case 5:
{
printf("1:新增联系人\n");
           printf("\n");
           printf("2:删除联系人\n");
           printf("\n");
           printf("3:修改联系人信息\n");
           printf("\n");
           printf("4:查找通讯录信息\n");
           printf("\n");

                printf("q:退出菜单\n");
           printf("\n");
           printf("请输入数字\n");
break;
}
default: printf("请重新输入正确的操作指令\n");
   }
   

    }

    

}

void insert(sqlite3* db)

{
int ret;
char *errmsg;
char sql_insert[1024] = {0};
printf("请输入添加成员姓名:\n");
scanf("%s", name);
printf("请输入成员性别:\n");
scanf("%s", sex);
printf("请输入成员年龄:\n");
scanf("%d", &age);
printf("请输入成员手机号码:\n");
scanf("%s", phonenumber);
sprintf(sql_insert, "insert into stu values('%s', '%s', %d, '%s');", name, sex, age, phonenumber);
ret = sqlite3_exec(db, sql_insert, NULL, NULL, &errmsg);
if(ret != SQLITE_OK)

    {

        perror("insert");

        exit(1);

    }
printf("操作成功\n");
memset(name, 0, 20);
memset(sex, 0, 20);
memset(phonenumber, 0, 20);

}

void delete(sqlite3* db)

{

char *errmsg;
int ret;
char sql_delete[1024] = {0};
int number;

    printf("1.根据姓名进行删除\n");
printf("\n");

    printf("2.根据手机号码进行删除\n");
printf("\n");
printf("请输入你想选择的功能号码\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
printf("请输入你想删除的姓名\n");
scanf("%s", name);
sprintf(sql_delete, "delete from stu where name = '%s';", name);

            ret = sqlite3_exec(db, sql_delete, NULL, NULL, &errmsg);
if(ret != SQLITE_OK)
{
perror("delete");
exit(1);
}
printf("操作成功\n");
memset(name, 0, 20);
break;
}

case 2:
{
printf("请输入你想删除的手机号码\n");
scanf("%s", phonenumber);
sprintf(sql_delete, "delete from stu where phonenumber = '%s';", phonenumber);

            ret = sqlite3_exec(db, sql_delete, NULL, NULL, &errmsg);
if(ret != SQLITE_OK)
{
perror("delete");
exit(1);
}
printf("操作成功\n");
memset(phonenumber, 0, 20);
break;
}
default: printf("请重新输入正确的操作指令\n");

}

}

void update(sqlite3* db)

{
int ret;
char *errmsg;
char sql_update[1024] = {0};
char updatename[1024] = {0};
char updatesex[1024] = {0};
char updatephone[1024] = {0};
int number;
int updateage;

    printf("1.根据姓名进行修改\n");
printf("\n");

    printf("2.根据手机号码进行修改\n");
printf("\n");
printf("请输入你想选择的功能号码\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
printf("请输入你想修改的姓名\n");
scanf("%s", name);
printf("1.只修改姓名\n");
       printf("\n");
printf("2.只修改性别\n");
printf("\n");
printf("3.只修改年龄\n");
       printf("\n");

            printf("4.只修改手机号码\n");
       printf("\n");
       printf("请输入你想选择的功能号码\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
printf("请输入姓名\n");
printf("\n");
scanf("%s", updatename);
sprintf(sql_update, "update stu set name = '%s' where name = '%s';", updatename, name);
ret = sqlite3_exec(db, sql_update, NULL, NULL, &errmsg);
       if(ret != SQLITE_OK)
       {
       perror("update11");
       exit(1);
       }
printf("操作成功\n");
       memset(name, 0, 20);
break;
}
case 2:
{
printf("请输入性别\n");
printf("\n");
scanf("%s", updatesex);
sprintf(sql_update, "update stu set sex = '%s' where name = '%s';", updatesex, name);
ret = sqlite3_exec(db, sql_update, NULL, NULL, &errmsg);
       if(ret != SQLITE_OK)
       {
       perror("update12");
       exit(1);
       }
printf("操作成功\n");
       memset(name, 0, 20);
break;
}
case 3:
{
printf("请输入年龄\n");
printf("\n");
scanf("%d", &updateage);
sprintf(sql_update, "update stu set age = %d where name = '%s';", updateage, name);
ret = sqlite3_exec(db, sql_update, NULL, NULL, &errmsg);
       if(ret != SQLITE_OK)
       {
       perror("update13");
       exit(1);
       }
printf("操作成功\n");
       memset(name, 0, 20);
break;
}
case 4:
{
printf("请输入电话号码\n");
printf("\n");
scanf("%d", updatephone);
sprintf(sql_update, "update stu set phonenumber = '%s' where name = '%s';", updatephone, name);
ret = sqlite3_exec(db, sql_update, NULL, NULL, &errmsg);
       if(ret != SQLITE_OK)
       {
       perror("update14");
       exit(1);
       }
printf("操作成功\n");
       memset(name, 0, 20);
break;
}
default: printf("请重新输入正确的操作指令\n");

}
break;
}
case 2:
{
printf("请输入你想修改的手机号码\n");
scanf("%s", phonenumber);
printf("1.只修改姓名\n");
       printf("\n");
printf("2.只修改性别\n");
printf("\n");
printf("3.只修改年龄\n");
       printf("\n");

            printf("4.只修改手机号码\n");
       printf("\n");
       printf("请输入你想选择的功能号码\n");
scanf("%d", &number);
switch(number)
{
case 1:
{
printf("请输入姓名\n");
scanf("%s", updatename);
sprintf(sql_update, "update stu set name = '%s' where phonenumber = '%s';", updatename, phonenumber);
ret = sqlite3_exec(db, sql_update, NULL, NULL, &errmsg);
       if(ret != SQLITE_OK)
       {
       perror("update21");
       exit(1);
       }
printf("操作成功\n");
       memset(phonenumber, 0, 20);
break;
}
case 2:
{
printf("请输入性别\n");
scanf("%s", updatesex);
sprintf(sql_update, "update stu set sex = '%s' where phonenumber = '%s';", updatesex, phonenumber);
ret = sqlite3_exec(db, sql_update, NULL, NULL, &errmsg);
       if(ret != SQLITE_OK)
       {
       perror("update22");
       exit(1);
       }
printf("操作成功\n");
       memset(phonenumber, 0, 20);
break;
}
case 3:
{
printf("请输入年龄\n");
scanf("%d", updateage);
sprintf(sql_update, "update stu set age = %d where phonenumber = '%s';", updateage, phonenumber);
ret = sqlite3_exec(db, sql_update, NULL, NULL, &errmsg);
       if(ret != SQLITE_OK)
       {
       perror("update23");
       exit(1);
       }
printf("操作成功\n");
       memset(phonenumber, 0, 20);
break;
}
case 4:
{
printf("请输入电话号码\n");
scanf("%d", updatephone);
sprintf(sql_update, "update stu set phonenumber = '%s' where phonenumber = '%s';", updatephone, phonenumber);
ret = sqlite3_exec(db, sql_update, NULL, NULL, &errmsg);
       if(ret != SQLITE_OK)
       {
       perror("update24");
       exit(1);
       }
printf("操作成功\n");
       memset(phonenumber, 0, 20);
break;
}

}
break;
}
default: printf("请重新输入正确的操作指令\n");
}

}

void query(sqlite3* db)

{
int ret, i, j;
char** result;
int row;
int column;
char *errmsg;
char sql_query[1024] = {0};
int number;
printf("1.根据姓名查询\n");
printf("\n");
printf("2.根据手机号码查询\n");
printf("\n");
printf("请输入你想选择的功能号码\n");
scanf("%d", &number);

    switch(number)
{
case 1:
{
printf("请输入姓名\n");
scanf("%s", name);
sprintf(sql_query, "select * from stu where name = '%s';", name);
ret = sqlite3_get_table(db, sql_query, &result, &row, &column, &errmsg);
if(ret != SQLITE_OK)
{
perror("query1");
exit(1);
}
for(i = 1; i <=  row; i++)
       {
       for(j = 0; j < column; j++)
       {
       printf("%s ", result[i*column + j]);
       }
       printf("\n");
       }
printf("操作成功\n");
memset(name, 0, 20);
break;
}
case 2:
{
printf("请输入手机号码\n");
scanf("%s", phonenumber);
sprintf(sql_query, "select * from stu where phonenumber = '%s';", phonenumber);
ret = sqlite3_get_table(db, sql_query, &result, &row, &column, &errmsg);
if(ret != SQLITE_OK)
{
perror("query2");
exit(1);
}
for(i = 1; i <=  row; i++)
       {
       for(j = 0; j < column; j++)
       {
       printf("%s ", result[i*column + j]);
       }
       printf("\n");
       }
printf("操作成功\n");
memset(phonenumber, 0, 20);
break;
}
default: printf("请重新输入正确的操作指令\n");
}

}

void showscreen(sqlite3* db)

{
int i, j, ret;
char* errmsg;
int row;
int column;
char** result;
char sql_select[] = "select * from stu;";
ret = sqlite3_get_table(db, sql_select, &result, &row, &column, &errmsg);

    if(ret != SQLITE_OK)

    {

        perror("showscreen");

        exit(1);

    }
for(i = 1; i <=  row; i++)
{
for(j = 0; j < column; j++)
{
printf("%s ", result[i*column + j]);
}
printf("\n");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: