使用结构体完成学生(学号、姓名、性别、成绩)管理系统
1. 使用菜单实现
2. 功能1:完成对学生信息的录入,确定人数,完成输入
3. 功能2:完成对学生信息的输出
4. 功能3:输出成绩最高和最低学生的信息
5. 功能4:输出学生的总成绩和平均成绩
6. 功能5:对学生信息按成绩进行排序,根据传入的升降序,确定排序功能、功能6:提示并输入要查 找的学生名字,查找该名字是否存在于该班级
7. 功能0: 退出
代码实现:
#include <stdio.h>
#include <string.h>
struct Xinxi
{
char xuehao[20];
char name[20];
char xingbie[20];
int cheng;
};
int main()
{
int size = 0;
int menu = 0;
struct Xinxi xinxi[100];
memset(xinxi, 0, sizeof(xinxi));
while (1)
{
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======6.提示并输入要查找的学生名字,查找该名字是否存在于该班级中=====\n");
printf("\t\t======0.退出=====\n");
printf("请输入>>>");
scanf("%d", &menu);
getchar();
switch (menu)
{
case 1:
{
printf("输入学生个数:");
scanf("%d", &size);
for (int i = 0; i < size; i++)
{
printf("请输入第%d个学生的学号:", i + 1);
scanf("%s", xinxi[i].xuehao);
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", xinxi[i].name);
printf("请输入第%d个学生的性别:", i + 1);
scanf("%s", xinxi[i].xingbie);
printf("请输入第%d个学生的成绩:", i + 1);
scanf("%d", &xinxi[i].cheng);
printf("\n");
}
}
break;
case 2:
{
printf("输出学生的信息:\n");
printf("学号\t姓名\t性别\t成绩\n");
for (int i = 0; i < size; i++)
{
printf("%s\t%s\t%s\t%d\n", xinxi[i].xuehao, xinxi[i].name, xinxi[i].xingbie, xinxi[i].cheng);
}
}
break;
case 3:
{
int maxi = 0;
int mini = 0;
for (int i = 0; i < size; i++)
{
if (xinxi[i].cheng > xinxi[maxi].cheng)
{
maxi = i;
}
}
for (int i = 0; i < size; i++)
{
if (xinxi[i].cheng < xinxi[mini].cheng)
{
mini = i;
}
}
printf("输出成绩最高和最低的学生的信息:\n");
printf("%s\t%s\t%s\t%d\n", xinxi[maxi].xuehao, xinxi[maxi].name, xinxi[maxi].xingbie, xinxi[maxi].cheng);
printf("%s\t%s\t%s\t%d\n", xinxi[mini].xuehao, xinxi[mini].name, xinxi[mini].xingbie, xinxi[mini].cheng);
}
break;
case 4:
{
int sum = 0;
float ave = 0;
for (int i = 0; i < size; i++)
{
sum = sum + xinxi[i].cheng;
}
ave = sum / size;
printf("总成绩\t平均成绩\n");
printf("%d\t%.2f\n", sum, ave);
}
break;
case 5:
{
int flag = 0;
printf("输入升or降序(1为升序,0为降序)");
scanf("%d", &flag);
struct Xinxi big;
struct Xinxi small;
if (flag == 1)
{
for (int i = 1; i < size; i++)
{
for (int j = 0; j < size - i; j++)
{
if (xinxi[j].cheng > xinxi[j + 1].cheng)
{
big = xinxi[j];
xinxi[j] = xinxi[j + 1];
xinxi[j + 1] = big;
}
}
}
printf("输出学生的信息:\n");
printf("学号\t姓名\t性别\t成绩\n");
for (int i = 0; i < size; i++)
{
printf("%s\t%s\t%s\t%d\n", xinxi[i].xuehao, xinxi[i].name, xinxi[i].xingbie, xinxi[i].cheng);
}
}
else
{
for (int i = 1; i < size; i++)
{
for (int j = 0; j < size - i; j++)
{
if (xinxi[j].cheng < xinxi[j + 1].cheng)
{
small = xinxi[j];
xinxi[j] = xinxi[j + 1];
xinxi[j + 1] = small;
}
}
}
printf("输出学生的信息:\n");
printf("学号\t姓名\t性别\t成绩\n");
for (int i = 0; i < size; i++)
{
printf("%s\t%s\t%s\t%d\n", xinxi[i].xuehao, xinxi[i].name, xinxi[i].xingbie, xinxi[i].cheng);
}
}
}
break;
case 6:
{
char c[20] = {0};
int x = 0;
printf("输入要查找学生的姓名:");
scanf("%s", c);
for (int i = 0; i < size; i++)
{
if (strcmp(xinxi[i].name, c) == 0)
{
x++;
}
}
if (x == 1)
{
printf("存在\n");
}
else
{
printf("不存在\n");
}
}
break;
case 0:
goto end;
default:
printf("输入错误,重新输入:\n");
}
}
end:
return 0;
}