seven chen 6 years ago
commit a0f73cfcde

@ -0,0 +1,181 @@
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N 3
#define M 10
int add = N - 1;
int sum[N] = { 0 }, Max[N], Min[N];
float aver[N] = { 0 };
struct player
{
int num;
char name[8];
int score[M];
};
void c(const unsigned short textColor)
{
if(textColor>=0 && textColor<=15)
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), textColor);
else
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);}
void Inistplayer(struct player a[], int n)
{
int i;
printf("请输入选手的序号和姓名(输入格式:序号 姓名)\n");
for (i = 0; i < n; i++)
scanf("%d %s", &a[i].num, a[i].name);
}
void Inputscore(int score[], int n)
{
int i;
for (i = 0; i < n; i++)
scanf("%d",&score[i]);
}
void sort(struct player a[], float b[], int n)
{
int i, k, j,t;
float temp;
char str[8];
for (i = 0; i < n-1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
if (b[k] > b[j])
k = j;
if (k != i)
{
temp = b[i];
b[i] = b[k];
b[k] = temp;
strcpy(str, a[i].name);
strcpy(a[i].name, a[k].name);
strcpy(a[k].name, str);
t = a[i].num;
a[i].num = a[k].num;
a[k].num = t;
}
}
}
int main()
{
int flag = 1, i, m, j;
char n;
FILE *fp;
struct player a[20];
while(flag)
{
c(4);printf(" 歌手比赛管理系统 \n");
c(4);printf("★★★★★★★★★★★★★★★★★★★★★★★★\n");
c(1);printf(" 1输入选手数据 \n");
c(5);printf(" 2评委打分 \n");
c(6);printf(" 3成绩排序 \n");
c(8);printf(" 4数据查询 \n");
c(9);printf(" 5追加学生数据 \n");
c(10);printf(" 6写入数据文件 \n");
c(13);printf(" 7退出系统 \n");
c(4);printf("★★★★★★★★★★★★★★★★★★★★★★★★\n");
c(15);printf(" \n");
printf("输入序号以选择功能:");
scanf("%d,",&n);
switch(n)
{
case 1:system("cls");
Inistplayer(a,N);printf("Press any key to continue...");
getch();system("cls");
break;
case 2:
system("cls");
for(i=0;i<N;i++)
{
printf("注意事项所有成绩满分为10最低分为0\n");
printf("评委给第%d位选手的分数是",i+1);
Inputscore(a[i].score,M);
printf("第%d位的选手所有成绩\n",i+1);
for(j=0;j<M;j++)
{ printf("%d\t",a[i].score[j]);}
printf("\n") ;
printf("Press any key to continue...");
getch();
system("cls");
}
system("cls");
break;
case 3:
system("cls");
printf("成绩计算规则:去掉最高分,去掉最低分\n");
for(i=0;i<N;i++)
{
Max[i]=a[i].score[0];
Min[i]=a[i].score[0];
for(j=0;j<M;j++)
{
sum[i]+=a[i].score[j];
if(Max[i]<a[i].score[j])
Max[i]=a[i].score[j];
if(Min[i]>a[i].score[j])
Min[i]=a[i].score[j];
}
aver[i]=(float)(sum[i]-Max[i]-Min[i])/(M-2);
}
sort(a,aver,N);
for(i=0;i<N;i++)
{
printf("%s\t%5.2f\n",a[i].name,aver[i]);}printf("Press any key to continue...");
getch();
system("cls"); break;
case 4:
system("cls");
printf("输入序号以查询选手:");
scanf("%d",&m);
for(i=0;i<N;i++)
if(a[i].num==m)
{
printf("第%d号选手%s 总分:%d,最高分%d,最低分%d,平均分%5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
printf("\n");
}printf("Press any key to continue...");
getch();
system("cls"); break;
case 5:
system("cls"); printf("请输入要追加的选手数据:\n");
add=add+1;
scanf("%d %s",&a[add].num,a[add].name);
printf("Press any key to continue...");
getch();
system("cls"); break;
case 6:
system("cls");
printf("将数据写入文件\n");
fp=fopen("歌手比赛数据文件.txt","w");
int i=0;
for(i<add+2;i++;)
{
fprintf(fp,"%d %s %d %d %d %5.2f",a[i].num,a[i].name,sum[i],Max[i],Min[i],aver[i]);
}
fclose(fp);printf("Press any key to continue...");
getch();
system("cls"); break;
case 7:system("cls");exit(0);
system("cls"); break;
default:flag=0;
}
}
return 0;
}

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save