用C语言编写一个程序实现学员管理,每个学员包括3门课的成绩。从键盘输入学员信息,包括学号、姓名、三门课成绩,计算出学员的平均成绩,按照学员平均成绩由大到小排序。另外需要增加下面的管理功能。
插入功能:在排序后的学员成绩表中插入一个学员的信息,要求插入后仍然保持成绩表原有排序。
删除功能:要求输入指定的学号,从学员信息表中删除该学员,删除后的成绩保持原有排序。
#include
<
stdio.h
>
#include
<
stdlib.h
>
#include
<
windows.h
>
int
count
=
0
;
struct
student
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
int num;
char name[20];
float score;
double ave;
}
stu[
50
],
in
();
void
display(
struct
student stu[]);
void
sort(
struct
student stu[]);
void
insert(
struct
student stu[]);
void
del(
struct
student stu[]);
struct
student
in
();
void
Loading();
void
main()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
char Inans,Deans,ch;
Loading();
printf(" 学员成绩管理系统 ");
printf("请输入学员信息: ");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
do...{
stu[count]=in();
printf("是否继续 (y/n)");
fflush(stdin);
ch=getchar();
count++;
}while(ch=='y'||ch=='Y');
printf(" 排序前的学员信息 ");
display(stu);
printf(" 排序后的学员信息 ");
sort(stu);
display(stu);
printf(" 是否插入新学员?(y/n)");
fflush(stdin);
Inans=getchar();
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
if(Inans=='Y' || Inans =='y')...{
insert(stu);
}
printf(" 是否要删除某个学员?(y/n)");
fflush(stdin);
Deans=getchar();
if(Deans=='y'||Deans=='Y')
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
del(stu);
}
system("pause");
system("cls");
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
struct
student
in
()
//
输入学员信息
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
float sum=0;
int i;
printf(" 学号:");
fflush(stdin);
scanf("%d",&stu[count].num);
printf(" 姓名:");
fflush(stdin);
gets(stu[count].name);
printf(" 三门成绩: ");
for(i=0;i<3;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
printf("成绩%d:",i+1);
scanf("%f",&stu[count].score);
sum += stu[count].score;
}
stu[count].ave=sum/3.0;
return stu[count];
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
void
display(
struct
student stu[])
//
显示学员信息
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
int i;
printf(" 学号 姓名 平均成绩 ");
for(i=0;i<count;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
printf("%d ",stu[i].num);
printf("%s ",stu[i].name);
printf("%.1f ",stu[i].ave);
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
void
sort(
struct
student stu[])
//
冒泡排序
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
int i,j;
struct student temp;
for(i=0;i<count;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
for(j=0;j<count-1-i;j++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(stu[j].ave<stu[j+1].ave)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
temp=stu[j];
stu[j]=stu[j+1];
stu[j+1]=temp;
}
}
}
}
void
insert(
struct
student stu[])
//
插入学员信息
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
int i,j;
struct student temp;
printf("请输入要插入的学员信息: ");
temp=in();
for(i=0;i<count;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(stu[i].ave>temp.ave)
break;
}
for(j=count;j>i;j--)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
stu[j]=stu[j-1];
}
stu[i]=temp;
count++;
printf("插入新学员后的信息如下:");
sort(stu);
display(stu);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
void
del(
struct
student stu[])
//
删除学员信息
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
int i,j;
int x;
printf("请输入要删除的学号:");
scanf("%d",&x);
for(i=0;i<count;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
if(stu[i].num==x)
break;
}
for(j=i;j<count;j++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
stu[j]=stu[j+1];
}
count--;
printf(" 删除后学员的信息如下:");
sort(stu);
display(stu);
}
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
void
Loading()
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
...
{
const M=30;
int i;
printf("【程序装载中 ");
for(i=1;i<=M;i++)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
...{
printf("■");
Sleep(200);
}
printf("】");
printf(" ");
system("cls");
printf("【载入完成】a ");
printf(" 欢迎使用【Mark】学生成绩管理系统,本程序启动代码为arron原创... ");
fflush(stdin);
}