- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <sqlite3.h>
- #define MAX_SIZE 1024
- static sqlite3 *db = NULL;
- static char *errmsg = NULL;
- int count = 0;
- int dis();
- void welcome()
- {
- printf("\t\t******************************************************\n");
- printf("\t\t* *\n");
- printf("\t\t* 欢迎使用通讯录 *\n");
- printf("\t\t*****************************************************\n");
- printf("\t\t* | *\n");
- printf("\t\t* (1)添加联系人 | (2)查找联系人 *\n");
- printf("\t\t* - - ---------------------- *\n");
- printf("\t\t* | *\n");
- printf("\t\t* (3)删除联系人 | (4)修改联系人 *\n");
- printf("\t\t* - - - - - - - - - - - - - - - - - *\n");
- printf("\t\t* | *\n");
- printf("\t\t* (5)查看联系人 | (6)退出 *\n");
- printf("\t\t******************************************************\n");
- printf("\n");
- printf("\n");
- }
-
- //---------add---------//
- void add()
- {
- char add;
- char quit_add;
- char name[MAX_SIZE];
- char phone[MAX_SIZE];
- char adds[MAX_SIZE];
- char sql[MAX_SIZE];
- while(1)
- {
- printf("按'a'添加联系人\n");
- printf("按'q'退出\n");
- scanf("%s",&add);
- while(('a' != add)&&('q' != add))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&add);
- }
- if('q' == add)
- {
- system("clear");
- break;
- }
- if('a' == add)
- {
- printf("输入姓名:\n");
- scanf("%s",name);
- printf("输入手机号码:\n");
- scanf("%s",phone);
- printf("输入地址:\n");
- scanf("%s",adds);
- if(sprintf(sql,"insert into tel(姓名,号码,地址) values('%s','%s','%s')",name,phone,adds) == -1)
- {
- printf("添加失败!\n");
- exit(1);
- }
- if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != 0)
- {
- printf("添加失败!\n");
- exit(1);
- }
- memset(sql,0,MAX_SIZE);
- memset(name,0,MAX_SIZE);
- memset(phone,0,MAX_SIZE);
- memset(adds,0,MAX_SIZE);
- printf("添加成功!\n");
- printf("是否继续添加联系人?(y)or(n):");
- scanf("%s",&quit_add);
- while(('y' != quit_add) && ('n' != quit_add))
- {
- printf("信息输入错误,请重新输入!\n");
- scanf("%s",&quit_add);
- }
- if('n' == quit_add)
- {
- system("clear");
- break;
- }
- if('y' == quit_add)
- {
- system("clear");
- }
- }
- }
- }
- //----------end--------------//
-
- //----------delete----------//
- void delete()
- {
- int id;
- char src1;
- char src2;
- char src3;
- char flag;
- char sql[MAX_SIZE];
- char name[MAX_SIZE];
- while(1)
- {
- strcpy(sql,"select * from tel");
- sqlite3_exec(db,sql,dis,NULL,&errmsg);
- memset(sql,0,MAX_SIZE);
- printf("按'n'姓名删除\n");
- printf("按'i'ID删除\n");
- printf("按'q'退出\n");
- scanf("%s",&src1);
- while(('n' != src1)&&('q' != src1)&&('i' != src1))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&src1);
- }
- if('q' == src1)
- {
- system("clear");
- break;
- }
- if('n' == src1)
- {
- printf("请输入要删除联系人的姓名:");
- scanf("%s",name);
- system("clear");
- if(sprintf(sql,"select * from tel where 姓名='%s'",name) ==-1)
- {
- printf("删除失败!\n");
- exit(1);
- }
- if(sqlite3_exec(db,sql,dis,NULL,&errmsg) != 0)
- {
- printf("删除失败!\n");
- exit(1);
- }
- memset(sql,0,MAX_SIZE);
- printf("是否删除该联系人?(y)or(n)");
- scanf("%s",&src2);
- while(('y' != src2)&&('n' != src2))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&src2);
- }
- if('y' == src2)
- {
- if(sprintf(sql,"delete from tel where 姓名='%s'",name) == -1)
- {
- printf("删除失败!\n");
- exit(1);
- }
- if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != 0)
- {
- printf("删除失败!\n");
- exit(1);
- }
- printf("删除成功!\n");
- sleep(1);
- memset(sql,0,MAX_SIZE);
- memset(name,0,MAX_SIZE);
- system("clear");
- }
- if('n' == src2)
- {
- system("clear");
- }
- }
- if('i' == src1)
- {
- printf("请输入想删除联系人的ID:");
- scanf("%d",&id);
- system("clear");
- if(sprintf(sql,"select * from tel where ID=%d",id) == -1)
- {
- printf("删除失败!\n");
- exit(1);
- }
- if(sqlite3_exec(db,sql,dis,NULL,&errmsg) != 0)
- {
- printf("删除失败!\n");
- exit(1);
- }
- memset(sql,0,MAX_SIZE);
- printf("是否删除该联系人?(y)or(n)");
- scanf("%s",&src3);
- while(('y' != src3)&&('n' != src3))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&src3);
- }
- if('y'== src3)
- {
- if(sprintf(sql,"delete from tel where ID=%d",id) == -1)
- {
- printf("删除失败!\n");
- exit(1);
- }
- if(sqlite3_exec(db,sql,NULL,NULL,&errmsg) != 0)
- {
- printf("删除失败!\n");
- exit(1);
- }
- printf("删除成功!\n");
- system("clear");
- memset(sql,0,MAX_SIZE);
- }
- if('n' == src3)
- {
- system("clear");
- }
- }
- }
- }
- //------------end-------------//
- //------------find------------//
- void find()
- {
- char find;
- char quit_find;
- char sql[MAX_SIZE];
- char name[MAX_SIZE];
- char **result = NULL;
- int nrow;
- int column;
- int count;
- while(1)
- {
- getchar();
- printf("按'n'查找\n");
- printf("按'q'退出\n");
- scanf("%s",&find);
- while(('n' != find)&&('q' != find))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&find);
- }
- if('q' == find)
- {
- system("clear");
- break;
- }
- if('n' == find)
- {
- printf("请输入姓名:");
- scanf("%s",name);
- strcpy(sql,"select * from tel");
- if(sqlite3_get_table(db,sql,&result,&nrow,&column,&errmsg) != 0)
- {
- printf("查找失败!\n");
- exit(1);
- }
- if(nrow == 0)
- {
- printf("找不到联系人!\n");
- }
- for(count = 0; count < (nrow + 1)*column; count++)
- {
- if(strcmp(name,result[count]) == 0)
- {
- printf("ID:\t\t");
- printf("%s\n",result[count - 1]);
- printf("姓名:\t\t");
- printf("%s\n",result[count]);
- printf("号码\t\t");
- printf("%s\n",result[count + 1]);
- printf("地址:\t\t");
- printf("%s\n",result[count + 2]);
- printf("=======================");
- printf("\n");
- }
- }
- memset(sql,0,MAX_SIZE);
- memset(name,0,MAX_SIZE);
- sqlite3_free_table(result);
- result = NULL;
- printf("是否退出查看?(y)or(n)");
- scanf("%s",&quit_find);
- while(('y' != quit_find)&&('n' != quit_find))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&quit_find);
- }
- if('y' == quit_find)
- {
- system("clear");
- break;
- }
- system("clear");
- }
- }
- }
- //-------------end-------------//
- //------------alter------------//
- void alter()
- {
- int ID;
- char alter;
- char quit_alter;
- char sql[MAX_SIZE];
- char name_al[MAX_SIZE];
- char name[MAX_SIZE];
- char phone[MAX_SIZE];
- char adds[MAX_SIZE];
- while(1)
- {
- strcpy(sql,"select * from tel");
- if(sqlite3_exec(db,sql,dis,NULL,&errmsg) != 0)
- {
- printf("修改联系人失败!\n");
- exit(1);
- }
- memset(sql,0,MAX_SIZE);
- printf("(n)姓名修改\n");
- printf("(i)ID修改\n");
- printf("(q)退出\n");
- printf("输入选项:");
- scanf("%s",&alter);
- while(('n' != alter)&&('q' != alter)&&('i' != alter))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&alter);
- }
- if('q' == alter)
- {
- system("clear");
- break;
- }
- if('n' == alter)
- {
- printf("请输入要修改联系人的姓名");
- scanf("%s",name_al);
- system("clear");
- printf("输入姓名:\n");
- scanf("%s",name);
- printf("输入手机号码:\n");
- scanf("%s",phone);
- printf("输入地址:\n");
- scanf("%s",adds);
- sprintf(sql,"update tel set 姓名='%s',号码='%s',地址='%s' where 姓名='%s'",name,phone,adds,name_al);
- sqlite3_exec(db,sql,NULL,NULL,&errmsg);
- memset(sql,0,MAX_SIZE);
- memset(name_al,0,MAX_SIZE);
- memset(name,0,MAX_SIZE);
- memset(phone,0,MAX_SIZE);
- memset(adds,0,MAX_SIZE);
- printf("修改成功\n");
- }
- if('i' == alter)
- {
- printf("请输入要修改联系人的ID:");
- scanf("%d",&ID);
- system("clear");
- printf("输入姓名:\n");
- scanf("%s",name);
- printf("输入手机号码:\n");
- scanf("%s",phone);
- printf("输入地址:\n");
- scanf("%s",adds);
- sprintf(sql,"update tel set 姓名='%s',号码='%s',地址='%s' where ID=%d",name,phone,adds,ID);
- sqlite3_exec(db,sql,NULL,NULL,&errmsg);
- memset(sql,0,MAX_SIZE);
- memset(name,0,MAX_SIZE);
- memset(phone,0,MAX_SIZE);
- memset(adds,0,MAX_SIZE);
- printf("修改成功!\n");
- }
- printf("是否退出?(y)or(n)");
- scanf("%s",&quit_alter);
- while(('y' != quit_alter)&&('n' != quit_alter))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&quit_alter);
- }
- if('y' == quit_alter)
- {
- system("clear");
- break;
- }
- if('n' == quit_alter)
- {
- system("clear");
- }
- }
- }
- //------------end----------------//
- //-------------display------------//
- int dis(void *para,int column,char **columnvalue,char *columnname[])
- {
- int i;
- for(i = 0; i < column; i++)
- {
- printf("%s:\t\t%s\n",columnname[i],columnvalue[i]);
- }
- printf("====================");
- printf("\n");
- return 0;
- }
- void display()
- {
- char quit_dis;
- char sql[MAX_SIZE];
- char **Result = NULL;
- int Row;
- int Column;
- while(1)
- {
- strcpy(sql,"select * from tel");
- if(sqlite3_get_table(db,sql,&Result,&Row,&Column,&errmsg) != 0)
- {
- printf("查找失败!\n");
- exit(1);
- }
- if(Row == 0)
- {
- printf("无联系人!\n");
- sleep(1);
- system("clear");
- memset(sql,0,MAX_SIZE);
- sqlite3_free_table(Result);
- Result = NULL;
- return;
- }
- else
- {
- memset(sql,0,MAX_SIZE);
- Result = NULL;
- strcpy(sql,"select * from tel order by 姓名");
- if(sqlite3_exec(db,sql,dis,NULL,&errmsg) != 0)
- {
- printf("查看联系人失败!\n");
- exit(1);
- }
- memset(sql,0,MAX_SIZE);
- printf("是否退出查看?(y)or(n)");
- scanf("%s",&quit_dis);
- while(('y' != quit_dis)&&('n' != quit_dis))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&quit_dis);
- }
- if('y' == quit_dis)
- {
- system("clear");
- break;
- }
- if('n' == quit_dis)
- {
- system("clear");
- }
- }
- }
- }
- //-------------end-------------//
- //-----------order-------------//
- void order()
- {
- char odr;
- while(1)
- {
- printf("请输入您的选项:");
- scanf("%s",&odr);
- while(('1' != odr)&&('2' != odr)&&('3' != odr)&&('4' != odr)&&('5' != odr)&&('6' != odr))
- {
- printf("输入信息错误,请重新输入!\n");
- scanf("%s",&odr);
- }
- switch(odr)
- {
- case '1':
- {
- system("clear");
- add();
- break;
- }
- case '2':
- {
- system("clear");
- find();
- break;
- }
- case '3':
- {
- system("clear");
- delete();
- break;
- }
- case '4':
- {
- system("clear");
- alter();
- break;
- }
- case '5':
- {
- system("clear");
- display();
- break;
- }
- case '6':
- {
- system("clear");
- sqlite3_exec(db,".exit",NULL,NULL,&errmsg);
- exit(0);
- }
- default:
- {
- break;
- }
- }
- welcome();
- }
- }
- //------------end-------------//
- //-------create table---------//
- int table()
- {
- if(sqlite3_exec(db,"create table tel(ID integer primary key,姓名 text,号码 text,地址 text)",NULL,NULL,&errmsg) == 0)
- {
- printf("关系创建成功\n");
- sleep(1);
- system("clear");
- return 0;
- }
- else
- {
- return -1;
- }
- }
- int main()
- {
- if(sqlite3_open("tel.db",&db) != 0)
- {
- printf("创建数据库失败!\n");
- exit(1);
- }
- table();
- welcome();
- order();
- }
简单数据库编写的简易通讯录
最新推荐文章于 2022-09-24 15:14:34 发布