sqlite3 编写简易通讯录
来源:互联网 发布:文学名著阅读软件 编辑:程序博客网 时间:2024/06/07 01:15
以下贴出的是我用sqlite3写的简易通讯录,注意编译时链接上sqlite3库,若有什么错误望大牛指正
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sqlite3.h>#define MAX_SIZE 1024static 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();}
0 0
- sqlite3 编写简易通讯录
- 完成 简易通讯录 的编写
- C语言编写简易通讯录
- 简单数据库编写的简易通讯录
- c++:vector类编写简易通讯录
- c++利用STL编写简易通讯录
- iOS开发-------Sqlite3实现本地存储简易通讯录
- 简易通讯录
- 简易通讯录
- 简易通讯录
- 简易通讯录
- 简易通讯录
- 简易通讯录
- 简易通讯录
- 简易通讯录
- sqlite3数据库之通讯录
- 通讯录(sqlite3 version)
- sqlite3 命令行简易教程
- 编程必了解的概念HTML、XML、XHTML、DHTML,WEB前端工程师须知
- php操作数据库的类
- 2016最新微信公众号运营必备网址大全
- 第三阶段-JavaScript模块化
- Linux下实现 MASM汇编
- sqlite3 编写简易通讯录
- Head first HTML&CSS ---[学习笔记第四章]
- 嵌入式系统(摘抄)
- Vivado Auto Assign Address error
- 抽象类(abstract)
- 51nod 最长单增子序列 dp+(STL函数)二分
- Xcode-通过ApplicationLoader上传Api问题总结(二)
- [HDU 5956] The Elder (斜率DP + 可持久化单调队列)
- /usr/share/nginx/sbin/nginx