1.1运动会分数统计
- 格式:doc
- 大小:139.00 KB
- 文档页数:7
#include<stdio.h>#include<math.h>#include <process.h>#define N 20 /*学校最大数目*/#define M 20 /*男子项目最大数目*/#define W 20 /*女子项目最大数目*/typedef struct{int inum; /*项目编号*/int top; /*取名次的数目*/int range[5]; /*名次*/int mark[5]; /*分数*/}itemnode; /*存放项目信息*/typedef struct{int snum; /*学校编号*/int score; /*学校总分*/int mscore; /*男团体总分*/int wscore; /*女团体总分*/itemnode t[M+W]; /*项目数组*/}snode; /*存放学校信息*/snode a[N]; /* 定义一个学校数组*/void menu(int n,int m,int w) /*菜单函数*/{int c;void input(int n,int m,int w);void output(int n,int m,int w);void sortput(int n,int m,int w);void search(int n,int m,int w);printf("\t\t\t欢迎使用\t\t\t\t\n\n");printf("\t***********运动会分数统计系统***********\n\n");printf("\t\t*******1.信息输入*******\n");printf("\t\t*******2.统计输出*******\n");printf("\t\t*******3.排序输出*******\n");printf("\t\t*******4.信息查询*******\n");printf("\t\t*******0.退出系统*******\n\n");printf("=======================================================\n\n");printf("请选择要实现步骤的编号(0--4):");scanf("%d",&c);switch(c){case 1:input(n,m,w);break;case 2:output(n,m,w);break;case 3:sortput(n,m,w);break;case 4:search(n,m,w);break;case 0:printf("谢谢使用,再见!\n");exit(0);default:printf("输入错误,请重试!\n");menu(n,m,w);}}void savetofile() /*信息存入文件file*/ {FILE *fp;int i;if((fp=fopen("file.txt","w"))==NULL){printf("cannot open the file\n");return;}for(i=0;i<N;i++){if(a[i].snum!='\0')if(fwrite(&a[i],sizeof(snode),1,fp)!=1){printf("file write error\n");return;}}fclose(fp);}void readfromfile() /*信息从文件file中取出*/{int i;FILE *fp;if((fp=fopen("file.txt","rb"))==NULL){printf("cannot open the file\n");return;}for(i=0;i<N;i++)fread(&a[i],sizeof(snode),1,fp);fclose(fp);}void input(int n,int m,int w) /*1.信息输入*/ {int i,j,s,k,q=0;for(i=0;i<n;i++){printf("学校编号:");scanf("%d",&a[i].snum); /*输入学校信息*/for(j=0;j<m+w;j++){printf("项目编号:");scanf("%d",&a[i].t[j].inum);printf("项目取前3名或前5名(3或者5):");scanf("%d",&a[i].t[j].top);if(a[i].t[j].top==3)printf("获得名次个数(1--3):");elseprintf("获得名次个数(1--5):");scanf("%d",&k); /*输入项目信息*/for(s=0;s<k;s++){if(a[i].t[j].top==3)printf("所获名次(1--3):");elseprintf("所获名次(1--5):");scanf("%d",&a[i].t[j].range[s]); /*输入所获名次信息*/ }printf("\n");}}for(i=0;i<n;i++){a[i].score=0;a[i].mscore=0;a[i].wscore=0;} /*初始化分数*/for(i=0;i<n;i++)for(j=0;j<m+w;j++)for(s=0;s<5;s++){if(a[i].t[j].top==3)switch(a[i].t[j].range[s]){case 0: a[i].t[j].mark[s]=0; break;case 1: a[i].t[j].mark[s]=5; break;case 2: a[i].t[j].mark[s]=3; break;case 3: a[i].t[j].mark[s]=2; break;}else if(a[i].t[j].top==5)switch(a[i].t[j].range[s]){case 0: a[i].t[j].mark[s]=0; break;case 1: a[i].t[j].mark[s]=7; break;case 2: a[i].t[j].mark[s]=5; break;case 3: a[i].t[j].mark[s]=3; break;case 4: a[i].t[j].mark[s]=2; break;case 5: a[i].t[j].mark[s]=1; break;}else{printf("信息有误!");printf("\n");exit(0);}a[i].score=a[i].score+a[i].t[j].mark[s]; /*记学校总分*/if(j<=m-1)a[i].mscore=a[i].mscore+a[i].t[j].mark[s]; /*记男子团体总分*/elsea[i].wscore=a[i].wscore+a[i].t[j].mark[s]; /*记女子团体总分*/ }printf("输入完毕!返回? 1是 2否\n"); /*返回菜单*/scanf("%d",&q);printf("\n");if(q!=1)printf("不能再添加信息!");printf("\n");savetofile(); /*将信息存入文件file*/menu(n,m,w);}void output(int n,int m,int w) /*2.统计输出*/{readfromfile();int i,j,s,q=0;for(i=0;i<n;i++) /*显示结果*/{printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[i].snum,a[i].score,a[i].mscore,a[i].wscore);{printf("项目编号:%d 所取名次数量:%d\n",a[i].t[j].inum,a[i].t[j].top);for(s=0;s<5;s++){if(a[i].t[j].range[s]!=0)printf("名次:%d 分数:%d\n",a[i].t[j].range[s],a[i].t[j].mark[s]);}}printf("\n");}printf("\n");printf("统计完毕!返回? 1是 2否"); /*返回菜单*/scanf("%d",&q);printf("\n");if(q!=1)printf("统计已经结束!");printf("\n");menu(n,m,w);}void sortput(int n,int m,int w) /*3.排序输出*/{readfromfile();int c,i,j,k,q=0;int temp[N];printf("\t**************排序输出系统**************\n\n");printf("\t\t****1.按学校编号输出****\n");printf("\t\t****2.按学校总分输出****\n");printf("\t\t****3.按男团总分输出****\n");printf("\t\t****4.按女团总分输出****\n");printf("=======================================================\n\n");do{printf("请选择要实现功能的编号(1--4):");scanf("%d",&c);switch(c){case 1:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].snum>a[j].snum){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按学校编号输出*/break;case 2:for(i=0;i<n;i++)temp[i]=i;{for(j=i+1;j<n;j++)if(a[temp[i]].score<a[j].score){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按学校总分输出*/break;case 3:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].mscore<a[j].mscore){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按男团总分输出*/break;case 4:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].wscore<a[j].wscore){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按女团总分输出*/break;default:printf("输入错误,请重试!\n");}printf("请选择 1 返回主菜单 0继续"); /*返回菜单或继续排序*/scanf("%d",&q);printf("\n");}while(q==0);printf("\n");if(q!=0)menu(n,m,w);}void search(int n,int m,int w) /*查询函数*/{readfromfile();int c,i,j,k,d,l,q=0;printf("\t****************查询系统****************\n\n");printf("\t\t****1.按学校编号查询****\n");printf("\t\t****2.按项目编号查询****\n");printf("=======================================================\n\n");do{k=-1;d=-1;l=-1;printf("请选择要实现功能的编号(1--2):");scanf("%d",&c);switch(c){case 1:printf("要查询的学校编号:"); /*查找学校编号下标*/scanf("%d",&c);for(i=0;i<n;i++){if(a[i].snum==c)k=i;}if(k==-1)printf("错误:这个学校没有参加此次运动会!\n");else{printf("要查询的项目编号:"); /*查找项目编号下标*/scanf("%d",&c);for(j=0;j<m+w;j++){if(a[k].t[j].inum==c)d=j;}if(d==-1)printf("此次运动会没有这个项目\n");else /*显示结果*/{printf("这个项目取前 %d名,该学校的成绩如下:\n", a[k].t[d].top);for(i=0;i<5;i++)if(a[k].t[d].range[i]!=0)printf("名次:%d\n",a[k].t[d].range[i]);}}break;case 2:printf("要查询的项目编号:"); /*查找项目编号下标*/scanf("%d",&c);for(i=0;i<n;i++)for(j=0;j<m+w;j++)if(a[i].t[j].inum==c)l=j;if(l==-1)printf("此次运动会没有这个项目\n");else /*显示结果*/{printf("该项目取前 %d名,取得名次的学校\n",a[0].t[l].top);for(i=0; i<n;i++)for(j=0;j<5;j++)if(a[i].t[l].range[j]!=0)printf("学校编号:%d,名次:%d\n",a[i].snum,a[i].t[l].range[j]);}break;default:printf("输入错误,请重试!\n");}printf("请选择:1.返回主菜单 0.继续"); /*返回菜单或继续查询*/scanf("%d",&q);printf("\n");}while(q==0);printf("\n");if(q!=0)menu(n,m,w);}void main() /*主函数*/{int n,m,w;printf("\t\t\t欢迎使用\t\t\t\t\n\n");printf("\t***********运动会分数统计系统***********\n\n");printf("请先输入运动会主要信息\n"); /*设计运动会主要数据个数*/printf("输入学校个数:");scanf("%d",&n);printf("输入男子项目个数:");scanf("%d",&m);printf("输入女子项目个数:");scanf("%d",&w);menu(n,m,w);}。
实验报告一题目:运动会分数统计班级:通信工程姓名:张雪婷学号: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. 加强分数统计工作人员的培训和技术支持。
通过提供专业的培训和技术指导,提高分数统计工作人员的技术水平和操作方法,以确保他们能够准确地统计比赛成绩。
运动会分数统计系统Ø 设计内容1. 任务:参加运动会有n个学校,学校编号为1~n。
比赛分成m个男子项目,和w个女子项目。
项目编号为1~m,女子为m+1~w。
不同的项目取前5名或前3明积分;取前5名的积分为:7、5、3、2、1,前3名的积分分别为:5、3、2;哪些项目取前5名或前3名由学生自己决定。
(m<=20,n<=20)。
2. 功能要求:1) 可以输入各个项目的前3名或前5名的成绩;名的成绩;2) 能统计各个学校总分;能统计各个学校总分;3) 可以按学校编号、学校总分、男女团体总分排序输出;可以按学校编号、学校总分、男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前3或前5名的学校。
名的学校。
Ø 设计思路1. 系统结构设计图运动会SportsMeeting东华University交大University……比赛项目集合SportEvents 项目1 Event项目2 Event…………复旦University运动会分数统计系统结构设计图2. 思路分析1) 从上面的结构设计图来看,隐含地给出了第一个约束条件:每个参赛学校均参加所有的比赛项目。
然而这种设计思路并不符合实际情况,因为每个学校有权利选择参加或不参加某个比赛项目。
加某个比赛项目。
2) 首先,在上述结构图中,比赛项目Event 是最小的数据存储基本单元。
比赛项目集合SportEvents 可以理解为Event 数组,包含了所有的比赛项目。
根据约束,只要有学校University 参加运动会,此学校就包含了一个SportEvents 集合,即为每个学校分配自己的项目成绩单。
有n 个学校报名参加了运动会SportsMee ng ,大会的工作人员根据比赛项目结果统计各个学校的成绩。
赛项目结果统计各个学校的成绩。
因此,因此,这种设计结构有3层包含关系,层包含关系,但是每一部分但是每一部分相互独立,耦合性弱。
目录摘要 (1)前言 (2)正文 (3)1.采用类C语言定义相关的数据类型 (3)2.各模块的伪码算法 (4)3.函数的调用关系图 (7)4.调试分析 (7)5.测试结果 (8)6.源程序(带注释) (12)总结 (15)参考文献 (17)致谢 (18)附件Ⅰ部分源程序代码 (19)摘要本次课程设计的主要任务是利用学过的数据结构的知识设计一个运动会分数统计系统。
运动会分数统计系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。
运动会分数统计系统是典型的信息管理系统,本系统是根据现代化校园的发展而设计的运动会分数统计系统,本系统可以方便老师、运动员来学校查找成绩、名次。
要求应用程序功能完备,易使用等特点。
实现全校运动会信息在线查询。
还可以对新的运动信息进行信息录入。
由于运动项目种类繁多,可以实现信息修改。
通过本次课程设计可以加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构。
关键词:数据结构;运动会;分数统计系统;C语言前言本学期开设的《算法与数据结构》课程已经告一段落,。
在学习科目的第一节课起,张老师就为我们阐述了它的重要性。
它对我们来说具有一定的难度。
它是其它编程语言的一门基本学科。
尽管不好学,但是我们必须学好这门课程,这对于我们计算机专业的学生来说意义重大。
经过一个学期的理论知识的学习,对于数据结构相关的知识有了一定的了解。
这是一门纯属于设计的科目,它需用把理论变为上机调试和具体实践。
在课程结束之后。
老师为我们安排了这次为期两周的课程设计。
目的就是让我们自己在计算机上自己设计算法来实现相应的功能以及锻炼学生的动手能力和实践能力,最重要的是要把我们所学的数据结构的理论知识应运到实践中去。
这次课程设计的题目是“运动会分数统计系统”,要求学生自己查阅相关资料,完成相应的任务,自己上机设计算法,调试程序,运行出结果,以此来加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养自己的动手能力。
课程设计报告课程名称《C语言程序设计》课题名称运动会分数统计系统专业电气工程及其自动化班级电气工程学号姓名指导教师年月日湖南工程学院课程设计任务书课程名称《C语言程序设计》课题运动会分数统计系统专业班级电气工程及其自动化学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日第一部分《C语言课程设计》任务书前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。
是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。
通常,课程设计的课题比平时的习题复杂得多,也更接近实际。
课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。
为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。
学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。
学习委员将课程设计报告与磁盘收齐后交指导老师。
一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。
运动会分数统计实验报告运动会分数统计实验报告一、引言运动会是学校中一项重要的体育活动,旨在促进学生的身心健康发展和团队合作精神。
而分数统计则是评估学生在各项比赛中的表现,为学校提供数据支持。
本实验旨在通过分数统计的实际操作,探索如何准确记录和分析运动会的成绩。
二、实验设计与方法1. 实验目标:了解分数统计的基本原则和方法,并通过实际操作掌握相关技巧。
2. 实验材料:计分表格、计分器、笔、纸等。
3. 实验步骤:a) 设计计分表格:根据运动会项目和规则,设计适用于各项比赛的计分表格,包括项目名称、参赛者姓名、成绩等栏目。
b) 实际操作:在模拟的运动会中,记录各个项目的比赛成绩。
使用计分器准确记录每位选手的成绩,并填写到相应的计分表格中。
c) 统计分析:根据计分表格,进行分数统计和分析。
计算每个项目的平均分、最高分、最低分等,并绘制相应的统计图表。
三、实验结果与讨论1. 计分表格设计:通过实验,我们发现设计合理的计分表格对于准确记录成绩非常重要。
在设计过程中,我们考虑了项目名称、参赛者姓名和成绩等要素,并合理设置了栏目的顺序和间距,以便于记录和查阅。
2. 分数统计与分析:通过实际操作和数据处理,我们得出了运动会各项目的平均分、最高分和最低分等数据。
例如,在田径比赛中,平均成绩为10.5秒,最高成绩为9.8秒,最低成绩为11.2秒。
这些数据可以帮助我们评估每个项目的整体水平和选手的个人表现。
3. 统计图表绘制:为了更直观地呈现数据,我们使用了柱状图和折线图等图表形式。
通过图表的绘制,我们可以清晰地看到各个项目的得分分布情况,进一步分析比赛的结果和趋势。
四、实验总结通过本次实验,我们深入了解了分数统计的原则和方法,并通过实际操作掌握了相关技巧。
我们发现设计合理的计分表格对于准确记录成绩非常重要,并且分数统计和分析能够为我们提供有价值的数据支持。
同时,通过绘制统计图表,我们可以更直观地呈现数据,进一步分析比赛结果。
南京邮电大学通达学院2019/2020学年第1学期《Windows编程》课程大作业报告课题代号(单选)□课题1 □课题2 □课题3 □课题4课题名称:_____________________________________________________ 小组成员人数(单选)□1人□2人□3人□4人学号___________________姓名________________________课题完成时间:___________________________________================以下部分为教师填写区,请勿填写================= 成绩评定:软件基本功能_______ 软件提高功能______ 软件部分成绩________文档结构___________ 文档撰写__________ 文档部分成绩________总成绩_____________备注__________________________________________________________运动会分数统计一、课题内容和要求课题名称:运动会分数统计内容和要求:参加运动会有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.显示学校信息6.显示项目信息7.删除保存在本地的文件8.保存数据文件9.显示所有项目的名次信息10.退出系统三、概要设计项目信息表结构typedef struct xm_table{int item;// 项目编号char name[20];//项目名称int count; //该项目得分人的数量}XM_TABLE;学生信息表结构struct STUDENT{char name[20]; //姓名int score; //得分成绩int range; //得分名次int item; //得分项目int sex; //性别};参赛学校信息结构typedef struct SchoolStruct{int count; //计算实际运动员个数int serial; //学校编号char Name[20];//学校名称int menscore; //男子团体总分int womenscore;//女子团体总分int totalscore; //团体总分int jifeng; //学校积分struct STUDENT students[10]; //参赛运动员struct SchoolStruct *next; //下一个参赛学校}SCHOOLSTRUCT;统计信息结构typedef struct TongJi{int fs;//分数SCHOOLSTRUCT *psch;//学校地址struct STUDENT *pstu;//学生信息地址}TONGJI;1.添加学生功能2.统计信息功能3. 按学校编号查询学校某个项目的情况4.可以按项目编号查询取得前三或前五名的学校5.显示学校信息6.显示项目9.显示项目名次10.退出系统四、详细设计程序分为10个大模块:添加学生,统计信息,按学校编号查询学校某个项目的情况,可以按项目编号查询取得前三或前五名的学校,显示学校信息,显示项目信息,删除文件,保存文件,显示项目名次,退出系统。
课程设计报告书设计题目一:运动会分数统计任务:参加运动会有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) 可以按项目编号查询取得前三或前五名的学校。
需求分析:本演示程序中,用户自定义学校个数,项目个数,并且自动生成学校编号和项目编号详细设计:#include <stdio.h>void main(){int n,w,m,i,num,j,t,r,f,g;i nt inumber2;int inumber;i nt schnumber;i nt c[20],d[20],e[20];i nt array[40];s truct School{int number;int schgl;int mgl;int wmgl;int items[40];} school[20];s truct Item{int a[3],b[5];int number;} item[40];p rintf("------------------------------------------------------------------------------\n");p rintf("--------------------------------^^运动会分数统计^^----------------------------\n");p rintf("------------------------------------------------------------------------------\n");p rintf("\n");p rintf("请输入参加运动会的学校个数:");s canf("%d",&n);while(n<=0||n>20){printf("对不起,您输入的数不符合要求,请重新输入:");scanf("%d",&n);}p rintf("规定它们的编号分别是:");f or( i=1;i<=n;i++){school[i-1].number=i;printf("%d,",i);}p rintf("\n\n");printf("请输入男项的个数(0~20):");scanf("%d",&m);w hile(m<=0||m>20){printf("您输入的数据有误,请重新输入:"); scanf("%d",&m);}p rintf("\n");printf("请输入女项的个数(0~20):");scanf("%d",&w);while(w<=0||w>20){printf("对您输入的数据有误,请重新输入:"); scanf("%d",&w);}printf("\n");printf("男项的编号分别是:");f or(i=1;i<=m;i++){item[i-1].number=i;printf("%d,",i);}printf("\n");printf("女项的编号分别是:");f or(i=m+1;i<=m+w;i++){item[i-1].number=i;printf("%d,",i);printf("\n");printf("请输入需要取前三名的项目个数(0~40):"); scanf("%d",&num);w hile(num<0||num>m+w){printf("您输入的数据有误,请重新输入:");scanf("%d",&num);printf("\n");}printf("\n");f or(i=1;i<=20;i++){school[i].schgl=0;school[i].wmgl=0;school[i].mgl=0;}f or(i=1;i<=40;i++)for(j=0;j<3;j++)item[i].a[j]=0;for(i=1;i<=40;i++)for(j=0;j<5;j++)item[i].b[j]=0;for(i=1;i<=20;i++)for(j=1;j<=40;j++)school[i].items[j]=0;f or(i=0;i<=40;i++){array[i]=0;p rintf("请输入项目编号和项目前三名的学校编号。
目录一.设计要求 (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读取数据四.实验心得:课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际能力的具体训练和考察过程.写之前有第一感觉是用链表写.但是上次的课程设计写的就是链表,所以想尝试一下用数组写这个题目.写完之后两者对比起来处理这种题目还是用链表比较方便.用数组太花存储空间了,处理太多数据的话就不现实了.在文件读写的时候由于数据太多写入和读取都要一个一个处理.通过这次课程设计使我懂得了理论与实际相结合是很重要的,从而提高自己的实际动手编程能力和独立思考能力.而对于程序。
运动会的比赛成绩统计方案一、引言运动会是学校中一项重大盛事,为了更好地组织和管理比赛成绩,制定一套科学、可行的比赛成绩统计方案至关重要。
本文将介绍一种适用于运动会的比赛成绩统计方案,并详细说明其操作步骤和应用要点。
二、方案概述本方案基于电子表格软件Excel进行成绩统计,通过建立一个数据表格来记录各项目的参赛人员名单和成绩,实现成绩的自动计算和总结。
所需字段包括参赛项目、参赛人员、成绩等关键信息。
三、方案步骤1. 创建数据表格在Excel中创建一个新的工作表,设置合适的列标题,包括:参赛项目、参赛人员、成绩等。
根据实际需要,可以添加其他字段如学院、年级等。
2. 输入参赛人员名单将各参赛项目的参赛人员名单按照项目分类输入到表格中的“参赛人员”列中。
根据实际比赛情况,可以使用下拉列表等方式来简化输入过程。
确保每个参赛人员的姓名都只出现在一个项目中。
3. 输入比赛成绩在每个参赛项目对应的“成绩”列中输入每个参赛人员的成绩。
可以根据需要选择合适的格式,如时间、分数等。
若有未参赛选手或未获得成绩的情况,可以使用“--”或其他符号代替。
4. 计算总分根据比赛规则,计算每个参赛人员的总分。
可以使用Excel的函数和公式实现成绩的自动计算,并将结果显示在“总分”列中。
根据需要可以进行排序,以便于查看和排名。
5. 总结与分析根据项目和参赛人员的数量,可以使用Excel的自动筛选功能对成绩进行筛选和分析。
此外,也可以添加图表来直观地展示各个项目的成绩和排名情况。
这些功能能够帮助组织者更好地总结比赛结果。
四、方案要点1. 数据准确性在输入参赛人员名单和比赛成绩时,确保数据的准确性。
避免漏填或填写错误的信息,以免影响成绩的计算和排名结果。
2. 数据保密性比赛成绩是与个人隐私相关的敏感信息,应采取措施保护数据的安全性和保密性。
限制成绩表格的访问权限,仅授权人员可以查看和编辑数据。
3. 备份与存档定期对成绩数据进行备份和存档。
运动会分数统计系统设计报告院系:专业:班级:姓名:学号:日期:2012年5月27日星期日运动会分数统计系统一、实验要求:某校要召开运动会,现要求开发一个学校运动会成绩统计系统,参加运动会有n个系,比赛分成m个男子项目,和w个女子项目。
系信息(系编号为D01……n,系名称Dname),运动员信息:(编号,姓名,性别,所属系,成绩(初值为0))项目信息:(项目编号,项目名称)功能要求:(1)生成报名表:(2)维护报名表:增加、删除、修改,(报名人数3人以下(含3人)取消该项目的比赛)(3)登记各项比赛成绩(4)根据预赛成绩产生预(决)赛名单(5)计分规则:报名人数在16人以上(含16人)取取前八名,前八名的积分分别为:8、7、6、5、4、3、2、1;报名人数在8人以上(含8人)16人以下,取前五名,前五名的积分分别为:7、5、3、2、1;报名人数在8人以下,取前三名,前三名的积分分别为:5、3、2;(6)统计●能统计各系总分,●按系系总分、男女团体总分排序输出;按项目编号查询取得前三或前五或前八名的运动员情况。
二、设计过程:数据结构:名称编号男女团体运动项目:项目编号,名称,男子项目,女子项目,前三名,前五名,第一名系编号,第二名系编号,第三名系编号,第四名系编号,第五名系编号。
院系类class Dname { //院系private:char name[20];int number;int boy;int girl;public:Dname *next;void Dname_add();void Dname_output(Dname *p);int Dname_isexist(int a);void Dname_show(int a);void Dname_search(int a);void Dname_addmark(int a,int b,int c);void Dname_order(Dname *temp,int type);};运动项目类;class Sport //运动项目{private:char name[20];int isboy; //0为女项目?,1为男项目int is3; //0为取前五名,1为取前五名int number; //项目编号int first; //int second; //int third; //int fourth; //int fifth; //public:Sport *next;int Sport_isexist(int a);void Sport_add();void Sport_output(Sport *p);void Sport_search(int a);};三、程序编码:#include<iostream> #include<iomanip>#include<string>using namespace std;class Dname { //院系private:char name[20];int number;int boy;int girl;public:Dname *next;void Dname_add();void Dname_output(Dname *p);int Dname_isexist(int a);void Dname_show(int a);void Dname_search(int a);void Dname_addmark(int a,int b,int c);void Dname_order(Dname *temp,int type);};class Sport //运?动¡¥项?目?{private:char name[20];int isboy; //0为女项目1为男项目?int is3; //为取前五名为取前五名?int number; //项?目?编À¨¤号?int first; //int second; //int third; //int fourth; //int fifth; //public:Sport *next;int Sport_isexist(int a);void Sport_add();void Sport_output(Sport *p);void Sport_search(int a);};Dname* head1;Sport* head2;void Dname::Dname_add(){Dname* p;int mark=0;p=new Dname;cout<<"请输入院系的名称:";cin>>p->name;int c;while(mark!=1){cout<<"请输入院系编号:";cin>>c;p->number=c;mark=1;p->boy=0;p->girl=0;p->next=head1->next;head1->next=p;cout<<"成功添加了一个院系"<<endl;cout<<"是否还要添加院¦ y/n)"<<endl;char input,y,n;cin>>input;switch(input){case'y':mark=0;Dname_add();case'n':mark=1;return;}}delete p;}void Dname::Dname_output(Dname* p){ //输出系cout<<"当前院系(名称) 编号男团总分女团总分总分t\n";p=head1;p=p->next;while(p){cout<<p->name<<"\t\t"<<p->number<<"\t"<<p->boy<<"\t"<<p->girl<<" \t "<<(p->girl+p->boy)<<endl;p=p->next;}}int Dname::Dname_isexist(int a){int b=0;Dname* p;p=head1;p=p->next;while(p){if(p->number==a){return 1;}p=p->next;}void Dname::Dname_show(int a)//输出所有院系{Dname *p;p=head1;p=p->next;while(p){if(p->number==a){cout<<p->name<<"?"<<endl;return;}p=p->next;}cout<<"无T";}void Dname::Dname_search(int a){Dname* p;p=head1;p=p->next;while(p){if(p->number==a){cout<<"院系名称:"<<p->name<<" "<<"男子团体总分:"<<p->boy<<" "<<"女子团体总分:"<<p->girl<<" "<<"总分:"<<(p->boy+p->girl)<<" ";return;}p=p->next;}cout<<"无T此ä?编À¨¤号?:"<<endl;}void Dname::Dname_addmark(int a,int b,int c)女?{Dname* p;p=head1;p=p->next;if(p->number==b){if(c==1){p->boy=p->boy+a;}else{p->girl=p->girl+a;}}p=p->next;}}void Dname::Dname_order(Dname *temp,int type) {Dname* q,*small;Dname* temp1;temp1=new Dname;temp1->next=NULL;while(q&&small){switch(type){case 0: //按总分排序for(q=head1;q=q->next;q!=NULL)for(small=head1;small=small->next;small!=NULL) {if( (q->boy+q->girl)<(small->boy+small->girl) ) {temp1->girl=q->girl;q->girl=small->girl;small->girl=temp1->girl;temp1->boy=q->boy;q->boy=small->boy;small->boy=temp1->boy;strcpy(temp1->name,q->name);strcpy(q->name,small->name);strcpy(small->name,temp1->name);temp1->number=q->number;q->number=small->number;small->number=temp1->number; //}}break;case 1: //按男团体排序for(q=head1;q=q->next;q!=NULL)for(small=head1;small=small->next;small!=NULL) {if(q->boy<small->boy){temp1->girl=q->girl;q->girl=small->girl;small->girl=temp1->girl;temp1->boy=q->boy;q->boy=small->boy;small->boy=temp1->boy;strcpy(temp1->name,q->name);strcpy(q->name,small->name);strcpy(small->name,temp1->name);temp1->number=q->number;q->number=small->number;small->number=temp1->number; //}}break;case 2:for(q=head1;q=q->next;q!=NULL)for(small=head1;small=small->next;small!=NULL) {if(q->girl<small->girl){temp1->girl=q->girl;q->girl=small->girl;small->girl=temp1->girl;temp1->boy=q->boy;q->boy=small->boy;small->boy=temp1->boy;strcpy(temp1->name,q->name);strcpy(q->name,small->name);strcpy(small->name,temp1->name);temp1->number=q->number;q->number=small->number;small->number=temp1->number; //}}break;case 3:for(q=head1;q=q->next;q!=NULL)for(small=head1;small=small->next;small!=NULL) {if(q->number<small->number){temp1->girl=q->girl;q->girl=small->girl;small->girl=temp1->girl;temp1->boy=q->boy;q->boy=small->boy;small->boy=temp1->boy;strcpy(temp1->name,q->name);strcpy(q->name,small->name);strcpy(small->name,temp1->name);temp1->number=q->number;q->number=small->number;small->number=temp1->number; //}}break;default:cout<<"error"<<endl;break;}}}int Sport::Sport_isexist(int a){int b=0;Sport* p;p=head2;while(p){if(p->number==a){return 1;}p=p->next;}return 0;void Sport::Sport_add(){// Dname sh;int mark=0;p=new Sport;cout<<"请?输º?入¨?项?目?名?称?:";cin>>p->name;int c;while(mark!=1){cout<<"请?输º?入¨?项?目?编À¨¤号?:";cin>>c;if(Sport_isexist(c)){cout<<"该?编À¨¤号?已°?存ä?在¨²!";}else{mark=1;p->number=c;}}mark=0;while(mark!=1){cout<<"请?输º?入¨?项?目?类¤¨¤型¨ª(0为a女?子Á¨®项?目?,1为a男D子Á¨®项?目?):"; cin>>c;// p->isboy=(int)(c-'0');//去¨£¤掉Ì?了¢?字Á?符¤?转Áa换?成¨¦数ºy字Á?mark=1;p->isboy=c;}mark=0;while(mark!=1){cout<<"请输入项目名称情况(0为取前3名,1为取前5名):";cin>>c;// p->is3=(int)(c-'0');mark=1;p->is3=c;}mark=0;Dname sh;while(mark!=1){cout<<"请输入第一名院系的编号:";if(!sh.Dname_isexist(c)){cout<<"该院系不存在请先添加!"; }else{mark=1;p->first=c;if(p->is3=='0')sh.Dname_addmark(5,c,p->isboy);elsesh.Dname_addmark(7,c,p->isboy); }}mark=0;while(mark!=1){cout<<"请输入第二名院系的编号?:"; cin>>c;if(!sh.Dname_isexist(c)){cout<<"该院系不存在请先添加!"; }else{mark=1;p->second=c;if(p->is3=='0')sh.Dname_addmark(3,c,p->isboy);elsesh.Dname_addmark(5,c,p->isboy); }}mark=0;while(mark!=1){cout<<"请输入第三名院系的编号:"; cin>>c;if(!sh.Dname_isexist(c)){cout<<"该院系不存在请先添加";}else{mark=1;p->third=c;if(p->is3=='0')sh.Dname_addmark(2,c,p->isboy);elsesh.Dname_addmark(3,c,p->isboy); }}mark=0;if(p->is3=='1'){while(mark!=1){cout<<"请输入第四名院系的编号:"; cin>>c;if(!sh.Dname_isexist(c)){cout<<"该院系不存在请先添加"; }else{mark=1;p->fourth=c;sh.Dname_addmark(2,c,p->isboy); }}mark=0;while(mark!=1){cout<<"请输入第五名院系的编号:";if(!sh.Dname_isexist(c)){cout<<"该院系不存在请先添加!"; }else{mark=1;p->fifth=c;sh.Dname_addmark(1,c,p->isboy); }}}else{p->fourth='0';p->fifth='0';}p->next=head2->next;head2->next=p;cout<<"成功添加了一个运动项目"<<endl;}void Sport::Sport_output(Sport *p) //输º?出?项?目?的Ì?情¨¦况? {p=head2;p=p->next;cout<<"当前项目名称"<<"\t"<<"编号?"<<""<<"B/G"<<""<<"3/5"<<" "<<"第一名"<<"" <<"第二名"<<" "<<"第三名"<<" "<<"第四名"<<" "<<"第五名"<<" "<<endl;Dname sh;while(p){cout<<p->name<<"\t"<<" "<<p->number<<" " <<p->isboy<<" "<<p->is3<<" "<<" ";sh.Dname_show(p->first);sh.Dname_show(p->second);sh.Dname_show(p->third);sh.Dname_show(p->fourth);sh.Dname_show(p->fifth);p=p->next;cout<<"\n";}cout<<endl;}void Sport::Sport_search(int a) //搜?索¡Â项?目?{Sport *p;Dname sh;p=head2;p=p->next;while(p){if(p->number==a){cout<<"项目名:"<<p->name<<endl<<"项目类型:";if(p->isboy==1){cout<<"男子项目";}else{cout<<"女子项目";}cout<<endl<<"第一名:";sh.Dname_show(p->first);cout<<endl<<"第二名:";sh.Dname_show(p->second);cout<<endl<<"第三名:";sh.Dname_show(p->third);cout<<endl<<"第四名:";sh.Dname_show(p->fourth);cout<<endl<<"第五?名?:";sh.Dname_show(p->fifth);return;}p=p->next;}cout<<"无此编号";}void main(){ //运动会程序主函数system("color C"); //改变背景前景色head1=new Dname;head1->next=NULL;head2=new Sport;head2->next=NULL;//Dname_add();Dname sh;Sport sp;Dname* p1;Sport* p2;p1=head1;p1=p1->next;p2=head2;p2=p2->next;int choose;char temp;int a=1;while(a!=0){cout<<" "<<endl;cout<<" 欢迎使用运动会分数统计系统"<<endl;cout<<" ----------------------------------------------------------"<<endl; cout<<" "<<endl;cout<<" 1.输入院系; 2.输入运动项目 "<<endl; cout<<" 3.按院系编号输出总分; 4.按院系总分排序; "<<endl; cout<<" 5.按男团体总分排序; 6.按女团体总分排序; "<<endl; cout<<" 7.按院系编号查询; 8.按项目编号查询; "<<endl; cout<<" 0.退出 "<<endl; cout<<" 注输入运动项目之前请输入院系 "<<endl;cout<<" ----------------------------------------------------------"<<endl; cout<<" -------请选择(0-8):------ "<<endl; cin>>choose;switch(choose){case 1:sh.Dname_add();break;case 2:sp.Sport_output(p2);sh.Dname_output(p1);sp.Sport_add();break;case 3:sh.Dname_order(p1,3);sh.Dname_output(p1);break;case 4:sh.Dname_order(p1,0);sh.Dname_output(p1);break;case 5:sh.Dname_order(p1,1);sh.Dname_output(p1);break;case 6:sh.Dname_order(p1,2);sh.Dname_output(p1);break;case 7:cout<<"请输入院系编号:";cin>>temp;sh.Dname_search(temp);break;case 8:cout<<"请输入项目编号:";cin>>temp;sp.Sport_search(temp);break;case 0:a=0;break;default:cout<<"操作非法\n";}}system("exit");}四、程序调试与测试:调试:测试:五、心得体会:通过本次课程设计的实践,锻炼程序设计的能力以及用C++解决实际问题的能力,为以后后续课程的学习奠定了基础。
运动会分数统计课程设计一、课程目标知识目标:1. 学生能理解并掌握运动会分数统计的基本概念和方法。
2. 学生能运用所学知识,正确进行运动会各项比赛的分数统计。
3. 学生了解并掌握运用图表进行数据展示和分析的方法。
技能目标:1. 学生能熟练运用加减乘除运算进行分数统计。
2. 学生能运用信息技术工具(如Excel等)进行分数的录入、统计和图表制作。
3. 学生具备分析数据、发现问题和解决问题的能力。
情感态度价值观目标:1. 学生培养对数学学科的兴趣,认识到数学在实际生活中的应用价值。
2. 学生培养合作意识,学会与他人共同完成数据统计和分析任务。
3. 学生在分数统计过程中,培养公平、公正、客观的态度,增强诚信意识。
课程性质:本课程为数学学科的教学内容,结合实际生活中的运动会分数统计案例,以提高学生的实际操作能力和数据分析能力。
学生特点:四年级学生具备一定的数学基础和运算能力,对实际生活中的问题充满好奇心,但可能缺乏数据分析的经验。
教学要求:结合学生特点,注重实践操作,让学生在实际操作中掌握知识,提高技能。
同时,关注学生的情感态度培养,使其在课程学习中形成正确的价值观。
通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容1. 理解运动会分数统计的基本概念,包括个人得分、团体得分、总分等。
- 教材章节:数学课本第四章“数据的收集与整理”2. 学习加减乘除在分数统计中的应用。
- 教材章节:数学课本第二章“四则运算”3. 掌握运用图表进行数据展示和分析的方法。
- 教材章节:数学课本第四章“数据的收集与整理”中的图表制作部分4. 实践操作:运动会分数统计实例分析。
- 教学安排:课堂讲解与实际操作相结合,分小组进行数据统计和分析。
详细教学大纲:第一课时:介绍运动会分数统计的基本概念,讲解个人得分、团体得分、总分的计算方法。
第二课时:运用加减乘除运算进行分数统计,结合实例进行讲解和练习。
第三课时:学习图表制作方法,展示和分析运动会分数数据。
问题描述(1).可以输入各个项目的前三名或前五名的成绩;(2).能统计各学校总分;(3).可以按学校编号、学校总分、男女团体总分排序输出;(4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
设计:程序包含两个模块(1) 主程序模块,其中主函数为int main() //主函数{printf("***********************欢迎使用***********************\n");printf("*****************运动会分数统计系统********************\n");input();solve();return 0;}(2) 选择操作模块——实现具体选择的对应操作及输出操作。
两模块之间的简单调用关系图2-1 两模块之间的调用图2-2 函数主模块之间的调用测试:心得:在本次课程设计当中,我加深了对以往掌握不够熟练或者是使用较少而易忽略的知识点,设计前对整个计分系统进行的全面分析,使我对面向对象的结构化程序设计有了更深一层次的认识。
在设计程序的过程中,我更加合理的构建了能够最大限度的满足校运会成绩管理人员的多功能便捷操作。
在编写代码的过程当中,我通过查阅有关的资料和分析实例,从中学到了很多能够不断优化自己代码,可以提高代码利用率的知识,并且更加合理的构建了各个知识点、模块之间的联系,充分的利用了循环和选择性语句。
其次,在代码的编写过程中,遇到了许多问题,我通过自身的努力去改正它们,在这个过程中我也学到了很多东西,在代码的调试过程中,我碰到了许多以前所没有碰到过的错误,在老师的悉心指导和自己的努力思考下,我最终把这些问题一一解决掉,并把教训牢记在心,努力使自己得到更大的收获和提高在设计程序时,我感受到了作为一名软件开发者所必须具备的统筹安排,注重层次与结构的素养,为我以后从事软件开发工作标明了方向,自己设计的最终实现为自己以后的努力树立了信心,这次数据结构课程设计使我受益匪浅。
运动会分数统计目录1.绪论 (1)2. 系统分析 (1)2.1功能需求 (1)2.2数据需求 (2)2.3性能需求 (2)3. 总体设计 (2)3.1功能模块设计 (2)3.2系统设计方案 (3)4. 详细设计 (4)4.1比赛成绩输入模块 (4)4.2比赛成绩输出模块 (6)4.3查询比赛成绩模块 (7)4.4调用统计模块 (9)5. 调试与测试 (10)5.1调试 (10)5.2测试 (10)6. 结论 (11)结束语 (11)参考文献 (11)附录1-用户手册 (12)附录2-源程序 (19)摘要为了发展体育事业,强健中华儿女,便于运动会分数统计,特开发此运动会分数统计程序。
本程序主要运用C语言作为程序开发语言,系统主要实现了比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果。
本文从分析课题的题目背景、题目意义、题目要求等出发,分别从需求分析、总体设计、详细设计、测试等各个方面详细介绍了系统的设计与实现过程,最后对系统的完成情况进行了总结。
关键词:学校编号;项目编号;男团总分;女团总分1.绪论随着社会的进步,体育事业的发展,为了提高运动会成绩统计准确,减少设计者们的工作量,开发了本系统。
根据课程设计任务书要求,本系统开发主要完成以下功能和性能。
内容: 参加运动会的的学院编号为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,对于项目编号为奇数的取前五名,1;为偶数的取前三名。
姓名长度不超过20个字符,按名次顺序输入运动员姓名、学院名和成绩。
功能要求:(1).可以输入各个项目的前三名或前五名的成绩;(2).能统计各学校总分;(3).可以按学校编号、学校总分、男女团体总分排序输出;(4).可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
运动会分数统计课程设计一、课程目标知识目标:1. 学生能理解运动会分数统计的基本概念,掌握分数的加、减运算方法。
2. 学生能运用统计图表整理、描述和比较数据,了解不同项目的得分情况。
3. 学生掌握运用数学知识解决实际问题的方法,提高数据分析能力。
技能目标:1. 学生能运用计算器或手工计算方法,准确进行分数的加减运算。
2. 学生能运用图表软件(如Excel)制作和解读统计图表,展示运动会分数数据。
3. 学生通过小组合作,提高沟通、协作和解决问题的能力。
情感态度价值观目标:1. 学生在分数统计过程中,培养认真、细心的学习态度,增强对数据的敏感性和分析意识。
2. 学生通过参与运动会分数统计,提高对数学学习的兴趣,认识到数学在生活中的实际应用。
3. 学生在小组合作中,学会尊重他人,培养团队精神和公平竞争意识。
4. 学生通过分析运动会分数,培养积极参与体育活动的热情,增强集体荣誉感。
课程性质:本课程为数学学科与体育活动的结合,以实践性、应用性为主。
学生特点:学生处于小学高年级阶段,具备一定的数学基础和体育活动经验,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点,注重启发式教学,引导学生主动参与,培养其动手操作、观察分析、解决问题的能力。
同时,关注学生的情感态度价值观培养,提高综合素质。
通过对课程目标的分解和实现,使学生在实践中掌握知识,提高技能,培养正确的价值观。
二、教学内容1. 理论知识:- 分数的概念及加减法运算规则;- 统计图表的类型及制作方法,如条形图、折线图、饼图;- 数据整理与分析的基本方法。
2. 实践操作:- 运用分数加减法进行运动会分数计算;- 制作并解读运动会分数统计图表;- 小组合作,完成运动会分数统计报告。
3. 教学大纲安排:- 第一课时:分数的概念及加减法运算复习,介绍统计图表的基本类型;- 第二课时:运动会分数统计方法讲解,学生分组进行数据收集与整理;- 第三课时:小组合作制作统计图表,进行分数计算和分析;- 第四课时:各小组展示成果,师生共同评价,总结分数统计方法。
通达学院专业课程设计II 题目:运动会分数统计专业计算机通信学生姓名班级学号09002829指导教师沙超指导单位计算机学院日期2012年6月13日运动会分数统计一、课题内容和要求题目描述:参加运动会的有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)有完善的出错处理机制,最终的运动会分数统一为整数提高要求:1)有图形界面、功能菜单2)能够将所有积分信息保存为文件二、概要设计1.本系统的流程图如下:(流程图较大,在下页显示)2.本系统采用的存储结构为结构化设计理念,这是数据库的最基本的设计要求,主要包括三个数据表:(1)项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。
本数据表根据要求设计存储每个项目的编号、取得前几名名次的数目、要取的名次以及各个名次对应的分数。
在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的分数将由系统自动统计。
这也有利于以后项目情况的查询。
typedef struct{int itemnum; //项目编号int top; //取名次的数目int range[5]; //名次int mark[5]; //分数}itemnode; //定义项目结点的类型(2)学校数据表:本数据表储存了各个参赛学校的总体情况,包括学校的编号、男子团体总分、女子团体总分和学校总分。
#include<stdio.h>#include<math.h>#include <process.h>#define N 20 /*学校最大数目*/#define M 20 /*男子项目最大数目*/#define W 20 /*女子项目最大数目*/typedef struct{int inum; /*项目编号*/int top; /*取名次的数目*/int range[5]; /*名次*/int mark[5]; /*分数*/}itemnode; /*存放项目信息*/typedef struct{int snum; /*学校编号*/int score; /*学校总分*/int mscore; /*男团体总分*/int wscore; /*女团体总分*/itemnode t[M+W]; /*项目数组*/}snode; /*存放学校信息*/snode a[N]; /* 定义一个学校数组*/void menu(int n,int m,int w) /*菜单函数*/{int c;void input(int n,int m,int w);void output(int n,int m,int w);void sortput(int n,int m,int w);void search(int n,int m,int w);printf("\t\t\t欢迎使用\t\t\t\t\n\n");printf("\t***********运动会分数统计系统***********\n\n");printf("\t\t*******1.信息输入*******\n");printf("\t\t*******2.统计输出*******\n");printf("\t\t*******3.排序输出*******\n");printf("\t\t*******4.信息查询*******\n");printf("\t\t*******0.退出系统*******\n\n");printf("=======================================================\n\n");printf("请选择要实现步骤的编号(0--4):");scanf("%d",&c);switch(c){case 1:input(n,m,w);break;case 2:output(n,m,w);break;case 3:sortput(n,m,w);break;case 4:search(n,m,w);break;case 0:printf("谢谢使用,再见!\n");exit(0);default:printf("输入错误,请重试!\n");menu(n,m,w);}}void savetofile() /*信息存入文件file*/ {FILE *fp;int i;if((fp=fopen("file.txt","w"))==NULL){printf("cannot open the file\n");return;}for(i=0;i<N;i++){if(a[i].snum!='\0')if(fwrite(&a[i],sizeof(snode),1,fp)!=1){printf("file write error\n");return;}}fclose(fp);}void readfromfile() /*信息从文件file中取出*/{int i;FILE *fp;if((fp=fopen("file.txt","rb"))==NULL){printf("cannot open the file\n");return;}for(i=0;i<N;i++)fread(&a[i],sizeof(snode),1,fp);fclose(fp);}void input(int n,int m,int w) /*1.信息输入*/ {int i,j,s,k,q=0;for(i=0;i<n;i++){printf("学校编号:");scanf("%d",&a[i].snum); /*输入学校信息*/for(j=0;j<m+w;j++){printf("项目编号:");scanf("%d",&a[i].t[j].inum);printf("项目取前3名或前5名(3或者5):");scanf("%d",&a[i].t[j].top);if(a[i].t[j].top==3)printf("获得名次个数(1--3):");elseprintf("获得名次个数(1--5):");scanf("%d",&k); /*输入项目信息*/for(s=0;s<k;s++){if(a[i].t[j].top==3)printf("所获名次(1--3):");elseprintf("所获名次(1--5):");scanf("%d",&a[i].t[j].range[s]); /*输入所获名次信息*/ }printf("\n");}}for(i=0;i<n;i++){a[i].score=0;a[i].mscore=0;a[i].wscore=0;} /*初始化分数*/for(i=0;i<n;i++)for(j=0;j<m+w;j++)for(s=0;s<5;s++){if(a[i].t[j].top==3)switch(a[i].t[j].range[s]){case 0: a[i].t[j].mark[s]=0; break;case 1: a[i].t[j].mark[s]=5; break;case 2: a[i].t[j].mark[s]=3; break;case 3: a[i].t[j].mark[s]=2; break;}else if(a[i].t[j].top==5)switch(a[i].t[j].range[s]){case 0: a[i].t[j].mark[s]=0; break;case 1: a[i].t[j].mark[s]=7; break;case 2: a[i].t[j].mark[s]=5; break;case 3: a[i].t[j].mark[s]=3; break;case 4: a[i].t[j].mark[s]=2; break;case 5: a[i].t[j].mark[s]=1; break;}else{printf("信息有误!");printf("\n");exit(0);}a[i].score=a[i].score+a[i].t[j].mark[s]; /*记学校总分*/if(j<=m-1)a[i].mscore=a[i].mscore+a[i].t[j].mark[s]; /*记男子团体总分*/elsea[i].wscore=a[i].wscore+a[i].t[j].mark[s]; /*记女子团体总分*/ }printf("输入完毕!返回? 1是 2否\n"); /*返回菜单*/scanf("%d",&q);printf("\n");if(q!=1)printf("不能再添加信息!");printf("\n");savetofile(); /*将信息存入文件file*/menu(n,m,w);}void output(int n,int m,int w) /*2.统计输出*/{readfromfile();int i,j,s,q=0;for(i=0;i<n;i++) /*显示结果*/{printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[i].snum,a[i].score,a[i].mscore,a[i].wscore);{printf("项目编号:%d 所取名次数量:%d\n",a[i].t[j].inum,a[i].t[j].top);for(s=0;s<5;s++){if(a[i].t[j].range[s]!=0)printf("名次:%d 分数:%d\n",a[i].t[j].range[s],a[i].t[j].mark[s]);}}printf("\n");}printf("\n");printf("统计完毕!返回? 1是 2否"); /*返回菜单*/scanf("%d",&q);printf("\n");if(q!=1)printf("统计已经结束!");printf("\n");menu(n,m,w);}void sortput(int n,int m,int w) /*3.排序输出*/{readfromfile();int c,i,j,k,q=0;int temp[N];printf("\t**************排序输出系统**************\n\n");printf("\t\t****1.按学校编号输出****\n");printf("\t\t****2.按学校总分输出****\n");printf("\t\t****3.按男团总分输出****\n");printf("\t\t****4.按女团总分输出****\n");printf("=======================================================\n\n");do{printf("请选择要实现功能的编号(1--4):");scanf("%d",&c);switch(c){case 1:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].snum>a[j].snum){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按学校编号输出*/break;case 2:for(i=0;i<n;i++)temp[i]=i;{for(j=i+1;j<n;j++)if(a[temp[i]].score<a[j].score){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按学校总分输出*/break;case 3:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].mscore<a[j].mscore){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按男团总分输出*/break;case 4:for(i=0;i<n;i++)temp[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(a[temp[i]].wscore<a[j].wscore){k=temp[i];temp[i]=temp[j];temp[j]=k;}} /* 用冒泡排序方法排序*/for(i=0;i<n;i++){printf("学校编号:%d 学校总分:%d 男团总分:%d 女团总分:%d\n",a[temp[i]].snum,a[temp[i]].score,a[temp[i]].mscore,a[temp[i]].wscore);} /*按女团总分输出*/break;default:printf("输入错误,请重试!\n");}printf("请选择 1 返回主菜单 0继续"); /*返回菜单或继续排序*/scanf("%d",&q);printf("\n");}while(q==0);printf("\n");if(q!=0)menu(n,m,w);}void search(int n,int m,int w) /*查询函数*/{readfromfile();int c,i,j,k,d,l,q=0;printf("\t****************查询系统****************\n\n");printf("\t\t****1.按学校编号查询****\n");printf("\t\t****2.按项目编号查询****\n");printf("=======================================================\n\n");do{k=-1;d=-1;l=-1;printf("请选择要实现功能的编号(1--2):");scanf("%d",&c);switch(c){case 1:printf("要查询的学校编号:"); /*查找学校编号下标*/scanf("%d",&c);for(i=0;i<n;i++){if(a[i].snum==c)k=i;}if(k==-1)printf("错误:这个学校没有参加此次运动会!\n");else{printf("要查询的项目编号:"); /*查找项目编号下标*/scanf("%d",&c);for(j=0;j<m+w;j++){if(a[k].t[j].inum==c)d=j;}if(d==-1)printf("此次运动会没有这个项目\n");else /*显示结果*/{printf("这个项目取前 %d名,该学校的成绩如下:\n", a[k].t[d].top);for(i=0;i<5;i++)if(a[k].t[d].range[i]!=0)printf("名次:%d\n",a[k].t[d].range[i]);}}break;case 2:printf("要查询的项目编号:"); /*查找项目编号下标*/scanf("%d",&c);for(i=0;i<n;i++)for(j=0;j<m+w;j++)if(a[i].t[j].inum==c)l=j;if(l==-1)printf("此次运动会没有这个项目\n");else /*显示结果*/{printf("该项目取前 %d名,取得名次的学校\n",a[0].t[l].top);for(i=0; i<n;i++)for(j=0;j<5;j++)if(a[i].t[l].range[j]!=0)printf("学校编号:%d,名次:%d\n",a[i].snum,a[i].t[l].range[j]);}break;default:printf("输入错误,请重试!\n");}printf("请选择:1.返回主菜单 0.继续"); /*返回菜单或继续查询*/scanf("%d",&q);printf("\n");}while(q==0);printf("\n");if(q!=0)menu(n,m,w);}void main() /*主函数*/{int n,m,w;printf("\t\t\t欢迎使用\t\t\t\t\n\n");printf("\t***********运动会分数统计系统***********\n\n");printf("请先输入运动会主要信息\n"); /*设计运动会主要数据个数*/printf("输入学校个数:");scanf("%d",&n);printf("输入男子项目个数:");scanf("%d",&m);printf("输入女子项目个数:");scanf("%d",&w);menu(n,m,w);}。