通讯录3.0版本
一、序言
二、功能
三、代码
1、主函数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>
#include"address_list.h"
int main(){
sqlite3 * pdb;
int ret;
ret = sqlite3_open("database.db",&pdb);
if(ret != SQLITE_OK){
printf("open database fail! %s\n",sqlite3_errmsg(pdb));
exit(0);
}
else{
printf("open database success!\n");
}
if(create_table(pdb) == SQLITE_OK){
printf("create or open table success!\n");
}
else{
printf("create or open table fail!\n");
sqlite3_close(pdb);
return 0;
}
welcome();
while(1){
int num;
printf("请输入你的选择:\n");
scanf("%d",&num);
switch(num){
case 1:
if(insert_record(pdb) != SQLITE_OK){
sqlite3_close(pdb);
exit(-1);
}
break;
case 2:
if(inquire_nocb(pdb) == SQLITE_OK){
printf("inquire success\n");
}
else{
printf("inquire fail!\n");
}
break;
case 3:
find_record(pdb);
break;
case 4:
delete_record(pdb);
break;
case 5:
update_data(pdb);
break;
case 6:
sqlite3_close(pdb);
printf("退出成功\n");
exit(0);
}
}
return 0;
}
2、函数声明
#ifndef address_list
#define address_list
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>
void welcome();
int create_table(sqlite3 *pdb);
int insert_record(sqlite3 *pdb);
int inquire_nocb(sqlite3 *pdb);
int find_record(sqlite3 *pdb);
int delete_record(sqlite3 *pdb);
int update_data(sqlite3 *pdb);
#endif
3、功能函数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sqlite3.h>
#include"address_list.h"
void welcome(){
printf("*************************************************************************\n");
printf("**************** *****************\n");
printf("**************** 编程从通讯录开始 *****************\n");
printf("**************** *****************\n");
printf("*************************************************************************\n");
printf("\n");
printf("**************** what can I do for you ,sir *****************\n");
printf("\n");
printf("****** 1 Add Information! 2 Display List! ******\n");
printf("****** 3 Information Find! 4 Delete Information ******\n");
printf("****** 5 Alter Information! 6 Exit! ******\n");
printf("****** 7 敬请期待 ******\n");
printf("*************************************************************************\n");
}
int create_table(sqlite3 *pdb){
char * sql = NULL;
char *errmsg = NULL;
int ret;
sql = "create table if not exists mytable (id int primary key,name text,tel text);";
ret = sqlite3_exec(pdb,sql,NULL,NULL,&errmsg);
if(SQLITE_OK != ret){
printf("create table fail! %s\n",errmsg);
return -1;
}
else{
return SQLITE_OK;
}
}
int insert_record(sqlite3 *pdb){
char sql[100];
char * errmsg = NULL;
int ret;
int id;
char name[20];
char tel[20];
printf("请输入你想增加的成员id: 姓名: 电话号码:\n");
scanf("%d %s %s",&id,name,tel);
sprintf(sql,"insert into mytable (id,name,tel) values (%d,'%s','%s');",id,name,tel);
ret = sqlite3_exec(pdb,sql,NULL,NULL,&errmsg);
if(ret == SQLITE_OK){
printf("insert record success\n");
return SQLITE_OK;
}
else{
printf("insert record fail! %s\n",errmsg);
return -1;
}
}
int inquire_nocb(sqlite3 * pdb){
char * sql = NULL;
char * errmsg = NULL;
char **ret_val = NULL;
int nrow;
int ncol;
int ret;
int i;
sql = "select * from mytable;";
ret = sqlite3_get_table(pdb,sql,&ret_val,&nrow,&ncol,&errmsg);
if(ret == SQLITE_OK){
printf("nrow = %d,ncol = %d\n",nrow,ncol);
for(i = 0; i < (nrow + 1) * ncol;i++){
printf("%-15s",ret_val[i]);
if((i + 1) % ncol == 0){
printf("\n");
}
}
}
else{
sqlite3_free_table(ret_val);
return -1;
}
sqlite3_free_table(ret_val);
}
int find_record(sqlite3 *pdb){
char sql[100];
char * errmsg = NULL;
char ** ret_val = NULL;
char name[20];
int nrow;
int ncol;
int ret;
int i;
printf("please input you want to find name:\n");
scanf("%s",name);
sprintf(sql,"select * from mytable where name = '%s';",name);
ret = sqlite3_get_table(pdb,sql,&ret_val,&nrow,&ncol,&errmsg);
if(ret == SQLITE_OK){
printf("nrow = %d,ncol = %d\n",nrow,ncol);
for(i = 0;i < (nrow + 1) * ncol;i++){
printf("%-15s",ret_val[i]);
if((i+1) % ncol == 0){
printf("\n");
}
}
return SQLITE_OK;
}
else{
printf("find fail! %s\n",errmsg);
return -1;
}
}
int delete_record(sqlite3 * pdb){
char sql[100];
char * errmsg = NULL;
int ret;
char name[20];
printf("请输入你想删除人的姓名:\n");
scanf("%s",name);
sprintf(sql,"delete from mytable where name = '%s';",name);
ret = sqlite3_exec(pdb,sql,NULL,NULL,&errmsg);
if(ret == SQLITE_OK){
printf("delete success!\n");
return SQLITE_OK;
}
else{
printf("delete fail! %s\n",errmsg);
return -1;
}
}
int update_data(sqlite3 * pdb){
char sql[100];
char * errmsg = NULL;
int ret;
char name[20];
char rename[20];
int id;
char tel[20];
int num;
printf("请输入你想修改人的姓名:\n");
scanf("%s",name);
printf("请输入你想更改的信息:\n");
printf("1----id\n");
printf("2----name\n");
printf("3----tel\n");
scanf("%d",&num);
switch(num){
case 1:
printf("更改id的功能在维护\n");
break;
case 2:
printf("请输入你想更改的名字:\n");
scanf("%s",rename);
sprintf(sql,"update mytable set name='%s' where name='%s';",rename,name);
ret = sqlite3_exec(pdb,sql,NULL,NULL,&errmsg);
if(ret == SQLITE_OK){
printf("update message success!\n");
return SQLITE_OK;
}
else{
printf("updata message fail! %s\n",errmsg);
return -1;
}
break;
case 3:
printf("更改电话号码功能维护中\n");
break;
}
}