运动会分数统计_第1页
运动会分数统计_第2页
运动会分数统计_第3页
运动会分数统计_第4页
运动会分数统计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 数据结构课程设计 课题:运动会分数统计 姓名: 学号: 指导教师: 东华大学信息科学与技术学院 2013/1/15 设计题目:运动会分数统计任务:参加运动会有n个学校,学校编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些项目取前五名或前三名由学生自己设定。(m=20,n=20)功能要求:1) 可以输入各个项目的前三名或前五名的成绩;2) 能统计各学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目

2、的情况;5) 可以按项目编号查询取得前三或前五名的学校。-需求分析:本运动会分数统计系统所具备的基本功能是输入运动会各项目的成绩,要求能依据各种排序要求输出显示成绩统计结果,并能提供对相关项目和学校的查询功能。概要设计:根据课题功能要求和需求分析,本程序采用结构体数组用来存放每个学校的学校名称、总分等信息以及项目积分和排名情况(同样用结构体型)。struct Schoolchar schname20;struct Projectint rank;int score; projectM+W; /学校结构体中包含项目结构体int total,mtotal,wtotal,number;schoolN

3、; /N初始宏定义为参赛学校个数。具体实施过程中定义了若干用于输入和排序显示的函数。void Showbasic();void Set(int h,int pnum);void Input();/可由用户临时设定项目前三或前五名的排序方式。void Total();/统计每个学校的男女团体总分和学校总分void Order_number();/按学校编号排序void Order_total();/按学校总分排序void Order_mtotal();/按男子团体总分排序void Order_wtotal();/按女子团体总分排序void Search_school();/根据学校编号查询学校项

4、目情况void Search_project();/根据项目编号查询前几门的学校程序调用关系:调试分析:a. 本程序起初采用结构体数组下标作为学校编号的标志,后来在各种冒泡排序过程中数组元素位置发生交换,导致按学校编号排序输出不正确的结果。经改进,后来在结构体中又添加了学校编号成员number,使之成为学校的唯一标识。b. 在用户进行输入操作时,若未输入合理范围内的数值,程序会自动判错。但是当在需要输入整型数值的地方输入字符时,会导致程序死循环。后经纠正,程序可以自动判断用户任意输入的不合法指令,大大提高了程序的健壮性。用户手册:(1)演示程序的运行环境为Windows 7系统,Microso

5、ft Visual Studio 6.0中的Microsoft Visual C+ 6.0中运行。(2)进入演示程序后即显示DOS形式的界面:(3)界面友好,用户根据菜单选项和提示,键入命令进行相应操作即可。测试结果:程序运行功能展示及部分截图。1、程序运行第一步,介绍此次运动会参赛学校及项目等信息,方便后来的操作 2、根据菜单选择输入成绩情况,可自动判断输入命令有效性。3、下面分别为按各种方式排序显示的程序运行截图。4、按学校或项目编号查询成绩情况。详细设计:程序设计源代码:#include#include using namespace std;#define N 5 /初始宏定义学校个数

6、#define M 5 /男子项目个数#define W 5 /女子项目个数struct Schoolchar schname20;struct Projectint rank;int score; projectM+W; /学校结构体中包含项目结构体int total,mtotal,wtotal,number;schoolN; /N个结构体变量代表N个学校char *pronameM+W=男子100米,男子200米,男子400米,男子跳高,男子跳远,女子跳高,女子跳远,女子铅球,女子100米,女子400米; /初始化项目名称和后来初始化学校名称,提高程序通用性。void Showbasic(

7、) /介绍运动会参赛学校和项目等基本情况,更人性化。strcpy(school0.schname,东华大学);strcpy(school1.schname,上海交大);strcpy(school2.schname,复旦大学);strcpy(school3.schname,同济大学);strcpy(school4.schname,华东师范大学);for(int i=1;i=N;i+)schooli-1.number=i;cout *本次运动会参赛学校和男女项目基本情况*n;cout*学校名称 *学校编号 n;for(i=0;iN;i+)coutsetw(12)leftschooli.schnam

8、esetw(10)rightschooli.numberendl;cout-n;cout*项目名称 *项目编号 n;for(int j=0;jW+M;j+)coutsetw(12)leftpronamejsetw(10)rightj+1endl;cout-nn;void Set(int h,int pnum)if(h=3)coutn项目pronamepnum-1的成绩为(输入学校编号 1至N):endl;for(int j=1;j=3;j+)cout第jschoolnum;while(!cin|schoolnumN)char str15; cin.clear(); cin.getline(st

9、r,15);coutschoolnum;jectpnum-1.rank=j;if(j=1)jectpnum-1.score=5;else if(j=2)jectpnum-1.score=3;else if(j=3)jectpnum-1.score=2;if(h=5)coutn项目 pronamepnum-1 的成绩为(输入学校编号 1至N):endl;for(int j=1;j=5;j+)cout第jschoolnum;whil

10、e(schoolnumN)char str15; cin.clear(); cin.getline(str,15);coutschoolnum;jectpnum-1.rank=j;if(j=1)jectpnum-1.score=7;else if(j=2)jectpnum-1.score=5;else if(j=3)jectpnum-1.score=3;else if(j=4)jectp

11、num-1.score=2;else if(j=5)jectpnum-1.score=1;void Input()/特点:可由用户临时设定项目前三或前五名的排序方式。int pnum,h,k;coutn _成绩录入_n;coutpnum;while(!cin|pnumW+M)/可以判断任何非法的输入,提示重新输入char str15;cin.clear();cin.getline(str,15);coutpnum;couth;while(!cin|h!=3&h!=5)char str15;cin.clear();cin.getline(str,15);

12、couth;Set(h,pnum); /输入项目编号和排序方式后,自动调用此函数进行成绩输入。coutk;while(!cin|k!=0&k!=1)char str15;cin.clear();cin.getline(str,15);coutk;if(k=1)Input();void Total()/统计每个学校的男女团体总分和学校总分for(int k=0;kN;k+)for(int i=0;iM;i+)schoolk.mtotal+=jecti.score;for(int j=M;jM+W;j+)schoolk.wtotal+=jectj.sco

13、re;schoolk.total=schoolk.wtotal+schoolk.mtotal;void Order_number()/按学校编号排序coutn-运动会分数统计结果-n;cout 按学校编号排序显示:endl;cout *学校名称 总分 男子项目总分 女子项目总分n;for(int i=0;iN;i+)for(int k=0;kN;k+)if(schoolk.number=i+1) /标志学校结构体变量的是学校编号,而不是数组下标。coutsetw(13)rightschoolk.schnamesetw(10)rightschoolk.totalsetw(10)rightscho

14、olk.mtotalsetw(14)rightschoolk.wtotalendl;cout-n;void Order_total()/按学校总分排序struct School temp;for(int i=0;i=N-1;i+)for(int j=0;j=N-1-i;j+)if(schoolj.totalschoolj+1.total)temp=schoolj; schoolj=schoolj+1; schoolj+1=temp;coutn-运动会分数统计结果-n;cout 按学校总分排名显示:endl;cout *学校名称 总分 男子项目总分 女子项目总分n;for(int k=0;kN;

15、k+)coutsetw(13)rightschoolk.schnamesetw(10)rightschoolk.totalsetw(10)rightschoolk.mtotalsetw(14)rightschoolk.wtotalendl;cout-n;void Order_mtotal()/按男子团体总分排序struct School temp;for(int i=0;i=N-1;i+)for(int j=0;j=N-1-i;j+)if(schoolj.mtotalschoolj+1.mtotal)temp=schoolj; schoolj=schoolj+1; schoolj+1=temp

16、;coutn-运动会分数统计结果-n;cout 按男子团体总分排名显示:endl;cout *学校名称 总分 男子项目总分 女子项目总分n;for(int k=0;kN;k+)coutsetw(13)rightschoolk.schnamesetw(10)rightschoolk.totalsetw(10)rightschoolk.mtotalsetw(14)rightschoolk.wtotalendl;cout-n;void Order_wtotal()/按女子团体总分排序struct School temp;for(int i=0;i=N-1;i+)for(int j=0;j=N-1-i

17、;j+)if(schoolj.wtotalschoolj+1.wtotal)temp=schoolj+1;schoolj+1=schoolj;schoolj=temp;coutn-运动会分数统计结果-n;cout 按女子团体总分排名显示:endl;cout *学校名称 总分 男子项目总分 女子项目总分n;for(int k=0;kN;k+)coutsetw(13)rightschoolk.schnamesetw(10)rightschoolk.totalsetw(10)rightschoolk.mtotalsetw(14)rightschoolk.wtotalendl;cout-n;void

18、Search_school()/根据学校编号查询学校项目情况couta;while(!cin|aN)char str15;cin.clear();cin.getline(str,15);couta;struct School temp;for(int i=1;i=N;i+)if(a=schooli-1.number)temp=schooli-1;break;/找到成员number为指定值的Student结构体变量coutn-temp.schname成绩统计-n;cout(排名为0表示未参与排名)n;cout 项目编号 项目名称 积分 排名 n;for(i=0;iM+W;i+)coutsetw(

19、4)i+1 setw(11)leftpronameisetw(8)jecti.scoresetw(8)jecti.rankendl;cout-n;void Search_project()/根据项目编号查询前几门的学校coutb;while(!cin|bW+M)char str15;cin.clear();cin.getline(str,15);coutb;coutn-项目pronameb-1排名统计-n;cout(排名为0表示未参与排名)n;cout 排名 学校 n;for(int i=1;i=5;i+)for(int k=0;kN;k+)if(jectb-1.rank=i)coutsetw(5)iset

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论