网编_HW_9.15
1.地球球长选举之投票人信息管理系统
#include <myhead.h>#define DUBFLAG 0//定义增加投票人信息函数
int do_add(sqlite3 *Dipper)
{int add_id; //要添加的id号char add_nation[20]; //要添加的国家char add_province[20]; //要添加的省份char add_name[20]; //要添加的姓名printf("请输入要添加的投票人的id:");scanf("%d",&add_id);printf("请输入要添加的投票人的国家:");scanf("%s",add_nation);printf("请输入要添加的投票人的省份:");scanf("%s",add_province);printf("请输入要添加的投票人的姓名:");scanf("%s",add_name);getchar();//准备sql语句char sql[128]="";sprintf(sql,"insert into globalvote values(%d,\"%s\",\"%s\",\"%s\");",add_id,add_nation,add_province,add_name);#if DUBFLAGprintf("sql=%s\n",sql);
#endif//执行sql语句char *errmsg=NULL;if(sqlite3_exec(Dipper,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("添加失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}if(sqlite3_changes(Dipper)!=0){printf("添加成功\n");}return 0;
}//定义删除投票人信息函数
int do_delete(sqlite3 *Dipper)
{int add_id;printf("输入要删除的投票人的id:");scanf("%d",&add_id);//准备sql语句char sql[128]="";sprintf(sql,"delete from globalvote where id=%d;",add_id);//执行sql语句char *errmsg=NULL;if(sqlite3_exec(Dipper,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("删除失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}if(sqlite3_changes(Dipper)!=0){printf("删除成功\n");}return 0;
}int do_update(sqlite3 *Dipper)
{int add_id;char add_nation[20];char add_province[20];char add_name[20];printf("输入要修改的投票人的id:");scanf("%d",&add_id);printf("输入要修改的投票人的国家:");scanf("%s",add_nation);printf("请输入要修改的投票人的省份:");scanf("%s",add_province);printf("请输入要修改的投票人的姓名:");scanf("%s",add_name);//准备sql语句char sql[128]="";sprintf(sql,"update globalvote set nation=\"%s\", province=\"%s\", name=\"%s\" where id=%d;",add_nation,add_province,add_name,add_id);//执行sql语句char *errmsg=NULL;if(sqlite3_exec(Dipper,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("修改失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}if(sqlite3_changes(Dipper)!=0){printf("修改成功\n");}return 0;
}//自定义查询函数的回调函数
int callback(void *arg,int cols,char **msgtext,char **msgheader)
{if(*(int *)arg==0){//先输入表头for(int i=0;i<cols;i++){printf("%s \t",msgheader[i]);}printf("\n");*(int *)arg=1;}//输出内容for(int i=0;i<cols;i++){printf("%s\t",msgtext[i]);}printf("\n");return 0;
}//定义查找函数
int do_search(sqlite3 *Dipper)
{//1.准备sql语句char *sql="select * from globalvote;";//2.执行sql语句char *errmsg=NULL;int flag=0;if(sqlite3_exec(Dipper,sql,callback,&flag,&errmsg)!=SQLITE_OK){printf("查询失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}printf("查询成功\n");return 0;
}int main(int argc, const char *argv[])
{//1.打开数据库并返回一个可以操作该数据库的句柄sqlite3 *Dipper=NULL;if(sqlite3_open("./globalvote.db",&Dipper)!=SQLITE_OK){printf("gobalvote.db open error\nerrcode=%d:errmsg=%s\n",sqlite3_errcode(Dipper),sqlite3_errmsg(Dipper));return -1;}//从此之后,后期可以使用Dipper指针进行数据库操作//2.创建一个选举信息表//准备sql语句char *sql="create table if not exists globalvote(id int primary key,nation char(20), province char(20), name char(20));";//定义指针接受执行sql语句后的错误信息char *errmsg=NULL;//执行sql语句if(sqlite3_exec(Dipper,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("创建数据表失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}printf("投票人信息记录表创建成功\n");//循环做个菜单用于操作数据库int menu=-1;while(1){system("clear");//执行系统终端指令printf("\t\t========地球球长选举系统========\n");printf("\t\t=============1.增===============\n");printf("\t\t=============2.删===============\n");printf("\t\t=============3.改===============\n");printf("\t\t=============4.查===============\n");printf("\t\t=============0.退出=============\n");printf("请输入功能:");scanf("%d",&menu);getchar();//多分支选择switch(menu){case 1:do_add(Dipper);break;case 2:do_delete(Dipper);break;case 3:do_update(Dipper);break;case 4:do_search(Dipper);break;case 0:exit(EXIT_SUCCESS);default:printf("输入有误,请重新输入\n");}printf("按任意键后,按回车清屏\n");while(getchar()!='\n');}//关闭数据库sqlite3_close(Dipper);return 0;
}
思维导图
牛客网刷题