/*
**************************************************************************
* File Name: 4.address_book.c
* Function : 1)
* 2)
* Author : Xubing
* Created Time: 2016年11月04日
**************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include <sqlite3.h>
#include <stdlib.h>
#define NAME_SIZE 20
#define PHONE_SIZE 15
static sqlite3 *db = NULL;
static char *errmsg = NULL;
struct node
{
char name[NAME_SIZE];
char phone[PHONE_SIZE];
struct node *next;
};
typedef struct node Node;
void create_table(sqlite3 *db);
void insert_record(sqlite3 *db);
int displaycb(void *para, int ncolumn, char ** columnvalue, char *columnname[]);
//void inquire_usecb(sqlite3 *db);
void Menu_Face();
void Menu();
void search_contact();
void contact_list();
void delete_contact();
void update_contact();
int main()
{
int ret;
ret = sqlite3_open("test.db", &db);
create_table(db);
while(1)
{
Menu();
#if 0
insert_record(db);
sqlite3_exec(db,"select * from addr_ablt",displaycb, NULL, &errmsg);
if(ret != SQLITE_OK)
{
printf("insert table error: %s\n", errmsg);
}
#endif
}
sqlite3_close(db);
return 0;
}
void Menu_Face()
{
printf(" ============================================================================\n");
printf(" | |\n");
printf(" | ADDRESS BOOK |\n");
printf(" | |\n");
printf(" ============================================================================\n");
printf(" * *\n");
printf(" * *\n");
printf(" * 1.Add new contact *\n");
printf(" * *\n");
printf(" * 2.Contact list *\n");
printf(" * *\n");
printf(" * 3.Search contact *\n");
printf(" * *\n");
printf(" * 4.Delete contact *\n");
printf(" * *\n");
printf(" * 5.Update contact *\n");
printf(" * *\n");
printf(" * 5.Exit *\n");
printf(" * *\n");
printf(" ============================================================================\n\n");
printf(" Please input order (1 - 6): ");
}
void Menu()
{
int ret;
int order;
system("clear");
Menu_Face();
scanf("%d", &order);
getchar();
switch(order)
{
case 1:
{
insert_record(db);
break;
}
case 2:
{
contact_list();
break;
}
case 3:
{
search_contact();
break;
}
case 4:
{
delete_contact();
break;
}
case 5:
{
update_contact();
break;
}
case 6:
{
printf("Exit success!\n");
exit(0);
break;
}
default:
{
printf("Please input right order!\n\n");
break;
}
}
}
void create_table(sqlite3 *db)
{
char *sql = NULL;
char *errmsg = NULL;
int ret;
sql = "create table if not exists addr_ablt ( name text, phone text)";
ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
if(ret != SQLITE_OK)
{
printf("create table error: %s\n", errmsg);
}
}
void insert_record(sqlite3 *db)
{
char sql[100];
char *errmsg = NULL;
char name[20];
char phone[15];
char flag;
int ret;
int isinput = 1;
system("clear");
printf("Insert contact\n");
while(isinput)
{
// system("clear");
printf("Please input name and phone:\n");
printf("name: ");
scanf("%s", name);
getchar();
printf("phone: ");
scanf("%s", phone);
getchar();
sprintf(sql, "insert into addr_ablt values('%s', '%s')", name, phone);
printf("Add success!\n");
printf("Continue or not(y / n):");
scanf("%c", &flag);
getchar();
if('y' == flag)
{
isinput = 1;
}
else if('n' == flag)
{
isinput = 0;
system("clear");
}
else
{
isinput = 1;
printf("Please input right choice\n");
}
}
ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
if(ret != SQLITE_OK)
{
printf("insert table error: %s\n", errmsg);
}
}
int displaycb(void *para, int ncolumn, char ** columnvalue, char *columnname[])
{
int i;
// printf("total column is %d\n", ncolumn);
for(i = 0; i < ncolumn; i++)
{
if(0 == i)
{
printf("%s : %s\t", columnname[i], columnvalue[i]);
}
else
{
printf("%s: %s\n", columnname[i], columnvalue[i]);
}
}
printf("-------------------------------------------\n");
return 0;
}
#if 0
void inquire_usecb(sqlite3 *db)
{
char *sql = NULL;
char *errmsg = NULL;
int ret;
sql = "select * from addr_ablt";
ret = sqlite3_exec(db, sql, displaycb, NULL, &errmsg);
if(ret != SQLITE_OK)
{
printf("select is error: %s\n", errmsg);
}
}
#endif
void search_contact()
{
char name[20];
char sql[100];
int ret;
system("clear");
printf("Search contact\n");
printf("name: ");
scanf("%s", name);
getchar();
sprintf(sql, "select *from addr_ablt where name='%s'", name);
ret = sqlite3_exec(db, sql, displaycb, NULL, &errmsg);
if(ret != SQLITE_OK)
{
printf("select is error: %s\n", errmsg);
}
printf("press any key to continue\n");
getchar();
}
void contact_list()
{
int ret;
system("clear");
printf("Contact list\n");
sqlite3_exec(db,"select *from addr_ablt",displaycb, NULL, &errmsg);
if(ret != SQLITE_OK)
{
printf("insert table error: %s\n", errmsg);
}
printf("Press any key to continue\n");
getchar();
}
void delete_contact()
{
char sql[100];
char name[20];
char running = 'y';
int ret;
system("clear");
printf("Delete name\n");
while('y' == running)
{
scanf("%s", name);
getchar();
sprintf(sql, "delete from addr_ablt where name='%s'", name);
ret = sqlite3_exec(db, sql, 0, 0, &errmsg);//删除
if(ret != SQLITE_OK)
{
printf("insert table error: %s\n", errmsg);
exit(1);
}
printf("Delete success!\n");
printf("Continue or not(y / n):");
scanf("%c", &running);
getchar();
if('y' == running)
{
running = 'y';
}
else if('n' == running)
{
running = 'n';
}
else
{
running = 'y';
printf("Please input right choice\n");
}
}
}
void update_contact()
{
char sql[100];
char name[20];
char phone[15];
char running = 'y';
int ret;
system("clear");
printf("Update contact\n");
while('y' == running)
{
printf("name: ");
scanf("%s", name);
getchar();
sprintf(sql, "select *from addr_ablt where name='%s'", name);
ret = sqlite3_exec(db, sql, displaycb, NULL, &errmsg);
if(ret != SQLITE_OK)
{
printf("select is error: %s\n", errmsg);
}
printf("new number:");
scanf("%s", phone);
getchar();
sprintf(sql, "update addr_ablt set phone='%s' where name='%s'", phone, name);
ret = sqlite3_exec(db, sql, 0, 0, &errmsg);//删除
if(ret != SQLITE_OK)
{
printf("insert table error: %s\n", errmsg);
exit(1);
}
printf("Update success!\n");
printf("Continue or not(y / n):");
scanf("%c", &running);
getchar();
if('y' == running)
{
running = 'y';
}
else if('n' == running)
{
running = 'n';
}
else
{
running = 'y';
printf("Please input right choice\n");
}
}
}
基于sqlite3的通讯录(c语言)
最新推荐文章于 2022-04-17 15:58:40 发布