8.20作业
1.使用数据库实现学生系统
#include <25061head.h>int stu_add(sqlite3 *ppDb)
{int numb;char name[50];char sex[20];double score;printf("请输入学号:");scanf("%d",&numb);printf("请输入姓名:");scanf("%s",name);printf("请输入性别:");scanf("%s",sex);printf("请输入成绩:");scanf("%lf",&score);getchar();char sql[256]="";sprintf(sql,"insert into Stu_Info values(%d,\"%s\",\"%s\",%.2lf);",numb,name,sex,score);char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("插入失败:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("完成\n");return 0;
}int stu_delete(sqlite3 *ppDb)
{int numb;printf("输入删除学生的学号:");scanf("%d",&numb);char sql[128]="";sprintf(sql,"delete from Stu_Info where numb=\"%d\";",numb);char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("删除失败:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("完成\n");return 0;
}int stu_modify(sqlite3 *ppDb)
{int numb;int new_numb;char name[50];char sex[20];double score;printf("输入修改学生的学号:");scanf("%d",&numb);printf("请输入学号:");scanf("%d",&new_numb);printf("请输入姓名:");scanf("%s",name);printf("请输入性别:");scanf("%s",sex);printf("请输入成绩:");scanf("%lf",&score);getchar();char sql[512]="";sprintf(sql,"update Stu_Info set numb=%d,name=\"%s\",sex=\"%s\",score=%.2lf where numb=\"%d\";",new_numb,name,sex,score,numb);char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("更新失败:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("完成\n");return 0;
}int callback(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 stu_search(sqlite3 *ppDb)
{char *sql="select * from Stu_Info;";char *errmsg=NULL;int flag=0;if(sqlite3_exec(ppDb,sql,callback,&flag,&errmsg)!=SQLITE_OK){printf("查询失败:%s\n",errmsg);sqlite3_free(errmsg);return -1;}return 0;
}int main(int argc, const char *argv[])
{sqlite3 *ppDb=NULL;if(sqlite3_open("./file.db",&ppDb)!=SQLITE_OK){printf("sqlite3_open error errcode=%d errmsg=%s\n",sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));return -1;}char *sql="create table if not exists Stu_Info(numb int,name text,sex char,score double);";char *errmsg=NULL;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("/********************** 主菜单 ***********************/\n");printf("/**********************1.添加学生信息***********************/\n");printf("/**********************2.删除学生信息***********************/\n");printf("/**********************3.修改学生信息***********************/\n");printf("/**********************4.查询学生信息***********************/\n");printf("/**********************0. 退出 ***********************/\n");printf("选择使用功能:");scanf("%d",&menu);getchar();switch(menu){case 1:stu_add(ppDb);break;case 2:stu_delete(ppDb);break;case 3:stu_modify(ppDb);break;case 4:stu_search(ppDb);break;case 0:sqlite3_close(ppDb);exit(0);default:printf("输入有误,重新输入\n");}printf("输入任意按键后回车结束\n");while(getchar()!='\n');}sqlite3_close(ppDb);return 0;
}
2.思维导图
3.