#include <stdio.h>
#include <sqlite3.h>
#include <stdlib.h>
/*******************************
函数声明************
*******************************/
void interface();
void select_menu(sqlite3 *db);
void create_table(sqlite3 *db);
void insert_record(sqlite3 *db);
void inquire_usecb(sqlite3 *db);
void delete_record(sqlite3 *db);
void display_table(sqlite3 *db);
void update_record(sqlite3 *db);
void exit_table(sqlite3 *db);
int displaycb(void *para,int n_col,char **col_value,char **col_name);
/*******************************
主函数*************
********************************/
int main()
{
sqlite3 *db = NULL;
int ret;
ret = sqlite3_open("txldatabase.db",&db);
create_table(db);
printf("\n");
if(ret != SQLITE_OK)
{
perror("进入通信录错误,请重试~\n");
exit(-1);
}
else
{
printf("正在进入通信录,请稍等~\n");
}
printf("\n");
select_menu(db);
return 0;
}
/**************************************
创建表格***************
**************************************/
void create_table(sqlite3 *db)
{
char *errmsg = NULL;
char *sql = NULL;
/* sql = "create table if not exists mytable (id text primary key,name text,sex text,tel text,addr text);";*/
sql = "create table if not exists mytable (id text primary key,name text,sex text,tel text,addr text);";
if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
{
printf("create error:%s\n",errmsg);
exit(-1);
}
}
/**************************************
主界面****************
***************************************/
void interface()
{
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("\n");
printf("/*************************/\n");
}
/*************************************
目录选择***************
***************************************/
void select_menu(sqlite3 *db)
{
int n;
while(1)
{
interface();
printf("请输入要选择的序号:");
scanf("%d",&n);
switch(n)
{
case 1:
printf("***************\n");
printf("1.添加联系人\n");
printf("***************\n");
insert_record(db);
break;
case 2:
printf("***************\n");
printf("2.查找联系人\n");
printf("***************\n");
inquire_usecb(db);
break;
case 3:
printf("***************\n");
printf("3.删除联系人\n");
printf("***************\n");
delete_record(db);
break;
case 4:
printf("***************\n");
printf("4.查看所有联系人\n");
printf("***************\n");
display_table(db);
break;
case 5:
printf("***************\n");
printf("5.修改联系人信息\n");
printf("***************\n");
update_record(db);
break;
case 6:
printf("***************\n");
printf("6.退出通信录\n");
printf("***************\n");
exit_table(db);
return;
}
}
}
/*****************************
插入联系人**********
******************************/
void insert_record(sqlite3 *db)
{
char *errmsg = NULL;
char sql[1024];
char id[10];
char name[20];
char sex[3];
char tel[13];
char addr[100];
printf("\n");
printf("=====================\n");
printf("请输入联系人序号:");
scanf(" %s",id);
printf("请输入联系人姓名:");
scanf(" %s",name);
printf("请输入联系人性别:");
scanf(" %s",sex);
printf("请输入联系人电话:");
scanf(" %s",tel);
printf("请输入联系人地址:");
scanf(" %s",addr);
printf("=====================\n");
printf("\n");
sprintf(sql,"insert into mytable (id,name,sex,tel,addr) values ('%s','%s','%s','%s','%s');",id,name,sex,tel,addr);
if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
{
printf("insert error:%s\n",errmsg);
exit(-1);
}
}
/********************************
查找联系人***********
********************************/
void inquire_usecb(sqlite3 *db)
{
char *errmsg = NULL;
char sql[1024];
int fs;
char id[10];
char name[20];
printf("*************************\n");
printf("请选择查询方式:\n");
printf("1.序号查询\n");
printf("2.姓名查询\n");
printf("*************************\n");
printf("\n");
printf("请输入选择序号:");
scanf("%d",&fs);
if(fs == 2)
{
printf("请输入姓名:");
scanf("%s",name);
sprintf(sql,"select * from mytable where name = '%s';",name);
if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
{
printf("use callback error:%s\n",errmsg);
exit(-1);
}
}
else if(fs == 1)
{
printf("请输入查找的序号:");
scanf("%s",id);
sprintf(sql,"select * from mytable where id = '%s';",id);
if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
{
printf("find use callback error:%s\n",errmsg);
exit(-1);
}
}
else printf("输入错误!\n");
printf("\n");
printf("\n");
}
int displaycb(void *para,int n_col,char **col_value,char **col_name)
{
int i;
printf("======================\n");
for(i = 0;i < n_col;i++)
{
printf("%s:%s\n",col_name[i],col_value[i]);
}
printf("======================\n");
return 0;
}
/*********************************
删除联系人************
*********************************/
void delete_record(sqlite3 *db)
{
char *errmsg = NULL;
char sql[1024];
int fs;
char id[10];
char name[20];
char flag[1];
printf("*************************\n");
printf("请选择查询方式:\n");
printf("1.序号查询\n");
printf("2.姓名查询\n");
printf("*************************\n");
printf("\n");
printf("请输入选择序号:");
scanf("%d",&fs);
if(fs == 2)
{
printf("请输入姓名:");
scanf("%s",name);
sprintf(sql,"select * from mytable where name = '%s';",name);
if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
{
printf("delete use callback error:%s\n",errmsg);
exit(-1);
}
printf("是否真的要删除此联系人?(y/n)");
scanf("%s",flag);
if(strcmp(flag,"y") == 0)
{
sprintf(sql,"delete from mytable where name = '%s';",name);
if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
{
printf("delete error:%s\n",errmsg);
exit(-1);
}
}
}
else if(fs == 1)
{
printf("请输入查找的序号:");
scanf("%s",id);
sprintf(sql,"select * from mytable where id = '%s';",id);
if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
{
printf("delete use callback error:%s\n",errmsg);
exit(-1);
}
printf("是否真的要删除此联系人?(y/n)");
scanf("%s",flag);
if(strcmp(flag,"y") == 0)
{
sprintf(sql,"delete from mytable where id = '%s';",id);
if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
{
printf("delete error:%s\n",errmsg);
exit(-1);
}
}
}
else printf("输入错误!\n");
printf("\n");
printf("已经删除联系人!\n");
printf("\n");
}
/***********************************
查看所有联系人***********
***********************************/
void display_table(sqlite3 *db)
{
int nrow,ncolumn;
char **azresult;
char *errmsg = NULL;
char *sql;
int i;
sql = "select * from mytable;";
if(SQLITE_OK != sqlite3_get_table(db,sql,&azresult,&nrow,&ncolumn,&errmsg))
{
printf("dispaly error:%s\n",errmsg);
exit(-1);
}
printf("一共有%d位联系人\n",nrow);
printf("联系人的信息分别如下:\n");
printf("\n");
for(i = 0;i < (nrow + 1) * ncolumn;i++)
{
printf("%15s",azresult[i]);
if((i + 1) % ncolumn == 0)
{
printf("\n");
}
}
sqlite3_free_table(azresult);
printf("\n");
}
/***********************************
修改联系人信息***********
************************************/
void update_record(sqlite3 *db)
{
char *errmsg = NULL;
char sql[1024];
int fs;
char id[10];
char name[20];
char flag[1];
char sex[3];
char addr[100];
char tel[13];
printf("*************************\n");
printf("请选择查询方式:\n");
printf("1.序号查询\n");
printf("2.姓名查询\n");
printf("*************************\n");
printf("\n");
printf("请输入选择序号:");
scanf("%d",&fs);
if(fs == 2)
{
printf("请输入姓名:");
scanf("%s",name);
sprintf(sql,"select * from mytable where name = '%s';",name);
if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
{
printf("update use callback error:%s\n",errmsg);
exit(-1);
}
printf("是否真的要删除此联系人?(y/n)");
scanf("%s",flag);
if(strcmp(flag,"y") == 0)
{
sprintf(sql,"delete from mytable where name = '%s';",name);
if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
{
printf("update_delete error:%s\n",errmsg);
exit(-1);
}
printf("\n");
printf("请输入联系人序号:");
scanf("%s",id);
printf("请输入联系人姓名:");
scanf("%s",name);
printf("请输入联系人性别:");
scanf("%s",sex);
printf("请输入联系人电话:");
scanf("%s",tel);
printf("请输入联系人地址:");
scanf("%s",addr);
printf("\n");
sprintf(sql,"insert into mytable (id,name,sex,tel,addr) values ('%s','%s','%s','%s','%s');",id,name,sex,tel,addr);
if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
{
printf("update_insert error:%s",&errmsg);
exit(-1);
}
}
}
else if(fs == 1)
{
printf("请输入查找的序号:");
scanf("%s",id);
sprintf(sql,"select * from mytable where id = '%s';",id);
if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
{
printf("update use callback error:%s\n",errmsg);
exit(-1);
}
printf("是否真的要修改此联系人?(y/n)");
scanf("%s",flag);
if(strcmp(flag,"y") == 0)
{
sprintf(sql,"delete from mytable where id = '%s';",id);
if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
{
printf("updata_delete error:%s\n",errmsg);
exit(-1);
}
printf("\n");
printf("请输入联系人序号:");
scanf("%s",id);
printf("请输入联系人姓名:");
scanf("%s",name);
printf("请输入联系人性别:");
scanf("%s",sex);
printf("请输入联系人电话:");
scanf("%s",tel);
printf("请输入联系人地址:");
scanf("%s",addr);
printf("\n");
sprintf(sql,"insert into mytable (id,name,sex,tel,addr) values ('%s','%s','%s','%s','%s');",id,name,sex,tel,addr);
if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
{
printf("update error:%s",&errmsg);
exit(-1);
}
}
}
else printf("输入错误!\n");
printf("\n");
printf("修改成功!\n");
printf("\n");
}
/*************************************
退出通信录**************
**************************************/
void exit_table(sqlite3 *db)
{
printf("/*********************/\n");
printf("\n");
printf("\n");
printf(" 感 谢 您的 使 用 ^_^ \n");
printf("\n");
printf("\n");
printf("/*********************/\n");
printf("\n");
printf("\n");
exit;
}
数据库通信录
最新推荐文章于 2024-03-11 10:56:17 发布