学生成绩分析系统。。

 

我之前写了一个,跟你要的功能差不多,参考一下吧,如有帮助,请采纳一下,谢谢。

代码链接(https://blog.csdn.net/qfl_sdu/article/details/118186493


 //学生成绩管理系统精简第二版 
//整合部分 
//主头函数部分 
#include<stdio.h>
#include<stdlib.h>		//清屏		
#define ren 6		//定义班上的人 
struct student			//结构体 
	{ 
		int   num;			//学号 
		char  name[20];		//名字 
		int   age;			//年龄 
		float pingshi;		//c成绩 
		float shiyan;		//英语成绩 
		float shujuku;		//数据库成绩 
		double zongping;	//总成绩 
	}stu[ren];
	
struct number		//结构体2 
{					//用来承接第二个的修改之类的 
	int num;
}xh[1];
	
int main()
{	//在主界面输入后引用的函数 
int i;
	void a();		//1:录入
	void b();		//2:查询,	修改
	void c();		//3:出每个人的总分
	void d();		//4:用于结束错误的输入 
	void a2();		//2_A部分用于输出查询
	void b2();		//2_B部分用于修改 
	void c2();		//2_C部分用于删除 
	char n,opi=55;		//输入的选择
	  
 printf("\t*************************欢迎查看学生成绩管理系统简介*************************\n\n");	 
	printf("本程序为分析人数为%d的学生管理系统\n",ren);
	printf("\n*本程序基本实现了:\n\n");
	printf("*输入学生信息,查询学生信息,输出学生排名等的基本功能\n\n");
	printf("*当输入错误数据时返回提示\n");
	printf("\n\n按下回车键进入系统..."); 
	getchar();
	if(opi)system("cls");		//	清屏 
	
	for(i=0;i<=ren;i++) 
	stu[i]. num=4392+i;
	    printf("\t*************************欢迎使用学生成绩管理系统*************************\n\n");	    
		printf("1:输入学生信息\n\n");
		printf("2:查询学生信息\n\n");
		printf("3:输出学生排名\n\n");
		printf("6:退出系统\n\n");
		printf("请正确输入\n\n\n`在这里插入代码片`\n"); 
		printf("[请输入命令并按键回车以执行: 1 / 2 / 3 / 6 选择项目]:");
		scanf("%d",&n);				//输入n的值 
		
		//printf("%d",n);			//测试输入 
		for(int q=0;q<=0;q++)
		if(n!=1&&n!=6)
			{
		printf("\n请先输入数据!\n");
		n=12;
			}
		while(n!=0&&n!=7)
	{
		printf("\n");
		switch(n)					//循环 
		{
			case 1:a();break;
			case 2:b();break;
			case 3:c();break;
			case 4:d();break;
			case 6:printf("\n*******************谢谢使用!*******************\n");break;
			break;    
			default :printf("\t@@@@@@@@@@@@@@@@@@@@ 请正确输入命令: 1 / 2 / 3 / 6  @@@@@@@@@@@@@@@@@@@@\n\n\n\n\n\n");
			//printf("%d",n);	//用于测试为何循环出错 
		}	
		if(n==6)break;  
		if(n!=6) 
		//if(n!=0)
	 {
		if(n=0)n=7;		//用于二级输入错误时退出程序 
		if(n!=6)
		{
		printf("1:输入学生信息\n\n");
		printf("2:查询学生信息\n\n");
		printf("3:输出学生排名\n\n");
		printf("6:退出系统\n\n");
		//printf("%d",n);
		printf("[请输入命令: 1 / 2 / 3 / 6 选择项目]:");
		scanf("%d",&n);				//输入n的值 
		}
		if(n!=6)printf("*请正确输入!\n\n");
		if(n==6)printf("\n*******************谢谢使用!*******************\n");
	 }
	}
	if(n!=6) printf("\n\n\t@@@@@@@@@@@@@@@@@@@@ 请正确输入命令: 1 / 2 / 3 / 6  @@@@@@@@@@@@@@@@@@@@\n\n\n\n\n\n");
getchar();
}

//成绩输入记录部分
/* 子  函  数*/
/*个班的学生记录*/
 void a() /* 输入一个班的学生记录*/
{
	int i,o;
	for(i=0;i<ren;i++)		//ren个人的成绩 
 
	{   
 
	/*	printf("请输入第%d位同学的信息并以逗号隔开:\n学号 姓名 年龄 C语言成绩 英语成绩 数据库成绩:\n",i+1);
		scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].age,&stu[i].pingshi,&stu[i].shiyan,&stu[i].kaoshi,&stu[i].shujuku);
	*/
	printf("\t请输入第%d位同学的信息:\n\n",i+1);
	printf("*请正确输入\n\n"); 
	printf("请输入学号:");
	scanf("%d", &stu[i]. num);

for(o=1;o<=6;o++)
if(stu[i-o]. num==stu[i]. num)
{
printf("\n***请不要输入一样的学号呢~~\n\n");
} 

	printf("请输入姓名:");
	scanf("%s", &stu[i]. name);

	printf("请输入年龄:");
	scanf("%f", &stu[i].age);

	printf("请输入C语言成绩:");
	scanf("%f", &stu[i]. pingshi);

	printf("请输入英语成绩:");
	scanf("%f", &stu[i]. shiyan);

	printf("请输入数据库成绩:");
	scanf("%f", &stu[i]. shujuku);
	printf("\n###########################################\n\n\n\n");
	}
		printf("\n恭喜你,所有同学数据录入完成!\n");
 		printf("###########################################\n\n\n\n");
	for(i=0;i<ren;i++)
stu[i].zongping=stu[i].pingshi+stu[i].shiyan+stu[i].shujuku;		//计算总分部分 
}

//void b()		//根据学号查询学生并修改信息

/* 查询  */
void b()	//由学号查询删除修改
{
	int sno,p,i,*s,a,n;		//son用来表示输入的学号;p表示判断;i用来循环查找 
	void a2();		//2_A部分用于输出查询
	void b2();		//2_B部分用于修改 
	void c2();		//2_C部分用于删除 
	printf("请输入要选择的学号:\n");	//s用来代换 ;n用来三级菜单的输入 
	scanf("%d",&sno);
	n=0;
	for(i=0;i<=ren;i++)
		{
			n=n+1;		//计算进行了几次循环 
			s=&a;
			s=&stu[i].num;		//不知道为什么比不了*因为是指针 
			p=0;
			if(*s-sno==0)
			{
				p=1;//此时如果括号里面相等的话,这个的值就是1 
				//printf("%d\n",i);	//调试 
				break;
		    	//else break;		//所以符合就是相等 
		   		//printf("\n\n%d\n",a);	//a输出的是一直是10,不能用 
		   		//printf("%d\n",*s);		//这个正常 
			}
			
		}
		if(p==1)		
	{
			printf("\n已找到该学生\n\n\n");	
		printf("********************************************************\n");	
		printf("1.输出该学生的详情\n\n");
		printf("2.修改该学生的详情\n\n"); 
		printf("3.删除该学生的详情\n\n"); 
		printf("\n\n请输入要进行的操作:");
			n=n-1;
//printf("%d\n",n);
			xh[1].num=n;
//printf("%d\n",n);
//printf("%d\n", xh[1].num);

			scanf("%d",&n); 
		//开始第三级菜单
		 	if(n!=0||n!=4)
	{
		printf("\n");
		//if(n=0)n=6;
		switch(n)					//循环 
		{		
			case 1:a2();break;	//将储存位置?发给下一步 
			case 2:b2();break; 
			case 3:c2();break; 
			case 0:n=6;break;
			break;    
			default :printf("\t@@@@@@@@@@@@@@@@@@@@ 请正确输入命令: 1 / 2 / 3 / 6  @@@@@@@@@@@@@@@@@@@@\n\n\n\n\n\n"); 

		}
	}
}
		if(p==0)
		printf("查无此人!\n");
	printf("********************************************************\n");
	}

//4:输出成绩与排名\n\n
void c()		//4:输出成绩与排名\n\n
{
	int a[6]={0,1,2,3,4,5};		//定义数组来排名 
	int i,j,temp;
	for(j=0;j<3;j++)					//用了浮点法?? 
	{
		for(i=0;i<3-j;i++)
		if(stu[a[i]].num>stu[a[i+1]].num)	//用总学号排名 
		{									
			temp=a[i];a[i]=a[i+1];
			a[i+1]=temp;
 
		}
	}
 
	printf("\n###########################################\n");
	printf("按学号顺序如下:\n");
 
	printf("学号        姓名       C语言成绩       英语成绩      数据库成绩     总成绩\n");
	for(i=0;i<ren;i++)
		printf("%d  %14s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].shujuku,stu[i].zongping);
		printf("\n完成!\n");
 		printf("###########################################\n\n\n\n");
 		
 		
 		
 		
 		
}
 
 //改成D部分

void d()		//用于结束错误的输入
{
	printf("\t@@@@@@@@@@@@@@@@@@@@ 请正确输入命令: 1 / 2 / 3 / 6  @@@@@@@@@@@@@@@@@@@@\n\n\n\n\n\n") ;
 } 
 
 
 
//2_A部分 
//用于输出查询
void a2() 
{
	int a,*b;		//b用来引用结构体2 
	b=&xh[1].num;
	printf("%d\n",*b);  //测试*b的值
	printf("以下为这位同学的信息:\n\n");
	
/*	printf("年龄为:%d\n\n",stu[*b].age);

	printf("C语言成绩为:%d\n\n",stu[*b]. pingshi);
 
	printf("英语成绩为:%d\n\n",stu[*b]. shiyan); 

	printf("数据库成绩为:%d\n\n",stu[*b]. shujuku); 	
	printf("\n完成!\n");
	printf("###########################################\n\n\n\n");
	
	*/ 
	
	
		
		printf("学号        姓名      C语言成绩      英语成绩      结构体成绩    总成绩\n");
		printf("%d  %14s%14.2f%14.2f%14.2f%14.2f\n",stu[*b].num,stu[*b].name,stu[*b].pingshi,stu[*b].shiyan,stu[*b].shujuku,stu[*b].zongping);
		printf("\n完成!\n");
	
	
	
	
	
	
	
}
 

//2_B部分 
//用于修改 
void b2() 
{
	int a,*b;		//b用来引用结构体2 
	//b=&a;
	b=&xh[1].num;
	printf("%d\n",*b);  //测试*b的值
	printf("请输入这位同学的信息:\n\n");
	
	printf("请输入年龄:");
	scanf("%f", &stu[*b].age);

	printf("请输入C语言成绩:");
	scanf("%f", &stu[*b]. pingshi);

	printf("请输入英语成绩:");
	scanf("%f", &stu[*b]. shiyan);

	printf("请输入数据库成绩:");
	scanf("%f", &stu[*b]. shujuku);
	
stu[*b].zongping=stu[*b].pingshi+stu[*b].shiyan+stu[*b].shujuku;		//计算总分部分 
	
		printf("\n完成!\n");
 		printf("###########################################\n\n\n\n");
}
 
 
  
//2_C部分 
//用于删除 
void c2() 
{
	int a,*b;		//b用来引用结构体2 
	b=&xh[1].num;
	
stu[*b].age=0;

stu[*b].pingshi=0;

stu[*b].shiyan=0;

stu[*b].shujuku=0;
	
stu[*b].zongping=stu[*b].pingshi+stu[*b].shiyan+stu[*b].shujuku;		//计算总分部分
	
		
		printf("\n完成!\n");
 		printf("###########################################\n\n\n\n");
}


如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢
 


 //学生成绩管理系统精简第二版 
//整合部分 
//主头函数部分 
#include<stdio.h>
#include<stdlib.h>		//清屏		
#define ren 6		//定义班上的人 
struct student			//结构体 
	{ 
		int   num;			//学号 
		char  name[20];		//名字 
		int   age;			//年龄 
		float pingshi;		//c成绩 
		float shiyan;		//英语成绩 
		float shujuku;		//数据库成绩 
		double zongping;	//总成绩 
	}stu[ren];
	
struct number		//结构体2 
{					//用来承接第二个的修改之类的 
	int num;
}xh[1];
	
int main()
{	//在主界面输入后引用的函数 
int i;
	void a();		//1:录入
	void b();		//2:查询,	修改
	void c();		//3:出每个人的总分
	void d();		//4:用于结束错误的输入 
	void a2();		//2_A部分用于输出查询
	void b2();		//2_B部分用于修改 
	void c2();		//2_C部分用于删除 
	char n,opi=55;		//输入的选择
	  
 printf("\t*************************欢迎查看学生成绩管理系统简介*************************\n\n");	 
	printf("本程序为分析人数为%d的学生管理系统\n",ren);
	printf("\n*本程序基本实现了:\n\n");
	printf("*输入学生信息,查询学生信息,输出学生排名等的基本功能\n\n");
	printf("*当输入错误数据时返回提示\n");
	printf("\n\n按下回车键进入系统..."); 
	getchar();
	if(opi)system("cls");		//	清屏 
	
	for(i=0;i<=ren;i++) 
	stu[i]. num=4392+i;
	    printf("\t*************************欢迎使用学生成绩管理系统*************************\n\n");	    
		printf("1:输入学生信息\n\n");
		printf("2:查询学生信息\n\n");
		printf("3:输出学生排名\n\n");
		printf("6:退出系统\n\n");
		printf("请正确输入\n\n\n`在这里插入代码片`\n"); 
		printf("[请输入命令并按键回车以执行: 1 / 2 / 3 / 6 选择项目]:");
		scanf("%d",&n);				//输入n的值 
		
		//printf("%d",n);			//测试输入 
		for(int q=0;q<=0;q++)
		if(n!=1&&n!=6)
			{
		printf("\n请先输入数据!\n");
		n=12;
			}
		while(n!=0&&n!=7)
	{
		printf("\n");
		switch(n)					//循环 
		{
			case 1:a();break;
			case 2:b();break;
			case 3:c();break;
			case 4:d();break;
			case 6:printf("\n*******************谢谢使用!*******************\n");break;
			break;    
			default :printf("\t@@@@@@@@@@@@@@@@@@@@ 请正确输入命令: 1 / 2 / 3 / 6  @@@@@@@@@@@@@@@@@@@@\n\n\n\n\n\n");
			//printf("%d",n);	//用于测试为何循环出错 
		}	
		if(n==6)break;  
		if(n!=6) 
		//if(n!=0)
	 {
		if(n=0)n=7;		//用于二级输入错误时退出程序 
		if(n!=6)
		{
		printf("1:输入学生信息\n\n");
		printf("2:查询学生信息\n\n");
		printf("3:输出学生排名\n\n");
		printf("6:退出系统\n\n");
		//printf("%d",n);
		printf("[请输入命令: 1 / 2 / 3 / 6 选择项目]:");
		scanf("%d",&n);				//输入n的值 
		}
		if(n!=6)printf("*请正确输入!\n\n");
		if(n==6)printf("\n*******************谢谢使用!*******************\n");
	 }
	}
	if(n!=6) printf("\n\n\t@@@@@@@@@@@@@@@@@@@@ 请正确输入命令: 1 / 2 / 3 / 6  @@@@@@@@@@@@@@@@@@@@\n\n\n\n\n\n");
getchar();
}

//成绩输入记录部分
/* 子  函  数*/
/*个班的学生记录*/
 void a() /* 输入一个班的学生记录*/
{
	int i,o;
	for(i=0;i<ren;i++)		//ren个人的成绩 
 
	{   
 
	/*	printf("请输入第%d位同学的信息并以逗号隔开:\n学号 姓名 年龄 C语言成绩 英语成绩 数据库成绩:\n",i+1);
		scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].age,&stu[i].pingshi,&stu[i].shiyan,&stu[i].kaoshi,&stu[i].shujuku);
	*/
	printf("\t请输入第%d位同学的信息:\n\n",i+1);
	printf("*请正确输入\n\n"); 
	printf("请输入学号:");
	scanf("%d", &stu[i]. num);

for(o=1;o<=6;o++)
if(stu[i-o]. num==stu[i]. num)
{
printf("\n***请不要输入一样的学号呢~~\n\n");
} 

	printf("请输入姓名:");
	scanf("%s", &stu[i]. name);

	printf("请输入年龄:");
	scanf("%f", &stu[i].age);

	printf("请输入C语言成绩:");
	scanf("%f", &stu[i]. pingshi);

	printf("请输入英语成绩:");
	scanf("%f", &stu[i]. shiyan);

	printf("请输入数据库成绩:");
	scanf("%f", &stu[i]. shujuku);
	printf("\n###########################################\n\n\n\n");
	}
		printf("\n恭喜你,所有同学数据录入完成!\n");
 		printf("###########################################\n\n\n\n");
	for(i=0;i<ren;i++)
stu[i].zongping=stu[i].pingshi+stu[i].shiyan+stu[i].shujuku;		//计算总分部分 
}

//void b()		//根据学号查询学生并修改信息

/* 查询  */
void b()	//由学号查询删除修改
{
	int sno,p,i,*s,a,n;		//son用来表示输入的学号;p表示判断;i用来循环查找 
	void a2();		//2_A部分用于输出查询
	void b2();		//2_B部分用于修改 
	void c2();		//2_C部分用于删除 
	printf("请输入要选择的学号:\n");	//s用来代换 ;n用来三级菜单的输入 
	scanf("%d",&sno);
	n=0;
	for(i=0;i<=ren;i++)
		{
			n=n+1;		//计算进行了几次循环 
			s=&a;
			s=&stu[i].num;		//不知道为什么比不了*因为是指针 
			p=0;
			if(*s-sno==0)
			{
				p=1;//此时如果括号里面相等的话,这个的值就是1 
				//printf("%d\n",i);	//调试 
				break;
		    	//else break;		//所以符合就是相等 
		   		//printf("\n\n%d\n",a);	//a输出的是一直是10,不能用 
		   		//printf("%d\n",*s);		//这个正常 
			}
			
		}
		if(p==1)		
	{
			printf("\n已找到该学生\n\n\n");	
		printf("********************************************************\n");	
		printf("1.输出该学生的详情\n\n");
		printf("2.修改该学生的详情\n\n"); 
		printf("3.删除该学生的详情\n\n"); 
		printf("\n\n请输入要进行的操作:");
			n=n-1;
//printf("%d\n",n);
			xh[1].num=n;
//printf("%d\n",n);
//printf("%d\n", xh[1].num);

			scanf("%d",&n); 
		//开始第三级菜单
		 	if(n!=0||n!=4)
	{
		printf("\n");
		//if(n=0)n=6;
		switch(n)					//循环 
		{		
			case 1:a2();break;	//将储存位置?发给下一步 
			case 2:b2();break; 
			case 3:c2();break; 
			case 0:n=6;break;
			break;    
			default :printf("\t@@@@@@@@@@@@@@@@@@@@ 请正确输入命令: 1 / 2 / 3 / 6  @@@@@@@@@@@@@@@@@@@@\n\n\n\n\n\n"); 

		}
	}
}
		if(p==0)
		printf("查无此人!\n");
	printf("********************************************************\n");
	}

//4:输出成绩与排名\n\n
void c()		//4:输出成绩与排名\n\n
{
	int a[6]={0,1,2,3,4,5};		//定义数组来排名 
	int i,j,temp;
	for(j=0;j<3;j++)					//用了浮点法?? 
	{
		for(i=0;i<3-j;i++)
		if(stu[a[i]].num>stu[a[i+1]].num)	//用总学号排名 
		{									
			temp=a[i];a[i]=a[i+1];
			a[i+1]=temp;
 
		}
	}
 
	printf("\n###########################################\n");
	printf("按学号顺序如下:\n");
 
	printf("学号        姓名       C语言成绩       英语成绩      数据库成绩     总成绩\n");
	for(i=0;i<ren;i++)
		printf("%d  %14s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pingshi,stu[i].shiyan,stu[i].shujuku,stu[i].zongping);
		printf("\n完成!\n");
 		printf("###########################################\n\n\n\n");
 		
 		
 		
 		
 		
}
 
 //改成D部分

void d()		//用于结束错误的输入
{
	printf("\t@@@@@@@@@@@@@@@@@@@@ 请正确输入命令: 1 / 2 / 3 / 6  @@@@@@@@@@@@@@@@@@@@\n\n\n\n\n\n") ;
 } 
 
 
 
//2_A部分 
//用于输出查询
void a2() 
{
	int a,*b;		//b用来引用结构体2 
	b=&xh[1].num;
	printf("%d\n",*b);  //测试*b的值
	printf("以下为这位同学的信息:\n\n");
	
/*	printf("年龄为:%d\n\n",stu[*b].age);

	printf("C语言成绩为:%d\n\n",stu[*b]. pingshi);
 
	printf("英语成绩为:%d\n\n",stu[*b]. shiyan); 

	printf("数据库成绩为:%d\n\n",stu[*b]. shujuku); 	
	printf("\n完成!\n");
	printf("###########################################\n\n\n\n");
	
	*/ 
	
	
		
		printf("学号        姓名      C语言成绩      英语成绩      结构体成绩    总成绩\n");
		printf("%d  %14s%14.2f%14.2f%14.2f%14.2f\n",stu[*b].num,stu[*b].name,stu[*b].pingshi,stu[*b].shiyan,stu[*b].shujuku,stu[*b].zongping);
		printf("\n完成!\n");
	
	
	
	
	
	
	
}
 

//2_B部分 
//用于修改 
void b2() 
{
	int a,*b;		//b用来引用结构体2 
	//b=&a;
	b=&xh[1].num;
	printf("%d\n",*b);  //测试*b的值
	printf("请输入这位同学的信息:\n\n");
	
	printf("请输入年龄:");
	scanf("%f", &stu[*b].age);

	printf("请输入C语言成绩:");
	scanf("%f", &stu[*b]. pingshi);

	printf("请输入英语成绩:");
	scanf("%f", &stu[*b]. shiyan);

	printf("请输入数据库成绩:");
	scanf("%f", &stu[*b]. shujuku);
	
stu[*b].zongping=stu[*b].pingshi+stu[*b].shiyan+stu[*b].shujuku;		//计算总分部分 
	
		printf("\n完成!\n");
 		printf("###########################################\n\n\n\n");
}
 
 
  
//2_C部分 
//用于删除 
void c2() 
{
	int a,*b;		//b用来引用结构体2 
	b=&xh[1].num;
	
stu[*b].age=0;

stu[*b].pingshi=0;

stu[*b].shiyan=0;

stu[*b].shujuku=0;
	
stu[*b].zongping=stu[*b].pingshi+stu[*b].shiyan+stu[*b].shujuku;		//计算总分部分
	
		
		printf("\n完成!\n");
 		printf("###########################################\n\n\n\n");
}


如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢
 

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^