运动会成绩统计__实验报告

合集下载

胜数的测量实验报告(3篇)

胜数的测量实验报告(3篇)

一、实验背景胜数是指在体育比赛中,一方战胜另一方所获得的分数。

在篮球、足球、排球等体育项目中,胜数是衡量比赛结果的重要指标。

为了探究胜数的测量方法及其准确性,我们设计了一项实验,通过模拟比赛场景,对胜数进行测量。

二、实验目的1. 探究胜数的测量方法及其准确性。

2. 分析影响胜数测量的因素。

3. 为体育比赛胜数的统计提供理论依据。

三、实验材料1. 模拟比赛场景:篮球场、足球场、排球场地等。

2. 计时器:用于记录比赛时间。

3. 测量工具:尺子、秒表等。

4. 参与实验的运动员:若干名。

四、实验方法1. 实验分组:将参与实验的运动员随机分为两组,分别为实验组和对照组。

2. 实验分组:实验组采用胜数测量方法,对照组采用传统测量方法。

3. 模拟比赛:两组运动员分别进行篮球、足球、排球等比赛,模拟真实比赛场景。

4. 数据收集:记录实验组和对照组的胜数测量结果,包括比赛时间、得分等。

5. 数据分析:对比实验组和对照组的胜数测量结果,分析胜数测量的准确性及影响因素。

五、实验结果与分析1. 实验结果实验结果显示,实验组的胜数测量结果与传统测量方法基本一致,说明胜数测量方法具有较高的准确性。

(1)胜数测量方法准确性分析:实验组采用胜数测量方法,通过记录比赛时间、得分等数据,能够较为准确地反映比赛的胜负情况。

与传统测量方法相比,胜数测量方法具有更高的准确性。

(2)影响胜数测量的因素分析:影响胜数测量的因素主要包括运动员技术水平、比赛规则、场地条件等。

运动员技术水平越高,胜数测量结果越准确;比赛规则明确,有利于提高胜数测量的准确性;场地条件适宜,有助于减少测量误差。

六、实验结论1. 胜数测量方法具有较高的准确性,能够为体育比赛胜数的统计提供理论依据。

2. 影响胜数测量的因素较多,需要在实际操作中充分考虑。

3. 在体育比赛中,应采用科学、准确的胜数测量方法,以确保比赛结果的公正性。

七、实验展望1. 进一步研究胜数测量方法的优化,提高测量准确性。

数据结构实验运动会分数统计一实验报告

数据结构实验运动会分数统计一实验报告

实验报告一题目:运动会分数统计班级:通信工程姓名:张雪婷学号:20081121037 完成日期:2010-4-5一、需求分析要产生N个参加运动会的学校的成绩单,内容包括各校所取得的每项成绩的项目号,名次,姓名和得分;产生团体总分报表。

内容包括校号,男子团体总分,女子团体总分和团体总分。

二、概要设计1、结构体定义及模块struct athlete //运动员结构体{ };struct Seqlist //数组结构体{ Athlete elem[MAXSIZE];int last; };void build( Seqlist &list,int n){ 建立数组用来存放数据}void display(Seqlist L,int num,int n ){ 输出学校的成绩单及团体总分等信息}int main(){ 实现总体调用函数}2、本程序包括的模块有:1>创建一个线性数组来存放数据,输入学生的信息2>打印成绩单,输出学校的团体总分,男团,女团总分3>主控模块三、详细设计1、数据结构体的定义struct Athlete 运动员结构体。

定义了运动员中的属性{int school;int item; //项目编号int place; //名次int score;char name[22];char sex;};struct Seqlist 结构体数组{Athlete elem[MAXSIZE];int last;};2、函数调用之间的关系四、调试分析1、用线性数组来实现这个实验,首先应当对线性数组了解透彻,如何传参。

2、用结构体定义的时候要明确题目目标,如结构体都有那些属性3、在打印模块,for循环中要掌握好循环变量,分清运动员数和学校数。

4、收获:在完成本次实验中采用了线性数组存储信息,是我对这种存储方式有了更深的认识,也加深了掌握。

本次程序分为两大模块,使得程序清晰易懂,各模块具有良好的重要性,确实得到了良好的程序设计训练。

运动会分数统计 实验报告

运动会分数统计 实验报告

运动会分数统计实验报告运动会分数统计实验报告摘要:本实验旨在通过对运动会分数统计的实际操作,探究运动会分数统计的方法和技巧,以及分析其对参赛队伍和个人的影响。

通过实验数据的收集和分析,得出了一些有关运动会分数统计的结论,并提出了一些建议,以提高运动会分数统计的准确性和公正性。

引言:运动会是学校体育活动的重要组成部分,也是培养学生体质和团队合作精神的重要途径。

而分数统计是运动会的重要环节,直接关系到参赛队伍和个人的成绩和名次。

因此,如何准确地统计运动会的分数,成为了一个备受关注的问题。

本实验旨在通过实际操作,探究运动会分数统计的方法和技巧,以及分析其对参赛队伍和个人的影响。

实验方法:本实验选择了一所中学的运动会作为研究对象,通过观察和记录实际比赛的数据,进行分数统计的实验操作。

首先,我们收集了各个项目的比赛成绩,并记录在表格中。

然后,根据比赛项目的规则和要求,对每个参赛队伍和个人的得分进行统计。

最后,对统计结果进行分析和总结。

实验结果:通过实验操作和数据分析,我们得出了以下结论:1. 分数统计的准确性对参赛队伍和个人的成绩和名次具有重要影响。

在实验中,我们发现一些不准确的分数统计可能导致参赛队伍和个人的成绩出现偏差,从而影响到他们的名次和奖励。

2. 分数统计的公正性是保证运动会公平竞争的关键。

在实验中,我们发现一些不公正的分数统计可能导致某些队伍或个人受到不公平的待遇,从而影响到他们的参与积极性和比赛结果。

3. 分数统计需要专业的技术和方法支持。

在实验中,我们发现一些分数统计工作人员的技术水平和操作方法对结果的准确性和公正性具有重要影响。

因此,提高分数统计工作人员的专业素养和技术能力,是保证运动会分数统计准确性和公正性的关键。

讨论与建议:基于以上实验结果,我们提出了以下建议,以提高运动会分数统计的准确性和公正性:1. 加强分数统计工作人员的培训和技术支持。

通过提供专业的培训和技术指导,提高分数统计工作人员的技术水平和操作方法,以确保他们能够准确地统计比赛成绩。

数据结构实验运动会分数统计实验报告

数据结构实验运动会分数统计实验报告

‘实验报告题目:运动会分数统计班级:14电子商务平台建设班完成日期:2015.10.10 学号:20141103468 姓名:孙少辉学号:20141103421 姓名:杨德龙学号:20141103407 姓名:柴益新一:需求分析参加运动会的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个字符。

每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。

二:概要设计采用结构体二维数组存储方式产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。

三:详细设计1:数据结构的定义元素类型、变量、指针类型(1)项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。

本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。

这也有利于以后项目情况的查询。

3.1结构体3.2子函数3:函数调用关系四:调试分析在调试的过程中,我们发现了在查询成绩功能是只能按照各个学校的编号进行查询选手,学校的成绩信息,查询功能有待健壮完善。

五:用户使用说明(1)首先运行文件运动会统计分数系统(2) 输入信息:1.输入学校数量→2.输入各个学校名称→3.男子运动项目数量→4.女子运动项目数量。

关于运动会分数统计系统数据结构++课程设计实验报告

关于运动会分数统计系统数据结构++课程设计实验报告

#include <stdlib.h>#include"fstream.h"#include <iostream.h>class Record//最小的类,用来记录得奖者的信息{friend class Subject;friend class RankList;private:int school;int score;int mark;public:Record(int s=-1,int sc=0,int m=0):school(s),score(sc),mark(m){} int & ReturnSchool(){return school;}int & ReturnScore(){return score;}int & ReturnMark(){return mark;}};class Subject//它嵌套Record类,正好组成一个项目{friend class RankList;private:Record Rec[5];void SetRecord_3(int i);void SetRecord_5(int i);};class School//主要为了输出的方便{friend class RankList;int WholeScoreM,WholeScoreF,WholeScore;void output(){cout<<WholeScoreM<<"\t"<<WholeScoreF<<"\t"<<WholeScore<<endl; }School(){WholeScoreM=0;WholeScoreF=0;WholeScore=0;}};class RankList{//他嵌套Subject类,正好组成所有的项目private:Subject Subject[5];public:School school[5];void Innput();int SumScoreSchool(int number);//.按照学校代码查找学校总分int MSumScoreSchool(int number);//按照学校代码查找学校男子团体总分int FSumScoreSchool(int number);//按照学校代码查找学校女子团体总分void OutPut(void);//按学校代码输出所有的总分void SumOutPut(void);//输出所有学校总分排名void MSumOutPut(void);//输出学校男子总分排名void save_to_file();//存入文件void FSumOutPut(void);//输出学校女子总分排名void get(char * c);//从文件中读取数据void paixuWhole(void);void paixuWholeM(void);void paixuWholeF(void);void ItemSearch(int SchoolNumber,int ItemNumber);//按学校编号查询学校某个项目的情况void SchoolSearch(int ItemNumber);//可以按项目编号查询取得前三或前五名的学校};void RankList::get(char * c){char ch;fstream fin(c,ios::in|ios::out);if(!fin){cerr<<"open"<<c<<"error!"<<endl;exit(1);}for(int k=0;k<3;k++)for(int j=0;j<5;j++){fin>>Subject[k].Rec[j].ReturnSchool();fin>>Subject[k].Rec[j].ReturnScore();fin>>Subject[k].Rec[j].ReturnMark();//iofile.read((char *)&Subject[k].Rec[j],sizeof(Subject[k].Rec[j]));}for( k=3;k<5;k++)for(int j=0;j<3;j++){fin>>Subject[k].Rec[j].ReturnSchool();fin>>Subject[k].Rec[j].ReturnScore();fin>>Subject[k].Rec[j].ReturnMark();//iofile.read((char *)&Subject[k].Rec[j],sizeof(Subject[k].Rec[j]));}}void RankList::save_to_file(){ofstream outfile("123.txt",ios::out);if(!outfile){cerr<<"open error!"<<endl;exit(1);}for(int k=0;k<3;k++)for(int j=0;j<5;j++){outfile<<Subject[k].Rec[j].ReturnSchool()<<""<<Subject[k].Rec[j].ReturnScore()<<" "<<Subject[k].Rec[j].ReturnMark()<<endl; }for( k=3;k<5;k++)for(int j=0;j<3;j++){outfile<<Subject[k].Rec[j].ReturnSchool()<<""<<Subject[k].Rec[j].ReturnScore()<<" "<<Subject[k].Rec[j].ReturnMark()<<endl; }outfile.close();}void RankList::ItemSearch(int SchoolNumber,int ItemNumber){int temp=0;if(ItemNumber<3){for(int i=0;i<5;i++){if(Subject[ItemNumber].Rec[i].ReturnSchool()==SchoolNumber){cout<<"第"<<SchoolNumber<<"学校在男子项目"<<ItemNumber<<"取得"<<i+1<<"名"<<endl;temp++;}}}else{for(int i=0;i<3;i++){if(Subject[ItemNumber].Rec[i].ReturnSchool()==SchoolNumber){cout<<"第"<<SchoolNumber<<"学校在女子项目"<<ItemNumber<<"取得"<<i+1<<"名"<<endl;temp++;}}}if(temp==0)cout<<"第"<<SchoolNumber<<"学校在项目"<<ItemNumber<<"没有取得名次"<<endl; }void RankList::SchoolSearch(int ItemNumber){if(ItemNumber<3){for(int i=0;i<5;i++){cout<<"取得男子项目第"<<i+1<<"名的学校是"<<Subject[ItemNumber].Rec[i].ReturnSchool()<<endl;}}else{for(int i=0;i<3;i++){cout<<"取得女子项目第"<<i+1<<"名的学校是"<<Subject[ItemNumber].Rec[i].ReturnSchool()<<endl;}}}void Subject::SetRecord_3(int i){ //为取前三名的项目建立记录 int a,j;cout<<"请输入第"<<i+1<<"名的学校,成绩"<<endl;cout<<"学校:";cin>>a;bool Tag=true;while(Tag){if(a>5){cout<<"输入错误!只有5个学校!"<<endl;cout<<"学校:";cin>>a;}elseTag=false;}Rec[i].school=a;cout<<"成绩:";cin>>a;Rec[i].score=a;bool flag=true;if(i>0){while(flag){for(j=0;j<i;j++){if(Rec[i].score>Rec[j].score){cout<<"输入错误!重新输入!"<<endl;cin>>a;Rec[i].score=a;}elseflag=false;}}}switch(i){case 0:Rec[i].mark=5;break;case 1:Rec[i].mark=3;break;case 2:Rec[i].mark=2;break;}}void Subject::SetRecord_5(int i){ //为取前五名的项目建立记录 int a;cout<<"请输入第"<<i+1<<"名的学校,成绩"<<endl;cout<<"学校:";cin>>a;bool Tag=true;while(Tag){if(a>5){cout<<"输入错误!只有5个学校!"<<endl;cout<<"学校:";cin>>a;}elseTag=false;}Rec[i].school=a;cout<<"成绩:";cin>>a;Rec[i].score=a;bool flag=true;if(i>0){while(flag){for(int j=0;j<i;j++){if(Rec[i].score>Rec[j].score){cout<<"输入错误!重新输入!"<<endl;cout<<"成绩:";cin>>a;Rec[i].score=a;}elseflag=false;}}}switch(i){case 0:Rec[i].mark=7;break;case 1:Rec[i].mark=5;break;case 2:Rec[i].mark=3;break;case 3:Rec[i].mark=2;break;case 4:Rec[i].mark=1;break;}}void RankList::Innput(){int i,j;for(i=0;i<3;i++){cout<<"项目"<<i+1<<"(男子,取前五名)"<<endl; for(j=0;j<5;j++){Subject[i].SetRecord_5(j);}}for(i=3;i<5;i++){cout<<"项目"<<i+1<<"(女子,取前三名)"<<endl; for(j=0;j<3;j++){Subject[i].SetRecord_3(j);}}}int RankList::SumScoreSchool(int number)//查找学校总分{int gole=MSumScoreSchool(number)+FSumScoreSchool(number); school[number].WholeScore=gole;return gole;}int RankList::MSumScoreSchool(int number){int WholeScore=0,i,j;for(i=0;i<3;i++){for(j=0;j<5;j++)if(Subject[i].Rec[j].ReturnSchool()==number){WholeScore=WholeScore+Subject[i].Rec[j].ReturnMark(); }}school[number].WholeScoreM=WholeScore;return WholeScore;}int RankList::FSumScoreSchool(int number){int WholeScore=0,i,j;for(i=3;i<5;i++){for(j=0;j<5;j++)if(Subject[i].Rec[j].ReturnSchool()==number){WholeScore=WholeScore+Subject[i].Rec[j].ReturnMark(); }}school[number].WholeScoreF=WholeScore;return WholeScore;void RankList::paixuWhole(){int bound,j,t;School o;bound=4;while(bound!=0){t=0;for(j=0;j<=bound;j++)if(school[j].WholeScore<school[j+1].WholeScore) {o=school[j];school[j]=school[j+1];school[j+1]=o;t=j;}bound=t;}}void RankList::paixuWholeM(){int bound,j,t;School o;bound=4;while(bound!=0){t=0;for(j=0;j<=bound;j++)if(school[j].WholeScoreM<school[j+1].WholeScoreM) {o=school[j];school[j]=school[j+1];school[j+1]=o;t=j;}bound=t;}void RankList::paixuWholeF(){int bound,j,t;School o;bound=4;while(bound!=0){t=0;for(j=0;j<=bound;j++)if(school[j].WholeScoreF<school[j+1].WholeScoreF){o=school[j];school[j]=school[j+1];school[j+1]=o;t=j;}bound=t;}}void RankList::OutPut(void){for(int i=0;i<5;i++){SumScoreSchool(i);MSumScoreSchool(i);FSumScoreSchool(i);}cout<<"学校"<<" "<<"男团总分"<<" "<<"女团总分"<<" "<<"总分"<<endl; for(i=0;i<5;i++){cout<<i<<"\t";school[i].output();}}void RankList::SumOutPut(void){int i,k;for(i=0;i<5;i++){SumScoreSchool(i);MSumScoreSchool(i);FSumScoreSchool(i);}paixuWhole();cout<<"学校总分排名为(根据学校代码)"<<endl;cout<<"学校"<<" "<<"男团总分"<<" "<<"女团总分"<<" "<<"总分"<<endl; for(k=0;k<5;k++){cout<<k<<"\t";school[k].output();}}void RankList::MSumOutPut(void){int i,k;for(i=0;i<5;i++){SumScoreSchool(i);MSumScoreSchool(i);FSumScoreSchool(i);}paixuWholeM();cout<<"学校男子团体总分排名为(根据学校代码)"<<endl;for(k=0;k<5;k++){cout<<k<<"\t";school[k].output();}}void RankList::FSumOutPut(void){int i,k;for(i=0;i<5;i++){SumScoreSchool(i);MSumScoreSchool(i);FSumScoreSchool(i);}paixuWholeF();cout<<"学校女子团体总分排名为(根据学校代码)"<<endl;for(k=0;k<5;k++){cout<<k<<"\t";school[k].output();}}//运动会分数统计系统#include"iostream.h"#include"fstream.h"#include"stdlib.h"//#include"fstream"#include"fgc.h"int main(){cout<<"比赛共设5个项目,共有5个学校参加"<<endl;cout<<"前三为男子组项目,后两个为女子组项目"<<endl;cout<<"每组前三个个项目取前五名,其余取前三名"<<endl;cout<<"取前五名的项目,从第一名开始,积分依次为7分,5分,3分,2分,1分"<<endl;cout<<"取前三名的项目,从第一名开始,积分分别为5分,3分,2分"<<endl;cout<<" ************************************************** "<<endl;int t;RankList Rank;// 定义一个RankList对象bool flag1;//用来控制错误的再次输入char r[9]; //文件名cout<<"请选择你的输入模式:1,文件输入,2,键盘输入,请输入整数1或者2"<<endl; cin>>t;if(t==1||t==2) // 防止错误的输入flag1=true;while(flag1){switch(t){case 1:cout<<"请输入文件名"<<endl;Rank.get(r);flag1=false;break;case 2:Rank.Innput();Rank.save_to_file();flag1=false;break;default :cout<<"你的输入有误,请再次输入1或者2"<<endl;//纠错返回switch cin>>t;flag1=true;}}bool flag=true;//用来控制多次查询while(flag){int i;cout<<"请选择要进行的操作"<<endl;cout<<"1,按学校编号排序"<<endl;cout<<"2,按学校总分排序"<<endl;cout<<"3,男团体总分排序"<<endl;cout<<"4,女团体总分排序"<<endl;cout<<"5,按学校编号查询学校某个项目的情况"<<endl;cout<<"6,可以按项目编号查询取得前三或前五名的学校"<<endl;cout<<"0,退出"<<endl;cin>>i;char o;while(i<0||i>6)//防止错误的输入{cout<<"您的输入有误,请您在0~6之间选一个数输入"<<endl;cin>>i;}switch(i){Rank.OutPut();cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n')//防止错误的输入{cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;case 2:Rank.SumOutPut();cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;Rank.MSumOutPut();cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;case 4:Rank.FSumOutPut();cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;int k,l;cout<<"请输入学校编号0~4"<<endl;cin>>k;while(k<0||k>4){cout<<"您的输入有错,请再次输入0~4之间的任意数"<<endl; cin>>k;}cout<<"请输入项目编号0~4"<<endl;cin>>l;while(l<0||l>4){cout<<"您的输入有错,请再次输入0~4之间的任意数"<<endl; cin>>l;}Rank.ItemSearch(k,l);cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;case 6:cout<<"请输入项目编号"<<endl;int m;cin>>m;Rank.SchoolSearch(m);cout<<"是否继续(y/n)"<<endl;cin>>o;while(o!='y'&&o!='n'){cout<<"您的输入有误,请在y与n之间选择一个输入"<<endl; cin>>o;}switch(o){case 'y':system("cls");flag=true;break;case'n':flag=false;break;}break;case 0:flag=false;break;}}return 0;}。

东北大学数据结构运动会竞赛成绩统计实验报告

东北大学数据结构运动会竞赛成绩统计实验报告

《数据结构》实验报告实验内容:运动会竞赛成绩统计数据结构实验报告一.课题概述 (1)二.概要设计原理 (1)三.详细程序清单及注释说明 (2)四.运行与测试及结果 (7)五.本人编写函数 (11)六.心得体会 (13)七.参考文献 (13)一、课题概述1.实验目的:线性表应用类实验题目参考2.实验内容:运动会竞赛成绩统计【问题描述】东北大学第51届运动大会成功举行。

共有N个学院的男女代表队参赛。

大会共设M个男子项目和W个女子项目。

大会即将闭幕,准备公布成绩。

【实验要求】设计运动会竞赛成绩统计程序。

(1)采用顺序表或链表等数据结构。

(2)统计各代表队的男女总分和团体总分。

(3)公布各单项成绩的前六名和团体成绩的前三名。

(4)可以查询成绩。

二、概要设计原理本程序主要采用了链表的存储结构,实现了对数据的存储,访问等操作。

本程序实现了男子团体成绩、女子团体成绩、总成绩的输出。

以及对个单项和团体成绩的前六名的输出。

并实现了查找功能。

程序主要分为四个函数:1.Zongfen()这个函数主要实现计算各学院的男子总分、女子总分、以及团体总分的计算以及存储操作。

2.tuandui_paiming()此函数运用了排顺函数,实现了对团体总分的排序,以及前六名的输出。

3.danxiang_paiming()此函数运用了排序函数,实现了对单项成绩的排名,以及对各个单项前六名的输出。

4.chazhao()通过此函数,可以实现对各个学院的查找,并且显示出各个学院的单项成绩,以及男子团体成绩、女子团体成绩、总成绩的输出。

5.main()6.主函数,实现对所有函数的协调,并且执行了一些程序中相当关键的部分,对整个程序的执行以及正确的输出起到了很大的作用。

7.zhujiemain()主界面函数,实现函数运行时界面的输出,以及对接下来操作的选择,是整个程序的关键部分。

三、详细程序清单及注释说明#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct xueyuan{char name[10]; //学院名称int Mdata[5]; //5个男子项目成绩int Wdata[5]; //5个女子项目成绩int man; //男子项目总成绩int woman; //女子项目总成绩int total; //学院总成绩struct xueyuan *next;}xueyuan,*Lxueyuan;Lxueyuan L;void zhujiemian();char Mname[5][20]; //5个男子项目名称char Wname[5][20]; //5个女子项目成绩char b[9][10];int a[9];char xueyuan_name[][9]={"信息","机械","软件","材冶","资土","外国语","文法","工管","理"};int fenshu[9][10]={{7,8,5,6,2,5,8,7,4,5},{5,6,8,7,4,5,2,1,3,5},{8,6,5,4,2,3,5,4,7,4},{8,5,4,7,1,5,4,7,8,5},{7,5,4,6,5,8,6,9,5,6},{7,5,6,4,2,3,8,9,6,5},{7,5,4,2,6,9,8,5,6,1},{5,6,4,8,5,6,5,4,9,8},{8,5,4,2,6,8,9,6,5,8}};void shuju() //数据处理{int i,j;strcpy(Mname[0],"男子100米");strcpy(Mname[1],"男子110米栏");strcpy(Mname[2],"男子铅球");strcpy(Mname[3],"男子铁饼");strcpy(Mname[4],"男子体操");strcpy(Wname[0],"女子100米");strcpy(Wname[1],"女子100米栏");strcpy(Wname[2],"女子铅球");strcpy(Wname[3],"女子铁饼");strcpy(Wname[4],"女子体操");L=(Lxueyuan)malloc(sizeof(xueyuan));Lxueyuan p;L->next=NULL;for(i=0;i<9;i++){p=(Lxueyuan)malloc(sizeof(xueyuan));strcpy(p->name,xueyuan_name[i]);for(j=0;j<5;j++)p->Mdata[j]=fenshu[i][j];for(j=0;j<5;j++)p->Wdata[j]=fenshu[i][j+5];p->next=L->next;L->next=p;}}void zongfen() //计算总分以及输出{int i;Lxueyuan p;p=L->next;printf("----------------------各学院总分---------------------\n");printf("学院男子总成绩女子总成绩总成绩");for(i=0;i<9;i++){printf("\n%s\t\t",p->name);p->man=p->Mdata[0]+p->Mdata[1]+p->Mdata[2]+p->Mdata[3]+p->Mdata[4];p->woman=p->Wdata[0]+p->Wdata[1]+p->Wdata[2]+p->Wdata[3]+p->Wdata[4];p->total=p->Mdata[0]+p->Mdata[1]+p->Mdata[2]+p->Mdata[3]+p->Mdata[4]+p->Wdata[0]+p->Wdata[1]+p->Wdata[2]+p->Wdata[3]+p->Wdata[4];printf("%d\t\t%d\t\t",p->man,p->woman);printf("%d",p->total);p=p->next;}}void paixu(int a[9],char b[9][10]){int i,j,k;char c[10];for(i=0;i<9;i++)for(j=0;j<9-i;j++){if(a[j]<=a[j+1]){k=a[j];a[j]=a[j+1];a[j+1]=k;strcpy(c,b[j]);strcpy(b[j],b[j+1]);strcpy(b[j+1],c);}}}void tuandui_paiming() //公布团体排名{int i;printf("\n\n\n--------------------团体排名--------------------\n");printf(" 学院第一名第二名第三名第四名第五名第六名");Lxueyuan p;p=L->next;for(i=0;i<9;i++){a[i]=p->man;strcpy(b[i],p->name);p=p->next;}paixu(a,b);printf("\n男子项目\t");for(i=0;i<6;i++){printf("%s\t",b[i]);}p=L->next;for(i=0;i<9;i++){a[i]=p->woman;strcpy(b[i],p->name);p=p->next;}paixu(a,b);printf("\n女子项目\t");for(i=0;i<6;i++){printf("%s\t",b[i]);}p=L->next;for(i=0;i<9;i++){a[i]=p->total;strcpy(b[i],p->name);p=p->next;}paixu(a,b);printf("\n总项目\t\t");for(i=0;i<6;i++){printf("%s\t",b[i]);}printf("\n");zhujiemian();}void danxiang_paiming(){int i,j;printf("\n\n\n--------------------单项排名--------------------\n");printf(" 学院第一名第二名第三名第四名第五名第六名");Lxueyuan p;for(j=0;j<5;j++){p=L->next;for(i=0;i<9;i++){a[i]=p->Mdata[j];strcpy(b[i],p->name);p=p->next;}paixu(a,b);printf("\n%s\t",Mname[j]);for(i=0;i<6;i++){printf("%s\t",b[i]);}}for(j=0;j<5;j++){p=L->next;for(i=0;i<9;i++){a[i]=p->Wdata[j];strcpy(b[i],p->name);p=p->next;}paixu(a,b);printf("\n%s\t",Wname[j]);for(i=0;i<6;i++){printf("%s\t",b[i]);}}zhujiemian();}void chazhao() //查找函数{int i;char abc[20];printf("请输入您要查找的学院名称:");scanf("%s",abc);Lxueyuan p;p=L->next;while(p){if(strcmp(p->name,abc))break;}if(p==NULL)printf("您查找的学院不存在!!\n");else{for(i=0;i<5;i++)printf("%s:\t%d分\n",Mname[i],p->Mdata[i]);for(i=0;i<5;i++)printf("%s:\t%d分\n",Wname[i],p->Wdata[i]);printf("男子总成绩:\t%d分\n",p->man);printf("女子总成绩:\t%d分\n",p->woman);printf("总成绩:\t%d分\n",p->total);}zhujiemian();}void zhujiemian(){printf("----------------------------------------------------\n""---- 1.总成绩及团体排名----\n""---- 2.单项排名----\n""---- 3.查找----\n""---- 其他.退出----\n""----------------------------------------------------\n");int choose;printf("请输入您的选择:");scanf("%d",&choose);switch(choose){case 1:zongfen();tuandui_paiming();break;case 2:danxiang_paiming();break;case 3:chazhao();break;default:exit(0);}}void main() //主函数{shuju();zhujiemian();}四.运行与测试及结果1.主界面2.各学院总分3.团体总分4.单项排名5.查找—信息---机械6.退出五.本人编写函数#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct xueyuan{char name[10]; //学院名称int Mdata[5]; //5个男子项目成绩int Wdata[5]; //5个女子项目成绩int man; //男子项目总成绩int woman; //女子项目总成绩int total; //学院总成绩struct xueyuan *next;}xueyuan,*Lxueyuan;Lxueyuan L;void zhujiemian();char Mname[5][20]; //5个男子项目名称char Wname[5][20]; //5个女子项目成绩char b[9][10];int a[9];char xueyuan_name[][9]={"信息","机械","软件","材冶","资土","外国语","文法","工管","理"};int fenshu[9][10]={{7,8,5,6,2,5,8,7,4,5},{5,6,8,7,4,5,2,1,3,5},{8,6,5,4,2,3,5,4,7,4},{8,5,4,7,1,5,4,7,8,5},{7,5,4,6,5,8,6,9,5,6},{7,5,6,4,2,3,8,9,6,5},{7,5,4,2,6,9,8,5,6,1},{5,6,4,8,5,6,5,4,9,8},{8,5,4,2,6,8,9,6,5,8}};void shuju() //数据处理{int i,j;strcpy(Mname[0],"男子100米");strcpy(Mname[1],"男子110米栏");strcpy(Mname[2],"男子铅球");strcpy(Mname[3],"男子铁饼");strcpy(Mname[4],"男子体操");strcpy(Wname[0],"女子100米");strcpy(Wname[1],"女子100米栏");strcpy(Wname[2],"女子铅球");strcpy(Wname[3],"女子铁饼");strcpy(Wname[4],"女子体操");L=(Lxueyuan)malloc(sizeof(xueyuan));Lxueyuan p;L->next=NULL;for(i=0;i<9;i++){p=(Lxueyuan)malloc(sizeof(xueyuan));strcpy(p->name,xueyuan_name[i]);for(j=0;j<5;j++)p->Mdata[j]=fenshu[i][j];for(j=0;j<5;j++)p->Wdata[j]=fenshu[i][j+5];p->next=L->next;L->next=p;}}void zongfen() //计算总分以及输出{int i;Lxueyuan p;p=L->next;printf("----------------------各学院总分---------------------\n");printf("学院男子总成绩女子总成绩总成绩");for(i=0;i<9;i++){printf("\n%s\t\t",p->name);p->man=p->Mdata[0]+p->Mdata[1]+p->Mdata[2]+p->Mdata[3]+p->Mdata[4];p->woman=p->Wdata[0]+p->Wdata[1]+p->Wdata[2]+p->Wdata[3]+p->Wdata[4];p->total=p->Mdata[0]+p->Mdata[1]+p->Mdata[2]+p->Mdata[3]+p->Mdata[4]+p->Wdata[0]+p->Wdata[1]+p->Wdata[2]+p->Wdata[3]+p->Wdata[4];printf("%d\t\t%d\t\t",p->man,p->woman);printf("%d",p->total);p=p->next;}}void zhujiemian(){printf("----------------------------------------------------\n""---- 1.总成绩及团体排名----\n""---- 2.单项排名----\n""---- 3.查找----\n""---- 其他.退出----\n""----------------------------------------------------\n");int choose;printf("请输入您的选择:");scanf("%d",&choose);switch(choose){case 1:zongfen();tuandui_paiming();break;case 2:danxiang_paiming();break;case 3:chazhao();break;default:exit(0);}}void main() //主函数{shuju();zhujiemian();}六.心得体会通过这次的程序设计,使自己对链表的操作有了更进一步的了解。

运动会分数统计实验报告

运动会分数统计实验报告

运动会分数统计实验报告运动会分数统计实验报告一、引言运动会是学校中一项重要的体育活动,旨在促进学生的身心健康发展和团队合作精神。

而分数统计则是评估学生在各项比赛中的表现,为学校提供数据支持。

本实验旨在通过分数统计的实际操作,探索如何准确记录和分析运动会的成绩。

二、实验设计与方法1. 实验目标:了解分数统计的基本原则和方法,并通过实际操作掌握相关技巧。

2. 实验材料:计分表格、计分器、笔、纸等。

3. 实验步骤:a) 设计计分表格:根据运动会项目和规则,设计适用于各项比赛的计分表格,包括项目名称、参赛者姓名、成绩等栏目。

b) 实际操作:在模拟的运动会中,记录各个项目的比赛成绩。

使用计分器准确记录每位选手的成绩,并填写到相应的计分表格中。

c) 统计分析:根据计分表格,进行分数统计和分析。

计算每个项目的平均分、最高分、最低分等,并绘制相应的统计图表。

三、实验结果与讨论1. 计分表格设计:通过实验,我们发现设计合理的计分表格对于准确记录成绩非常重要。

在设计过程中,我们考虑了项目名称、参赛者姓名和成绩等要素,并合理设置了栏目的顺序和间距,以便于记录和查阅。

2. 分数统计与分析:通过实际操作和数据处理,我们得出了运动会各项目的平均分、最高分和最低分等数据。

例如,在田径比赛中,平均成绩为10.5秒,最高成绩为9.8秒,最低成绩为11.2秒。

这些数据可以帮助我们评估每个项目的整体水平和选手的个人表现。

3. 统计图表绘制:为了更直观地呈现数据,我们使用了柱状图和折线图等图表形式。

通过图表的绘制,我们可以清晰地看到各个项目的得分分布情况,进一步分析比赛的结果和趋势。

四、实验总结通过本次实验,我们深入了解了分数统计的原则和方法,并通过实际操作掌握了相关技巧。

我们发现设计合理的计分表格对于准确记录成绩非常重要,并且分数统计和分析能够为我们提供有价值的数据支持。

同时,通过绘制统计图表,我们可以更直观地呈现数据,进一步分析比赛结果。

东北大学数据结构运动会竞赛成绩统计实验报告

东北大学数据结构运动会竞赛成绩统计实验报告

《数据结构》实验报告实验内容:运动会竞赛成绩统计数据结构实验报告一.课题概述 (1)二.概要设计原理 (1)三.详细程序清单及注释说明 (2)四.运行与测试及结果 (7)五.本人编写函数 (11)六.心得体会 (13)七.参考文献 (13)一、课题概述1.实验目的:线性表应用类实验题目参考2.实验内容:运动会竞赛成绩统计【问题描述】东北大学第51届运动大会成功举行。

共有N个学院的男女代表队参赛。

大会共设M个男子项目和W个女子项目。

大会即将闭幕,准备公布成绩。

【实验要求】设计运动会竞赛成绩统计程序。

(1)采用顺序表或链表等数据结构。

(2)统计各代表队的男女总分和团体总分。

(3)公布各单项成绩的前六名和团体成绩的前三名。

(4)可以查询成绩。

二、概要设计原理本程序主要采用了链表的存储结构,实现了对数据的存储,访问等操作。

本程序实现了男子团体成绩、女子团体成绩、总成绩的输出。

以及对个单项和团体成绩的前六名的输出。

并实现了查找功能。

程序主要分为四个函数:1.Zongfen()这个函数主要实现计算各学院的男子总分、女子总分、以及团体总分的计算以及存储操作。

2.tuandui_paiming()此函数运用了排顺函数,实现了对团体总分的排序,以及前六名的输出。

3.danxiang_paiming()此函数运用了排序函数,实现了对单项成绩的排名,以及对各个单项前六名的输出。

4.chazhao()通过此函数,可以实现对各个学院的查找,并且显示出各个学院的单项成绩,以及男子团体成绩、女子团体成绩、总成绩的输出。

5.main()6.主函数,实现对所有函数的协调,并且执行了一些程序中相当关键的部分,对整个程序的执行以及正确的输出起到了很大的作用。

7.zhujiemain()主界面函数,实现函数运行时界面的输出,以及对接下来操作的选择,是整个程序的关键部分。

三、详细程序清单及注释说明#include<>#include<>#include<>typedef struct xueyuan{char name[10]; 成绩及团体排名 ----\n""---- 2.单项排名----\n""---- 3.查找----\n""---- 其他.退出----\n""----------------------------------------------------\n");int choose;printf("请输入您的选择:");scanf("%d",&choose);switch(choose){case 1:zongfen();tuandui_paiming();break;case 2:danxiang_paiming();break;case 3:chazhao();break;default:exit(0);}}void main() 界面2.各学院总分3.团体总分4.单项排名5.查找—信息---机械6.退出五.本人编写函数#include<>#include<>#include<>typedef struct xueyuan{char name[10]; 成绩及团体排名 ----\n""---- 2.单项排名----\n""---- 3.查找----\n""---- 其他.退出----\n""----------------------------------------------------\n");int choose;printf("请输入您的选择:");scanf("%d",&choose);switch(choose){case 1:zongfen();tuandui_paiming();break;case 2:danxiang_paiming();break;case 3:chazhao();break;default:exit(0);}}void main() //主函数{shuju();zhujiemian();}六.心得体会通过这次的程序设计,使自己对链表的操作有了更进一步的了解。

运动会分数统计实验报告

运动会分数统计实验报告

目录一.设计要求 (1)二.设计分析 (1)三.设计实现 (3)四.实验心得 (8)五.参考文献 (8)一.设计要求:任务:参加运动会有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以内的整数(如果做得更好可以输入学校的名称,运动项目的名称)输出形式:有中文提示,各学校分数为整形界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

(数据文件的数据读写方法等相关内容在c语言程序设计的书上,请自学解决)请在最后的上交资料中指明你用到的存储结构;测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

测试数据及测试结果请在上交的资料中写明;二.设计分析:本程序中学校的存储结构为数组.运动项目结构体:图1 运动项目结构体学校结构体:图2学校机构体主菜单结构:图3主菜单结构主要结构:typedef struct //项目结构{char xmm[100]; //项目名称char num[5]; //项目编号int score; //项目得分}xiangm;typedef struct school{int num; //学校编号char schoolname[20]; //学校名称int manscore; //男子得分int womenscore; //女子得分int sum; //总分xiangm man[MAX]; //男子项目int man_num; //男子项目个数int man_score; //男子团体总分xiangm women[MAX]; //女子项目int women_num; //女子项目个数int women_score; //女子团体总分}school;主要函数:void fun1_1() //对学校和项目进行初始化操作void fun1_lurum1(int flag)//录入男子取前3名的项目成绩void fun1_luruw1(int flag) //录入女子取前3名的项目成绩void fun1_lurum2(int flag) //录入男子取前5名的项目成绩void fun1_luruw2(int flag) //录入女子取前5名的项目成绩void fun1_sum() //计算学校总得分以及男子团体总分女子团体总分void fun1() //输入各个项目成绩,调用前面的函数void fun2() //按学校编号排序输出void fun3() //按学校总分排序并输出结果void fun4() //分别进行男子团体总分排序和女子团体排序并输出void fun5() //输入一个学校的编号查询该学校取得的成绩void fun6() //输入一个项目的编号查询该项目的得分学校情况void save() //将数据写到school.txt文件中void load() //从school.txt文件中读取数据三.设计实现:1.程序主界面:图4程序主界面2.输入功能:图5输入功能完成3.按学校编号排序输出:图6按学校编号排序输出4.按学校总分排序输出:图7按学校总分排序输出5.按男女团体总分排序输出:图8按男女团体总分排序输出6.按学校编号查询某个项目的情况:图9按学校编号查询某个项目的情况7.按项目编号查询取得名次的学校:图10按项目编号查询取得名次的学校8.存储数据:图11存储数据9.存储的数据:图12存储的数据10.读取数据:图13读取数据四.实验心得:课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际能力的具体训练和考察过程.写之前有第一感觉是用链表写.但是上次的课程设计写的就是链表,所以想尝试一下用数组写这个题目.写完之后两者对比起来处理这种题目还是用链表比较方便.用数组太花存储空间了,处理太多数据的话就不现实了.在文件读写的时候由于数据太多写入和读取都要一个一个处理.通过这次课程设计使我懂得了理论与实际相结合是很重要的,从而提高自己的实际动手编程能力和独立思考能力.而对于程序。

大数据结构实验运动会分数统计实验报告材料

大数据结构实验运动会分数统计实验报告材料

‘实验报告题目:运动会分数统计班级:14电子商务平台建设班完成日期:2015.10.10 学号:20141103468 :少辉学号:20141103421 :德龙学号:20141103407 :柴益新一:需求分析参加运动会的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个字符。

每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员、校名(和成绩)。

二:概要设计采用结构体二维数组存储方式产生各学校的成绩单,容包括各校所取得的每项成绩的项目号、名次(成绩)、和得分;产生团体总分报表,容包括校号、男子团体总分、女子团体总分和团体总分。

三:详细设计1:数据结构的定义元素类型、变量、指针类型(1)项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。

本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。

这也有利于以后项目情况的查询。

3.1结构体3.2子函数3:函数调用关系四:调试分析在调试的过程中,我们发现了在查询成绩功能是只能按照各个学校的编号进行查询选手,学校的成绩信息,查询功能有待健壮完善。

五:用户使用说明(1)首先运行文件运动会统计分数系统(2) 输入信息:1.输入学校数量→2.输入各个学校名称→3.男子运动项目数量→4.女子运动项目数量。

运动会分数统计课设报告

运动会分数统计课设报告

运动会分数统计课设报告英文回答:Introduction:In this report, I will discuss the score statistics ofa sports meet. The purpose of this report is to analyze the scores of different events and identify any trends or patterns. By doing so, we can gain insights into the performance of the participants and evaluate the success of the sports meet.中文回答:介绍:在这份报告中,我将讨论一次运动会的分数统计情况。

本报告的目的是分析不同项目的分数并找出任何趋势或规律。

通过这样做,我们可以了解参与者的表现,并评估运动会的成功程度。

Score Distribution:To begin with, let's examine the distribution of scores across different events. By analyzing the scores, we can identify the range and spread of performance levels. For example, in the sprint event, the scores may range from 10to 20 seconds, with most participants falling within the 12 to 15-second range. On the other hand, in the long jump event, the scores may range from 5 to 8 meters, with a majority of participants achieving scores between 6 and 7 meters. These score distributions provide a comprehensive view of the performance levels in each event.分数分布:首先,让我们来看看不同项目的分数分布情况。

数据结构课程设计报告--运动会分数统计

数据结构课程设计报告--运动会分数统计

实验报告(数据结构)学院:信息科学与技术学院班级:姓名:日期:课题一运动会分数统计任务:参加运动会有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) 可以按项目编号查询取得前三或前五名的学校。

需求分析:本演示程序中,用户可以对运动会的的成绩一不同的方式进行输入输出等操作。

首先由用户输入运动会的成绩及相关的信息,然后程序会自动将输入的信息进行统计处理。

用于测试程序的数据如下所示:学校数据项目数据:概要设计:void Scanf(); 输入学校运动会成绩void Grade(); 查询成绩void Show(); 输出void Rank(); 查询名次void Show_sumscore();学校总分排序输出void Show_boyscore();男团总分排序输出void Show_girlscore();女团总分排序输出void Show_num(); 学校编号排序输出void Menu(); 总菜单程序图:主函数Scanf 输入函数Init 初始化函数Menu总菜单详细设计:#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100 //线性表存储空间的初始分配量#define LISTINCREMENT 10 //线性表存储空间的分配增量const int n=5; //参加运动会的学校个数const int m=5; //男子项目个数const int w=5; //女子项目个数void Init();//初始化学校总分、男女团体总分void Scanf();//输入学校运动会成绩void Grade();//查询成绩void Show();//输出void Rank();//查询名次void Show_sumscore();//学校总分排序输出void Show_boyscore();//男团总分排序输出void Show_girlscore();//女团总分排序输出void Show_num();//学校编号排序输出void Menu(); //总菜单typedef struct{char *event;int num;int sumscore;int boyscore;int girlscore;int length;int listsize; //当前分配的存储容量}SqList;// 初始化自定大小的线性表Lvoid InitList_Sq(SqList &L,int LIST_SIZE){L.event=(char *)malloc(LIST_SIZE* sizeof(char));if(!L.event) exit (0);L.length=0;L.listsize=LIST_SIZE;}//初始化默认大小的线性表Lvoid InitList_Sq(SqList &L){L.event=(char *)malloc(LIST_INIT_SIZE* sizeof(char)); if(!L.event)exit (0); //存储分配失败L.length=0; //空表长度为0L.listsize=LIST_INIT_SIZE; //初始存储容量}void ShowList_Sq(SqList &L,int Lenth){int i;for (i=0;i<Lenth;i++)printf("项目%d 成绩:%d\n",i+1,L.event[i]);}SqList School[n];void Init(){int i,j;for(i=0;i<n;i++){InitList_Sq(School[i],m+w);School[i].sumscore=0;School[i].boyscore=0;School[i].girlscore=0;School[i].num=i+1;for(j=0;j<m+w;j++){School[i].event[j]=0;}}}void Scanf(){int i,j,x;int a[3]={5,3,2};int b[5]={7,5,3,2,1};int c[10],d[10];printf("\n\n 输入各个项目的前三名或前五名的成绩\n\n\n"); for(i=0;i<m+w;i++){if(i<m){for(j=1;j<=5;j++){do{printf("项目%d 第%d名学校编号:",i+1,j);scanf("%d",&x);printf("\n");if(x>n||x<=0)printf("输入错误,请重新输入!\n");}while(x>n||x<=0);School[x-1].event[i]=b[j-1];}}else{for(j=1;j<=3;j++){do{printf("项目%d 第%d名学校编号:",i+1,j);scanf("%d",&x);printf("\n");if(x>n||x<=0)printf("输入错误,请重新输入!\n");}while(x>n||x<=0);School[x-1].event[i]=a[j-1];}}}printf("\n");//统计各校总分for(i=0;i<n;i++){for(j=0;j<m+w;j++){School[i].sumscore+=School[i].event[j];}}//统计男子总分for (i=0;i<n;i++){for(j=0;j<m;j++){School[i].boyscore+=School[i].event[j];}}//统计女子总分for(i=0;i<n;i++){for(j=m;j<m+w;j++){School[i].girlscore+=School[i].event[j];}}}void Grade(){int k,t;do{printf("\n请输入需要查询的学校编号:");scanf("%d",&k);if(k>n||k<=0)printf("输入出错,请重新输入!\n\n");}while(k>n||k<=0);do{printf("\n请输入需要查询的项目编号:");scanf("%d",&t);printf("\n");if(t>m+w||t<=0)printf("输入出错,请重新输入!\n\n");}while(t>m+w||t<=0);int i=0;while(School[i++].num!=k);printf("第%d个学校项目%d 积分为:%d\n",k,t,School[--i].event[t-1]); }void Show(){for(int i=0;i<n;i++){printf("第%d个学校:\n\n",i+1);ShowList_Sq(School[i],m+w);printf(" 男子总分为:%d\n",School[i].boyscore);printf(" 女子总分为:%d\n",School[i].girlscore);printf(" 学校总分为:%d\n",School[i].sumscore);printf("\n\n");}}void Rank(){int i,j,t;do{printf("请输入需要查询的项目编号:");scanf("%d",&t);if(t>m+w||t<=0)printf("输入出错,请重新输入!\n\n");}while(t>m+w||t<=0);for(i=n-1;i>=0;i--){for(j=0;j<i;j++){if(School[j].event[t-1]<School[i].event[t-1]){SqList temp=School[i];School[i]=School[j];School[j]=temp;}}}//冒泡排序if(t<=m){printf("项目%d 前五名:\n",t);for(i=0;i<5;i++){printf("第%d个学校\n",School[i].num);}}else if(t>m&&t<=m+w){printf("项目%d 前三名:\n",t);for(i=0;i<3;i++){printf("第%d个学校\n",School[i].num);}}elseprintf("输入错误,请重新输入!\n");}void Show_sumscore(){int i,j;for(i=n-1;i>=0;i--){for(j=0;j<i;j++){if(School[j].sumscore<School[i].sumscore) {SqList temp=School[i];School[i]=School[j];School[j]=temp;}}}printf("按学校总分排列:\n\n");Show();}void Show_boyscore(){int i,j;for(i=n-1;i>=0;i--)for(j=0;j<i;j++)if(School[j].boyscore<School[i].boyscore){SqList temp=School[i];School[i]=School[j];School[j]=temp;}printf("按男子总分排列:\n\n");Show();}void Show_girlscore(){int i,j;for(i=n-1;i>=0;i--)for(j=0;j<i;j++)if(School[j].girlscore<School[i].girlscore) {SqList temp=School[i];School[i]=School[j];School[j]=temp;}printf("按女子总分排列:\n\n");Show();}void Show_num(){int i,j;for(i=n-1;i>=0;i--)for(j=0;j<i;j++)if(School[j].num>School[i].num){SqList temp=School[i];School[i]=School[j];School[j]=temp;}printf("按学校编号排列:\n\n");Show();void Menu() //菜单函数{int choose;while(1){printf(" 运动会统计系统\n\n");printf("*****************************************************************\n"); printf(" 1、按学校编号排序输出\n");printf(" 2、按学校总分排序输出\n");printf(" 3、按男团总分排序输出\n");printf(" 4、按女团总分排序输出\n");printf(" 5、按学校编号查询学校某个项目的情况\n");printf(" 6、按项目编号查询取得前三名或前五名的学校\n");printf(" 7、退出\n");printf("*****************************************************************\n"); printf("\n\n -------------选择编号------------\n");scanf("%d",&choose);if(choose==1)Show_num();if(choose==2)Show_sumscore();if(choose==3)Show_boyscore();if(choose==4)Show_girlscore();if(choose==5)Grade();if(choose==6)Rank();if(choose==7)break;}}int main(){ int i=0;for(i=0;i<80;i++)printf("*");printf("\n 编号运动会项目 \n"); printf(" 1 男子100米 \n"); printf(" 2 男子200米 \n"); printf(" 3 男子400米 \n"); printf(" 4 男子跳高 \n"); printf(" 5 男子跳远 \n"); printf(" 6 女子跳高 \n"); printf(" 7 女子跳远 \n"); printf(" 8 女子铅球 \n"); printf(" 9 女子100米 \n");printf(" 10 女子400米\n\n");for(i=0;i<80;i++)printf("*");printf("\n");printf(" 编号参与运动会的学校 \n");printf(" 1 东华大学 \n");printf(" 2 上海交大 \n");printf(" 3 复旦大学 \n");printf(" 4 同济大学 \n");printf(" 5 华东师范大学 \n\n"); for(i=0;i<80;i++)printf("*");printf("\n");Init();Scanf();Menu();return 0;}调试分析:1,在编译过程中使用了结构体来存储航班和客户的相关信息,注意到使用结构体可以定义自己需要的类型,同时还可以对其成员进行各种操作,有效地解决了数据的建立和修改;2,在编程时建立了文件,将自己输入的文件和系统内部存入文档,有效地实现了大容量数据的操作;3,运用菜单功能,是程序和实际生活中的情况更加接近,有利于程序的广泛利用;4,在编程中学习到了编程的很多好的习惯,养成了添加注释的习惯。

数据结构实验——运动会分数统计

数据结构实验——运动会分数统计

运动会分数统计一、需求分析1、本演示程序中,可以输入参加运动会的学校编号及项目编号,学校编号要求为1~N,男子比赛项目编号要求为1~M,女子比赛项目编号要求为M+1~M+W;根据具体情况选择输入参加项目的男女类别和取成绩名次类别;最后选择输入名次。

2、演示程序以用户和计算机对话方式进行,即在计算机终端上显示提示信息之后,由用户输入进行查询成绩的操作:①产生各学校的成绩单,包括:各学校所取得的每项成绩的项目号、名次(成绩)、姓名和得②产生团体总分报表,内容包括校号、男子团体总分、女子团子总分和团体总分,然后进行数据保存操作。

3、本程序执行命令包括:1)输入比赛数据2)查询相关记录3)显示各学校的成绩单4)显示各校团体总分报表4、测试数据N=4,M=3,W=2,编号为奇数的项目取前五名,为偶数的项目取前三名。

具体数据如下:输入学校编号:1 2 4输入项目编号:1 3 2性别选择:男女男取成绩名次:前3名前5名前3名名次选择:第1名第4名第2名二、概要设计1.程序中所有数据类型有:int , struct , char , struct * , struct[] , char[];2.整形定义nsc——学校总数msp——男子项目总数wsp——女子项目总数ntsp——项目总数serial——学校编号item——得分项目range——得分名次score——得分成绩overgame——已结束的项目编号menscore——男子团体总分womenscore——女子团体总分totalscore——校团体总分3.本程序包含六个模块:1)主程序模块main ( ){初始化;If(“命令”=“输入”){判断数据是否合法;接受输入数据;数据处理运算;}If(“命令”=“查询”){接受具体指令;显示相应数据;}}2)Input()——比赛结果录入3)Cout()——范围判断4)School()——各学校取得成绩细表5)Overall()——各校男、女及总团体总分6)Calculate()——数据处理4.程序流程图如下:三、详细设计1.元素类型、变量、指针类型struct athletestruct /*参赛运动员*/{char name[20];char xingming[20]; /*姓名*/int score; /*得分成绩*/int range; /*得分名次*/int item; /*得分项目*/};struct schoolstruct /*参赛学校*/{int count; /*计算实际运动员个数*/int serial; /*学校编号*/int menscore; /*男子团体总分*/int womenscore; /*女子团体总分*/int totalscore; /*团体总分*/struct athletestruct athlete[MaxSize]; /*参赛运动员*/struct schoolstruct *next; /*参赛学校*/};int nsc,msp,wsp; /*实际参赛学校个数,男子、女子项目*/ int ntsp; /*项目总数*/int i,j; /*循环控制变量*/int overgame; /*已结束的项目编号*/int serial,range; /*获奖的学校编号 & 获奖名次*/int n; /*用来判断项目类型(奇&偶)*/struct schoolstruct *head,*pfirst,*psecond; /*用于开辟存储区域*/int *phead=NULL,*pafirst=NULL,*pasecond=NULL; /*用于项目数组指针*/2.输入模块,建立链表,然后存储数据。

运动会成绩统计 实验报告

运动会成绩统计  实验报告

实验说明题目:运动会分数统计一.需求分析:1.在该程序中,参赛学校编号为1~n(n<=20)。

比赛分成m(m<=30)个男子项目和w(w<=20)个女子项目,分别编号为1~m和m+1~m+w,姓名长度不超过20个字符;2.输入各个项目信息的详细信息,包括项目号,姓名,性别,学校和名次。

3.对于项目编号为奇数的取前五名,得分顺序为7,5,3,2,1;为偶数的取前三名,得分顺序为5,3,2。

4.程序执行的命令包括:1)构造线性表的存储结构。

2)根据每个学生的名次确定相应的得分。

3)输出各个学校的成绩单和男子团体总分,女子团体总分和团体总分。

二.概要设计1.该程序包含两个结构体分别为:结构体(1)运动员信息结构体(2)学校信息2.本程序包括4个模块:1>初始化学校信息。

2>依次输入每个运动员的信息。

3>根据每个学生的成绩计算对应的得分,及个学校的总得分、男团总分、女团总分。

4>生成个学校的成绩单,并输出。

三.详细设计1.数据结构的定义:○1描述运动员的线性表typedef struct{int item[MAXSIZE]; //参赛项目号char thletename[MAXSIZE][20];//姓名char sex[MAXSIZE];//性别int schoolnum[MAXSIZE];//所在学校编号int num[MAXSIZE];//名次int point[MAXSIZE];//得分int last;}Thlete;○2描述学校的线性表typedef struct{int schoolnum[MAXSIZE];//学校编号int Tgirl[MAXSIZE];//女生团体总分int Tboy[MAXSIZE];//男生团体总分int Tall[MAXSIZE];//学校总成绩int last;}School;○3.控制输入的函数int input(Thlete *S1,int n,int m,int w){cout<<"项目号"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"学校号"<<'\t' <<"名次"<< '\t' <<endl;int i=0,j=1,k=0;if(S1->last==MAXSIZE-1){cout<<"运动员人数已满,无法继续输入!"<<endl;return RIGHT;}while(cin>>S1->item[i]&&S1->item[i]!=0){cin>>S1->thletename[i]>>S1->sex[i]>>S1->schoolnum[i]>>S1->num[i];i++;if(i==100-1){cout<<"运动员人数已满,无法继续输入!"<<endl;return RIGHT;}}S1->last=i;for(i=0;i<S1->last;i++){if(S1->schoolnum[i]>n){cout<<"您的输入有误,输入学校个数不能超过"<<n<<",请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->sex[i]!='g'&&S1->sex[i]!='b'){cout<<"您的输入有误,输入运动员性别只能用'g'(女)或'b'(男)表示请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->item[i]>=0&&S1->item[i]<=m&&S1->sex[i]!='b'){cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->item[i]>=m+1&&S1->item[i]<=m+w&&S1->sex[i]!='g'){cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}}return RIGHT;}○3.用于计算学校各项成绩的函数void mark(Thlete *L1,School *L2,int n,int m,int w){int i,j;for(i=0;i<L1->last+1;i++){if(L1->item[i]%2==1)//项目编号为奇数的按第一种评分方法计算得分{if(L1->num[i]==1)L1->point[i]=7;if(L1->num[i]==2)L1->point[i]=5;if(L1->num[i]==3)L1->point[i]=3;if(L1->num[i]==4)L1->point[i]=2;if(L1->num[i]==5)L1->point[i]=1;if(L1->num[i]>5)L1->point[i]=0;}if(L1->item[i]%2==0)//项目编号为偶数的按第二种评分方法计算得分{if(L1->num[i]==1)L1->point[i]=5;if(L1->num[i]==2)L1->point[i]=3;if(L1->num[i]==3)L1->point[i]=2;if(L1->num[i]>3)L1->point[i]=0;}}for(i=0;i<L2->last+1;i++){for(j=0;j<L1->last+1;j++){if(L2->schoolnum[i]==L1->schoolnum[j]){if(L1->sex[j]=='b'){L2->Tboy[i]=L2->Tboy[i]+L1->point[j];//累加各学校的男团总分}if(L1->sex[j]=='g'){L2->Tgirl[i]=L2->Tgirl[i]+L1->point[j];//累加各学校的女团总分}}}L2->Tall[i]=L2->Tgirl[i]+L2->Tboy[i]; //计算个学校的集体总分}}○4.控制输出成绩的函数void output(Thlete L1,School L2){int i,j;for(i=0;i<st+1;i++){cout<<" 第"<<i+1<<"号学校的成绩"<<endl;cout<<endl;cout<<"学校"<<'\t' <<"项目"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"名次"<<'\t' <<"得分"<<endl;for(j=0;j<st+1;j++){if(L2.schoolnum[i]==L1.schoolnum[j]){cout<<L1.schoolnum[j]<<'\t' <<L1.item[j]<<'\t'<<L1.thletename[j]<<'\t' <<L1.sex[j]<<'\t'<<L1.num[j]<<'\t' <<L1.point[j]<<endl;}}cout<<i+1<<"号学校的女子团体总分为:"<<L2.Tgirl[i]<<endl;cout<<i+1<<"号学校的男子团体总分为:"<<L2.Tboy[i]<<endl;cout<<i+1<<"号学校的全体运动员总分为:"<<L2.Tall[i]<<endl;cout<<endl;}}2、函数调用关系:开始InitSCH(&S2,n)input(&S1,n,m,w)mark(&S1,&S2,n,m,w)output(S1,S2)结束四.调试分析1.用线性链表时应注意细节,指针的使用过程中很容易出错,从而达不到采用其起到的效果。

运动会分数统计课设报告

运动会分数统计课设报告

运动会分数统计课设报告英文回答:As part of my sports scoring project for my course, I was tasked with creating a report on the statistics of a sports event. In this report, I will analyze the scores of the participants and provide insights into their performance. Through this analysis, we can gain a better understanding of the strengths and weaknesses of the athletes and identify any patterns or trends in their scores.To begin with, I collected the scores of all the participants in different events of the sports meet. I then organized the data and calculated various statistical measures such as the mean, median, and standard deviation of the scores. These measures help us understand thecentral tendency and dispersion of the scores, providing a comprehensive overview of the participants' performance.For example, in the 100-meter sprint event, I foundthat the mean score was 10.5 seconds, with a standard deviation of 0.5 seconds. This indicates that most participants completed the race within a similar time frame, with only a small variation in their scores. However, there were a few outliers who finished the race much faster or slower than the average time.Furthermore, I conducted a comparative analysis of the scores across different events to identify any standout performers or consistent underperformers. By comparing the scores of athletes in multiple events, we can assess their overall performance and identify any areas where they excel or struggle.For instance, I noticed that one particular athlete consistently scored high in the long jump, but consistently scored low in the high jump. This suggests that the athlete has a natural talent for the long jump but struggles with the high jump. Such insights can be valuable for coachesand trainers in identifying areas for improvement and tailoring training programs to enhance the athlete'sperformance.In addition to analyzing individual scores, I also looked at the team scores to evaluate the overall performance of each team. By summing up the individual scores of team members, we can determine which team performed the best overall.For example, in the basketball event, Team A had atotal score of 80 points, while Team B had a total score of 70 points. This indicates that Team A performed better overall in the basketball event. However, it is important to note that individual scores within a team may vary, and it is not solely based on the team's total score.In conclusion, through my analysis of the scores in the sports meet, I have gained valuable insights into the performance of the participants. By calculating statistical measures and conducting comparative analysis, I was able to identify patterns, trends, and individual strengths and weaknesses. This information can be used by coaches, trainers, and teams to optimize training programs andimprove overall performance.中文回答:作为我的课程中体育比赛评分项目的一部分,我被要求撰写一份关于运动会分数统计的报告。

运动会分数统计课设报告

运动会分数统计课设报告

运动会分数统计课设报告英文回答:As part of my sports scoring project, I was tasked with creating a report on the statistics of a sports event. The purpose of this report is to analyze the scores and performance of the participants in the event. In order to provide a comprehensive analysis, I will be using both English and Chinese languages to answer the questions.The first step in this project was to collect the scores of all the participants in the sports event. I created a spreadsheet where I recorded the scores for each participant in each event. This allowed me to easily calculate the total score for each participant and analyze their performance.Next, I calculated the average score for each event. This helped me identify the participants who performed exceptionally well in a particular event. For example, inthe 100-meter race, participant A scored an average of 9.8 seconds, while participant B scored an average of 10.2 seconds. This indicates that participant A performed better in this event.Furthermore, I calculated the overall average score for each participant. This gave me an idea of their overall performance in the sports event. For instance, participant A had an overall average score of 8.5, while participant B had an overall average score of 7.9. This suggests that participant A performed better overall.Additionally, I analyzed the distribution of scores for each event. This allowed me to identify any outliers or participants who consistently scored high or low in a particular event. For instance, in the long jump event, participant C consistently scored above 7 meters, while participant D consistently scored below 5 meters. This indicates that participant C has a strong performance in the long jump event, while participant D struggles in this event.In conclusion, the scoring project involved collecting and analyzing the scores of participants in a sports event. By calculating average scores, overall average scores, and analyzing score distributions, I was able to gain insights into the performance of the participants. This information can be used to identify top performers, areas for improvement, and make informed decisions for future sports events.中文回答:作为运动积分项目的一部分,我被要求撰写一份关于运动会分数统计的报告。

运动数据分析实验报告(3篇)

运动数据分析实验报告(3篇)

第1篇一、实验背景随着科技的发展,数据分析在各个领域都得到了广泛应用。

在运动科学领域,通过对运动员的训练和比赛数据进行分析,可以帮助教练员更好地制定训练计划,提高运动员的竞技水平。

本实验旨在通过运动数据分析,探究运动员的训练效果和比赛表现,为教练员提供科学依据。

二、实验目的1. 掌握运动数据采集、整理和分析的基本方法。

2. 了解运动数据分析在训练和比赛中的应用。

3. 分析运动员的训练效果和比赛表现,为教练员提供决策支持。

三、实验内容1. 数据采集2. 数据整理3. 数据分析4. 结果讨论5. 结论四、实验方法1. 数据采集本实验采用以下方法采集数据:(1)运动员训练数据:包括运动员的体重、身高、最大摄氧量、力量、速度、耐力等指标。

(2)比赛数据:包括运动员的比赛成绩、比赛时间、比赛对手等信息。

2. 数据整理(1)对采集到的数据进行清洗,去除异常值和错误数据。

(2)对数据进行分类整理,建立运动员档案。

3. 数据分析(1)统计分析:对运动员的训练和比赛数据进行分析,计算平均值、标准差、方差等指标。

(2)相关性分析:分析运动员各项指标之间的相关性。

(3)回归分析:建立运动员训练和比赛成绩的回归模型,预测运动员未来的表现。

4. 结果讨论通过对运动员的训练和比赛数据进行分析,得出以下结论:(1)运动员的训练效果与比赛成绩存在显著相关性。

(2)运动员的训练指标在比赛中得到了有效发挥。

(3)运动员在比赛中的表现与对手的实力、比赛环境等因素有关。

五、实验结果1. 训练效果分析通过对运动员的训练数据进行分析,发现以下情况:(1)运动员的最大摄氧量、力量、速度、耐力等指标均有所提高。

(2)运动员的训练成绩在逐渐提高。

2. 比赛表现分析通过对运动员的比赛数据进行分析,发现以下情况:(1)运动员在比赛中的表现与训练效果基本一致。

(2)运动员在比赛中发挥出了较好的竞技水平。

六、结论1. 运动数据分析在运动员训练和比赛中具有重要意义。

数据结构实验运动会分数统计实验报告

数据结构实验运动会分数统计实验报告

‘实验报告题目:运动会分数统计班级:14电子商务平台建设班完成日期:2015.10.10 学号:20141103468 :少辉学号:20141103421 :德龙学号:20141103407 :柴益新一:需求分析参加运动会的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个字符。

每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员、校名(和成绩)。

二:概要设计采用结构体二维数组存储方式产生各学校的成绩单,容包括各校所取得的每项成绩的项目号、名次(成绩)、和得分;产生团体总分报表,容包括校号、男子团体总分、女子团体总分和团体总分。

三:详细设计1:数据结构的定义元素类型、变量、指针类型(1)项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。

本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。

这也有利于以后项目情况的查询。

3.1结构体3.2子函数3:函数调用关系四:调试分析在调试的过程中,我们发现了在查询成绩功能是只能按照各个学校的编号进行查询选手,学校的成绩信息,查询功能有待健壮完善。

五:用户使用说明(1)首先运行文件运动会统计分数系统(2) 输入信息:1.输入学校数量→2.输入各个学校名称→3.男子运动项目数量→4.女子运动项目数量。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验说明题目:运动会分数统计一.需求分析:1.在该程序中,参赛学校编号为1~n(n<=20)。

比赛分成m(m<=30)个男子项目和w(w<=20)个女子项目,分别编号为1~m和m+1~m+w,姓名长度不超过20个字符;2.输入各个项目信息的详细信息,包括项目号,姓名,性别,学校和名次。

3.对于项目编号为奇数的取前五名,得分顺序为7,5,3,2,1;为偶数的取前三名,得分顺序为5,3,2。

4.程序执行的命令包括:1)构造线性表的存储结构。

2)根据每个学生的名次确定相应的得分。

3)输出各个学校的成绩单和男子团体总分,女子团体总分和团体总分。

二.概要设计1.该程序包含两个结构体分别为:结构体(1)运动员信息结构体(2)学校信息2.本程序包括4个模块:1>初始化学校信息。

2>依次输入每个运动员的信息。

3>根据每个学生的成绩计算对应的得分,及个学校的总得分、男团总分、女团总分。

4>生成个学校的成绩单,并输出。

三.详细设计1.数据结构的定义:○1描述运动员的线性表typedef struct{int item[MAXSIZE]; //参赛项目号char thletename[MAXSIZE][20];//姓名char sex[MAXSIZE];//性别int schoolnum[MAXSIZE];//所在学校编号int num[MAXSIZE];//名次int point[MAXSIZE];//得分int last;}Thlete;○2描述学校的线性表typedef struct{int schoolnum[MAXSIZE];//学校编号int Tgirl[MAXSIZE];//女生团体总分int Tboy[MAXSIZE];//男生团体总分int Tall[MAXSIZE];//学校总成绩int last;}School;○3.控制输入的函数int input(Thlete *S1,int n,int m,int w){cout<<"项目号"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"学校号"<<'\t' <<"名次"<< '\t' <<endl;int i=0,j=1,k=0;if(S1->last==MAXSIZE-1){cout<<"运动员人数已满,无法继续输入!"<<endl;return RIGHT;}while(cin>>S1->item[i]&&S1->item[i]!=0){cin>>S1->thletename[i]>>S1->sex[i]>>S1->schoolnum[i]>>S1->num[i];i++;if(i==100-1){cout<<"运动员人数已满,无法继续输入!"<<endl;return RIGHT;}}S1->last=i;for(i=0;i<S1->last;i++){if(S1->schoolnum[i]>n){cout<<"您的输入有误,输入学校个数不能超过"<<n<<",请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->sex[i]!='g'&&S1->sex[i]!='b'){cout<<"您的输入有误,输入运动员性别只能用'g'(女)或'b'(男)表示请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->item[i]>=0&&S1->item[i]<=m&&S1->sex[i]!='b'){cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->item[i]>=m+1&&S1->item[i]<=m+w&&S1->sex[i]!='g'){cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}}return RIGHT;}○3.用于计算学校各项成绩的函数void mark(Thlete *L1,School *L2,int n,int m,int w){int i,j;for(i=0;i<L1->last+1;i++){if(L1->item[i]%2==1)//项目编号为奇数的按第一种评分方法计算得分{if(L1->num[i]==1)L1->point[i]=7;if(L1->num[i]==2)L1->point[i]=5;if(L1->num[i]==3)L1->point[i]=3;if(L1->num[i]==4)L1->point[i]=2;if(L1->num[i]==5)L1->point[i]=1;if(L1->num[i]>5)L1->point[i]=0;}if(L1->item[i]%2==0)//项目编号为偶数的按第二种评分方法计算得分{if(L1->num[i]==1)L1->point[i]=5;if(L1->num[i]==2)L1->point[i]=3;if(L1->num[i]==3)L1->point[i]=2;if(L1->num[i]>3)L1->point[i]=0;}}for(i=0;i<L2->last+1;i++){for(j=0;j<L1->last+1;j++){if(L2->schoolnum[i]==L1->schoolnum[j]){if(L1->sex[j]=='b'){L2->Tboy[i]=L2->Tboy[i]+L1->point[j];//累加各学校的男团总分}if(L1->sex[j]=='g'){L2->Tgirl[i]=L2->Tgirl[i]+L1->point[j];//累加各学校的女团总分}}}L2->Tall[i]=L2->Tgirl[i]+L2->Tboy[i]; //计算个学校的集体总分}}○4.控制输出成绩的函数void output(Thlete L1,School L2){int i,j;for(i=0;i<st+1;i++){cout<<" 第"<<i+1<<"号学校的成绩"<<endl;cout<<endl;cout<<"学校"<<'\t' <<"项目"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"名次"<<'\t' <<"得分"<<endl;for(j=0;j<st+1;j++){if(L2.schoolnum[i]==L1.schoolnum[j]){cout<<L1.schoolnum[j]<<'\t' <<L1.item[j]<<'\t'<<L1.thletename[j]<<'\t' <<L1.sex[j]<<'\t'<<L1.num[j]<<'\t' <<L1.point[j]<<endl;}}cout<<i+1<<"号学校的女子团体总分为:"<<L2.Tgirl[i]<<endl;cout<<i+1<<"号学校的男子团体总分为:"<<L2.Tboy[i]<<endl;cout<<i+1<<"号学校的全体运动员总分为:"<<L2.Tall[i]<<endl;cout<<endl;}}2、函数调用关系:开始InitSCH(&S2,n)input(&S1,n,m,w)mark(&S1,&S2,n,m,w)output(S1,S2)结束四.调试分析1.用线性链表时应注意细节,指针的使用过程中很容易出错,从而达不到采用其起到的效果。

2.线性表School的各属性在用之前需要初始化。

3.进行健壮性判断时遇到很多问题:a.判断性别是否正确时S1->sex[i]!='g'和S1->sex[i]!='b'必须是并且关系b.当检测到错误,需要重新输入时,要在输入函数里再调输入函数,用递归调用的方法实现重新输入。

相关文档
最新文档