完成学生管理系统
1> 使用菜单完成
2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入
3> 查看学生信息:输出所有学生姓名以及对应的分数
4> 求出学习最好的学生信息:求最大值
5> 按姓名将所有学生进行升序排序
6> 按成绩将所有学生进行升序排序
要求每个功能使用函数完成
#include<stdio.h>
#include<string.h>
int arr[50]={0};
char name[50][50]={""};
int n=0;
// 姓名成绩数组和人数定义
void shuru()
{
printf("请输入学生人数\n");
scanf("%d",&n);
getchar();
for (int i = 0; i < n; i++)
{
printf("请输入学生姓名:\n");
gets(name[i]);
printf("请输入学生成绩:\n");
scanf("%d",&arr[i]);
getchar();
}
}
// 输入学生的人数姓名成绩的函数
void shuchu()
{
for (int i = 0; i < n; i++)
{
printf("%s:\t",name[i]);
printf("%d\t",arr[i]);
printf(" ");
}
printf("\n");
}
// 输出所有学生及其对应的成绩
void max()
{
int maxi=0,max=0;
for (int i = 0; i < n; i++)
{
if (max<arr[i])
{
maxi=i;
max=arr[i];
}
}
printf("成绩最好的学生是%s,他的成绩为:%d\n",name[maxi],arr[maxi]);
}
// 输出成绩最好的学生信息
void name_s()
{
for (int i = 0; i < n; i++)
{
char max[20]="";
int maxi=0;
for (int j = 0; i < n-i; i++)
{
if (strcmp(max,name[j])<0)
{
strcpy(max,name[j]);
maxi=j;
}
//找到未排序数组中的最大值
}
char temp[20]="";
strcpy(temp,name[maxi]);
strcpy(name[maxi],name[n-i-1]);
strcpy(name[n-i-1],temp);
int temp1=arr[maxi];
arr[maxi]=arr[n-i-1];
arr[n-i-1]=temp1;
//与未排序的数组的最后一位交换
}
printf("根据姓名排序后的数组为:");
for (int i = 0; i < n; i++)
{
printf("%s:%d",name[i],arr[i]);
printf(" ");
//输出排序后结果
}
printf("\n");
}
//按姓名将所有学生按升序排序
void arr_s()
{
for (int i = 0; i < n; i++)
{
int max=0;
int maxi=0;
for (int j = 0; j < n-i; j++)
{
if (max<arr[j])
{
maxi=j;
max=arr[j];
}
}
char temp[20]="";
strcpy(temp,name[maxi]);
strcpy(name[maxi],name[n-i-1]);
strcpy(name[n-i-1],temp);
int temp1=arr[maxi];
arr[maxi]=arr[n-i-1];
arr[n-i-1]=temp1;
}
printf("根据成绩排序后的数组为:");
for (int i = 0; i < n; i++)
{
printf("%s:%d",name[i],arr[i]);
printf(" ");
//输出排序后结果
}
printf("\n");
}
//按成绩升序排序
int main()
{
while (1)
{
printf("========菜单========\n");
printf("1,输入学生的人数,输入学生的姓名和成绩\n");
printf("2,输出所有学生的姓名以及对应的成绩\n");
printf("3,求出学习最好的学生的信息\n");
printf("4,按学生姓名进行升序排序并输出\n");
printf("5,按学生的成绩进行升序排序并输出\n");
printf("请输入要执行的操作,退出系统请输出0\n");
int p=0;
scanf("%d",&p);
printf("\n");
switch (p)
{
case 1:
{
shuru();
}
break;
case 2:
{
shuchu();
}
break;
case 3:
{
max();
}
break;
case 4:
{
name_s();
}
break;
case 5:
{
arr_s();
}
break;
case 0:
{
return 0;
}
break;
default:
break;
}
}
}