运动会分数统计系统课程设计报告
数据结构课程设计报告 运动会计分系统
课程设计报告书
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(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语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进行设计,设计完毕写出课程设计报告,用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()实现。
当用户选择该功能时,系统会按学校编号顺序输出数据。
运动会分数统计设计报告
XXXXXXXXXX实习名称:运动会分数统计版本:1.1学生:XXX指导老师:XXX老师学号:XXX目录实习名称:运动会分数统计 (1)目录 (2)1需求和规格说明 (3)1.1项目功能 (3)1.2系统性能 (3)1.3设计目的 (3)2设计 (3)2.1设计思想 (3)2.2设计表示 (3)2.2.1数据结构 (3)2.2.2函数定义 (4)3用户手册 (5)3.1输入信息 (5)3.2选择功能 (5)4调试报告 (5)1需求和规格说明1.1项目功能用户可根据提示输入相应信息。
系统可以产生各种成绩单和得分报表并按用户需求显示。
1.2系统性能本系统中,学校个数定义为整形,大小限制为140(修改数据变量及文件信息,可以改变系统的数据规模)。
可按学校编号、学校总分、男总分、女总分排名,并某个学校成绩。
1.3设计目的通过实习,提高学生独立编程能力和设计能力,加深对数据结构、数据处理的理解和函数的运用。
2设计2.1设计思想运用数据结构的思想,系统把各个学校定义为结构体,并在结构体中定义该个体所需参数。
通过读入数据,再选择指令,系统可产生各学校成绩单。
选择功能后,可产生各种报表并查询成绩。
系统把各个功能定义为独立功能函数,通过传递参数调用函数。
使用某种功能的时候,只需调用该功能函数即可。
2.2设计表示2.2.1数据结构学校信息:学校名称,学校总分,男子总分,女子总分struct school //表示学校的结构体{int num; //学校编号char name[20]; //学校名称int score; //学校总分int male; //男子总分int female; //女子总分}sch[140];2.2.2函数定义2.2.2.1void input() 输入学校数目输入学校数目,系统按照数目n的大小,读入文件中n个学校的信息。
2.2.2.2void bianhao() 按编号排序按编号大小输出各学校信息(名称,总分,男子总分,女子总分)2.2.2.3void zongfen() 按学校总分排序按学校总分高低输出各学校信息(名称,总分,男子总分,女子总分)。
运动会分数统计课设报告
运动会分数统计课设报告英文回答: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,在编程中学习到了编程的很多好的习惯,养成了添加注释的习惯。
运动会分数统计课设报告
运动会分数统计课设报告英文回答: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.中文回答:作为运动积分项目的一部分,我被要求撰写一份关于运动会分数统计的报告。
运动会计分系统课程设计
将系统拆分为多个独立的子系统或服务,采用分布式部署方式,提高 系统的可扩展性和并发处理能力。
引入缓存机制
对系统中频繁访问的数据或计算结果进行缓存处理,减少数据库访问 次数和计算量,提高系统响应速度。
06
课程总结与展望
课程知识点回顾
运动会计分系统基本原理
包括计分规则、计分方法、计分流程等核心 内容。
压力测试
兼容性测试
模拟大量用户同时使用系统的场景,测试 系统的负载能力和性能表现。
测试系统在不同操作系统、浏览器和设备 上的兼容性,以确保用户在不同环境下都 能正常使用。
测试结果分析与评估
功能覆盖率
评估系统测试用例对系统功能的覆盖 程度,确保所有功能都得到充分测试 。
缺陷发现率
统计在测试过程中发现的缺陷数量, 分析缺陷类型、严重程度和分布情况 ,以评估系统质量。
性能指标
收集系统在响应时间、吞吐量、资源 利用率等方面的性能指标,对系统性 能进行量化评估。
用户满意度调查
通过用户反馈和满意度调查,了解用 户对系统功能和性能的满意度,以便 进一步优化系统。
系统性能优化建议
优化算法
针对系统中计算量大、耗时长的算法进行优化,提高系统运行效率。
压缩文件大小
对系统中传输的文件进行压缩处理,以减少网络传输时间和存储空间 占用。
用户界面设计
涵盖界面布局、控件使用、交互逻辑等方面 的设计技巧。
数据库设计与管理
涉及数据库结构设计、数据表创建、数据操 作与查询等关键技能。
系统集成与测试
讲解系统各模块集成方法、测试策略及常见 问题解决方案。
学生作品展示与评价
作品展示
展示学生设计的运动会计分系统,包 括系统界面、功能实现、用户体验等 方面的成果。
运动会计分系统课程设计
界面设计
界面布局:简洁明了,易于操作 色彩搭配:舒适和谐,提高用户体验 图标和按钮:形象生动,方便用户识别 字体选择:清晰易读,符合系统风格
模块设计
用户管理模块: 实现用户注册、 登录、信息修
改等功能
赛事管理模块: 添加、删除、 修改赛事信息, 设置赛事时间、
地点等
计分模块:根 据赛事规则, 实时计算比赛
模块实现
用户管理模块:实现用户注册、登录、信息修改等功能 赛事管理模块:实现赛事创建、编辑、删除等功能 计分模块:根据赛事规则自动计算比赛得分 统计分析模块:对赛事数据进行统计和分析,生成报表和图表
系统测试
测试目的:验证系统的功能和性能是否符合预期 测试方法:采用黑盒、白盒测试等不同方法进行测试 测试环境:搭建与实际应用环境相似的测试环境,确保测试结果的准确性 测试结果:对测试结果进行分析,找出系统存在的问题和缺陷,提出改进意见
权限管理:系统应具备 权限管理功能,对不同 用户进行权限控制,确 保数据的安全性。
赛事管理:系统应具 备赛事信息录入、修 改、删除等功能,并 能够管理赛事信息。
计分管理:系统应 具备自动计分、手 动计分等功能,并 能够管理计分信息。
非功能需求分析
可靠性:系统应具备高可靠性和稳定性,确保数据安全和系统正常运行。 安全性:系统应具备足够的安全措施,保障用户数据和信息的安全。
错误。
大数据分析: 对大量比赛数 据进行分析, 优化计分算法。
云计算技术: 实现数据共享 和实时更新, 提高系统性能
和稳定性。
移动化应用:方 便用户随时随地 查看比赛成绩和 数据,提高信息
传播效率。
感谢您的观看
汇报人:
系统的定义和功能
系统的设计理念和 目标
课程设计-运动会分数统计
课程设计报告书专业:计算机科学与技术课程设计名称:《数据结构课程设计》题目:运动会分数统计班级:设计者学号:设计者姓名:同组人员:指导老师:完成时间:摘要随着时代的进步,人们需要处理越来越多的数据,接受的信息数量也不断增加、分工的不断细化、各个行业间联系的不断密切,对数据的处理能力要求也不断提高。
如何处理好生活中的信息,对信息管理,对成情况和发展趋势进行统计、规划、分析并制定切实可行的人事政策,是一项繁重而艰巨的任务。
提供信息咨询,信息检索,信息存取等服务,在此论文中主要实现对存储在数据库中的数据表进行这些简单的操作,为提对数据的处理能管理效率提供了行之有效的手段。
关键词:数据结构;算法设计;开发工具;程序设计;程序调试;目录目录 (1)第一章开发环境和开发工具 (1)1.1 C++简介 (1)1.2 开发背景....................................... 错误!未定义书签。
1.3 开发环境 (2)第二章算法思想 (3)2.1 系统需求分析 (3)2.2 系统总体设计 (3)2.2.1 系统设计目标 (3)2.2.2 开发设计思想 (4)2.2.3 系统功能模块设计 (4)2.3 算法思想描述 (6)第三章算法实现 (8)3.1 数据结构 (8)3.2 程序模块 (8)3.3 各模块之间的调用关系 (8)3.4 源程序代码 (9)第四章测试与分析.................................... 错误!未定义书签。
4.1 测试数据选择 (14)4.2 测试结果分析 (16)总结 (17)心得体会 (18)参考文献 (19)第一章开发环境和开发工具1.1 C++简介一种面向对象的开发语言,C++是一种使用非常广泛的计算机编程语言。
C++是一种静态数据类型检查的、支持多重编程方式的通用程序设计语言。
它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
运动会分数统计课程设计
运动会分数统计课程设计一、课程目标知识目标:1. 学生能理解运动会分数统计的基本概念,掌握分数的加、减运算方法。
2. 学生能运用统计图表整理、描述和比较数据,了解不同项目的得分情况。
3. 学生掌握运用数学知识解决实际问题的方法,提高数据分析能力。
技能目标:1. 学生能运用计算器或手工计算方法,准确进行分数的加减运算。
2. 学生能运用图表软件(如Excel)制作和解读统计图表,展示运动会分数数据。
3. 学生通过小组合作,提高沟通、协作和解决问题的能力。
情感态度价值观目标:1. 学生在分数统计过程中,培养认真、细心的学习态度,增强对数据的敏感性和分析意识。
2. 学生通过参与运动会分数统计,提高对数学学习的兴趣,认识到数学在生活中的实际应用。
3. 学生在小组合作中,学会尊重他人,培养团队精神和公平竞争意识。
4. 学生通过分析运动会分数,培养积极参与体育活动的热情,增强集体荣誉感。
课程性质:本课程为数学学科与体育活动的结合,以实践性、应用性为主。
学生特点:学生处于小学高年级阶段,具备一定的数学基础和体育活动经验,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点,注重启发式教学,引导学生主动参与,培养其动手操作、观察分析、解决问题的能力。
同时,关注学生的情感态度价值观培养,提高综合素质。
通过对课程目标的分解和实现,使学生在实践中掌握知识,提高技能,培养正确的价值观。
二、教学内容1. 理论知识:- 分数的概念及加减法运算规则;- 统计图表的类型及制作方法,如条形图、折线图、饼图;- 数据整理与分析的基本方法。
2. 实践操作:- 运用分数加减法进行运动会分数计算;- 制作并解读运动会分数统计图表;- 小组合作,完成运动会分数统计报告。
3. 教学大纲安排:- 第一课时:分数的概念及加减法运算复习,介绍统计图表的基本类型;- 第二课时:运动会分数统计方法讲解,学生分组进行数据收集与整理;- 第三课时:小组合作制作统计图表,进行分数计算和分析;- 第四课时:各小组展示成果,师生共同评价,总结分数统计方法。
运动会分数统计系统课程设计报告
运动会分数统计系统课程设计报告数据结构院系:专业:班级:学号:姓名:一、问题描述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)、信息查询模块实现信息的查询。
(4)、信息调用模块实现信息的调用,即从文件中读出信息并输出。
2、概要设计此系统采用顺序存储结构存储,定义了一个结构体数组存放参赛学校的信息。
之所以采用顺序存储结构,是因为用它来实现信息的存储、查询比较方便,节省时间,效率高,而且也方便把信息写入文件以及读取文件。
(1)、结构体定义如下:①、定义运动项目数据类型,用于存放运动项目的信息,包括项目名称、项目编号、用户自己定义的取前3名还是前5名的积分、名次、分数。
typedef struct{char proname[10]; //项目名称int pronum; //项目编号int top; //取前3名或前5名积分,由用户自己定义int range[5]; //名次int mark[5]; //分数}Pronode; //项目结点类型定义②、定义学校数据类型,用于存放参赛学校的信息,包括学校名称、学校编号、学校总分、男子团体总分、女子团体总分以及项目数组。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)、信息查询模块实现信息的查询。
(4)、信息调用模块实现信息的调用,即从文件中读出信息并输出。
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<<" 要查询的项目编号:";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、完整源代码见附录。