运动会分数统计C++

合集下载

C语言设计课题大全

C语言设计课题大全

一、设计内容与设计要求1.课程设计目的:全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计打下较扎实的基础。

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

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

原则上不予换提,私自换题者不记成绩。

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

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

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

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

⑤关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。

⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。

二、进度安排第周星期时:分——时:分星期时:分——时:分星期时:分——时:分星期时:分——时:分设计课题一:班级成绩管理系统一、问题描述:对一个有N个学生的班级,每个学生有M门课程。

运动会分数统计 实验报告

运动会分数统计 实验报告

运动会分数统计实验报告运动会分数统计实验报告摘要:本实验旨在通过对运动会分数统计的实际操作,探究运动会分数统计的方法和技巧,以及分析其对参赛队伍和个人的影响。

通过实验数据的收集和分析,得出了一些有关运动会分数统计的结论,并提出了一些建议,以提高运动会分数统计的准确性和公正性。

引言:运动会是学校体育活动的重要组成部分,也是培养学生体质和团队合作精神的重要途径。

而分数统计是运动会的重要环节,直接关系到参赛队伍和个人的成绩和名次。

因此,如何准确地统计运动会的分数,成为了一个备受关注的问题。

本实验旨在通过实际操作,探究运动会分数统计的方法和技巧,以及分析其对参赛队伍和个人的影响。

实验方法:本实验选择了一所中学的运动会作为研究对象,通过观察和记录实际比赛的数据,进行分数统计的实验操作。

首先,我们收集了各个项目的比赛成绩,并记录在表格中。

然后,根据比赛项目的规则和要求,对每个参赛队伍和个人的得分进行统计。

最后,对统计结果进行分析和总结。

实验结果:通过实验操作和数据分析,我们得出了以下结论: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分进行统计。

运动会分数统计

运动会分数统计

运动会分数统计摘要随着计算机的普及,计算机系统开始使用于社会的各个领域。

社会需求以及市场竞争等日新月异,在这种情况下,信息进入重要资源的行列。

信息化管理正在往广度和深度发展。

在以往的运动会分数统计中,人工统计的速度较慢,且容易出现差错。

随着社会不断进步,当代体育事业不断发展,以往的人工统计已不能满足实际问题的需求。

为了提高运动会成绩统计的准确性,减少统计者的工作量,方便运动会工作人员的工作,特设计了本系统。

系统主要实现了比赛成绩输入、比赛成绩输出、查询比赛成绩和调用统计结果几个功能,并且将对存入分数按照各项成绩得分以及团体总分排序。

系统定义数据时使用结构体和结构体数组来存储信息数据,输入基本信息后由系统统计总分的内容并全部存入文件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 课题背景及目的在我国,随着社会的发展、科学技术的不断提高、计算机的普及,计算机系统开始进入人类社会的各个领域并发挥着越来越重要的作用。

《算法设计综合实训》题目讲解

《算法设计综合实训》题目讲解

算法设计综合实训题目0.逆序数字(借助栈)编写一个函数,接收一个4位整数值,返回这个数中数字逆序后的结果值。

例如,给定数7631,函数返回1367.输入:第一行一个正整数T(T<=10),表示有T组测试数据; 以下T行,每行一个非负的整数N。

输出:共T行,对于每组输入数据输出一行,即数字逆序后的结果值。

样本输入:3763110185158样本输出:1367810185151.人见人爱A+B这个题目的A和B不是简单的整数,而是两个时间,A和B 都是由3个整数组成,分别表示时分秒,比如,假设A为34 45 56,就表示A所表示的时间是34小时 45分钟 56秒。

输入:输入数据有多行组成,首先是一个整数N,表示测试实例的个数,然后是N行数据,每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒。

题目保证所有的数据合法。

输出:对于每个测试实例,输出A+B,每个输出结果也是由时分秒3部分组成,同时也要满足时间的规则(即:分和秒的取值范围在0-59),每个输出占一行,并且所有的部分都可以用32位整数表示。

样本输入:21 2 3 4 5 634 45 56 12 23 34样本输出:5 7 947 9 302.敲七【问题描述】输出7和7的倍数,还有包含7的数字例如(17,27,37...70,71,72,73...)【要求】【数据输入】一个整数N。

(N不大于30000)【数据输出】从小到大排列的不大于N的与7有关的数字,每行一个。

【样例输入】20【样例输出】714173.统计同成绩学生人数问题【问题描述】读入N名学生的成绩,将获得某一给定分数的学生人数输出。

【要求】【数据输入】测试输入包含若干测试用例,每个测试用例的格式为第1行:N第2行:N名学生的成绩,相邻两数字用一个空格间隔。

第3行:给定分数当读到N=0时输入结束。

其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。

《运动会分数统计》课件

《运动会分数统计》课件
赛可选择手动统计方法。
03
运动会分数统计流程
数据收集
收集各项目参赛选手 的成绩数据。
确保数据准确无误, 避免遗漏或重复。
记录每名选手的姓名 、参赛项目和成绩。
数据整理
对收集到的数据进行分类整理。
将相同项目的成绩数据归集在一 起。
按照成绩高低进行排序,便于后 续分析。
数据分析和解读
分析各参赛选手的成绩差异。
与度和投入度。
运动会分数统计的基本原则
01
02
03
准确性
确保数据记录和计算的准 确性,避免出现误差和遗 漏。
及时性
在比赛过程中及时更新分 数数据,保证信息的实时 性。
完整性
对所有参赛选手和队伍的 成绩进行全面统计,不遗 漏任何有效数据。
02
运动会分数统计方法
手动统计方法
笔录法
通过人工记录每项比赛的 成绩,然后进行简单的加 减运算得出总分。
平。
输入 标题
统计内容
包括各参赛选手的得分、破纪录情况等,以及各项比 赛的获奖名单。
案例概述
统计方法
通过社区运动会分数统计,可以了解社区居民的体育 水平,为社区体育活动组织提供参考;同时也可以促
进社区居民之间的交流与互动。
案例分析
采用表格形式,将各项数据整理成表格,并使用图表 展示数据变化趋势。
国际运动会分数统计案例
统计内容
包括各班级总分数、各选手得分、破纪录情况等,以及各 项比赛的获奖名单。
案例分析
通过学校运动会分数统计,可以发现各班级之间的差距, 为学校体育工作提供改进方向;同时也可以发掘优秀选手 ,为校队选拔提供依据。
社区运动会分数统计案例
社区运动会分数统计是促进社区居民参与体育活动的 重要手段,通过统计结果可以了解社区居民的体育水

运动会分数统计系统说明书

运动会分数统计系统说明书

目录摘要 (1)前言 (2)正文 (3)1.采用类C语言定义相关的数据类型 (3)2.各模块的伪码算法 (4)3.函数的调用关系图 (7)4.调试分析 (7)5.测试结果 (8)6.源程序(带注释) (12)总结 (15)参考文献 (17)致谢 (18)附件Ⅰ部分源程序代码 (19)摘要本次课程设计的主要任务是利用学过的数据结构的知识设计一个运动会分数统计系统。

运动会分数统计系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷的查询手段。

运动会分数统计系统是典型的信息管理系统,本系统是根据现代化校园的发展而设计的运动会分数统计系统,本系统可以方便老师、运动员来学校查找成绩、名次。

要求应用程序功能完备,易使用等特点。

实现全校运动会信息在线查询。

还可以对新的运动信息进行信息录入。

由于运动项目种类繁多,可以实现信息修改。

通过本次课程设计可以加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构。

关键词:数据结构;运动会;分数统计系统;C语言前言本学期开设的《算法与数据结构》课程已经告一段落,。

在学习科目的第一节课起,张老师就为我们阐述了它的重要性。

它对我们来说具有一定的难度。

它是其它编程语言的一门基本学科。

尽管不好学,但是我们必须学好这门课程,这对于我们计算机专业的学生来说意义重大。

经过一个学期的理论知识的学习,对于数据结构相关的知识有了一定的了解。

这是一门纯属于设计的科目,它需用把理论变为上机调试和具体实践。

在课程结束之后。

老师为我们安排了这次为期两周的课程设计。

目的就是让我们自己在计算机上自己设计算法来实现相应的功能以及锻炼学生的动手能力和实践能力,最重要的是要把我们所学的数据结构的理论知识应运到实践中去。

这次课程设计的题目是“运动会分数统计系统”,要求学生自己查阅相关资料,完成相应的任务,自己上机设计算法,调试程序,运行出结果,以此来加深理解线性表、查找表的逻辑结构、存储结构,掌握查找、排序等基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养自己的动手能力。

C# 运动会积分系统 综合软件课程设计

C# 运动会积分系统 综合软件课程设计

综合软件设计报告运动会计分系统学号:200890610126姓名:张庆龙时间:2011年4月26日一.需求分析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.基本要求:(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、数据类型定义(1)系的定义:typedef struct Department //系的结构{char name[20]; //系的名称int number; //系的编号int boy; //男子团体总分int girl; //女子团体总分Department *next; }Department;(2)运动项目定义:typedef struct Sport //运动项目结构{char name[20]; //运动项目名称int isboy; //0为女项目,1为男项目int is3; //0为取前五名,1为取前五名int number; //项目编号int first; //第一名系的编号int second; //第二名系的编号int third; //第三名系的编号int fourth; //第四名系的编号int fifth; //第五名系的编号Sport *next;}Sport;、2、函数之间的调用关系(1)系调用图department_adddepartment_Order<1>Department department_searchdepartment_addmarkdepartment_showdepartment_isexistdepartment_outputdepartment_readdepartment_writedepartment_getlongsport_isexistsport_addsport_getlongsport_write<2>Sport sport_readsport_outputsport_search3、算法设计主要算法的设计思想:本程序主要是使用链表来实现操作。

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

运动会分数统计C++一.需求分析:1.在该程序中,参赛学校编号为1~n(n<=20)。

比赛分成m(m<=30)个男子项目和w(w<=20)个女子项目,分别编号为1~m和m+1~m+w,姓名长度不超过20个字符;2.输入各个项目信息的详细信息,包括项目号,姓名,性别,学校和名次。

3.对于项目编号为奇数的取前五名,得分顺序为7,5,3,2,1;为偶数的取前三名,得分顺序为5,3,2。

4.程序执行的命令包括:1)构造线性表的存储结构。

2)根据每个学生的名次确定相应的得分。

3)输出各个学校的成绩单和男子团体总分,女子团体总分和团体总分。

二.概要设计1.该程序包含两个结构体分别为:结构体(1)运动员信息结构体(2)学校信息2.本程序包括4个模块:1>初始化学校信息。

2>依次输入每个运动员的信息。

3>根据每个学生的成绩计算对应的得分,及个学校的总得分、男团总分、女团总分。

4>生成个学校的成绩单,并输出。

三.详细设计1.数据结构的定义:○1描述运动员的线性表typedef struct{int item[MAXSIZE]; //参赛项目号char thletename[MAXSIZE][20];//姓名char sex[MAXSIZE];//性别int schoolnum[MAXSIZE];//所在学校编号int num[MAXSIZE];//名次int point[MAXSIZE];//得分int last;}Thlete;○2描述学校的线性表typedef struct{int schoolnum[MAXSIZE];//学校编号int Tgirl[MAXSIZE];//女生团体总分int Tboy[MAXSIZE];//男生团体总分int Tall[MAXSIZE];//学校总成绩int last;}School;○3.控制输入的函数int input(Thlete *S1,int n,int m,int w){cout<<"项目号"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"学校号"<<'\t' <<"名次"<< '\t' <<endl;int i=0,j=1,k=0;if(S1->last==MAXSIZE-1){cout<<"运动员人数已满,无法继续输入!"<<endl;return RIGHT;}while(cin>>S1->item[i]&&S1->item[i]!=0){cin>>S1->thletename[i]>>S1->sex[i]>>S1->schoolnum[i]>>S1->num[i];i++;if(i==100-1){cout<<"运动员人数已满,无法继续输入!"<<endl;return RIGHT;}}S1->last=i;for(i=0;i<S1->last;i++){if(S1->schoolnum[i]>n){cout<<"您的输入有误,输入学校个数不能超过"<<n<<",请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->sex[i]!='g'&&S1->sex[i]!='b'){cout<<"您的输入有误,输入运动员性别只能用'g'(女)或'b'(男)表示请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->item[i]>=0&&S1->item[i]<=m&&S1->sex[i]!='b'){cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->item[i]>=m+1&&S1->item[i]<=m+w&&S1->sex[i]!='g'){cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}}return RIGHT;}○3.用于计算学校各项成绩的函数void mark(Thlete *L1,School *L2,int n,int m,int w){int i,j;for(i=0;i<L1->last+1;i++){if(L1->item[i]%2==1)//项目编号为奇数的按第一种评分方法计算得分{if(L1->num[i]==1)L1->point[i]=7;if(L1->num[i]==2)L1->point[i]=5;if(L1->num[i]==3)L1->point[i]=3;if(L1->num[i]==4)L1->point[i]=2;if(L1->num[i]==5)L1->point[i]=1;if(L1->num[i]>5)L1->point[i]=0;}if(L1->item[i]%2==0)//项目编号为偶数的按第二种评分方法计算得分{if(L1->num[i]==1)L1->point[i]=5;if(L1->num[i]==2)L1->point[i]=3;if(L1->num[i]==3)L1->point[i]=2;if(L1->num[i]>3)L1->point[i]=0;}}for(i=0;i<L2->last+1;i++){for(j=0;j<L1->last+1;j++){if(L2->schoolnum[i]==L1->schoolnum[j]){if(L1->sex[j]=='b'){L2->Tboy[i]=L2->Tboy[i]+L1->point[j];//累加各学校的男团总分}if(L1->sex[j]=='g'){L2->Tgirl[i]=L2->Tgirl[i]+L1->point[j];//累加各学校的女团总分}}}L2->Tall[i]=L2->Tgirl[i]+L2->Tboy[i]; //计算个学校的集体总分}○4.控制输出成绩的函数void output(Thlete L1,School L2){int i,j;for(i=0;i<st+1;i++){cout<<" 第"<<i+1<<"号学校的成绩"<<endl;cout<<endl;cout<<"学校"<<'\t' <<"项目"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"名次"<<'\t' <<"得分"<<endl;for(j=0;j<st+1;j++){if(L2.schoolnum[i]==L1.schoolnum[j]){cout<<L1.schoolnum[j]<<'\t' <<L1.item[j]<<'\t'<<L1.thletename[j]<<'\t' <<L1.sex[j]<<'\t'<<L1.num[j]<<'\t' <<L1.point[j]<<endl;}}cout<<i+1<<"号学校的女子团体总分为:"<<L2.Tgirl[i]<<endl;cout<<i+1<<"号学校的男子团体总分为:"<<L2.Tboy[i]<<endl;cout<<i+1<<"号学校的全体运动员总分为:"<<L2.Tall[i]<<endl;cout<<endl;}2四.调试分析1.用线性链表时应注意细节,指针的使用过程中很容易出错,从而达不到采用其起到的效果。

2.线性表School的各属性在用之前需要初始化。

3.进行健壮性判断时遇到很多问题:a.判断性别是否正确时S1->sex[i]!='g'和S1->sex[i]!='b'必须是并且关系b.当检测到错误,需要重新输入时,要在输入函数里再调输入函数,用递归调用的方法实现重新输入。

4.输入函数里传参时必须用指针类型,因为需要带回数据5.循环输入运动员数据时停止条件的选择,最终选择了项目号为零时停止,while(cin>>S1->item[i]&&S1->item[i]!=0)五.测试数据:一.正确的输入:######欢迎进入运动会成绩录入及统计系统######请输入参赛学校的个数: 2请输入开设的男子项目数: 1请输入开设的女子项目数: 2项目号姓名性别学校号名次1 张 b2 11 王 b 1 21 李 b 1 32 赵g 1 12 刘g 1 32 韩g 2 23 魏g 2 13 冯g 1 23 马g 2 3一.输出:第1号学校的成绩学校项目姓名性别名次得分1 1 王 b2 51 1 李 b 3 31 2 赵g 1 51 2 刘g 3 21 3 冯g2 51号学校的女子团体总分为:121号学校的男子团体总分为:81号学校的全体运动员总分为:20第2号学校的成绩学校项目姓名性别名次得分2 1 张 b 1 72 2 韩g 2 32 3 魏g 1 72 3 马g 3 32号学校的女子团体总分为:132号学校的男子团体总分为:72号学校的全体运动员总分为:20二.含错误数据的输入:(性别代号输入有误)######欢迎进入运动会成绩录入及统计系统######请输入参赛学校的个数: 2请输入开设的男子项目数: 1请输入开设的女子项目数: 2项目号姓名性别学校号名次1 张 b2 11 王 b 1 21 李 b 1 32 赵g 1 12 刘g 1 32 韩g 2 23 魏g 2 13 冯g 1 23 马 f 2 3二.输出:您的输入有误,输入运动员性别只能用'g'(女)或'b'(男)表示,请重新输入!项目号姓名性别学校号名次三.含错误数据的输入:(学校号输入超出n)######欢迎进入运动会成绩录入及统计系统######请输入参赛学校的个数: 2请输入开设的男子项目数: 1请输入开设的女子项目数: 2项目号姓名性别学校号名次1 张 b2 11 王 b 1 21 李 b 1 32 赵g 1 12 刘g 1 32 韩g 2 23 魏g 2 13 冯g 1 23 马g 3 3三.输出:您的输入有误,输入学校个数不能超过2,请重新输入!项目号姓名性别学校号名次四.含错误数据的输入:(项目号与性别不匹配)######欢迎进入运动会成绩录入及统计系统######请输入参赛学校的个数: 2请输入开设的男子项目数: 1请输入开设的女子项目数: 2项目号姓名性别学校号名次1 张 b2 11 王 b 1 21 李g 1 32 赵g 1 12 刘g 1 32 韩g 2 23 魏g 2 13 冯g 1 23 马g 3 3四.输出:您的输入有误,项目号与性别不匹配,请重新输入!项目号姓名性别学校号名次五、用户使用说明:六.源代码:#include<iostream>using namespace std;#include<stdlib.h>#define MAXSIZE 100#define ERROR 0#define RIGHT 1typedef struct{int item[MAXSIZE]; //参赛项目string thletename[MAXSIZE];//姓名char sex[MAXSIZE];//性别int schoolnum[MAXSIZE];//所在学校编号int num[MAXSIZE];//名次int point[MAXSIZE];//得分int last;}Thlete;typedef struct{int schoolnum[MAXSIZE];//学校编号int Tgirl[MAXSIZE];//女生团体总分int Tboy[MAXSIZE];//男生团体总分int Tall[MAXSIZE];//学校总成绩int last;}School;void InitSCH(School *S,int n){int i;S->last=n-1;for(i=0;i<S->last+1;i++){S->schoolnum[i]=i+1;S->Tgirl[i]=0;S->Tboy[i]=0;S->Tall[i]=0;}}int input(Thlete *S1,int n,int m,int w){cout<<"项目号"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"学校号"<<'\t' <<"名次"<<'\t' <<endl;int i=0,j=1,k=0;if(S1->last==MAXSIZE-1){cout<<"运动员人数已满,无法继续输入!"<<endl;return RIGHT;}while(cin>>S1->item[i]&&S1->item[i]!=0){cin>>S1->thletename[i]>>S1->sex[i]>>S1->schoolnum[i]>>S1->num[i];i++;if(i==100-1){cout<<"运动员人数已满,无法继续输入!"<<endl;return RIGHT;}}S1->last=i;for(i=0;i<S1->last;i++){if(S1->schoolnum[i]>n){cout<<"您的输入有误,输入学校个数不能超过"<<n<<",请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->sex[i]!='g'&&S1->sex[i]!='b'){cout<<"您的输入有误,输入运动员性别只能用'g'(女)或'b'(男)表示,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->item[i]>=0&&S1->item[i]<=m&&S1->sex[i]!='b'){cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}if(S1->item[i]>=m+1&&S1->item[i]<=m+w&&S1->sex[i]!='g'){cout<<"您的输入有误,项目号与性别不匹配,请重新输入!"<<endl;input(S1,n,m,w);return ERROR;}}return RIGHT;}void mark(Thlete *L1,School *L2,int n,int m,int w){int i,j;for(i=0;i<L1->last+1;i++){if(L1->item[i]%2==1)//项目编号为奇数的按第一种评分方法计算得分{if(L1->num[i]==1)L1->point[i]=7;if(L1->num[i]==2)L1->point[i]=5;if(L1->num[i]==3)L1->point[i]=3;if(L1->num[i]==4)L1->point[i]=2;if(L1->num[i]==5)L1->point[i]=1;if(L1->num[i]>5)L1->point[i]=0;}if(L1->item[i]%2==0)//项目编号为偶数的按第二种评分方法计算得分{if(L1->num[i]==1)L1->point[i]=5;if(L1->num[i]==2)L1->point[i]=3;if(L1->num[i]==3)L1->point[i]=2;if(L1->num[i]>3)L1->point[i]=0;}}for(i=0;i<L2->last+1;i++){for(j=0;j<L1->last+1;j++){if(L2->schoolnum[i]==L1->schoolnum[j]){if(L1->sex[j]=='b'){L2->Tboy[i]=L2->Tboy[i]+L1->point[j]; //累加各学校的男团总分}if(L1->sex[j]=='g'){L2->Tgirl[i]=L2->Tgirl[i]+L1->point[j]; //累加各学校的女团总分}}}L2->Tall[i]=L2->Tgirl[i]+L2->Tboy[i]; //计算个学校的集体总分}}void output(Thlete L1,School L2){int i,j;for(i=0;i<st+1;i++){cout<<" 第"<<i+1<<"号学校的成绩"<<endl;cout<<endl;cout<<"学校"<<'\t' <<"项目"<<'\t' <<"姓名"<<'\t' <<"性别"<<'\t' <<"名次"<<'\t' <<"得分"<<endl;for(j=0;j<st+1;j++){if(L2.schoolnum[i]==L1.schoolnum[j]){cout<<L1.schoolnum[j]<<'\t' <<L1.item[j]<<'\t' <<L1.thletename[j]<<'\t' <<L1.sex[j]<<'\t'<<L1.num[j]<<'\t' <<L1.point[j]<<endl;}}cout<<i+1<<"号学校的女子团体总分为:"<<L2.Tgirl[i]<<endl;cout<<i+1<<"号学校的男子团体总分为:"<<L2.Tboy[i]<<endl;cout<<i+1<<"号学校的全体运动员总分为:"<<L2.Tall[i]<<endl;cout<<endl;}}int main(){int i,j,k,n,m,w;Thlete S1;st=-1;School S2;cout<<" ######欢迎进入运动会成绩录入及统计系统######"<<endl;cout<<endl;cout<<"请输入参赛学校的个数: "; cin>>n;cout<<"请输入开设的男子项目数: "; cin>>m;cout<<"请输入开设的女子项目数: "; cin>>w;InitSCH(&S2,n);//初始化学校成绩,将个项目得分均置为零input(&S1,n,m,w);//调用输入函数mark(&S1,&S2,n,m,w);output(S1,S2);system("pause");return 0;}。

相关文档
最新文档