完成学生管理系统
1> 使用菜单完成
2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入
3> 查看学生信息:输出所有学生姓名以及对应的分数
4> 求出学习最好的学生信息:求最大值
5> 按姓名将所有学生进行升序排序
6> 按成绩将所有学生进行升序排序
要求每个功能使用函数完成
代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 50 //能够容纳的人数
int size =0; //实际使用人数
void print_menu();
void input(char name[MAX][20],int score[MAX]);
void output(char name[MAX][20],int score[MAX]);
void best(char name[MAX][20],int score[MAX]);
void namepx(char name[MAX][20],int score[MAX]);
void scorepx(char name[MAX][20],int score[MAX]);
int main(int argc, const char *argv[])
{
char name[MAX][20] = {""};
int score[MAX] = {0};
int menu = 0;
while(1)
{
//菜单
print_menu();
printf("请输入操作码>>>");
scanf("%d", &menu);
getchar();
//选择
switch(menu)
{
case 1:
{
input(name,score);
}
break;
case 2:
{
output(name,score);
}
break;
case 3:
{
best(name,score);
}
break;
case 4:
{
namepx(name,score);
}
break;
case 5:
{
scorepx(name,score);
}
break;
case 0: goto END;
default:printf("您输入的功能有误,请重新输入\n");
}
}
END:
return 0;
}
//定义菜单函数
void print_menu()
{
printf("\t\t======1、学生信息录入======\n");
printf("\t\t======2、查看学生信息======\n");
printf("\t\t======3、查看学习最好的学生信息======\n");
printf("\t\t======4、按姓名升序排序======\n");
printf("\t\t======5、按成绩升序排序======\n");
printf("\t\t======0、退出======\n");
}
//定义学生信息录入函数
void input(char name[MAX][20],int score[MAX])
{
printf("请输入要录入的学生个数:");
scanf("%d",&size);
getchar();
for(int i=0;i<size;i++)
{
printf("请输入第%d名学生的姓名与成绩:",i+1);
scanf("%s%d",name[i],&score[i]);
}
puts("");
printf("录入完毕\n");
}
//定义查看学生信息函数
void output(char name[MAX][20],int score[MAX])
{
printf("学生信息如下:\n");
for(int i=0;i<size;i++)
{
printf("第%d名学生的名字与成绩为:%s\t%d\n",i+1,name[i],score[i]);
}
puts("");
}
//定义查看学习最好的学生信息函数
void best(char name[MAX][20],int score[MAX])
{
int max = score[0];
int maxi = 0;
for(int i=0;i<size;i++)
{
if(max < score[i])
{
max =score[i];
maxi = i;
}
}
printf("成绩最好的学生是:%s,成绩为%d\n",name[maxi],score[maxi]);
}
//按名字升序
void namepx(char name[MAX][20],int score[MAX])
{
char temp_name[20] = "";
int temp_score = 0;
for(int i=1;i<size;i++)
{
for(int j=0;j<size-i;j++)
{
if(strcmp(name[j],name[j+1])>0)
{
strcpy(temp_name,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],temp_name);
temp_score = score[j];
score[j] = score[j+1];
score[j+1] = temp_score;
}
}
}
printf("排序成功!\n");
}
//按成绩排序
void scorepx(char name[MAX][20],int score[MAX])
{
char temp_name[20] = "";
int temp_score = 0;
for(int i=1;i<size;i++)
{
for(int j=0;j<size-i;j++)
{
if(score[j] > score[j+1])
{
strcpy(temp_name,name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],temp_name);
temp_score = score[j];
score[j] = score[j+1];
score[j+1] = temp_score;
}
}
}
printf("排序成功!\n");
}
运行结果:
思维导图: