学生信息管理系统
#include<iohead.h>
//定义添加信息函数
int do_add(sqlite3 * ppDb)
{
//定义相关变量,存储添加学生的信息
int add_numb = 0; //学号
char add_name[20]; //姓名
char add_sex[10]; //性别
double add_score; //成绩
//提示并输入相关信息
printf("请输入学号:");
scanf("%d", &add_numb);
printf("请输入姓名:");
scanf("%s", add_name);
printf("请输入性别:");
scanf("%s", add_sex);
printf("请输入成绩:");
scanf("%lf", &add_score);
getchar();
//准备sql语句
char sql[128] = ""; //存储sql语句的数组
//char *sql = "insert into STUINFO values(add_numb, add_name,add_sex,add_score);"
sprintf(sql, "insert into STUINFO values(%d, \"%s\",\"%s\",%.2lf);",\
add_numb,add_name,add_sex,add_score);
char *errmsg = NULL; //接收错误信息
//调用执行sql语句的函数
if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("插入失败:%s\n", errmsg);
sqlite3_free(errmsg);
return -1;
}
printf("学员信息添加成功\n");
return 0;
}
//定义删除函数
int do_delete(sqlite3 * ppDb)
{
int delete_numb = 0; //学号
//提示并输入相关信息
printf("请输入学号:");
scanf("%d", &delete_numb);
getchar();
char sql[128]="";
sprintf(sql,"delete from STUINFO WHERE numb==%d;",delete_numb);
char *errmsg = NULL; //接收错误信息
//调用执行sql语句的函数
if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("删除失败:%s\n", errmsg);
sqlite3_free(errmsg);
return -1;
}
printf("学员信息删除成功\n");
return 0;
}
//定义修改学生信息函数
int do_update(sqlite3 * ppDb)
{
//定义相关变量,存储添加学生的信息
int update_numb = 0; //学号
char update_name[20]; //姓名
char update_sex[10]; //性别
double update_score; //成绩
//提示并输入相关信息
printf("请输入要修改信息学生的学号:");
scanf("%d", &update_numb);
printf("请输入修改后的姓名:");
scanf("%s", update_name);
printf("请输入修改后的性别:");
scanf("%s", update_sex);
printf("请输入修改后的成绩:");
scanf("%lf", &update_score);
getchar();
//准备sql语句
char sql[128] = ""; //存储sql语句的数组
sprintf(sql, "update STUINFO set name=\"%s\",sex=\"%s\",score=%.2lf WHERE numb==%d;",\
update_name,update_sex,update_score,update_numb);
char *errmsg = NULL; //接收错误信息
//调用执行sql语句的函数
if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("修改失败:%s\n", errmsg);
sqlite3_free(errmsg);
return -1;
}
printf("学员信息修改成功\n");
return 0;
}
//定义一个回调函数,用于处理查找后的结果集
int call_back(void *arg, int clos, char **msgtext, char **msgheader)
{
if( *((int *)arg) ==0)
{
*((int *)arg) = 1;
//该函数中,将每个结果打印出来
for(int i=0; i<clos; i++) //循环输出表头
{
printf("%s\t", *(msgheader+i));
}
printf("\n");
}
//循环输出当前记录内容
for(int i=0; i<clos; i++)
{
printf("%s\t", *(msgtext+i));
}
printf("\n");
return 0;
}
//自定义用于查找展示信息的函数
int do_search(sqlite3 *ppDb)
{
//准备sql语句
char *sql = "select * from STUINFO;";
char *errmsg = NULL; //接收错误信息
int flag = 0; //定义一个标识
//执行sql语句
if(sqlite3_exec(ppDb, sql, call_back, &flag, &errmsg)!=SQLITE_OK)
{
printf("查询失败:%s\n", errmsg);
sqlite3_free(errmsg);
return -1;
}
return 0;
}
//主程序
int main(int argc, const char *argv[])
{
//1、定义一个数据库句柄指针
sqlite3 * ppDb = NULL;
if(sqlite3_open("./db.db", &ppDb) != SQLITE_OK)
{
printf("sqlite3_open error errcode=%d, errmsg=%s\n",\
sqlite3_errcode(ppDb), sqlite3_errmsg(ppDb));
return -1;
}
//2、创建数据表
//准备sql语句
char *sql = "create table if not exists \
STUINFO(numb int, name text, sex char, score double);";
char *errmsg = NULL; //用于接收错误信息的指针
//调用执行sql语句的函数
if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK)
{
printf("数据表创建失败:%s\n", errmsg);
sqlite3_free(errmsg); //释放错误信息的空间
return -1;
}
printf("学生信息表创建成功\n");
//做一个简单的学生管理系统
int menu = -1; //菜单选择项
while(1)
{
system("clear");
printf("\t\t\t========XXX 学生管理系统=========\n");
printf("\t\t\t========1、添加学生信息=========\n");
printf("\t\t\t========2、删除学生信息=========\n");
printf("\t\t\t========3、修改学生信息=========\n");
printf("\t\t\t========4、展示学生信息=========\n");
printf("\t\t\t========0、退出=========\n");
printf("请输入功能选项:");
scanf("%d", &menu);
getchar(); //吸收垃圾字符
//多分支选择
switch(menu)
{
case 1:
{
//调用添加信息函数
do_add(ppDb);
}
break;
case 2:
{
do_delete(ppDb);
}
break;
case 3:
{
do_update(ppDb);
}
break;
case 4:
{
do_search(ppDb);
}
break;
case 0:exit(EXIT_SUCCESS);
default: printf("您输入的功能有误,请重新输入\n");
}
printf("请输入任意键后,按回车结束\n");
while(getchar() != '\n');
}
//关闭数据库
sqlite3_close(ppDb);
return 0;
}
思维导图
刷题