运动会分数统计 综合题1

 来,先核对一下题目是否一样再看:


一、运动会分数统计

问题描述

参加运动会的n个学校编号为1~n。比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。由于各项目参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。写一个统计程序产生各种成绩单和得分报表。

基本要求

产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。

测试数据

对于n=4,m=3,w=2,编号为奇数的项目取前五名,编号为偶数的项目取前三名,设计一组实例数据。

实现提示

可以假设n<=20,m<=30,w<=20,姓名长度不超过20个字符。每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。

选作内容

允许用户指定某项目采取其他名次取法。


界面 :


代码/code:

如果一样 那么下面呢是老娘写的 ,没有按照他给的东西 因为当时没看见还给了一小段

 

#include <iostream>
#include <iomanip>
#include <conio.h>
#include <stdio.h>
#include <process.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <stack>
#include <queue>
int man=0,woman=1,total=2;
using namespace std;
struct information{
    char name[21];
    int score=0;
    int rank=0;
  };
struct SPORT{
 information project[6];//max 5 people
 int prizes=0;
 int totalscore=0;//0for man 1for woman_score,3for school
};
SPORT school_project[21][51];
int iffirst=1;
int n,m,w;
int maxeven[6]={0,7,5,3,2,1};
int maxodd[4]={0,5,3,2};
void first();
void input();
void wait();
void search();
void all_schools();
void BEzer0();
int main()
{
  if(iffirst)first();

  char choice;
  while (1)
  { system("cls");
    cout << "\n\n\n\n";
    cout << "\t\t            运动会统计  \n";
    cout << "\t\t======================================";
    cout << "\n\n";
    cout << "\t\t             1:输入成绩     \n";
    cout << "\t\t             2:按校成绩查询        \n";
    cout << "\t\t             3:多校总成绩一览    \n";
    cout << "\t\t             4:清空数据        \n";
    cout << "\n";
    cout << "\t\t             0:退出        \n";
    cout << "\n";
    cout << "\t\t请选择:" << flush;

    choice = getch();
    system("cls");
      switch(choice)
      {
        case '1':
        input();
          break;
        case '2':
        search();
          break;
        case '3':
        all_schools();
          break;
        case '4':
        BEzer0();
        case '0':
          exit(0);
      }
    }
}

void first()
{
  m=n=w=0;
  cout<<"===========请先输入基本信息=============="<<flush;
  cout<<"\n请输入参加学校总数n:"<<flush;  cin>>n;
  cout<<"\n请输入参加男生项目数m:"<<flush;  cin>>m;
  cout<<"\n请输入参加女生项目数w:"<<flush;  cin>>w;
  iffirst=0;
}
void run(int in_NO,int in_project,int x)//school,project,score;
{
  if(in_project<=m)
  {
    school_project[in_NO][man].totalscore+=x;
  }
  else
  {
    school_project[in_NO][woman].totalscore+=x;
  }
  school_project[in_NO][total].totalscore+=x;
}

void input()
{
  int i,j;
  int in_school,in_project;
  cout<<"输入项目编号:"<<flush;
  scanf("%d",&in_project);
  if(in_project>w+m){printf("ERR:项目编号超出指定范围");wait();return;}
    if(in_project%2)//0 for even
    {
      j=1;
      if(j>5){printf("ERR:获奖运动员数目超出指定范围");wait();return;}
      for(i=1;i<=5;i++)
      {
        cout<<"输入第"<<i<<"名的运动员的{学校编号}和{姓名}:"<<flush;
        scanf("%d",&in_school);
        if(in_school>n){printf("ERR:学校编号超出指定范围");wait();return;}
        school_project[in_school][in_project].project[j].rank=i;//
        school_project[in_school][in_project].project[j].score=maxeven[i];
        run(in_school,in_project,maxeven[i]);
        scanf("%s", &school_project[in_school][in_project].project[j].name);
        school_project[in_school][in_project].prizes++;
        j++;
      }
    }
    else
    {
      j=1;
      if(j>3){printf("ERR:获奖运动员数目超出指定范围");wait();return;}
      for(i=1;i<=3;i++)
      {
        cout<<"输入名次是"<<i<<"的运动员的{学校编号}和{姓名}:"<<flush;
        scanf("%d",&in_school);
        if(in_school>n){printf("ERR:学校编号超出指定范围");wait();return;}
        school_project[in_school][in_project].project[j].rank=i;
        school_project[in_school][in_project].project[j].score=maxodd[i];
        run(in_school,in_project,maxodd[i]);
        scanf("%s",&school_project[in_school][in_project].project[j].name);
        school_project[in_school][in_project].prizes++;
        j++;
      }
    }
    cout<<"=================这个项目输入已经完成"<<endl;
    wait();
}
void search()
{
  cout<<"输入学校代号:"<<flush;
  int in_NO;
  cin>>in_NO;
          if(in_NO>n){printf("ERR:学校编号超出指定范围");wait();return;}
  int in_project;
  cout<<"\n这是相关的信息:"<<endl;
  for(in_project=1;in_project<=m;in_project++)
  {
        if(school_project[in_NO][in_project].prizes)
          {
            int in_5;
            for(in_5=1;school_project[in_NO][in_project].project[in_5].score!=0;in_5++)
            {
              cout<<"男参赛者姓名:"<< school_project[in_NO][in_project].project[in_5].name<<flush;
              cout<<"===>名次:" <<school_project[in_NO][in_project].project[in_5].rank<<endl;
            }
          }
        else
        {cout<<"这个学校男生在项目"<<in_project<<"没有获得名次 :( "<<endl;}
  }
  for(in_project=m+1;in_project<=m+w;in_project++)
  {
    if(school_project[in_NO][in_project].prizes)
      {
        int in_5;
        for(in_5=1;school_project[in_NO][in_project].project[in_5].score!=0;in_5++)
        {
          cout<<"女参赛者姓名:"<< school_project[in_NO][in_project].project[in_5].name<<flush;
          cout<<"===>名次:" <<school_project[in_NO][in_project].project[in_5].rank<<endl;        }
        }
    else
    {cout<<"这个学校女生在项目"<<in_project<<"没有获得名次 :( "<<endl;}
  }
  cout<<"\ntotal_man_score  :"<<school_project[in_NO][man].totalscore<<endl;
  cout<<  "total_woman_score:"<<school_project[in_NO][woman].totalscore<<endl;
  cout<<  "school-total     :"<<school_project[in_NO][total].totalscore<<endl;

  wait();
}

void all_schools()
{
cout <<"=学校========总成绩========男生========女生"<<endl;
int in_school;
for(in_school=1;in_school<=n;in_school++)
    {
    printf(" %2d",in_school);
    cout<<"=========="<<flush;
    printf("%3d",school_project[in_school][2].totalscore);
    cout<<"=========="<<flush;
    printf("%3d",school_project[in_school][0].totalscore);
    cout<<"==========="<<flush;
    printf("%3d",school_project[in_school][1].totalscore);
    cout<<endl;
    }
    wait();
}

void BEzer0(){
  cout<<"\n\n==========本程序会清空已有内容,请稍后手动重启============"<<endl;
  exit(0);
}
void wait(){
	cout << "\n请按任意键继续\n" << flush;
	getch();
}

 


Thank you for reading my essay.

  • 13
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
运动会分数统计描述:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20) 功能要求: 1) 可以输入各个项目的前三名或前五名的成绩; 2) 能统计各学校总分, 3) 可以按学校编号或名称、学校总分、男女团体总分排序输出; 4) 可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。 5) 数据存入文件并能随时查询 6) 规定:输入数据形式和范围:可以输入学校的名称,运动项目的名称 输出形式:有中文提示,各学校分数为整形 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构; 测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值