数据结构课程设计—运动会分数统计

时间:2025-03-28 20:04:58
#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; }