使用结构体数组,完成小型学生成绩管理系统
一个班级有
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];
}
}
}
}