c高级——结构体

使用结构体数组,完成小型学生成绩管理系统

一个班级有 n 个学生(
n 由用户输入) , 每个学生有姓名、成绩。
功能:
1> 提示并输入这 n 个学生的姓名和成绩
2> 找出成绩最高的学生,并输出其所有信息(成绩、分数)
3> 按照成绩进行降序排序后,输出所有学生信息
4> 输入一个姓名,查找该同学是否是这个班级的成员,如果存在则删除该学生信
息,否则输出不是该班级学生
 #include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX 50
int Input();
int nob1();
int px1();
int del();
struct student
{
	int num;
	char name[20];
	double score;
	int len;
};

int main(int argc, const char *argv[])
{
	while(1)
	{
	printf("***********菜单**************************\n");
	printf("***********1、输入学生信息***************\n");
	printf("***********2、输出成绩最好学生信息*******\n");
	printf("***********3、降序输出学生信息***********\n");
	printf("***********4、删除学生信息***************\n");
	printf("***********0、退出学生管理系统***********\n");

	int func;
	printf("请输入要选择的功能:");
	scanf("%d",&func);
	struct student stu[MAX];
	stu->len=0;

	switch (func)
	{
	case 1:
		{
			Input();
			break;

		}
	case 2:
		{
			nob1();
			break;


		}
	case 3:
		{
			px1();
			break;
		}
	case 4:
		{
del();
break;

		}
	case 0:
		{
			break;
		}

	}
	}
	
	return 0;
}

//学生信息输入
int Input()
{
	int num;
	while(1)
	{
		printf("请输入要输入多少学生的信息:");
		scanf("%d",&num);
		if(num>MAX)
		{
			printf("要输入的信息个数超过最多容纳限制,请重新输入:");
		}
		else
		{
			break;
		}
	}
	struct student stu[MAX];

	for(int i=0;i<num;i++)
	{
		printf("请输入第%d个学生的学号:\n",i);
		scanf("%d",&stu[i].num);
		printf("请输入第%d个学生的姓名:\n",i);
		scanf("%s",stu[i].name);
		printf("请输入第%d个学生的成绩:\n",i);
		scanf("%lf",&stu[i].score);
		stu->len++;
	}
/*	int n=stu->len;
	for(int i=0;i<stu->len;i++)
	{
	printf("学号%d\t\t姓名%s\t\t成绩%.2lf\n",stu[i].num,stu[i].name,stu[i].score);
	}
	int index;
	for(int i=0;i<stu->len-1;i++)
	{
		index=i;
		for(int j=0;j<stu->len;j++)
		{
			if(stu[j].score>stu[index].score)
			{
				index=j;
			}
		}
	//	if(index!=i)
	//	{
			struct student temp=stu[index];
			stu[index]=stu[i];
			stu[i]=temp;
//		}

	}
	printf("成绩最高的学生是:");
	printf("学号%d\t\t姓名%s\t\t成绩%.2lf\n",stu[0].num,stu[0].name,stu[0].score);
	printf("%d\n",n);
	printf("所有学生信息如下:");
	for(int i=0;i<n;i++)
	{
	printf("学号%d\t\t姓名%s\t\t成绩%.2lf\n",stu[i].num,stu[i].name,stu[i].score);
	}*/
	return 0;

}

//输出成绩最好的学生的信息//降序排列
int nob1()
{
	//选择排序
	struct student stu[MAX];
	int index;	
	printf("%d",stu->len);
	for(int i=0;i<stu->len-1;i++)
	{
		index=i;
		for(int j=0;j<stu->len;j++)
		{
			if(stu[j].score>stu[index].score)
			{
				index=j;
			}
		}
		if(index!=i)
		{
			struct student temp=stu[index];
			stu[index]=stu[i];
			stu[i]=temp;
		}

	}
	printf("成绩最高的学生是:");
	printf("学号%d\t\t姓名%s\t\t成绩%.2lf\n",stu[0].num,stu[0].name,stu[0].score);
	return 0;
}
//输出成绩最好的学生的信息//降序排列
int px1()
{
	//选择排序
	printf("555");
	struct student stu[MAX];
	int index;	
	for(int i=0;i<stu->len-1;i++)
	{
		index=i;
		for(int j=i+1;j<stu->len;j++)
		{
			if(stu[j].score>stu[index].score)
			{
				index=j;
			}
		}
		if(index!=i)
		{
			struct student temp=stu[index];
			stu[index]=stu[i];
			stu[i]=temp;
		}
	}
	printf("所有学生信息如下:");
	for(int i=0;i<stu->len;i++)
	{
	printf("学号%d\t\t姓名%s\t\t成绩%.2lf\n",stu[i].num,stu[i].name,stu[i].score);
	}
	return 0;
}

//删除学生信息
int del()
{
	struct student stu[MAX];
	char name[20];
	printf("请输入要删除的学生姓名:");
	scanf("%s",name);
	for(int i=0;i<stu->len;i++)
	{
		if(name==stu[i].name)
		{
			for(int j=i;j<=stu->len;i++)
			{
				stu[j]=stu[j+1];
			}
		}

	}
}
                                                                  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值