运动会分数统计综合训练项目
数据结构实验运动会分数统计一实验报告

实验报告一题目:运动会分数统计班级:通信工程姓名:张雪婷学号: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. 加强分数统计工作人员的培训和技术支持。
通过提供专业的培训和技术指导,提高分数统计工作人员的技术水平和操作方法,以确保他们能够准确地统计比赛成绩。
全运会计分办法

奖励和计分办法:(一)足球、篮球、排球(不含沙滩排球)、手球、曲棍球、棒球、垒球、水球项目奖励前12名,如果参加决赛的队数不足12个队的,按照实际参赛队数奖励;其它项目有11名(含11名)以上运动员(队)参加的,奖励8名;8名至10名的,奖励6名;5名至7名的,奖励3名;3名至4名的,奖励1名;2名(含2名)以下的,不进行比赛。
(二)各项目获得比赛前3名的,分别颁发金、银、铜牌;获得奖励名次者分别颁发证书。
(三)足球(男子20岁以下组、女子成年组)、篮球、排球(不含沙滩排球)、手球、曲棍球、棒球、垒球、水球项目获得前3名的队,分别按2枚金(银、铜)牌进行统计;足球项目(男子16岁以下组、女子18岁以下组)获得前3名的队,分别按2枚金牌、1枚金牌、0.5枚金牌进行统计。
(四)获得足球、篮球、排球(不含沙滩排球)、手球、曲棍球、棒球、垒球、水球项目前12名的,分别按26、22、20、18、16、14、12、10、8、6、4、2分进行统计;获得其它项目前8名的,分别按13、11、10、9、8、7、6、5 分进行统计。
不足录取名额的计分,按各项目相应名次的分值进行统计。
(五)并列名次的计分办法:比赛名次并列时,将名次并列的下一个(或几个)名次空出,空出名次的分值与获得名次的分值相加后的平均数,作为并列名次的所得分值。
如果第8名并列,则继续按照上述原则进行统计。
(六)运动员在第29届夏季奥运会和第20届冬季奥运会上获得前8名成绩,将分别计入运动员注册的代表团奖牌总数和总分内。
统计办法为:单人项目:每获1枚金(银、铜)牌,按照2枚金(银、铜)牌进行统计;每获一个名次,分别按照26、22、20、18、16、14、12、10分进行统计。
两人项目:每获1枚金(银、铜)牌,每人按照1枚金(银、铜)牌进行统计;每获一个名次,每人分别按照13、11、10、9、8、7、6、5分进行统计。
两人以上项目(足球、篮球、排球、手球、曲棍球、棒球、垒球、水球项目除外):每获1枚金(银、铜)牌,每人按照1枚金(银、铜)牌进行统计;每获一个名次,每人分别按照13、11、10、9、8、7、6、5分进行统计。
职工趣味运动会项目

职工趣味运动会项目关于2022年趣味运动会比赛规则此次比赛实行项目积分制。
每个项目的第一名得4分,第二名得3分,第三名得2分,第四名得1分。
全部项目完成后,最后累计分数最多的一队为冠军,依此类推。
一、掂球接力(团体赛9人)(乒乓球拍、乒乓球)每队全员参加,运动员拿一个乒乓球拍掂着乒乓球到达折返点,将拍子和球交给另一队员,另一队员掂球到达起点交给队友,依次进行。
用时最少者获胜。
【注意】1、在交接的过程中,把球掂起来后,迅速的将球拍交给另一人,不能用手碰球。
2、球不掉在地上为有效,如果球在途中掉到地上,选手必须捡起球回到掉球点继续比赛。
二、抢收抢种(团体赛9人)(盘子、盆子、乒乓球)运动员手持装有10个乒乓球的盆子起跑,依次将球放进沿途设置的10个小盘中(间距1.5米),到达对面终点处,由另一队员返回,依次将球捡起并放进盆子中,跑回起点交给队友,依次进行。
用时最少者获胜。
【注意】1、去时必须把球种进小盘中,回时收起。
2、兵乓球必需放入盘内,不许抛掷。
如未能放入,必需放好后,才能继续向下进行。
三、拔河(团体赛9人)(拔河绳、接力棒)每两队进行对决,实行三局两胜制。
获胜的两队再进行对决,实行三局两胜制。
每局后进行场地交换。
将对方拉过赛场规定的河界线一方为获胜方。
【注意】1、比赛中途不能换人,不得外人帮忙。
2、裁判未判胜负前,手不能松开绳子。
四、绑腿竞走(团体赛9人)(绑带、接力棒)每队全员参加,绑腿并排向前走,共4个队进行比赛。
途中如果出现绳子断裂或松开,需重新系好后继续比赛。
途中如有人员摔倒,只需在原地调整即可,无需回到起点。
最先到达终点,用时最少者为获胜方。
五、螃蟹赛跑(全体队员均可参加)(气球、打气筒)在规定的时间内运送气球到达指定位置最多的一队获胜。
每队两人为一组参加比赛,比赛者背对背,互相挽住对方手臂,夹住气球,站在底线后进行比赛。
比赛开始后,每队尽可能多的参照标准气球的大小打气球,将打好的气球放在两人背中间夹住,二人迅速侧身向前跑,将气球运送至目的地。
运动会分数统计实验报告

运动会分数统计实验报告运动会分数统计实验报告一、引言运动会是学校中一项重要的体育活动,旨在促进学生的身心健康发展和团队合作精神。
而分数统计则是评估学生在各项比赛中的表现,为学校提供数据支持。
本实验旨在通过分数统计的实际操作,探索如何准确记录和分析运动会的成绩。
二、实验设计与方法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个大模块:添加学生,统计信息,按学校编号查询学校某个项目的情况,可以按项目编号查询取得前三或前五名的学校,显示学校信息,显示项目信息,删除文件,保存文件,显示项目名次,退出系统。
用Excel轻松实现运动会成绩自动统计
用Excel轻松实现运动会成绩自动统计每年学校的运动会都需要好几个老师统计成绩、核算分数,由于统计项目较多,而且计分法也互不相同,难免会出现错误。
后来我们尝试用Excel来制作运动会成绩统计表,使用后发现它还是很方便的,而且修改也比较容易,来看看我们是如何制作的吧。
成绩统计规则 1.以年级分组竞赛,同一年级组中各班级派出男女代表队参加各项目的比赛。
2.个人项目取前三名作为奖励者,取前六名为班级计分,计分方法是:第一名计6分,第二名计5分……第六名计1分。
只有六人或少于六人参加比赛的个人项目,去掉最后一名。
遇到并列名次则无下一名次,破校记录另加10分。
3.团体项目(如接力赛)若两个队参赛,取一名,3~4队参赛取前两名,5~6个队参赛取前三名……奖励参赛队员并为班级加分,加分的方法是个人计分法的二倍,破校记录也另加10分。
4.班级总分是其男女子队各项目得分总和,同一年级各班按总分排名。
制作自动成绩统计表 1.打开Excel工作簿,根据运动会参加的年级数插入工作表,使工作表的个数等于年级数加1的两倍,分别命名为初一男子、初一女子、初二男子、……、成绩汇总、校记录。
图1 2.在校记录工作表中输入校记录表(如图1)。
图2 3.建立初一男子成绩汇总工作表(如图2)。
4.各竞赛项目名次单元格:某一项目的名次是根据该项目的成绩排列出来的,而个人项目只输入前八名的决赛成绩,所以部分单元格是空值。
用IF函数判断单元格是否为空,为空时不参与排名次,不为空时用RANK函数求出名次。
如在100米名次列中选定J4单元格并输入“=IF(D4〈〉"",RANK(D4,D4:D104,1),"")”,当对应项目100米的成绩单元格D4有成绩时,给出D4在D4:D104单元格区域的名次,没有成绩时显示空白。
行标104是由全校各年级中男运动员或女运动员人数中最大的数加上各年级班级最多的数得到的(只要不小于这个数就可以)。
运动会计分课程设计
运动会计分课程设计一、课程目标知识目标:1. 学生理解运动会计分的基本概念、原则和方法。
2. 学生掌握运动会计分中各项参数的记录和计算方式。
3. 学生了解运动会计分在体育赛事中的作用和重要性。
技能目标:1. 学生能够正确使用运动会计分工具进行分数统计和记录。
2. 学生能够独立完成一场体育比赛的计分工作,包括实时更新比分、记录运动员成绩等。
3. 学生通过实际操作,培养观察力、应变能力和团队协作能力。
情感态度价值观目标:1. 学生培养对体育运动的兴趣,增强对体育精神的认同。
2. 学生树立公平、公正、公开的竞技观念,尊重运动员和裁判员。
3. 学生在计分过程中,培养认真负责、严谨细致的工作态度,树立正确的价值观。
课程性质:本课程为实践性课程,结合理论知识与实际操作,使学生能够深入了解并掌握运动会计分的方法。
学生特点:考虑到学生年级特点,注重培养他们的观察能力、动手能力和团队协作能力。
教学要求:教师需引导学生关注课程知识与实际生活的联系,激发学生兴趣,同时注重培养学生在实际操作中的严谨态度。
通过课程学习,使学生在知识、技能和情感态度价值观方面取得具体的学习成果。
二、教学内容1. 运动会计分的基本概念- 计分的目的和意义- 计分的基本原则2. 运动会计分的工具和方法- 计分板的正确使用- 记录表格的填写与保存- 电子计分系统的操作介绍3. 运动会计分的实际操作- 比赛分数的实时更新- 运动员成绩的记录与统计- 裁判判决结果的记录4. 运动会计分案例分析- 分析经典赛事的计分过程- 探讨计分过程中可能遇到的问题及解决办法5. 运动会计分在体育赛事中的应用- 计分在比赛中的作用- 计分对比赛结果的影响- 公平、公正、公开计分的重要性教学大纲安排:第一课时:运动会计分的基本概念与原则第二课时:运动会计分的工具与方法第三课时:运动会计分的实际操作(模拟比赛计分)第四课时:运动会计分案例分析及讨论第五课时:运动会计分在体育赛事中的应用与总结教学内容关联教材章节:- 《体育与健康》第三章:体育竞赛的组织与实施- 《体育统计与计分》第二章:运动会计分的基本方法与操作流程三、教学方法本课程将采用以下多样化的教学方法,以激发学生的学习兴趣,提高教学效果:1. 讲授法:- 教师通过生动的语言和丰富的案例,为学生讲解运动会计分的基本概念、原则和方法。
运动会分数统计
运动会分数统计运动会分数统计【问题描述】参加运动会有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、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;【测试数据】自行设定,注意边界等特殊情况。
*/目录一、需求分析 (4)二、概要设计 (1)三、详细设计 (3)四、程序调试与实现 (7)五、用户使用说明........................................................................ 错误!未定义书签。
六、附录........................................................................................ 错误!未定义书签。
运动会分数统计程序
运动会分数统计系统设计报告院系:专业:班级:姓名:学号:日期: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、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<n;i++)
{
printf("\n\n*****学院编号:%d\n",h[remember[i]].schoolnum);
printf("*****学院总分:%d\n" ,h[remember[i]].score);
printf("*****男团总分:%d\n",h[remember[i]].mscore);
for(i=0;i<n;i++)
{
printf("*****学院总分:%d\n" ,h[remember[i]].score);
printf("*****男团总分:%d\n",h[remember[i]].mscore);
printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore);
printf("*****学校总分:%d\n" ,h[i].score);
printf("*****男团总分:%d\n",h[i].mscore);
printf("*****女团总分: %d\n\n\n",h[i].wscore);
}//按编号顺序输出
break;
case 2:
for(i=0;i<n;i++)
#include<stdio.h>
#include<math.h>
#include <conio.h>
#include <process.h>
#define n 2//学院数目
#define m 1//男子项目数目
#define w 1//女子项目数目
#define null 0
typedef struct
{
int itemnum; //项目编号
int top; //取名次的数目
int range[5]; //名次
int mark[5]; //分数
}itemnode; //定义项目结点的类型
typedef struct
{
int schoolnum; //学院编号
int score; //学学院总分
int mscore; //男团体总分
case 1: h[i].c[j].mark[s]=7; break;
case 2: h[i].c[j].mark[s]=5; break;
case 3: h[i].c[j].mark[s]=3; break;
case 4: h[i].c[j].mark[s]=2; break;
case 5: h[i].c[j].mark[s]=1; break;
printf("================================================\n\n");
printf("********请选择要实现步骤的编号:\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1: inputinformation();writedata();readdata();main();
//按所记下标顺序输出
}//按学院总分输出
break;
case 3:
for(i=0;i<n;i++)
remember[i]=i;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
if(h[remember[i]].mscore<h[j].mscore)
k=remember[i];remember[i]=remember[j];remember[j]=k;
3.2程序设计
3.2.1抽象数据类型的定义
(1)基本操作:
Inputinformation()
操作结果:输入信息,建立系统
Output()
操作结果:输出元素。
Inquiry()
初始条件:查询函数
操作结果:通过查询方式输出结果
Writedata()
操作结果:把数据储存到文件中
Readdata()
操作结果:读出文件中数据的函数
printf("********************3.查询信息*************************\n");
printf("********************4.调用信息*************************\n");
printf("********************5.退出系统*************************\n\n\n");
图6调用已储存分数
图7退出系统
3.3.2分析
调试过程中对函数调用掌握不熟,经过反复读程序对程序有了清楚地认识之后重新调试程序才有了进步,在while循环时指针移动容易出错,因此多次出现内存错误,对于涉及的循环的操作开始和结束条件设置很关键。本次实验熟悉了栈数据结构的表示与实现方法。
算法时间和空间分析:算法的运行时间主要花在while循环上,它从头到尾扫描后缀表达式中的每一个数据,若后缀表达式由n个数据组成,则此算法的时间复杂度为O(n)。此算法在运行时所占用的临时空间主要取决于栈S的大小,显然,它的最大深度不会超过表达式中操作数的个数,因为操作数的个数与运算符的个数相等,所以此算法的空间复杂度也同样为O(n)。
int mscore;//男团体总分
int wscore;//女团体总分
itemnode c[m+w];//项目数组
}headnode;//定义头结点类型
3.2.2主程序功能图
图1功能模块图
3.2.3主函数算法
void main()
{
int choice;
printf("======================欢迎使用======================\n");
case 2: output();main();
case 3: inquiry();main();
case 4: readdata();main();
case 5: exit(0);
default: exit(0);
}
}
3.3.1测试
图2主函数调用-输入信息
图3输入信息
图4输出各学院得分情况
图5查询得分情况
软件学院
综合训练项目报告书
·
课程名称数据结构
项目名称运动会分数统计
专业班级软件14-2班
组别第7组
成员李松,倪天舒,梅艳霜
任课教师孙宁
目
1
2
3
3.1
3.2
3.3
3.3.2
3.4
4
5
编辑出一个运动会分数统计系统,可以应用于小型运动会各学院、团体的计分
3.1问题分析
参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1~m,女子m+1~m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;
case 1: h[i].c[j].mark[s]=5; break;
case 2: h[i].c[j].mark[s]=3; break;
case 3: h[i].c[j].mark[s]=2; break;
}
else
switch(h[i].c[j].range[s])
{
case 0: h[i].c[j].mark[s]=0; break;
{
h[i].score=0;
h[i].mscore=0;
h[i].wscore=0;
}//初始化头结点
for(i=0;i<n;i++)
{
printf("*****学院编号:");
scanf("%d",&h[i].schoolnum);//输入头结点信息
for(j=0;j<m+w;j++)
{
printf("*****项目编号:");
int wscore; //女团体总分
itemnode c[m+w]; //项目数组
}headnode;//定义头结点类型
headnode h[n];//定义一个头结点数组
void inputinformation() //输入信息,建立系统
{
int i,j,k,s;
for(i=0;i<n;i++)
printf("*****女团总分: %d\n\n\n",h[remember[i]].wscore);
} //按男团总分输出
break;
case 4:
for(i=0;i<n;i++)
remember[i]=i;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
if(h[remember[i]].wscore<h[j].wscore)
printf("*******************2.按学院总分输出.*******************\n");