数据结构课程设计—运动会分数统计
#include <>
#include <>
#include<>
#include <>
#define Sch 10//学校数目
#define num 10//项目数目
typedef struct//每个学校派一名参加比赛
{
int AllScore; //总分
int Boyscore;//男生分数
int Girlscore; //女生分数
int School_rank;
char NAME[20]; //学校的名字
}pro;//学校结构体
pro school[Sch];
int arr[num][5]={0};//存储男子前五行存储前五 后五行存储前三
void init(int size)
{
int i,j;
for(i=0;i<size;i++)
{
school[i].AllScore=0;
school[i].Boyscore=0;
school[i].Girlscore=0;
school[i].School_rank=0;
}
}
void function()
{
int i,j,d,a;
int sumBoy[Sch]={0};//每个学校的男子比赛总成绩
int sumGirl[Sch]={0};//每个学校女子比赛总成绩
FILE *fp;
fp=fopen("","w");//追加写入
if(fp==NULL)
{
printf("can't open the file\n");
}
else
{
printf("open the file successly\n");
printf("正在进入成绩录入系统...\n");
}
Sleep(4000);
system("cls");
for(i=0;i<num;i++)//确定每个项目的分数
{
if(i<5)
{
printf("请输入%d个项目的前5名及分数",i);
for(j=0;j<5;j++)//用于获取前五名的序号
{
scanf("%d%d",&d,&a); //arr获取前五名
arr[i][j]=d;
school[d].Boyscore=a;
sumBoy[arr[i][j]]+=school[arr[i][j]].Boyscore;
}
}
else
{
printf("请输入%d个项目的前3名及分数",i);
for(j=0;j<3;j++)//用于获取前三名的序号
{
scanf("%d%d",&d,&a); //arr获取前五名
arr[i][j]=d;
school[d].Girlscore=a;
sumGirl[arr[i][j]]+=school[arr[i][j]].Girlscore;
}
}
}
for(i=0;i<Sch;i++)//统计每个人学校的总分
{
school[i].AllScore =sumBoy[i]+sumGirl[i];
}
char str2[40]={"school AllScore GirlScore BoyScore"};//写入标签
fprintf(fp,"%s\n",str2);
for(i=0;i<Sch;i++)
{
printf("请输入第%d个学校的名字>>",i);
scanf("%s",school[i].NAME);
getchar();
fprintf(fp,"%s %d %d %d\n",school[i].NAME,school[i].AllScore,sumGirl[i],sumBoy[i]);
}
fclose(fp);
}
void ZongFenPaiXu(int size)//size表示学校的个数,n代表要查找的分数,以期输出排名
{
int j=0,i;
int Array[size]={0};
int cnt[size]={0};//用来记录下标
for(i=0;i<size;i++)
{
Array[i]=school[i].AllScore;
}
while(j<size)
{
int max=0;
for (i=0;i<size;i++)
{
if(school[i].AllScore>max)
{
max=school[i].AllScore;
cnt[j]=i;
}
}
school[cnt[j]].AllScore=0;
j++;
}
printf("学校名次 学校编号 学校总分\n");
for (j=0;j<size;j++)//输出排名
{
printf("%d %d %d\n",j,cnt[j],Array[cnt[j]]);
school[cnt[j]].School_rank =j;
}
}
void SearchSchool()
{
int School_x;
printf("请输入要查询学校的编号\n");
scanf("%d",&School_x);
printf("学校编号 学校总分 男生总分 女生总分\n");
printf("%d %d %d %d",School_x,school[School_x].AllScore,school[School_x].Boyscore,school[School_x].Girlscore);
}
void show_to_user()
{
printf("*****************************************\n");
printf("** **\n");
printf("** **\n");
printf("**1.学校总分排序 **\n");
printf("**2.显示学校信息 **\n");
printf("**3.按项目编号查询前三或前五成绩 **\n");
printf("*****************************************\n");
}
void SearchByPro()
{
int i;
int School_pro;
printf("请输入项目编号\n");
scanf("%d",&School_pro);
if(School_pro<5)
{
printf("名次 学校编号\n");
for(i=0;i<5;i++)
{
printf("%d\t%d\n",i,arr[School_pro][i]);
}
}
else
{
printf("名次 学校编号\n");
for(i=0;i<3;i++)
{
printf("%d\t%d\n",i,arr[School_pro][i]);
}
}
}
void menu()
{
int i,a;
char Str[5];
while(1)
{
printf("请选择功能序号\n");
scanf("%d",&i);
switch(i)
{
case 1:ZongFenPaiXu(Sch);break;
case 2:SearchSchool();break;
case 3:SearchByPro();break;
}
printf("请问是否换需要查询yes/no\n");
scanf("%s",Str);
if(!strcmp("yes",Str))
{
return;
}
}
}
int main()
{
init(Sch);//初始化结构体
function();
system("cls");
show_to_user();
menu();
return 0;
}