通讯录,数据库版,

#include <stdio.h>  
#include <sqlite3.h>  
#include <stdlib.h>  
#include <string.h>  
#define N 1024  
  
void menu();
int create_table(sqlite3 *db);
int delete_record(sqlite3 *db);
int update_record(sqlite3 *db);
int insert_record(sqlite3 *db);
int search_record(sqlite3 *db);
int list_nocb(sqlite3 *db);
int is_empty(sqlite3 * db);
void switch_menu(sqlite3 *db);


 


int main()
{
sqlite3 * db = NULL;  
    int ret;  
      
    ret = sqlite3_open("mydatabase.db",&db);  
    if(ret != SQLITE_OK)  
    {  
        perror("sqlite open");  
        exit(1);  
    }  
      
    system("clear");  
    create_table(db); 
    
int menu_i;
while(1)
{
menu();
printf("\t\t请输入您选择的编号:");
scanf("%d",&menu_i);
switch(menu_i)
{
case 1: insert_record(db);
system("clear");
break;

case 2: search_record(db);
getchar();
getchar();
system("clear");
break;

case 3: delete_record(db);
system("clear");
break;

case 4: update_record(db);
system("clear");
break;

case 5: list_nocb(db);
getchar();
getchar();
system("clear");
break;

case 0: printf("\n\t谢谢使用,欢迎再次使用!\n"); 
exit(0);
break;

default :printf("\t\t输入有误!请输入正确的编号:");
scanf("%d",&menu_i);
        continue;
}
}

return 0;
}


void menu()  
{  
    printf("\t**************************************************\n\n");
printf("\t************欢迎使用冰羽通讯录系统****************\n\n");
printf("\t  1、添加联系人              2、查找联系人\n\n");
printf("\t  3、删除联系人              4、修改联系人\n\n");
printf("\t  5、联系人列表              0、退出\n\n");
printf("\t**************************************************\n\n");
}  
  
int create_table(sqlite3 *db)  
{  
    char *errmsg = NULL;  
    char *sql;  
  
    sql = "create table if not exists student(id integer ,name text,tel text);";  
    if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
    {  
        printf("创建失败:%s\n",errmsg);  
        exit(-1);  
    }  
}  
  
int delete_record(sqlite3 *db)  
{  
    char *errmsg = NULL;  
    char sql[N] ; 
int id; 
  
    printf("请输入您想删除的联系人的id:");  
    scanf("%d",&id);  
  
    sprintf(sql,"delete from student where id = %d;",id);  
  
    if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
    {  
        printf("删除失败: %s\n",errmsg);  
        exit(-1);  
    }  
    printf("删除成功!\n");
    getchar();
    getchar();
}  
  
int update_record(sqlite3 *db)  
{  
    char *errmsg = NULL;  
    char sql[N];  
    int id;  
    int new_id;  
    int i;  
    char new_name[N];  
    char new_tel[N];  
  
    printf("请输入您想修改的联系人的id:");  
    scanf("%d",&id);  
    printf("\t\t***************************************************\n\n");
printf("\t\t****************修    改    菜    单***************\n\n");
printf("\t\t     1、修改该联系人人id      2、修改该联系人姓名\n\n");
printf("\t\t     3、修改该联系人号码      0、返回上一页\n\n");
printf("\t请选择:");
      
    scanf("%d",&i);  
    switch(i)  
    {  
        case 1:  
            {     
                printf("请输入修改后的id:"); 
                scanf("%d",&new_id);  
                sprintf(sql,"update student set id = %d where id = %d;",new_id,id);  
            }  
            break;  
        case 2:  
            {  
                printf("请输入修改后姓名:");
                scanf("%s",new_name);  
                sprintf(sql,"update student set name = '%s' where id = %d;",new_name,id);  
            }  
            break;  
        case 3:  
            {  
                printf("请输入修改后的电话:");  
                getchar();  
                scanf("%s",new_tel);  
                sprintf(sql,"update student set tel = '%s' where id = %d;",new_tel,id);  
            }  
            break; 
case 0:break; 
        default:  
            {  
                printf("输入有误,请重新输入!\n");  
                update_record(db);  
            }  
    }  
    if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
    {  
        printf("操作失败: %s\n",errmsg);  
        exit(-1);  
    }  
    printf("修改成功!\n");
getchar();
getchar(); 
}  
  
int insert_record(sqlite3 *db)  
{  
    char *errmsg = NULL;  
    char sql[N];  
    char name[N];  
    char tel[N];  
    int id;  
    int i,n;  
      
    printf("请输入联系人的id,姓名,联系方式:\n");  
    scanf("%d %s %s",&id,name,tel);  
    sprintf(sql,"insert into student (id,name,tel) values(%d,'%s','%s');",id,name,tel);  
      
    if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))  
    {  
        printf("插入失败:%s\n",errmsg);  
    }  
    printf("添加成功!\n");
    getchar();
    getchar();
}  
  
int search_record(sqlite3 *db)  
{  
    int i;  
    int id_tmp;
    int nrow,ncolumn;  
    char **azresult;  
    char sql[N];  
    char *errmsg;   
  
    printf("请输入您想查找的联系人的id:");  
    scanf("%d",&id_tmp);  
  
    sprintf(sql,"select id,name,tel from student where id = %d;",id_tmp);  
  
    if(SQLITE_OK != sqlite3_get_table(db,sql,&azresult,&nrow,&ncolumn,&errmsg))  
    {  
        printf("查找失败:%s\n",errmsg);  
    }  
  
    for(i = 0;i < (nrow+1)*ncolumn;i++)  
    {  
        printf("%-10s",azresult[i]);  
  
        if((i+1)%ncolumn == 0)  
        {  
            printf("\n");  
        }  
    }  
    sqlite3_free_table(azresult);  
}  
  
int list_nocb(sqlite3 *db)  
{  
    int i;  
    int nrow,ncolumn;  
    char **azresult;  
    char *sql;  
    char *errmsg;  
  
    sql = "select * from student;";  
  
    if(SQLITE_OK != sqlite3_get_table(db,sql,&azresult,&nrow,&ncolumn,&errmsg))  
    {  
        printf("列表失败:%s\n",errmsg);  
    }  
  
    for(i = 0;i < (nrow+1)*ncolumn;i++)  
    {  
        printf("%-10s",azresult[i]);  
  
        if((i+1)%3 == 0)  
        {  
            printf("\n");  
        }  
    }  
    sqlite3_free_table(azresult);  
}  
  


  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值