2024.7.10

完成学生管理系统

1> 使用菜单完成

2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入

3> 查看学生信息:输出所有学生姓名以及对应的分数

4> 求出学习最好的学生信息:求最大值

5> 按姓名将所有学生进行升序排序

6> 按成绩将所有学生进行升序排序

要求每个功能使用函数完成

#include<stdio.h>
#include<string.h>
#define MAX 10
//进入系统
void print_meun(void)
{
	printf("=======学生管理系统=========\n");
	printf("=======1.学生信息录入=======\n");
	printf("=======2.查看学生信息=======\n");
	printf("===3.查看学习最好的学生=====\n");
	printf("=======4.按姓名升序=========\n");
	printf("=======5.按成绩升序=========\n");
	printf("==========0.退出系统========\n");
	printf("输入>>>");
}
//信息录入
void stu(char arr[][20],int m,int brr[],int n)
{
	for(int i=0;i<n;i++)
	{
		printf("输入学生的姓名和成绩:\n");
		scanf("%s",arr[i]);
		scanf("%d",&brr[i]);
	}
}
void look(char arr[][20],int m,int brr[],int n)
{
	for(int i=0;i<n;i++)
	{
		printf("%s:",arr[i]);
		printf("%d\n",brr[i]);
	}
}
void mmax(char arr[][20],int m,int brr[],int n)
{
	int maxi = 0,i;
	for(i=0;i<n;i++)
	{
		if(brr[maxi]<brr[i])
		{
			maxi = i;
		}
	}
	printf("学习最好的学生是%s,%d分\n",arr[maxi],brr[maxi]);
}
void forname(char arr[][20],int m,int brr[],int n)
{
	char temp[100]={0};
	for(int i=1;i<n;i++)
	{
		for(int j=0;j<n-i;j++)
		{
			if(strcmp(arr[j],arr[j+1])>0)
			{
				strcpy(temp,arr[j]);
				strcpy(arr[j],arr[j+1]);
				strcpy(arr[j+1],temp);
				int t = brr[j];
				brr[j] = brr[j+1];
				brr[j+1] = t;
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		printf("%s:",arr[i]);
		printf("%d\t",brr[i]);
	}
	printf("\n");
}
void forgrade(char arr[][20],int m,int brr[],int n)
{
	char temp[100]={0};
	for(int i=1;i<n;i++)
	{
		for(int j=0;j<n-i;j++)
		{
			if(brr[j]>brr[j+1])
			{
				strcpy(temp,arr[j]);
				strcpy(arr[j],arr[j+1]);
				strcpy(arr[j+1],temp);
				int t = brr[j];
				brr[j] = brr[j+1];
				brr[j+1] = t;
			}
		}
	}
	for(int i=0;i<n;i++)
	{
		printf("%s:",arr[i]);
		printf("%d\t",brr[i]);
	}
	printf("\n");

}
int main(int argc, const char *argv[])
{
	int meun=0;				
	char name[MAX][20]={0};
	int grade[MAX]={0},n=0;
	while(1)
	{
		print_meun();
		scanf("%d",&meun);
		switch(meun)
		{
			case 1:
				{

					printf("请输入学生个数:");
					scanf("%d",&n);
					stu(name,n,grade,n);

				}
				break;
			case 2:
				{
					look(name,n,grade,n);	
				}
				break;
			case 3:
				{
					mmax(name,n,grade,n);	
				}
				break;
			case 4:
				{
					forname(name,n,grade,n);
				}
				break;
			case 5:
				{
					forgrade(name,n,grade,n);
				}
				break;
			case 0:goto END;
			default:printf("输入有误\n");
		}

	}
END:
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值