#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
void enter();
void file();
void input(int );
void cal_score(double *x,int );
void cal();
void count(char name[],char number[], double x[]);
int n;
int flag;
void check();
void help(void);
int main()
{
flag = 1;
enter();
printf("\n\n\n\n");
printf("\t ---------------------------------------------- \n");
printf("\t | 欢迎使用歌手评分系统 | \n");
printf("\t ---------------------------------------------- \n");
printf("\t | \t 1. 进入系统 | \n");
printf("\t | | \n");
printf("\t | \t 2. 使用帮助 | \n");
printf("\t | | \n");
printf("\t | \t 3. 查询记录 | \n");
printf("\t | | \n");
printf("\t | \t 4. 退出程序 | \n");
printf("\t | | \n");
printf("\t ---------------------------------------------- \n");
printf("\t请选择:[ ]\b\b");
scanf("%d",&n);
switch(n)
{
case 1: cal(); break;
case 2: help(); break;
case 3: check(); break;
case 4: exit(0);
default:
main();
}
//file();
return 0;
}
void check(){
if (flag ==1)
{
printf("未输入任何数据请输入后再试!\n");
help();
}
}
void help(void){
printf("\n\n\n\n使用方法\n\n");
printf("\t1、最多录入100名歌手名字和10名评委的打分\n");
printf("\t2、采用10分制,评委的打分保留两位小数\n");
printf("\t3、擦掉一个最高分和抹掉一个最低分,给出每名歌手的平均得分\n");
printf("\t4、生成分数并统计表格\n");
printf("\n\n\t1.回到主页\n");
printf("\t2.退出程序\n");
printf("\t 请您选择:[ ]\b\b");
scanf("%d",&n);
switch(n)
{
case 1: main();
case 2: exit(0);
default:
main();
}
}
void cal(void){
int k,l;
int pinwei,geshou;
char a[N][N];
char v[N];
float x[N][N];
float sum[N]={0};
float temp=0;
float paixu[N]={0};
float max[N]={0};
float min[N]={0};
char h[N][N];//学
int i=0;
printf("\n\n\n请输入参加比赛的歌手人数:");
scanf("%d",&geshou);
if(geshou<2||geshou>N)
{
printf("\n\n歌手人数不符合要求,请重新输入:");
do
{
printf("\n\n歌手人数不符合要求,请重新输入: ");
scanf("%d",&geshou);
}while(geshou<2||geshou>N);
}
printf("\n请输入评委人数:");
scanf("%d",&pinwei);
if(pinwei<3||pinwei>10)
{
//printf("\n评委人数不符合要求,请重新输入:");
do
{
printf("\n评委人数不符合要求,请重新输入:");
scanf("%d",&pinwei);
}while(pinwei<3||pinwei>10);
}
//printf("\n**********************************************************************\n");
for(k=0;k<geshou;k++) //录入评委对歌手的打分
{
printf("\n请输入第%d个歌手的名字:",k+1);
scanf("%s", a[k]);
printf("\n请输入第%d个歌手的学号:",k+1);
scanf("%s", h[k]);
i=1;
while(i)
{
i=0;
for (int j = 0; j<k; ++j)
{
if (strcmp(h[k],h[j])==0)
{
printf("学号重复,请重新输入\n");
printf("\n请输入第%d个歌手的学号:",j+1);
scanf("%s", h[j]);
i=1;
}
}
}
for(l=0;l<pinwei;l++)
{
printf("\n请输入%s(%s)第%d个评委的分数:",a[k],h[k],l+1);
scanf("%f",&x[k][l]);
}
}
printf("\n**********************************************************************\n");
for(k=0;k<geshou;k++) //去掉一个最高分,去掉一个最低分
{
max[k]=min[k]=x[k][0];
for(l=0;l<pinwei;l++)
{
if(x[k][l]>max[k])
max[k]=x[k][l];
if(x[k][l]<min[k])
min[k]=x[k][l];
}
printf("\n\n\t%s去掉一个最高分%.2f,去掉一个最低分%.2f",a[k],max[k],min[k]);
}
//printf("\n\n**********************************************************************\n");
for(k=0;k<geshou;k++) //计算平均得分
{
{
for(l=0;l<pinwei;l++)
paixu[k]+=x[k][l];
}
paixu[k]=(paixu[k]-max[k]-min[k])/(pinwei-2);
}
//printf("\n**********************************************************************\n");
for(l=0;l<geshou;l++) //对平均得分排序
{
for(k=geshou-1;k>l;k--)
if(paixu[k]>paixu[k-1])
{
temp=paixu[k];
paixu[k]=paixu[k-1];
paixu[k-1]=temp;
}
strcpy(v,a[k]);
strcpy(a[k],a[k-1]);
strcpy(a[k-1],v);
}
printf("\n\n排序结果是:\n\n"); //输出排序后的列表
printf("\t名次\t名字\t学号\t得分\n");
for(k=0;k<geshou;k++)
{
printf("\t%d",k+1);
printf("\t%s",a[k]);
printf("\t%s",h[k]);
printf("\t%.2f\n",paixu[k]);
}
help();
}
void enter(){
system("cls");
system("color f0");
printf("歌手比赛评分管理系统\n");
printf("BY:徐崎峰 Evsio0n\n");
/** printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000000000000000000000*****\n");
printf("0000000000000000000000*****\n");
printf("***************************\n");
printf("*****Writen by Evsio0n*****\n");
printf("***************************\n");
printf("***************************\n");
printf("***************************\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000*****0000*****0000*****\n");
printf("0000000000000000000000*****\n");
printf("0000000000000000000000*****\n"); **/
}