校园歌⼿信息评分系统(C语⾔),⼤⼀新⽣期末实训要求:
1. 在校园歌⼿⽐赛中,歌⼿参加⽐赛,评委评分,并最后按名次⾼低输出显⽰。
(1)有10个歌⼿参加⽐赛,实现班级,姓名及歌⼿的分数存储;
(2)其中每个歌⼿的分数有5评委打分;
(3)歌⼿最后得分为:去掉⼀个最⾼分和⼀个最低分,其余3分数的平均值;
(4)对所有歌⼿进⾏从⾼到低排序。
2.实现以下各个功能维护:
(1)按姓名查
(2)插⼊歌⼿信息
(3)删除歌⼿信息
(4)修改歌⼿信息
(5)显⽰
#include<stdio.h>
#include<windows.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
#define size 5 //评委⼈数
#define maxstu 10 //学⽣⼈数
struct student //信息结构体
{
int banji; //班级
char name[20]; //名字
int score[size]; //评委评分
float max; //最⼤值
float min; //最⼩值
float sum; //总分
float average; //平均值
};
int count=0; //学⽣⼈数
struct student stu[size]; //定义全局变量
fun1() //选⼿信息录⼊
{
int i,j; //i代表学⽣,j代表评委
int sm;  //定义需要录⼊⼏位学⽣
float max1,min1; //最⼤值,最⼩值
printf("请输⼊10位以内学⽣⼈数:");
scanf("%d",&sm);
for(i=0;i<sm;i++)
{
printf("请输⼊%d选⼿信息\n",i+1);
printf("请输⼊班级:");
scanf("%d",&stu[i].banji);
getchar();
printf("请输⼊姓名:");
gets(stu[i].name);
for(j=0;j<size;j++)
{
printf("请输⼊%d评委打分:",j+1);
scanf("%d",&stu[i].score[j]);
}
count++;
}
//最⾼分,最低分,总分,平均值
for(i=0;i<count;i++)
{
max1=stu[i].score[0];
max1=stu[i].score[0];
for(j=0;j<size;j++)
{
if(max1<stu[i].score[j])
max1=stu[i].score[j];
}
stu[i].max=max1;
}
for(i=0;i<count;i++)
{
min1=stu[i].score[0];
for(j=0;j<size;j++)
{
if(min1>stu[i].score[j])
min1=stu[i].score[j];
}
stu[i].min=min1;
}
for(i=0;i<count;i++)
{
stu[i].sum=stu[i].score[0];
for(j=1;j<size;j++)
{
stu[i].sum=stu[i].sum+stu[i].score[j];
}
stu[i].average=(stu[i].sum-stu[i].max-stu[i].min)/3;
}
}
fun2()//按姓名查
{
int i;  //定义循环
char x[20]; //定义查姓名
printf("请输⼊要查学⽣的名字:");
scanf("%s",x);
getchar();
for(i=0;i<count;i++)
{
if(strcmp(stu[i].name,x)!=0)//判断是否相等
{
continue;
printf("没有到学号为%s的学⽣信息\n",x);
}
else
{
printf("要查的学⽣的信息为:\n班级:%d 姓名:%s 分数:%d %d %d %d %d 最⾼分:%f 最低分:%f 总分:%f 平均值:%f",
stu[i].banji,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].max,stu[i].min,stu[i].sum,stu[i].average);  }
}
getchar();
}
fun3() //插⼊歌⼿信息
{
int weizhi,i,j;
float max2,min2;
struct student x; //定义局部变量
if(count==maxstu)
{
printf("位置已满,⽆法插⼊\n");
}
else
{
printf("请输⼊要插⼊的位置:");
scanf("%d",&weizhi);
if(weizhi>count+1||weizhi<1)
{
printf("位置错误\n");
printf("位置错误\n");
}
else
{
getchar();
printf("请输⼊班级:");
scanf("%d",&x.banji);
getchar();
printf("请输⼊姓名:");
gets(x.name);
for(j=0;j<size;j++)
{
printf("请输⼊评委打分:");
scanf("%d",&x.score[j]);
}
getchar();
for(i=0;i<count;i++)
{
max2=x.score[0];
for(j=0;j<size;j++)
{
if(max2<x.score[j])
max2=x.score[j];
}
x.max=max2;
}
for(i=0;i<count;i++)
{
min2=x.score[0];
for(j=0;j<size;j++)
{
if(min2>x.score[j])
min2=x.score[j];
}
x.min=min2;
}
for(i=0;i<count;i++)
{
x.sum=x.score[0];
for(j=1;j<size;j++)
{
x.sum=x.sum+x.score[j];
}
x.average=(x.sum-x.max-x.min)/3; }
for(i=count-1;i>=weizhi-1;i--)
{
stu[i+1]=stu[i];
}
stu[weizhi-1]=x;
count++;
}
}
}
fun4() //删除歌⼿信息
{
int i,j;
char a[20];
printf("请输⼊要删除学⽣的名字:");    scanf("%s",a);
getchar();
for(i=0;i<count;i++)
{
if(strcmp(stu[i].name,a)!=0)
{
continue;
printf("没有到学号为%s的学⽣信息\n",a);
}
else
{
printf("要删除的学⽣的信息为:\n班级:%d 姓名:%s 分数:%d %d %d %d %d 最⾼分:%f 最低分:%f 总分:%f 平均值:%f",
stu[i].banji,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].max,stu[i].min,stu[i].sum,stu[i].average);    }
getchar();
for(j=i+1;j<=count;j++)
{
stu[j-1]=stu[j];
}
count--;
}
}
fun5() //修改歌⼿信息
{
int i,j;
float max2,min2;
char m[20];
printf("请输⼊要修改学⽣的名字:");
scanf("%s",m);
getchar();
for(i=0;i<count;i++)
{
if(strcmp(stu[i].name,m)!=0)
{
continue;
printf("没有到学号为%s的学⽣信息\n",m);
}
else
{
printf("当前学⽣的信息为:\n班级:%d 姓名:%s 分数:%d %d %d %d %d 最⾼分:%f 最低分:%f 总分:%f 平均值:%f\n",
stu[i].banji,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].max,stu[i].min,stu[i].sum,stu[i].average);    printf("请输⼊要修改的班级:");
scanf("%d",&stu[i].banji);
getchar();
printf("请输⼊要修改的姓名:");
gets(stu[i].name);
for(j=0;j<size;j++)
{
printf("请输⼊%d评委打分:",j+1);
scanf("%d",&stu[i].score[j]);
}
}
}
getchar();
//最⾼分,最低分,总分
for(i=0;i<count;i++)
{
max2=stu[i].score[0];
for(j=0;j<size;j++)
{
if(max2<stu[i].score[j])
max2=stu[i].score[j];
}
stu[i].max=max2;
}
for(i=0;i<count;i++)
{
歌手名字min2=stu[i].score[0];
for(j=0;j<size;j++)
{
if(min2>stu[i].score[j])
min2=stu[i].score[j];
}
stu[i].min=min2;
}
for(i=0;i<count;i++)
{
stu[i].sum=stu[i].score[0];
for(j=1;j<size;j++)
{
stu[i].sum=stu[i].sum+stu[i].score[j];
}
stu[i].average=(stu[i].sum-stu[i].max-stu[i].min)/3;
}
}
fun6() //显⽰学⽣信息
{
int i;
getchar();
for(i=0;i<count;i++)
{
printf("\n%d学⽣的信息为:\n班级:%d 姓名:%s 分数:%d %d %d %d %d 最⾼分:%f 最低分:%f 总分:%f 平均值:%f",i+1,
stu[i].banji,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].max,stu[i].min,stu[i].sum,stu[i].average);  }
getchar();
}
fun7() //按平均分排序
{
int i,j;
struct student temp;
for(i=0;i<count;i++)
{
for(j=i+1;j<count;j++)
{
if(stu[i].average>stu[j].average)
{
temp=stu[i];
stu[i]=stu[j];
stu[j]=temp;
}
}
}
getchar();
for(i=0;i<count;i++)
{
printf("\n%d平均分按⼩到⼤排序为:\n班级:%d 姓名:%s 分数:%d %d %d %d %d 最⾼分:%f 最低分:%f 总分:%f 平均值:%f ",i+1,
stu[i].banji,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].score[4],stu[i].max,stu[i].min,stu[i].sum,stu[i].average); }
getchar();
}
void SetColor(unsigned short ForeColor,unsigned short BackGroundColor)
{
HANDLE hCon=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hCon,(ForeColor%16)|(BackGroundColor%16*16));
}
main()
{
int n,i;
for(i = 1;i <= 50;i++)
{
SetColor(0,14);
printf(" ");
printf("%d%%",2*i);
Sleep(101-2*i);
printf("\b\b\b");
}
SetColor(15,0);