任务:参加运动会有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).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
  规定:输入数据形式和范围:20以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)
  输出形式:有中文提示,各学校分数为整形
  界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

#include<iostream>
#include<iomanip>
#include<string>
#include<fstream>
using namespace std;int m=0,w=0,n=0;struct Game
{ int gnumber; char gname[20];//比赛名称int gscore;//该比赛分数int grank;//该比赛的排名
};struct Totalscore
{int all; int male;//男生比赛的积分 int female;//女生比赛的积分
};struct School
{Game game[40];int snumber; char sname[20];//学校名称 Totalscore totalscore;
};void write_to(int &n,int &m,int &w,School school[])//写入文件
{ofstream outfile("score.dat",ios::binary);if(!outfile) cerr<<"文件写入错误,请重试!"<<endl; else{              outfile.write(reinterpret_cast<char *>(&n),sizeof(n));outfile.write(reinterpret_cast<char *>(&m),sizeof(m)); outfile.write(reinterpret_cast<char *>(&w),sizeof(w));for(int i=0;i<n;i++){outfile.write((char*)&school[i],sizeof(school[i]));} outfile.close();cout<<"文件写入成功!"<<endl<<endl; }
}void read_from(int &n,int &m,int &w,int &test,School school[])//读取文件
{ifstream infile("score.dat",ios::binary);if(!infile) cerr<<"文件读取错误,请重试!"<<endl;  else{infile.read(reinterpret_cast<char *>(&n),sizeof(n));infile.read(reinterpret_cast<char *>(&m),sizeof(m)); infile.read(reinterpret_cast<char *>(&w),sizeof(w));for(int i=0;i<n;i++){infile.read((char*)&school[i],sizeof(school[i]));}infile.close();if(n==0) test=1; cout<<"文件读取成功!当前共有"<<m+w<<"个项目,"<<n<<"个学校的数据。"<<endl<<endl; }
}void Imput_score(School school[])
{int q,s1,s2,s3,i,k; cout<<"请输入项目编号:";leap2: cin>>q;if(q<1||q>m+w){cout<<"请输入有效数字:";goto leap2;}cout<<"请输入第1名的学校编号:";leap3:cin>>s1;if(s1<1||s1>n){cout<<"无该学校编号,请重新输入:";goto leap3;}school[s1-1].game[q-1].grank=1; if(q<=m){school[s1-1].totalscore.male+=5;school[s1-1].totalscore.all+=5;}else{school[s1-1].totalscore.female+=5;school[s1-1].totalscore.all+=5;}cout<<"请输入该项目成绩:";cin>>school[s1-1].game[q-1].gscore;cout<<"请输入第2名的学校编号:";leap4:cin>>s2;if(s2<1||s2>n){cout<<"无该学校编号,请重新输入:";goto leap4;}school[s2-1].game[q-1].grank=2; if(q<=m){school[s2-1].totalscore.male+=3;school[s2-1].totalscore.all+=3;}else{school[s2-1].totalscore.female+=3;school[s2-1].totalscore.all+=3;}cout<<"请输入该项目成绩:";cin>>school[s2-1].game[q-1].gscore;cout<<"请输入第3名的学校编号:";leap5:cin>>s3;if(s3<1||s3>n){cout<<"无该学校编号,请重新输入:";goto leap5;}school[s3-1].game[q-1].grank=3; if(q<=m){school[s3-1].totalscore.male+=2;school[s3-1].totalscore.all+=2;}else{school[s3-1].totalscore.female+=2;school[s3-1].totalscore.all+=2;}cout<<"请输入该项目成绩:";cin>>school[s3-1].game[q-1].gscore;cout<<"是否写入文件(写入请输入1):";cin>>k;if(k==1) write_to(n,m,w,school);
}void Output_by_schoolnumber(School school[])
{int i,j;for(i=0;i<n;i++){cout<<"*********************************************************"<<endl;cout<<"学校编号:"<<school[i].snumber<<setw(15) <<"学校名称:"<<school[i].sname<<setw(15) <<"总分:"<<school[i].totalscore.all<<endl;if(school[i].totalscore.all!=0){ cout<<"获前三名的项目:"<<endl;for(j=0;j<m+w;j++){if(school[i].game[j].grank!=0){cout<<"编号"<<school[i].game[j].gnumber<<setw(14)<<"项目名称:"<<school[i].game[j].gname<<setw(10) <<school[i].game[j].gscore<<"分"<<setw(8)<<"第"<<school[i].game[j].grank<<"名"<<endl;}}cout<<endl; }}cout<<"*********************************************************"<<endl;cout<<endl;
}void Output_by_schoolscore(School school[])
{int i,j;School t;School sch2[n];for(i=0;i<n;i++) sch2[i]=school[i]; for(i=0;i<n;i++){for(j=n-1;j>i;j--){if(sch2[j].totalscore.all<sch2[j-1].totalscore.all){t=sch2[j];sch2[j]=sch2[j-1];sch2[j-1]=t;}}} for(i=n-1;i>=0;i--){cout<<"*********************************************************"<<endl;cout<<"学校编号:"<<sch2[i].snumber<<setw(15) <<"学校名称:"<<sch2[i].sname<<setw(15) <<"总分:"<<sch2[i].totalscore.all<<endl;if(sch2[i].totalscore.all!=0){ cout<<"获前三名的项目:"<<endl;for(j=0;j<m+w;j++){if(sch2[i].game[j].grank!=0){cout<<"编号"<<school[i].game[j].gnumber<<setw(14)<<"项目名称:"<<sch2[i].game[j].gname<<setw(10) <<sch2[i].game[j].gscore<<"分"<<setw(8)<<"第"<<sch2[i].game[j].grank<<"名"<<endl;}}cout<<endl; }cout<<"*********************************************************"<<endl;cout<<endl;}
}void Output_by_malescore(School school[])
{int i,j;School t;School sch2[n];for(i=0;i<n;i++) sch2[i]=school[i]; for(i=0;i<n;i++)for(j=n-1;j>i;j--)if(sch2[j].totalscore.male<sch2[j-1].totalscore.male){t=sch2[j];sch2[j]=sch2[j-1];sch2[j-1]=t;}for(i=n-1;i>=0;i--){cout<<"*********************************************************"<<endl;cout<<"学校编号:"<<sch2[i].snumber<<setw(15) <<"学校名称:"<<sch2[i].sname<<setw(15) <<"男子总分:"<<sch2[i].totalscore.male<<endl;if(sch2[i].totalscore.all!=0){ cout<<"获前三名的项目:"<<endl;for(j=0;j<m+w;j++){if(sch2[i].game[j].grank!=0){cout<<"编号"<<school[i].game[j].gnumber<<setw(14)<<"项目名称:"<<sch2[i].game[j].gname<<setw(10) <<sch2[i].game[j].gscore<<"分"<<setw(8)<<"第"<<sch2[i].game[j].grank<<"名"<<endl;}}cout<<endl; }cout<<"*********************************************************"<<endl;cout<<endl;}
}void Output_by_femalescore(School school[])
{int i,j;School t;School sch2[n];for(i=0;i<n;i++) sch2[i]=school[i]; for(i=0;i<n;i++)for(j=n-1;j>i;j--)if(sch2[j].totalscore.female<sch2[j-1].totalscore.female){t=sch2[j];sch2[j]=sch2[j-1];sch2[j-1]=t;}for(i=n-1;i>=0;i--){cout<<"*********************************************************"<<endl;cout<<"学校编号:"<<sch2[i].snumber<<setw(15) <<"学校名称:"<<sch2[i].sname<<setw(15) <<"女子总分:"<<sch2[i].totalscore.female<<endl;if(sch2[i].totalscore.all!=0){ cout<<"获前三名的项目:"<<endl;for(j=0;j<m+w;j++){if(sch2[i].game[j].grank!=0){cout<<"编号"<<school[i].game[j].gnumber<<setw(14)<<"项目名称:"<<sch2[i].game[j].gname<<setw(10) <<sch2[i].game[j].gscore<<"分"<<setw(8)<<"第"<<sch2[i].game[j].grank<<"名"<<endl;}}cout<<endl; }cout<<"*********************************************************"<<endl;cout<<endl;}
}void Search_by_schoolnumber(School school[])
{int i,j,num1,num2,k=0; cout<<"请输入要查询的学校编号:";leap6:cin>>num1;for(i=0;i<n;i++) {   if(school[i].snumber==num1){k++;cout<<"该学校为:"<<school[i].sname<<",请输入要查询的项目编号:"; cin>>num2;for(j=0;j<m+w;j++){   if(school[i].game[j].gnumber==num2){if(school[i].game[j].grank!=0){cout<<"学校"<<school[i].sname<<"在项目"<<school[i].game[j].gname<<"中分数为"<<school[i].game[j].gscore<<",获得第"<<school[i].game[j].grank<<"名。"<<endl; }else cout<<school[i].sname<<"在项目"<<school[i].game[j].gname<<"中没有获奖。"<<endl; break;}   }break; }}if(k==0) {cout<<"暂无该学校信息,请重新输入:";goto leap6; } cout<<endl;
}void Search_by_gamenumber(School school[])
{int i,j,num1; cout<<"请输入要查询的项目编号:";leap7:cin>>num1;if(num1<1||num1>m+w){cout<<"请输入有效编号:";goto leap7; }for(i=0;i<n;i++){for(j=0;j<m+w;j++){if(school[i].game[j].gnumber==num1&&school[i].game[j].grank==1){   cout<<"第1名:"<<school[i].sname<<setw(12)<<"分数:"<<school[i].game[j].gscore<<endl;break; }}for(j=0;j<m+w;j++){  if(school[i].game[j].gnumber==num1&&school[i].game[j].grank==2){   cout<<"第2名:"<<school[i].sname<<setw(12)<<"分数:"<<school[i].game[j].gscore<<endl;break; }}for(j=0;j<m+w;j++){if(school[i].game[j].gnumber==num1&&school[i].game[j].grank==3){   cout<<"第3名:"<<school[i].sname<<setw(12)<<"分数:"<<school[i].game[j].gscore<<endl;break; }}}cout<<endl;
}int main()
{int choose,test=0; School school[20]; read_from(n,m,w,test,school);if(test==1){cout<<"请输入男子比赛项目个数:";cin>>m; cout<<"请输入女子比赛项目个数:";cin>>w;cout<<"请输入学校个数:";cin>>n;int i,j;for(i=0;i<n;i++){cout<<"预设学校名称:";cin>>school[i].sname;school[i].snumber=i+1;school[i].totalscore.all=0;school[i].totalscore.female=0;school[i].totalscore.male=0;for(j=0;j<m+w;j++){cout<<"预设项目名称:";cin>>school[i].game[j].gname; school[i].game[j].gnumber=j+1;school[i].game[j].grank=0;school[i].game[j].gscore=0; }}test=0;write_to(n,m,w,school);}while(1){ cout<<"***************************************************************"<<endl;cout<<"-------------------------运动会分数统计------------------------"<<endl;cout<<"----------------------1.输入项目前三名成绩---------------------"<<endl;cout<<"----------------------2.按学校编号排序输出---------------------"<<endl; cout<<"----------------------3.按学校总分排序输出---------------------"<<endl; cout<<"----------------------4.按男子团体总分排序输出-----------------"<<endl; cout<<"----------------------5.按女子团体总分排序输出-----------------"<<endl; cout<<"----------------------6.查询学校情况---------------------------"<<endl; cout<<"----------------------7.查询项目情况---------------------------"<<endl; cout<<"----------------------0.返回上一级-----------------------------"<<endl; cout<<"++++++++++++++++++++++请选择:";leap1:cin>>choose;if(choose<0||choose>7){cout<<"请输入0-7的数字:";goto leap1;}else{switch(choose){case 1:Imput_score(school);break; case 2:Output_by_schoolnumber(school);break; case 3:Output_by_schoolscore(school);break;case 4:Output_by_malescore(school);break;case 5:Output_by_femalescore(school);break;case 6:Search_by_schoolnumber(school);break;case 7:Search_by_gamenumber(school);break;case 0:default:cout<<"输入有误,请重新输入:"<<endl;goto leap1;}}}return 0;
}

仅作留档。

数据结构实训-运动会分数统计相关推荐

  1. 数据结构实训——运动会分数统计

    题目1: 运动会分数统计(限1 人完成) 任务: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三 ...

  2. 详解数据结构课程设计———运动会分数统计

    题目一:运动会分数统计 问题描述:参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w. 不同的项目取前五名或前三名积分:取前五 ...

  3. 数据结构课设----运动会分数统计系统

    1.运动会分数统计 [问题描述] 参加运动会的n个学校编号为1 ~ n.比赛分成m个男子项目和w个女子项 目,项目编号分别为1~ m和m+1~ m+w.由于各项目参加人数差别较大,有 些项目取前五名, ...

  4. 运动会分数统计系统(数据结构)C++

    运动会分数统计系统(数据结构)C++ 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三名积分:取前 ...

  5. 运动会分数统计(数据结构课程设计)

    参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三名积分:取前五名的积分分别为:7.5.3.2.1, ...

  6. java数据结构运动会分数统计,数据结构实验报告(运动会分数统计系)..doc

    数据结构实验报告(运动会分数统计系). 运动会分数统计系统 问题描述: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不 ...

  7. 运动会分数统计——C语言数据结构题目

    C语言数据结构题目 1.问题描述 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三名积分:取前五名 ...

  8. java 运动会分数统计_数据结构题目-运动会分数统计

    题目描述 在很多的电视大赛中,通常当选手表演结束后,现场观众通过手中的按键对参赛选手进行投票,然后对选手获得的票数进行统计,从高到低进行降序排列,从而自动产生冠军.亚军和季军.现在要求编写一程序模拟实 ...

  9. c语言数据结构对学生信息折半查找,数据结构实训报告-二分查找学生管理实训报告.doc...

    数据结构实训报告-二分查找学生管理实训报告 吉林工业职业技术学院 ( 数据结构实训 ) ( 20~ 2012 学年第 学期) 指导教师: 专业班级: 计算机3101 学生姓名: 2011年月日实训项目 ...

最新文章

  1. NoSQL数据库之Redis数据库:Redis的介绍与安装部署(redis-2.8.19/3.2.5)
  2. 算法练习:将字符串中所有的空格替换为'%20'(只用基本数据结构)
  3. Mac下安装和使用GunPG(GPG)
  4. 未获取root手机抓包方法
  5. Mono for Android布局控件属性小结
  6. Visual Studio 2008带来了什么
  7. linux gpart 用法,gpart 使用笔记
  8. 学点 C 语言(3): 转义字符
  9. js便签笔记(3)——切记:appendChild()、insertBefore()是移动element节点!
  10. GJB 软件质量保证计划(模板)
  11. 非线性动力学_第17届全国非线性振动暨第14届全国非线性动力学 和运动稳定性学术会议在南京召开...
  12. ddm模型公式_股利增长模型计算公式
  13. 三星真机云测平台可能是最好的云测平台,因为他免费。
  14. FlashPaper组件——api
  15. 分类预测 | Matlab实现SSA-SVM麻雀算法优化支持向量机多特征分类预测
  16. 不变初心数——python
  17. 微信公众号二维码海报自动生成,海报通推广有绝招
  18. SetDlgItemText函数(详解)
  19. 安卓设置keychain_Keychain的使用
  20. 篇3:嵌入式系统和嵌入式操作系统

热门文章

  1. 成都绿源电动车店寻“新欢”,只这一试,我就认定了
  2. 毕业论文的奋斗记(一)
  3. 访问局域网另外一台电脑虚拟机中CentOS7
  4. Protobuf数据格式解析
  5. 【无标题】这个怎么写
  6. 中国半导体如何自我救赎
  7. 高等数学基础概念的Python开发实现
  8. python xml 创建多个同名子节点_果粉有福了!5分钟学会用Python统计自己最爱听的音乐...
  9. 开发一个Android志愿填报系统(后台管理+前台app)毕业设计
  10. Delphi FastReport4.5安装说明