网络编程day7

本文介绍了使用C语言实现的一个学生管理系统,包含添加、删除、更新和查询功能,通过SQLite数据库进行数据操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学生管理系统系统

#include <myhead.h>
int do_add(sqlite3 *ppDb)
{
	int add_numb=0;
	char add_name[20]="";
	double add_score=0;
	printf("请输入学号:");
    scanf("%d", &add_numb);
    printf("请输入姓名:");
    scanf("%s", add_name);
    printf("请输入成绩:");
    scanf("%lf", &add_score);
    getchar();
	char sql[128]="";
	sprintf(sql,"insert into stu values(%d,\"%s\",%lf);",add_numb,add_name,add_score);
	char *errmsg =NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		printf("exec error:%s\n",errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	printf("插入成功\n");
	return 0;
}
int do_delete(sqlite3 *ppDb)
{
	 char add_name[20]="";
	 printf("请输入想删除的学生的名字:");
	 scanf("%s",add_name);
	 getchar();
	 char sql[128]="";
	 sprintf(sql,"delete from stu where name=\"%s\";",add_name);
	 char *errmsg =NULL;
	 if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	 {
		 printf("exec error:%s\n",errmsg);
		 sqlite3_free(errmsg);
		 return -1;
	}
	printf("删除成功\n");
	return 0;
}
int  do_update(sqlite3 *ppDb)
{
	char add_name[20]="";
	printf("请输入想修改学生的名字:");
	scanf("%s",add_name);
	printf("*****选择要修改的信息*****\n");
	printf("**********1.numb**********\n");
	printf("**********2.score*********\n");
	printf("**********3.name**********\n");
	int inf;
	printf("请选择要修改的信息:");
	scanf("%d",&inf);
	char num[20]="";
	printf("请输入想修改的数值:");
	scanf("%s",num);
	getchar();
	char sql[128]="";
	switch(inf)
	{
	case 1:
		 {
			sprintf(sql,"update stu set numb=\"%s\" where name=\"%s\";",num,add_name);
			char *errmsg =NULL;
			if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				printf("exec error:%s\n",errmsg);
				sqlite3_free(errmsg);
				return -1;
			}
			printf("修改成功\n");
		}
		 break;
	case 2:
		 {
     		sprintf(sql,"update stu set score=\"%s\" where name=\"%s\";",num,add_name);
			char *errmsg =NULL;
			if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				printf("exec error:%s\n",errmsg);
				sqlite3_free(errmsg);
				return -1;
			}
			printf("修改成功\n");
		 }
		 break;
	case 3:
		 {
			sprintf(sql,"update stu set name=\"%s\" where name=\"%s\";",num,add_name);
			char *errmsg =NULL;
			if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
			{
				printf("exec error:%s\n",errmsg);
				sqlite3_free(errmsg);
				return -1;
			}
			printf("修改成功\n");
		 }
		 break;
	default:
		 {
			 printf("输入错误,请重试\n");
		 }
		 break;
	}
	return 0;
}
int do_search(sqlite3 *ppDb)
{
	char sql[128] = "select * from stu;";
	char *errmsg = NULL;
	char **retPtr = NULL;          
	int rows = 0;                  
	int cols = 0;              
	if(sqlite3_get_table(ppDb, sql, &retPtr, &rows, &cols, &errmsg) != SQLITE_OK)
	{
		printf("get table error:%s\n", errmsg);
		sqlite3_free(errmsg);
		return -1;
	}

	for(int i=0; i<rows+1; i++)            
	{
		for(int j=0; j<cols; j++)           
		{
			printf("%s\t", *(retPtr + (i*cols)+j));     
		}
		printf("\n");
	}
	sqlite3_free_table(retPtr);
	return 0;
}
int main(int argc, const char *argv[])
{
	sqlite3 *ppDb=NULL;
	if(sqlite3_open("./my.db",&ppDb)!=SQLITE_OK)
	{
		fprintf(stderr,"sqlite3_open error:errmsg=%s,errcode=%d\n",sqlite3_errmsg(ppDb),sqlite3_errcode(ppDb));
		return -1;
	}
	printf("sqlite3_open success\n");
	char sql[128]="create table if not exists stu(numb int,name char,score double);";
	char *errmsg =NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
	{
		printf("exec error:%s\n",errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	printf("create table stu success\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(ppDb);
            }
            break;
        case 2:
            {
                do_delete(ppDb);
            }
            break;

        case 3:
            {
                do_update(ppDb);
            }
            break;
        case 4:
            {
               do_search(ppDb);
            }
            break;
        case 0:goto END;
        default:printf("您输入的功能有误,请重新输入!!!!\n");
        }

        printf("请输入任意键,按回车清屏\n");
        while(getchar() != '\n');
    }
END:
    sqlite3_close(ppDb);	
	return 0;
}   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值