网络编程(数据库)

学生信息管理系统

#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;
}

思维导图

刷题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值