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

任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五... 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。
功能要求:
1)根据指定的输入文件读取数据;
2)输入文件数据格式和文件数目由学生自行设计,主体体现学校名称、项目编号、项目名称、男子女子项目类别、前三或前五名积分;
3)根据输入文件得到各学校总分,
4)可以按学校编号或名称、学校总分、男女团体总分排序;
5)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
6)实现数据的增加、删除、修改,并将相关数据进行保存;
7)各操作结果能保存到文件,以便查询。
界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。
存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;
测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明。
展开
 我来答
quanbaixin
2011-05-31 · TA获得超过130个赞
知道答主
回答量:132
采纳率:0%
帮助的人:124万
展开全部
  /*
  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<iostream>
  #include<string>
  #include<iomanip>
  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<<sch[i].num<<setw(13)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9)
  <<sch[i].male<<setw(10)<<sch[i].female<<endl;
  }
  void bianhao() //按编号排序
  {
  int i,j;
  school t;
  for(i=1;i<n;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<n;i++)
  {
  for(j=i;j<=n;j++)
  if(sch[i].score<sch[j].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<n;i++)
  {
  for(j=i;j<=n;j++)
  if(sch[i].male<sch[j].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<n;i++)
  {
  for(j=i;j<=n;j++)
  if(sch[i].female<sch[j].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<<endl;
  }
  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<<endl;
  }
  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<<p[s].name<<"前5名学校编号及名称为:"<<endl;
  printf("名次 编号 学校名称\n");
  for(i=1;i<=5;i++)
  cout<<" "<<i<<" "<<p[s].snum[i]<<setw(12)<<sch[ p[s].snum[i] ].name<<endl;
  cout<<endl;
  }

  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;
  }
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式