数据库通信录

#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;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值