运动会分数统计
- 格式:docx
- 大小:405.60 KB
- 文档页数:22
运动会是学校中一项重要的活动,通过运动会可以增强学生的体质,增进师生之间的情感,同时也能够激发学生的运动热情和团队精神。
而对于运动会的分数统计来说,如何高效、准确地完成这项工作是非常重要的。
本文主要介绍了基于数据结构课程设计的运动会分数统计系统,使用Python语言实现。
二、系统设计1. 数据结构的选择在设计运动会分数统计系统时,需要考虑如何存储和管理参赛队伍和成绩信息。
由于参赛队伍和成绩信息的数量较大,因此需要选择适合高效查询和排序的数据结构。
本系统选择使用Python中的字典(dictionary)和列表(list)来存储和管理数据。
2. 数据的存储在系统中,每支队伍的信息包括队伍编号、队伍名称和各项比赛成绩等。
这些信息可以使用字典来存储,其中队伍编号作为键,队伍信息作为值。
而各项比赛成绩可以使用列表来存储,方便进行排序和统计。
3. 数据的输入为了方便输入参赛队伍和成绩信息,本系统提供了相应的输入界面,用户可以通过界面逐一输入每支队伍的信息。
程序也提供了批量导入功能,用户可以通过导入文件的方式一次性输入所有的参赛队伍和成4. 数据的统计和输出系统可以对输入的成绩信息进行统计和排序,可以按照总分或特定比赛项目的成绩进行排序,并将排名信息输出到文件中。
排名信息包括队伍名称、总分和各项比赛成绩,方便后续的奖励和表彰工作。
三、系统实现1. 数据结构类的设计为了方便对队伍和成绩信息进行管理,本系统设计了队伍(Team)和成绩(Score)两个类,分别用于存储队伍信息和比赛成绩。
2. 主程序的设计系统的主程序主要包括数据的输入、统计和输出三个功能。
用户可以通过交互式界面输入队伍和成绩信息,也可以通过命令行参数进行批量导入。
系统会对输入的成绩信息进行统计和排序,并将排名信息输出到指定的文件中。
3. 界面设计为了方便用户操作,系统提供了简洁清晰的交互式界面。
用户可以通过界面进行数据的输入和操作,也可以查看和导出排名信息。
实验报告一题目:运动会分数统计班级:通信工程姓名:张雪婷学号: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. 加强分数统计工作人员的培训和技术支持。
通过提供专业的培训和技术指导,提高分数统计工作人员的技术水平和操作方法,以确保他们能够准确地统计比赛成绩。
运动会分数统计摘要随着计算机的普及,计算机系统开始使用于社会的各个领域。
社会需求以及市场竞争等日新月异,在这种情况下,信息进入重要资源的行列。
信息化管理正在往广度和深度发展。
在以往的运动会分数统计中,人工统计的速度较慢,且容易出现差错。
随着社会不断进步,当代体育事业不断发展,以往的人工统计已不能满足实际问题的需求。
为了提高运动会成绩统计的准确性,减少统计者的工作量,方便运动会工作人员的工作,特设计了本系统。
系统主要实现了比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果几个功能,并且将对存入分数按照各项成绩得分以及团体总分排序。
系统定义数据时使用结构体和结构体数组来存储信息数据,输入基本信息后由系统统计总分的内容并全部存入文件file中,在排序输出中使用冒泡排序法进行不同关键字的排序,查询函数采用顺序表的查找来完成,具体设计将于正文中做详细介绍。
关键字:计算机,分数统计,排序,顺序表GAMES FRACTIONAL STATISTICSABSTRCTWith the popularity of computers, computer systems used in all areas of society. Rapid social demand and market competition, in this case, the information enters the ranks of important resources. Information management to the breadth and depth.Games fractional statistics, artificial statistical slow and prone to error. With the social progress, contemporary sports in the continuous development of artificial statistics in the past can no longer meet the needs of practical problems. In order to improve the accuracy of the Games score statistics, reducing the workload of statistics to facilitate the work of the Games staff, special design of the system. System competition results enter the game score output, check scores and statistical results is called several features, and will be the fraction of deposit in accordance with the results score and group score sort. System-defined data structures and an array of structures to store data, enter the basic information of the total score by the system statistics and all stored in the file, use the bubble sort method of sorting of different keywords in the sorted output query function sequence table lookup to complete, specific design will be described in detail in the body.Keywords:computer;fractional statistics;sorting;order table目录1 绪论 (1)1.1课题背景及目的 (1)1.2 课题研究方法与步骤 (1)2 目标与分析 (1)2.1 设计目标 (2)2.2 设计需求分析 (2)3 程序实现设计 (2)3.1概要设计 (2)3.1.1 设计介绍 (2)3.1.2 模块功能图 (3)3.2 数据流图 (3)3.3 具体设计 (4)3.3.1 全局变量定义 (4)3.3.2 主菜单函数 (6)3.3.3 存储信息函数 (7)3.3.4 文件读取函数 (8)3.3.5 功能函数 (8)3.3.6 主函数 (16)4 运行结果 (16)5 用户使用说明 (20)6 总结 (20)参考文献 (22)附录 (23)1 绪论1.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语言前言本学期开设的《算法与数据结构》课程已经告一段落,。
在学习科目的第一节课起,张老师就为我们阐述了它的重要性。
它对我们来说具有一定的难度。
它是其它编程语言的一门基本学科。
尽管不好学,但是我们必须学好这门课程,这对于我们计算机专业的学生来说意义重大。
经过一个学期的理论知识的学习,对于数据结构相关的知识有了一定的了解。
这是一门纯属于设计的科目,它需用把理论变为上机调试和具体实践。
在课程结束之后。
老师为我们安排了这次为期两周的课程设计。
目的就是让我们自己在计算机上自己设计算法来实现相应的功能以及锻炼学生的动手能力和实践能力,最重要的是要把我们所学的数据结构的理论知识应运到实践中去。
这次课程设计的题目是“运动会分数统计系统”,要求学生自己查阅相关资料,完成相应的任务,自己上机设计算法,调试程序,运行出结果,以此来加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养自己的动手能力。
运动会分数统计实验报告运动会分数统计实验报告一、引言运动会是学校中一项重要的体育活动,旨在促进学生的身心健康发展和团队合作精神。
而分数统计则是评估学生在各项比赛中的表现,为学校提供数据支持。
本实验旨在通过分数统计的实际操作,探索如何准确记录和分析运动会的成绩。
二、实验设计与方法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个大模块:添加学生,统计信息,按学校编号查询学校某个项目的情况,可以按项目编号查询取得前三或前五名的学校,显示学校信息,显示项目信息,删除文件,保存文件,显示项目名次,退出系统。
运动会分数统计系统的实现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()实现。
当用户选择该功能时,系统会按学校编号顺序输出数据。
运动会分数统计【问题描述】参加运动会有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、局部非法数据。
进行程序测试,以保证程序的稳定。
测试数据及测试结果请在上交的资料中写明;【测试数据】自行设定,注意边界等特殊情况。
*/目录一、需求分析 (3)二、概要设计 (1)三、详细设计 (3)四、程序调试与实现 (7)五、用户使用说明.....................................................................错误!未定义书签。
六、附录.....................................................................................错误!未定义书签。
一、需求分析(一)问题分析该系统所应包含的信息为:学校编号、学校名称、运动项目编号、运动项目名称、学校总分、男团总分和女团总分等。
(二)系统功能分析1.根据基本数据输入相关的信息2.根据要求输出所需信息3.查找所需信息4.结束运行二、概要设计根据运动会分数统计系统问题的分析和设计要求,可以将该系统分为四大模块:输入信息模块、输入信息模块、查询信息模块和退出系统模块(1)输入信息模块实现信息的输入和存档(2)输出信息是根据要求实现相关信息的排序输出(3)查询信息根据要求查询信息(4)退出系统结束系统运动会分数统计系统三、详细设计(一)主控模块设计{ main ();}case1 case2 case3 case4default(二)输出信息模块设计{ design1( );}选择操作 查询信息 退出系统输入信息输出信息 输入有误 学校编号学校名称项目编号开始输入Yes Noyes项目名称名次 是否循环 统计总分是否循环结束数据存入文件(三)输出信息模块设计{ design2( );}Yes开始按学校总分排序按学校编号排序 排序按男团总分排序按女团总分排序选择输出 结束 是否继续(四)查询模块{ design3();}YesYesNo No开始按项目编号查询按学校编号查询 选择 输出 结束 是否继续 是否继续四、程序调试与实现1、全部合法数据2、整体非法数据3、局部非法数据五、用户使用说明1. 首先,请根据要求输入所需数据。
2. 系统自动设置学校个数:3个;男子项目:2个;女子项目:1个。
如果需要更改其个数,只需将#define n 3(学校数目)、#define m 2(男子项目数目)、#define w 1(女子项目数目)中的个数进行更改,即可解决问题。
3.输入的数据存入名叫num.txt的文档中,如有需要可以查询。
六、附录源代码#include<stdio.h>#include<math.h>#include <conio.h>#include <process.h>#define n 3//学校数目#define m 2//男子项目数目#define w 1//女子项目数目#define null 0void design1();void design2();void design3();int choice,sign;typedef struct{int itemnum; //项目编号char name;//项目名称int top; //取名次的数目int range[5]; //名次int mark[5]; //分数}itemnode; //定义项目结点的类型typedef struct{int schoolnum; //学校编号char schoolname[20];//学校名字int score; //学校总分int mscore; //男团体总分int wscore; //女团体总分itemnode c[m+w]; //项目数组}headnode ;//定义头结点类型headnode h[n];//定义一个头结点数组void main() //主函数{printf("============欢迎使用运动会分数统计系统===========\n");printf("***************** 1.输入信息*********************\n");printf("***************** 2.输出信息*********************\n");printf("***************** 3.查询信息*********************\n");printf("***************** 4.退出系统*********************\n");printf("=================================================\n");printf("\n");printf("请选择要实现步骤的编号:");scanf("%d",&choice);printf("\n");switch(choice){case 1: //输入信息design1();break;case 2: //输出信息design2();break;case 3: //查询信息design3();break;case 4://退出系统printf("使用结束\n");break;default://输入有误printf("输入有误,请选择一个正确的编号\n");main();break;}}void design1() //输入信息{FILE *fp1;int i,j,k,s;for(i=0;i<n;i++){h[i].score=0;h[i].mscore=0;h[i].wscore=0;} //初始化头结点for(i=0;i<n;i++){printf("请输入学校编号:");scanf("%d",&h[i].schoolnum);printf(" 学校名称:");scanf("%s",&h[i].schoolname);for(j=0;j<m+w;j++){printf(" 项目编号:");scanf("%d",&h[i].c[j].itemnum);printf(" 项目名称:");scanf("%s",&h[i].c[j].name);printf(" 取前几名(5/3)");scanf("%d",&h[i].c[j].top);printf(" 取得几个名次:");scanf("%d",&k); //输入项目信息for(s=0;s<5;s++)h[i].c[j].range[s]=0, h[i].c[j].mark[s]=0; //初始化排名和分数for(s=0;s<k;s++){if(h[i].c[j].top==3) //取前3名记分{printf(" 取得名次:");scanf("%d",&h[i].c[j].range[s]); //输入所获名次信息printf(" 取得名次:");scanf("%d",&h[i].c[j].range[s]);switch(h[i].c[j].range[s]){case 0:h[i].c[j].mark[s]=0;break;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 if (h[i].c[j].top==5)//取前5名记分{printf(" 取得名次:");scanf("%d",&h[i].c[j].range[s]); //输入所获名次信息switch(h[i].c[j].range[s]){case 0:h[i].c[j].mark[s]=0;break;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;}}else{printf("输入有误,请重新输入!\n");design1();}h[i].score=h[i].score+h[i].c[j].mark[s]; //记录总分if(j<=m-1) //记录男团总分h[i].mscore=h[i].mscore+h[i].c[j].mark[s];else //记录女团总分h[i].wscore=h[i].wscore+h[i].c[j].mark[s];}printf("\n");}}fp1=fopen("num.txt","a");fprintf(fp1,"************************运动会分数统计系统**********************\n");fprintf(fp1,"学校编号学校名字学校总分男团总分女团总分\n");fprintf(fp1,"****************************************************************\ n");for(i=0;i<n;i++){fprintf(fp1," %2d",h[i].schoolnum); //学校编号fprintf(fp1," %10s",h[i].schoolname); //学校名称fprintf(fp1," %2d",h[i].score);//学校总分fprintf(fp1," %2d",h[i].mscore); //男团总分fprintf(fp1," %2d\n",h[i].wscore); //女团总分}fclose(fp1);main();}void design2() //输出函数{int i,j,k;int remember[n];int sign;do{printf("*******************1.按学校编号输出.\n");printf("*******************2.按学校总分输出.\n");printf("*******************3.按男团总分输出.\n");printf("*******************4.按女团总分输出.\n");printf("\n");printf("请选择编号:");scanf("%d",&choice);switch(choice){case 1: //按学校编号输出for(i=0;i<n;i++){printf("学校编号:%d\n",h[i].schoolnum);printf(" 学校名称:%s\n",h[i].schoolname);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++)remember[i]=i;for(i=0;i<n;i++){for(j=i+1;j<n;j++)if(h[remember[i]].score<h[j].score){k=remember[i];remember[i]=remember[j];remember[j]=k;}for(i=0;i<n;i++){printf("学校编号:%d\n",h[remember[i]].schoolnum);printf(" 学校名称:%s\n",h[remember[i]].schoolname);printf(" 学校总分:%d\n" ,h[remember[i]].score);printf(" 男团总分:%d\n",h[remember[i]].mscore);printf(" 女团总分:%d\n",h[remember[i]].wscore);}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;}}for(i=0;i<n;i++){printf("学校编号:%d\n",h[remember[i]].schoolnum);printf(" 男团总分:%d\n",h[remember[i]].mscore);printf(" 学校名称:%s\n",h[remember[i]].schoolname);printf(" 学校总分:%d\n" ,h[remember[i]].score);printf(" 女团总分:%d\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){k=remember[i];remember[i]=remember[j];remember[j]=k;}for(i=0;i<n;i++){printf("学校编号:%d\n",h[remember[i]].schoolnum);printf(" 学校名称:%s\n",h[remember[i]].schoolname);printf(" 女团总分: %d\n\n\n",h[remember[i]].wscore);printf(" 学校总分:%d\n" ,h[remember[i]].score);printf(" 男团总分:%d\n",h[remember[i]].mscore);}break;}printf("请选择(1.继续;2.跳出)\n");scanf("%d",&sign);}while(sign==1);main();}void design3() //查询函数{int i,j,k,s;printf("*******************1.按学校编号查询.\n");printf("*******************2:按项目编号查询.\n");printf("\n");printf("请选择查询方式:");scanf("%d",&choice);printf("\n");switch(choice){case 1:{do{printf("请输入查询的学校编号:");scanf("%d",&i);printf("\n");if(i>n)printf("错误:这个学校没有参加此次运动会!\n");else{printf(" 项目编号:");scanf("%d",&j);printf("\n");printf("\n");if(j>m+w||j==0)printf("此次运动会没有这个项目\n\n\n"); //学校编号超出范围,则输出警告else{printf(" 该项目取前%d名,学校编号为%d的成绩如下:\n", h[0].c[j-1].top,i);for(k=0;k<5;k++)if(h[i-1].c[j-1].range[k]!=0){printf(" 名次:%d\n",h[i-1].c[j-1].range[k]);//输出要查询学校项目的成绩}}}printf("\n");printf("请选择(1.继续;2.跳出)\n");scanf("%d",&sign);}while(sign==1);break;}case 2:{do{printf("请输入查询的项目编号:");scanf("%d",&s);printf("\n");if(s>m+w||s==0) //项目编号超出范围则输出警告printf("此次运动会不包括这个项目.\n\n\n");else //输出该项目取得名次学校的成绩{printf("该项目取前%d名,取得名次的学校\n",h[0].c[s-1].top);for(i=0; i<n;i++)for(j=0;j<5;j++)if(h[i].c[s-1].range[j]!=0)printf(" 学校编号:%d,名次:%d\n",h[i].schoolnum, h[i].c[s-1].range[j]);}printf("请选择(1.继续;2.跳出)\n");scanf("%d",&sign);printf("\n\n\n");}while(sign==1);break;}}main(); }。