运动会分数统计系统的设计与实现

2024-12-12 08:29:48
推荐回答(1个)
回答1:

  /*
  5
  school1
  school2
  school3
  school4
  school5
  2 3
  跳远
  1 2 3 4 5
  长跑
  5 4 2 1 3
  跳高
  1 3 2 4 5
  100m
  2 1 3 5 4
  铅球
  3 2 1 4 5
  */
  #include
  #include
  #include
  using namespace std;
  int n; //n个学校
  int m; //m个男子项目
  int w; //w个女子项目
  struct pro //表示项目的结构体
  {
  string name; //项目名称
  int snum[6]; //前5名学校的编号
  }p[21];
  struct school //表示学校的结构体
  {
  int num;
  string name; //学校名称
  int score; //学校总分
  int male; //男子总分
  int female; //女子总分
  }sch[21];
  int a[101][101];
  int integral[5]={7,5,3,2,1};
  void input()
  {
  int i,j,y,x;
  printf("输入学校数目:");
  y=0;
  while(1)
  {
  scanf("%d",&n);
  if(n>=1&&n<=20)y=1;
  if(y)break;
  else printf("输入数据有误,请重新输入:");
  }
  for(i=1;i<=n;i++)
  {
  printf("输入第%d个学校的名称:",i);
  cin>>sch[i].name;
  sch[i].score=0;
  sch[i].female=0;
  sch[i].male=0;
  sch[i].num=i;
  }
  printf("输入男子项目数和女子项目数:");
  y=0;
  while(1)
  {
  scanf("%d%d",&m,&w);
  if(m<=20&&m>=1&&w<=20&&w>=1)y=1;
  if(y)break;
  else printf("输入数据有误,请重新输入:");
  }
  for(i=1;i<=m+w;i++)
  {
  printf("输入第%d个项目的名称:\n",i);
  cin>>p[i].name;
  printf("输入第%d个项目的前5名的学校编号:\n",i);
  for(j=1;j<=5;j++)
  {
  y=0;
  while(1)
  {
  scanf("%d",&x);
  if(x>=1&&x<=20)y=1;
  if(y)break;
  else printf("输入数据有误,请重新输入:");
  }
  p[i].snum[j]=x;
  sch[x].score+=integral[j-1];
  if(i<=m)sch[x].male+=integral[j-1];
  else sch[x].female+=integral[j-1];
  }
  }
  }
  void print(int i)
  {
  cout<  <  }
  void bianhao() //按编号排序
  {
  int i,j;
  school t;
  for(i=1;i  {
  for(j=i;j<=n;j++)
  if(sch[i].num>sch[j].num)
  {t=sch[i];sch[i]=sch[j];sch[j]=t;}
  }
  printf("\n按编号排列:\n");
  printf("编号 学校名称 总分 男子总分 女子总分\n");
  for(i=1;i<=n;i++)
  print(i);
  }
  void zongfen() //按学校总分排序
  {
  int i,j;
  school t;
  for(i=1;i  {
  for(j=i;j<=n;j++)
  if(sch[i].score  {t=sch[i];sch[i]=sch[j];sch[j]=t;}
  }
  printf("\n按学校总分排列:\n");
  printf("编号 学校名称 总分 男子总分 女子总分\n");
  for(i=1;i<=n;i++)
  print(i);
  }
  void malezf() //按学校男总分排序
  {
  int i,j;
  school t;
  for(i=1;i  {
  for(j=i;j<=n;j++)
  if(sch[i].male  {t=sch[i];sch[i]=sch[j];sch[j]=t;}
  }
  printf("\n按学校男子总分排列:\n");
  printf("编号 学校名称 总分 男子总分 女子总分\n");
  for(i=1;i<=n;i++)
  print(i);
  }
  void femalezf() //按学校女总分排序
  {
  int i,j;
  school t;
  for(i=1;i  {
  for(j=i;j<=n;j++)
  if(sch[i].female  {t=sch[i];sch[i]=sch[j];sch[j]=t;}
  }
  printf("\n按学校女子总分排列:\n");
  printf("编号 学校名称 总分 男子总分 女子总分\n");
  for(i=1;i<=n;i++)
  print(i);
  cout<  }
  void cxsch() //查询学校信息
  {
  int i,y,s;
  printf("输入需要查询的学校编号:");
  y=0;
  while(1)
  {
  scanf("%d",&s);
  if(s>=1&&s<=n)y=1;
  if(y)break;
  else printf("输入数据有误,请重新输入:");
  }
  printf("该学校相关信息:\n");
  printf("编号 学校名称 总分 男子总分 女子总分\n");
  for(i=1;i<=n;i++)
  {
  if(sch[i].num==s)
  {
  print(i);
  break;
  }
  }
  cout<  }
  void cxxm() //查询项目信息
  {
  int i,y,s;
  printf("输入需要查询的项目编号:");
  y=0;
  while(1)
  {
  scanf("%d",&s);
  if(s>=1&&s<=n)y=1;
  if(y)break;
  else printf("输入数据有误,请重新输入:");
  }
  cout<  printf("名次 编号 学校名称\n");
  for(i=1;i<=5;i++)
  cout<<" "<  cout<  }

  void solve()
  {
  int z;
  while(1)
  {
  printf("\n选择您需要的操作(选择序号):\n");
  printf("1.按学校编号排序输出\n");
  printf("2.按学校总分排序输出\n");
  printf("3.按学校男总分排序输出\n");
  printf("4.按学校女总分排序输出\n");
  printf("5.查询某个学校成绩\n");
  printf("6.查询某个项目成绩\n");
  printf("7.结束\n\n");
  scanf("%d",&z);
  if(z==1)bianhao();
  if(z==2)zongfen();
  if(z==3)malezf();
  if(z==4)femalezf();
  if(z==5)cxsch();
  if(z==6)cxxm();
  if(z==7)break;
  }
  }

  int main()
  {
  input();
  solve();
  return 0;
  }