欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

校园歌手信息评分系统(C语言),大一新生期末实训

程序员文章站 2022-07-15 08:46:47
...

要求:

  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];
  	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");
  }
  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);  
printf("\b\n加载完成!即将进入:");  
Sleep(2000);  
system("cls");
do
{
  	system("cls");
  	printf("\n\t\t\t******歌手评分系统******\n");  
     	printf("\n\t\t\t1:录入选手信息\n");  
     	printf("\n\t\t\t2:按姓名查找\n");  
     	printf("\n\t\t\t3:插入歌手信息\n");  
     	printf("\n\t\t\t4:删除歌手信息\n");  
     	printf("\n\t\t\t5:修改歌手信息\n");
     	printf("\n\t\t\t6:显示歌手信息\n");
     	printf("\n\t\t\t7:按平均分排序\n");
     	printf("\n\t\t\t0:退出\n");
     	printf("\n\t\t\t请选择(0-6):\n");
      	scanf("%d",&n);
switch(n)
{
        case 1:fun1();break;
        case 2:fun2();break;
        case 3:fun3();break;
        case 4:fun4();break;
        case 5:fun5();break;
     	case 6:fun6();break;
     	case 7:fun7();break;
}
}while(n!=0);
}

我们只学到函数,结构体跳着讲的,指针后面的都没学,所以代码看着有点绕,嘿嘿,第一次完成的程序,