使用SQL制作一个学生信息管理系统

#include<head.h>
int do_add(sqlite3 *ppDb);
int do_select(sqlite3 *ppDb);
int callback(void *arg,int cols,char **col_text,char **col_name);
int do_update(sqlite3 *ppDb);
int do_delete(sqlite3 *ppDb);
int main(int argc, const char *argv[])
{
	//打开或创建数据库
	sqlite3 *ppDb=NULL;//创建打开数据库句柄指针
	int rtsqlite3_open=sqlite3_open("test.db",&ppDb);//不存在test.db则创建
	if(rtsqlite3_open!=SQLITE_OK){//错误信息输出
		printf("sqlite3_open error:%d,%s\n",sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));//
		return -1;
	}
	printf("数据库打开成功\n");
	//对数据库进行相关操作
	//创建数据表
	//1、准备SQL语句
	char sql[128]="create table if not exists Stu(numb int primary key,name char,score double);";//创建数据表语句
	char *errmsg=NULL;//用于接收错误信息
	if((sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg))!=SQLITE_OK){
		printf("Stu creat fail:%s\n",errmsg);
		sqlite3_free(errmsg);//释放空间
		return -1;
	}
	printf("Stu creat success\n");
	//菜单
	int option;
	while(1){
		//system("clear");//清屏
		printf("=====xxxx学生信息管理系统=====\n");
		printf("=====1>>添加学生信息==========\n");
		printf("=====2>>删除学生信息==========\n");
		printf("=====3>>修改学生信息==========\n");
		printf("=====4>>查找学生信息==========\n");
		printf("=====5>>退出信息系统==========\n");
		printf("enter option>>");
		scanf("%d",&option);
		getchar();
		switch(option){
			case 1 :
				{
					do_add(ppDb);//添加学生信息
				}
				break;
			case 2 :
				{
					do_delete(ppDb);//删除学生信息
				}
				break;
			case 3 :
				{
					do_update(ppDb);//修改学生信息
				}
				break;
			case 4 :
				{
					do_select(ppDb);//查找学生信息
				}
				break;
			case 5 :
				{
					goto END;//退出信息系统
				}
			default : printf("enter option error,please reenter\n");
		}
	}
END:
	sqlite3_close(ppDb);//关闭数据库
	return 0;
} 
int do_add(sqlite3 *ppDb){
	//准备sql语句
	char sql[128]={0};
	int numb=0;
	char name[20]={0};
	double score=0;
	printf("pelses enter:\n");
	printf("numb:");
	scanf("%d",&numb);
	printf("name:");
	scanf("%s",name);
	name[strlen(name)]=0;
	printf("score:");
	scanf("%lf",&score);
	getchar();
	snprintf(sql,sizeof(sql),"insert into Stu values(%d,\"%s\",%.2lf);",numb,name,score);//转为字符串存放到sql中
	char *errmsg=NULL;//用于接收错误信息
	if((sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg))!=SQLITE_OK){
		printf("Stu creat fail:%s\n",errmsg);
		sqlite3_free(errmsg);
		return -1;
	}
	printf("insert success\n");
}
int do_select(sqlite3 *ppDb){
	printf("=====>>A展示全部=====\n");
	printf("=====>>P展示一条=====\n");
	printf("please enter>>");
	int flag=0;
	char op=getchar();
	getchar();
	char *errmsg=NULL;//用于接收错误信息
	if(op=='P'){
		
		char name[20]={0};
		printf("请输入查找的姓名:");
		scanf("%s",name);
		getchar();
		char sq[128]={0};
		snprintf(sq,sizeof(sq),"select * from Stu where name=\"%s\";",name);
		if((sqlite3_exec(ppDb,sq,callback,&flag,&errmsg))!=SQLITE_OK){
			printf("select fail:%s\n",errmsg);
			sqlite3_free(errmsg);
			return -1;
		}
		printf("show success\n");
	}else if(op=='A'){
		char sql[128]="select * from Stu;";
		if((sqlite3_exec(ppDb,sql,callback,&flag,&errmsg))!=SQLITE_OK){
			printf("select fail:%s\n",errmsg);                      
			sqlite3_free(errmsg);
			return -1;
		}
		printf("show success\n");
	}else{
		printf("enter error,please reenter\n");
	}
}
int callback(void *arg,int cols,char **col_text,char **col_name){
	if(*(int*)arg==0){
		for(int i=0;i<cols;i++){//展示表头
			printf("%s\t",*(col_name+i));
		}
		*(int*)arg=1;
		putchar(10);
	}
	for(int j=0;j<cols;j++){//展示内容
		printf("%s\t",col_text[j]);
	}
	printf("\n");
	return 0;
}
int do_update(sqlite3 *ppDb){
	char *errmsg=NULL;//用于接收错误信息
	char sql[128]={0};
	printf("=====>>S按学号修改=====\n");
	printf("=====>>N按姓名修改=====\n");
	printf("please enter>>");
	char ch=getchar();
	getchar();
	if(ch=='S'){
		printf("=====>>Q修改学生姓名=====\n");
		printf("=====>>W修改学生成绩=====\n");
		printf("please enter>>");
		char C=getchar();
		getchar();
		printf("请输入需要修改信息的学号:");
		int n;                                
		scanf("%d",&n);
		getchar();
		switch(C){
		case 'Q' :
			{
				printf("请输入修改后的姓名:");
				char newname[20]={0};
				scanf("%s",newname);
				getchar();
				snprintf(sql,sizeof(sql),"update Stu set name=\"%s\" where numb=%d;",newname,n);
				if((sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg))!=SQLITE_OK){
					printf("update fail:%s\n",errmsg);
					sqlite3_free(errmsg);//释放空间
					return -1;
				}
				printf("update success\n");
			}
			break;
		case 'W':
			{
				printf("请输入修改后的成绩:");
				double sc;
				scanf("%lf",&sc);
				getchar();
				snprintf(sql,sizeof(sql),"update Stu set score=%lf where numb=%d;",sc,n);
				if((sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg))!=SQLITE_OK){
					printf("update fail:%s\n",errmsg);
					sqlite3_free(errmsg);//释放空间
					return -1;
				}
				printf("update success\n");
			}
			break;
		default : printf("enter error,please reenter\n");break;
		}
	}
	if(ch=='N'){
		printf("=====>>J修改学生学号=====\n");
		printf("=====>>K修改学生成绩=====\n");
		printf("please enter>>");
		char cc=getchar();
		getchar();
		printf("请输入需要修改信息的姓名:");
		char nn[20]={0};
		scanf("%s",nn);
		getchar();
		switch(cc){
		case 'K' :
			{
				printf("请输入修改后的成绩:");
				double scc;
				scanf("%lf",&scc);
				getchar();
				snprintf(sql,sizeof(sql),"update Stu set score=%lf where name=\"%s\";",scc,nn);
				if((sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg))!=SQLITE_OK){
					printf("update fail:%s\n",errmsg);
					sqlite3_free(errmsg);//释放空间
					return -1;
				}
				printf("update success\n");
			}
			break;
		case 'J':
			{
				printf("请输入修改后的学号:");
				int number;
				scanf("%d",&number);
				getchar();
				snprintf(sql,sizeof(sql),"update Stu set numb=%d where name=\"%s\";",number,nn);
				if((sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg))!=SQLITE_OK){
					printf("update fail:%s\n",errmsg);
					sqlite3_free(errmsg);//释放空间
					return -1;
				}
				printf("update success\n");
			}
			break;
		default : printf("enter error,please reenter\n");break;
		}

	}
}
int do_delete(sqlite3 *ppDb){
	printf("=====>>D按学号删除=====\n");
	printf("=====>>F按姓名删除=====\n");
	char *errmsg=NULL;//用于接收错误信息
	char sql[128]={0};
	printf("enter>>:");
	char chh=getchar();
	getchar();
	if(chh=='D'){
		printf("请输入需要删除的学号:");
		int num;
		scanf("%d",&num);
		getchar();
		snprintf(sql,sizeof(sql),"delete from Stu where numb=%d;",num);
		if((sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg))!=SQLITE_OK){
			printf("delete fail:%s\n",errmsg);
			sqlite3_free(errmsg);//释放空间
			return -1;
		}
		printf("delete success\n");
	}else if(chh=='F'){
		printf("请输入需要删除的姓名:");                             
		char name1[20]={0};
		scanf("%s",name1);
		getchar();
		snprintf(sql,sizeof(sql),"delete from Stu where name=\"%s\";",name1);
		if((sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg))!=SQLITE_OK){
			printf("default fail:%s\n",errmsg);
			sqlite3_free(errmsg);//释放空间
			return -1;
		}   
		printf("delete success\n"); 
	}

}

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生管理系统使用说明书 配置源程序 配置ODBC 运行本实例需要配置用户DSN,在ODBC数据源管理器中配置用户DSN连接指定的SQL Server数据库。关键操作步骤如下: (1)单击“开始”按钮,选择“程序”→“管理工具”→“数据源(ODBC)”命令,打开“ODBC数据源管理器”对话框,打开“用户DSN”选项卡。 (2)单击“添加”按钮,打开“创建新数据源”对话框,选择安装数据源的驱动程序,这里选择“SQL Server”。 (3)单击“完成”按钮,打开“创建到SQL Server的新数据源”对话框,在“名称”文本框中设置数据源名称为“mystudentsys”,在“描述”文本框设置数据源描述为“配置SQL Server数据库DSN”,在“服务器”下拉列表框中选择连接的数据库所在服务器为“(local)”。 (4)单击“下一步”按钮,选择“使用用户输入登录ID和密码的SQL Server验证”单选框,在“登录ID”文本框中输入SQL Server用户登录ID,这里为“sa”,在“密码”文本框中输入SQL Server用户登录密码。 (5)单击“下一步”按钮,选择“更改默认的数据库为”复选框,并在其下拉列表框中选择连接的数据库名称,这里选择“tb_student”,单击“下一步”按钮。 (6)单击“完成”按钮,打开“ODBC Microsoft SQL Server安装”对话框,显示新创建的ODBC数据源配置信息。 (7)单击“测试数据源”按钮测试数据库连接是否成功,如果测试成功,单击“确定”按钮,完成数据源配置。 附加SQL Server 2000数据库 (1)将database文件夹中的两个文件拷贝到SQL Server 2000安装路径下的Data文件夹中。 (2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。 (3)将弹出“附加数据库”对话框,在该对话框中单击“”按钮,选择所要附加数据库的.mdf文件,单击“确定”按钮,即可完成数据库的附加操作。 使用说明 系统介绍 随着各大院校的扩招,学生数量不断增加,学生管理成为学校管理中的重中之重。传统的学生管理方法,就学生的个人的自然情况出发,对其进行管理,但是,这种方法不但效率低,而且还要耗费大量的人力,已经不能满足各大院校的学生管理要求。 提高学生管理的管理水平,优化资源,尽可能地降低学校的管理成本,成为学生管理的新课题。学生管理系统是从学生管理的现状出发,根据学生管理的新要求进行开发设计的,它解决了学生管理中数据信息量大,修改不方便,对一系列数据进行统计与分析花费时间长等问题,帮助学生管理人员有效管理学生信息,成为高校管理中必不可少的管理工具。 本系统主要实现了以下功能: 学生信息录入 学生成绩录入 程序等级设置 学生违规处理 学生成绩排行 学生信息查询 学生成绩查询、打印 操作注意事项 (1)本系统管理员用户名为:tsoft,密码为:111。 (2)实例执行文件位置:\08\学生管理系统\源程序\Debug\mystudentsys.exe 操作流程 运行本系统,请按照以下流程操作: (1)在“基础信息管理”中的“科室信息管理”、“科目信息管理”、“教师信息管理”、“班级信息管理”、“班级科目设置”及“考试类别设置”中对基础信息进行添加。 (2)在“学生信息管理”中的“学生信息管理”、“学生成绩录入”、“成绩等级设置”、“学生违规处理”中对学生信息进行添加。 (3)通过“查询管理”中的“学生基础信息查询”、“学生成绩报表”、“学生违规查询”中可以对学生信息、成绩及违规记录进行查询。 (4)通过“系统管理”中的“用户管理”可以添加、修改及删除操作用户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值