运动会分数统计系统课程设计报告

合集下载

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

数据结构课程设计报告 运动会计分系统
软 件 学 院
课程设计报告书
2010 年
12 月
目录
1 设计时间 .....................................................3 2 设计目的 .....................................................3 3 设计任务 .....................................................3 4 设计内容 .....................................................3 4.1 需求分析 ................................................3 4.2 总体设计 ................................................4 4.3 详细设计 ................................................6 4.4 测试与分析 ..............................................9 4.4.1 测试 ...............................................8 4.4.2 分析 ...............................................8 4.5 附录 ....................................................9 5 总结与展望 ..................................................14 5.1 设计总结 ...............................................14 5.2 优化展望 ...............................................10 参考文献......................................................15 成绩评定......................................................15

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

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

#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;}。

运动会分数统计系统设计报告

运动会分数统计系统设计报告

C语言课程设计报告运动会分数统计系统学校湖南工程学院班级:土木0981班姓名:钟宇学号:0131一.需求分析1问题描述运动会分数统计系统参加运动会有n个系,系编号为1……n。

竞赛分成m个男子项目,和w个女子项目。

项目编号为男子1……m,女子m+1……m+w。

不同的项目取前五名或前三名积分;取前五名的积分别离为:7、五、3、二、1,前三名的积分别离为:五、3、2;哪些取前五名或前三名由学生自己设定。

(m<=20,n<=20)2.大体要求:(1). 运动员检录;(2).运动员检录,(3).运动员成绩排序;(4). 运动员评奖3.测试数据《1》输入:1进入添加系的界面,依照提示,再输入:汽车系。

再输入:8,成功添加了一个系。

再输入:2进入运动项目添加界面,依照提示,再输入:跳高;1;0;1;2;3。

以后输入0。

再次进入系统界面。

《2》输入:3查看输出结果。

《3》:输入:4查看输出结果。

《4》:输入:5查看输出结果。

《5》:输入:6查看输出结果。

《6》:输入:7依照提示输入项目编号:2。

查看输出结果。

《7》:输入:8依照提示输入系编号:3。

查看输出结果。

二、概要设计1.数据结构<1>系:名称,编号,男子集体总分,女子固体总分。

<2>运动项目:项目编号,名称,男子项目,女子项目,前三名,前五名,第一名系的编号,第二名系的编号,第三名系的编号,第四名系的编号,第五名系的编号。

2.程序模块及之间的挪用关系三、详细设计一、数据类型概念(1)系的概念:typedef struct Department100m菜单有以下9个选项1.输入系别2.输入运动项目3.按系别编号输出总分4.按总分排序5.按男集体总分排序6.按女集体总分排序7.按项目编号查询8.按系别编号查询0.退出(2)输入0~8中的一个数(3)输入1,进行添加系操作,别离输入系的名称和编号(4)输入2,进行添加运动项目操作,别离输入项目名称,编号,项目类型,名次选取,排名情形(5)输入0,那么退出系统,而且保留输入的信息.每次添加完都要输入0退出系统才有效(6)输入3,输出按系编号总分排名.(7)输入4,输出按总分排名(8)输入5,输出按男集体总分排序(9)输入6,输出按女集体总分排序(10)输入7,进入按项目编号查询界面.输入要查询的项目编号(11)输入8,进入按系别编号查询界面,输入要查询的系的编号四、参考文献【1】《C++程序设计》作者:郑莉,董渊,张瑞丰出版社:清华大学出版社时刻:2003/12 【2】《数据结构》严蔚敏,吴伟民出版社:清华大学出版社时刻:2006/10【3】《数据结构教程上机实验指导》严蔚敏,吴伟民,米宁出版社:清华大学出版社时刻:2006/5五、【4】网址: 附录六、1、源程序#include<>#include<>#include<>#include<>#include<>#include<>#include<>#include<>typedef struct Department ."};char bar[]={"...."};int i,j,k=0,x=0,y=0;for(i=0;i<=strlen(line)/2;){system("cls");for(j=0;j<9;j++) O欢迎利用运动会分数统计系统Oo. "<<endl;cout<<"**********************************************************"<<endl;cout<<" * *"<<endl;cout<<" * 1.输入系别; 2.输入运动项目*"<<endl;cout<<" * *"<<endl;cout<<" * 3.按系别编号输出总分; 4.按总分排序; *"<<endl;cout<<" **"<<endl;cout<<" * 5.按男集体总分排序; 6.按女集体总分排序; *"<<endl;cout<<" * *"<<endl;cout<<" * 7.按项目编号查询; 8.按系别编号查询; *"<<endl;cout<<" * *"<<endl;cout<<" * 0.退出*"<<endl;cout<<" * *"<<endl;cout<<" * 提示:需先输入系别后才能输入运动项目*"<<endl;cout<<" * *"<<endl;cout<<"**********************************************************"<<endl;cout<<" 请选择:";//cin>>ch;//choose=int(ch[0])+int(ch[1])-'0'; //处置异样状态cin>>choose;if (!isdigit(choose)){system("cls");cout<<"操作非法1"<<endl;}else{switch(getint(choose)){case 1:system("cls");department_add();break;case 2:system("cls");cout<<"当前项目:"<<endl;sport_output(p2);cout<<"当前系:"<<endl;department_output(p1);sport_add();break;case 3:system("cls");department_output(p1);break;case 4:system("cls");department_order(p1,0);department_output(p1);break;case 5:system("cls");department_order(p1,1);department_output(p1);break;case 6:system("cls");department_order(p1,2);department_output(p1);break;case 7:system("cls");cout<<"请输入项目编号:";cin>>temp;sport_search(temp);break;case 8:system("cls");cout<<"请输入系的编号:";cin>>temp;department_search(temp);break;case 0:system("cls");a=0;break;default:system("cls");cout<<"操作非法\n";}}}department_write();sport_write();system("exit");}九、课程设计体会本次课程设计查验了我的实践能力,感觉自己还有许多东西要学习,并非仅限于讲义上的知识,实践才是真理,在学习中实践,实践中去学习。

运动会分数统计系统设计报告

运动会分数统计系统设计报告
for(j=1;j<MAXN;j++){ parr[i].Event[j].Escore=0; parr[i].Event[j].Enumber=j;
} for(i=1;i<=N;i++){
printf("请输入第%02d 个学校名称:",i); scanf("%s",parr[i].Sname); parr[i].Snumber=i; } printf("按任意键继续\n"); getch(); while(1){ system("cls"); printf("\n\n\n\n"); printf("\t\t|******************************************|\n"); printf("\t\t|------------ 运动会分数统计系统 ----------|\n"); printf("\t\t|-------------- 1.比赛成绩录入 ------------|\n"); printf("\t\t|-------------- 2.比赛成绩统计 ------------|\n"); printf("\t\t|-------------- 3.比赛成绩排序 ------------|\n"); printf("\t\t|-------------- 4.比赛成绩查询 ------------|\n"); printf("\t\t|-------------- 5.比赛成绩保存 ------------|\n"); printf("\t\t|-------------- 0.退出统计系统 ------------|\n"); printf("\t\t|******************************************|\n"); printf("\t\t\n"); scanf(" %c",&ch); switch(ch){

运动会分数统计系统-c语言课程设计报告书

运动会分数统计系统-c语言课程设计报告书

课程设计报告课程名称《C语言程序设计》课题名称运动会分数统计系统专业电气工程及其自动化班级电气工程学号姓名指导教师年月日湖南工程学院课程设计任务书课程名称《C语言程序设计》课题运动会分数统计系统专业班级电气工程及其自动化学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日第一部分《C语言课程设计》任务书前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。

是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。

通常,课程设计的课题比平时的习题复杂得多,也更接近实际。

课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。

为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。

学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。

学习委员将课程设计报告与磁盘收齐后交指导老师。

一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。

运动会分数统计实验报告

运动会分数统计实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

运动会分数统计系统实验报告【精选文档】

运动会分数统计系统的实现09计科(2)班E10914044杨素传一、设计要求1、问题描述参加运动会有n个学校,学校编码为1,2,…,n,比赛分成m个男子项目和w个女子项目.项目编号为男子1,2,…,m,女子m+1,m+2,…,m+w。

不同的项目取前五名或前三名积分;取前五名的积分分别为7,5,3,2,1;前三名的积分分别5,3,2;哪些取前五名或前三名由学生自己设定(m〈=20,n〈=20)。

2、需求分析(1)可以输入各个项目的前三名或前五名成绩;(2)能统计各学校成绩;(3)可以按学校编号、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某项目情况,可以按项目编号查询取得前三名或前五名的学校。

二、概要设计1、主界面设计为了实现运动会分数统计系统,设计一个含有多个菜单项的主控菜单子程序以连接系统的各项子程序,方便用户使用本程序。

本系统主控菜单运行界面图1所示.图1 运动会分数统计系统程序主菜单2、存储结构设计本程序采用链式存储类型(LNode)存储运动会分数统计系统的节点信息。

运动会分数统计系统的链表中的结点包括8个域:项目编号域(objnum)、项目类型(objtype)、运动员编号(athnum)、运动员姓名(athname[20])、学校编号(schnum)、校名(schname[30])、运动员分数(athscore)和指向下一个节点的指针欲(struct LNode *next)。

3、系统功能设计本系统设置了8个子功能菜单。

8个子功能的设计描述如下:(1)录入各项目的成绩。

由函数creatLink()实现.当用户选择该功能时,系统会以用户输入的数据运动会分数统计链表.(2)统计各学校分数.由函数schoolScore()实现。

当用户选择该功能时,系统会统计各学校分数。

(3)按学校编号顺序输出。

由函数printfSchoolNumber()实现。

当用户选择该功能时,系统会按学校编号顺序输出数据。

运动会分数统计课设报告

运动会分数统计课设报告英文回答: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,在编程中学习到了编程的很多好的习惯,养成了添加注释的习惯。

C语言课程设计报告_运动会分数统计系统

课程设计报告课程名称《C语言程序设计》课题名称运动员分数统计系统专业电气工程及其自动化班级电气1186学号201113010628姓名何长学指导教师王颖2012 年6月15日湖南工程学院课程设计任务书课程名称《C语言程序设计》课题运动员分数统计系统专业班级电气1186学生姓名何长学学号201113010628指导老师王颖审批任务书下达日期2012年6月04日任务完成日期2012年6月15 日一、设计内容与设计要求1.课程设计目的:全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计打下较扎实的基础。

2.课题题目⑴班级成绩管理系统⑵班级档案管理系统⑶飞机订票系统⑷猜数字游戏⑸电子英汉词典设计⑹心算抢答系统⑺运动会分数统计系统⑻小学生心算CAI系统3.设计要求:掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。

具体要求如下:⑴设计课题题目:每位同学根据自己学号除以8所得的余数加一选择相应题号的课题。

换题者不记成绩。

⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。

②完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。

③完成系统详细设计:包括采用C语言定义相关的数据类型;写出各模块的类C码算法;画出函数的调用关系图。

④调试分析以及设计体会:测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。

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

运动会分数统计系统课程设计报告数据结构院系:专业:班级:学号:姓名:教师:时间:一、问题描述1、功能任务:参加运动会有n个学校,学校编号为1……n。

比赛分成m个男子项目,和w个女子项目。

项目编号为男子1……m,女子m+1……m+w。

不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。

(m<=20,n<=20),按要求实现相应的数据输入、查询、计分等功能。

2、数据建议输入学校的名称,运动项目的名称等,其余信息学生自行设计;输出形式:有合理的提示,各学校分数为整形;数据的存储结构自行设计。

建议运动会的相关数据要存储在数据文件中。

3、操作1)可以输入各个项目的前三名或前五名的成绩;2)能统计各学校总分,3)可以按学校编号或名称、学校总分、男女团体总分排序输出;4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

4、要求提供系统菜单,界面友好,提示信息完整。

二、系统分析及设计1、需求分析根据运动会分数统计系统的问题分析及设计要求,可以将此系统分为四个模块:信息统计模块、信息输出模块、信息查询模块、信息调用模块。

其系统功能结构图如图所示。

(1)、信息统计模块实现信息的输入、统计、存档。

(2)、信息输出模块实现信息的输出。

(3)、信息查询模块实现信息的查询。

2、概要设计此系统采用顺序存储结构存储,定义了一个结构体数组存放参赛学校的信息。

之所以采用顺序存储结构,是因为用它来实现信息的存储、查询比较方便,节省时间,效率高,而且也方便把信息写入文件以及读取文件。

(1)、结构体定义如下:①、定义运动项目数据类型,用于存放运动项目的信息,包括项目名称、项目编号、用户自己定义的取前3名还是前5名的积分、名次、分数。

typedef struct{char proname[10]; //项目名称int pronum; //项目编号int top; //取前3名或前5名积分,由用户自己定义int range[5]; //名次int mark[5]; //分数}Pronode; //项目结点类型定义②、定义学校数据类型,用于存放参赛学校的信息,包括学校名称、学校编号、学校总分、男子团体总分、女子团体总分以及项目数组。

typedef struct{char schname[20]; //学校名称int schnum; //学校编号int score; //总分int Mscore; //男子团体总分int Wscore; //女子团体总分Pronode a[M+W]; //项目数组}Schnode; //学校结点类型定义③、定义一个学校结点类型的结构体数组Schnode s[N]。

采用数组结构有利于随机存储和查询。

(2)、信息统计模块的算法设计说明输入参赛学校比赛成绩的信息时,采用三重循环,第一重循环控制参赛学校的个数,第二重循环控制各参赛学校的参赛项目个数,第三重循环控制各参赛学校的各参赛项目所获得的名次个数,并依次输入相应信息,根据所输入的名次得出相对应的分数。

然后分别统计出各学校的总分、男子团体总分和女子团体总分。

调用文件数据块写函数fwrite将信息写入文件,方便以后调用。

(3)、信息输出模块的算法设计说明根据设计要求,实现按学校名称、学校总分、男子团体总分、女子团体总分输出。

因此选用switch语句实现此功能。

case 1按学校名称输出时,直接取出数据进行输出;case 2按学校总分输出时,采用冒泡排序法进行排序然后按分数由高到低输出;case 3和case 4也均采用冒泡排序法进行排序最后按分数由高到低输出。

其流程图如图所示:(4)、信息查询模块的算法设计说明根据设计要求,提供两种不同的查询方式:按学校编号查询和按项目编号查询。

因此也采用switch语句实现此功能。

case 1按学校编号查询,提示输入要查询的学校编号以及要查询的项目编号,直接取出该学校该项目的信息进行输出。

case 2按项目编号查询,提示输入要查询的项目编号,输出该项目取得名次的学校的信息。

其流程图如图所示:(5)、信息调用模块的算法设计说明信息调用,即读取保存在文件里的信息并输出。

由于采用的是数组存储,可以很方便的一下把文件里的信息全部读取出来,再利用三重循环依次把各学校各项目所取得的成绩输出。

3、详细设计(1)、信息输入及分数统计功能void InfoInput()是信息输入及分数统计的函数,在输入信息的同时进行分数统计,可以输入各学校各项目前3名或前5名的成绩。

结果取前3名还是前5名由用户自己定。

用switch 语句将前3名的成绩赋值为5、3、2,前5名的成绩赋值为7、5、3、2、1,未取得的成绩则赋为0。

并统计总分、男子团体总分和女子团体总分。

其主要功能代码如下:for(m=0;m<k;m++) //输入所获名次信息{cout<<" 名次:";cin>>s[i].a[j].range[m];if(s[i].a[j].top==3) //匹配各名次对应的分数{switch(s[i].a[j].range[m]){case 0: s[i].a[j].mark[m]=0; break;case 1: s[i].a[j].mark[m]=5; break;case 2: s[i].a[j].mark[m]=3; break;case 3: s[i].a[j].mark[m]=2; break;}}else{switch(s[i].a[j].range[m]){case 0: s[i].a[j].mark[m]=0; break;case 1: s[i].a[j].mark[m]=7; break;case 2: s[i].a[j].mark[m]=5; break;case 3: s[i].a[j].mark[m]=3; break;case 4: s[i].a[j].mark[m]=2; break;case 5: s[i].a[j].mark[m]=1; break;}}s[i].score=s[i].score+s[i].a[j].mark[m]; //统计学校总分if(j<=M-1)s[i].Mscore=s[i].Mscore+s[i].a[j].mark[m]; //统计男团总分elses[i].Wscore=s[i].Wscore+s[i].a[j].mark[m]; //统计女团总分}(2)、信息输出功能void InfoOutput()是信息输出函数。

输出一个总分显示菜单,利用switch语句实现按学校名称输出或按学校总分、男子团体总分、女子团体总分由高到低输出。

采用冒泡排序的方法使之按总分由高到低输出。

利用循环语句while(1)返回总分显示菜单,break语句终止循环。

其主要功能代码如下:for(i=0;i<N;i++) //冒泡排序,用辅助数组b[]记住学校结点的下标b[i]=i;for(i=0;i<N;i++){for(j=i+1;j<N;j++){if(s[b[i]].score < s[j].score){k=b[i];b[i]=b[j];b[j]=k;}}}for(i=0;i<N;i++) //输出各学校运动会分数信息{cout<<" 学校名称:"<<s[b[i]].schname<<endl;cout<<" 学校编号:"<<s[b[i]].schnum<<endl;cout<<" 学校总分:"<<s[b[i]].score<<endl;cout<<" 男团总分:"<<s[b[i]].Mscore<<endl;cout<<" 女团总分:"<<s[b[i]].Wscore<<endl;cout<<endl;}(3)、信息查询功能void Inquiry()函数是信息查询函数,显示一个查询菜单,利用switch语句实现按学校编号查询和按项目编号查询,并输出该学校某个项目的情况或某个项目取得前3名或前5名的学校信息。

利用循环语句while(1)返回查询菜单,break语句终止循环。

其主要功能代码如下:按学校编号查询:cout<<" 要查询的学校编号:";cin>>i;if(i>N) //学校编号超出范围,输出提示信息cout<<" 这个学校没有参加此次运动会!"<<endl;else{cout<<" 要查询的项目编号:";cin>>j;if(j>M+W || j==0) //项目编号超出范围,输出提示信息cout<<" 此次运动会没有这个项目!"<<endl;else //输出要查询学校项目的成绩{cout<<" 这个项目取前"<<s[0].a[j-1].top<<"名,该学校的成绩如下:"<<endl;for(k=0;k<5;k++){if(s[i-1].a[j-1].range[k]!=0)cout<<" 名次:"<<s[i-1].a[j-1].range[k];if(s[i-1].a[j-1].mark[k]!=0)cout<<" 分数:"<<s[i-1].a[j-1].mark[k]<<endl;}}}按项目编号查询:cout<<" 要查询的项目编号:";cin>>y;if(y>M+W || y==0) //项目编号超出范围,输出提示信息cout<<" 此次运动会没有这个项目!"<<endl;else //输出该项目取得名次的学校的成绩{cout<<" 该项目取前"<<s[0].a[y-1].top<<"名,取得该名次的学校:"<<endl;for(i=0;j<N;i++)for(j=0;j<5;j++){if(s[i].a[y-1].range[j]!=0)cout<<" 学校名称:"<<s[i].schname<<" 学校编号:"<<s[i].schnum<<"名次:"<<s[i].a[y-1].range[j];if(s[i].a[y-1].mark[j]!=0)cout<<" 分数:"<<s[i].a[y-1].mark[j]<<endl;}}三、系统实现1、完整源代码见附录。

相关文档
最新文档