校园歌手信息评分系统(C语言),大一新生期末实训
程序员文章站
2022-07-15 08:46:47
...
要求:
- 在校园歌手比赛中,歌手参加比赛,评委评分,并最后按名次高低输出显示。
(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);
}
我们只学到函数,结构体跳着讲的,指针后面的都没学,所以代码看着有点绕,嘿嘿,第一次完成的程序,
上一篇: 关于C语言的字符串的个人理解,大一新生,写错不要喷。一
下一篇: 大一新生,学生管理系统