数据结构课设 运动会分数统计(c++)

合集下载

运动会分数统计(数据结构课程设计)python

运动会分数统计(数据结构课程设计)python

运动会是学校中一项重要的活动,通过运动会可以增强学生的体质,增进师生之间的情感,同时也能够激发学生的运动热情和团队精神。

而对于运动会的分数统计来说,如何高效、准确地完成这项工作是非常重要的。

本文主要介绍了基于数据结构课程设计的运动会分数统计系统,使用Python语言实现。

二、系统设计1. 数据结构的选择在设计运动会分数统计系统时,需要考虑如何存储和管理参赛队伍和成绩信息。

由于参赛队伍和成绩信息的数量较大,因此需要选择适合高效查询和排序的数据结构。

本系统选择使用Python中的字典(dictionary)和列表(list)来存储和管理数据。

2. 数据的存储在系统中,每支队伍的信息包括队伍编号、队伍名称和各项比赛成绩等。

这些信息可以使用字典来存储,其中队伍编号作为键,队伍信息作为值。

而各项比赛成绩可以使用列表来存储,方便进行排序和统计。

3. 数据的输入为了方便输入参赛队伍和成绩信息,本系统提供了相应的输入界面,用户可以通过界面逐一输入每支队伍的信息。

程序也提供了批量导入功能,用户可以通过导入文件的方式一次性输入所有的参赛队伍和成4. 数据的统计和输出系统可以对输入的成绩信息进行统计和排序,可以按照总分或特定比赛项目的成绩进行排序,并将排名信息输出到文件中。

排名信息包括队伍名称、总分和各项比赛成绩,方便后续的奖励和表彰工作。

三、系统实现1. 数据结构类的设计为了方便对队伍和成绩信息进行管理,本系统设计了队伍(Team)和成绩(Score)两个类,分别用于存储队伍信息和比赛成绩。

2. 主程序的设计系统的主程序主要包括数据的输入、统计和输出三个功能。

用户可以通过交互式界面输入队伍和成绩信息,也可以通过命令行参数进行批量导入。

系统会对输入的成绩信息进行统计和排序,并将排名信息输出到指定的文件中。

3. 界面设计为了方便用户操作,系统提供了简洁清晰的交互式界面。

用户可以通过界面进行数据的输入和操作,也可以查看和导出排名信息。

数据结构课程设计--运动会成绩管理系统

数据结构课程设计--运动会成绩管理系统

目录1 需求分析 (1)1.1 问题描述 (1)1.2 基本要求 (1)1.3 测试数据 (1)2 概要设计 (2)2.1 数据结构 (2)2.2 程序模块及之间的调用关系 (2)3 详细设计 (3)3.1 数据类型定义 (3)3.2 函数之间的调用关系 (3)3.3 算法设计 (4)4 测试结果 (5)4.1多组数据输入与输出 (5)5 调试分析 (9)参考文献 (10)附录 (11)1 需求分析1.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 基本要求(1) 可以输入各个项目的前三名或前五名的成绩;(2) 能统计各系总分,(3) 可以按系编号、系总分、男女团体总分排序输出;(4) 可以按系编号查询系某个项目的情况;可以按项目编号查询取得前三或前五名的系。

1.3 测试数据(1) 输入:进入输入界面,根据提示,输入参赛学校个数,再输入:男子组和女子组个数。

再根据提示的选择菜单1:输入各项中的获奖学校。

(2) 输入:2查看输出结果。

(3) 输入:3查看输出结果。

(4) 输入:4查看输出结果。

(5) 输入:5查看输出结果。

(6) 输入:6查看输出结果。

(7) 输入:7根据提示输入系编号和项目编号。

(8) 输入:8根据提示输入系编号和项目编号。

(8) 输入:9,退出。

2.1 数据结构(1) 学校:代号,男子团体个数和总分,女子团体个数和总分。

(2) 运动项目:项目编号,男子项目,女子项目,前三名,前五名,第一名系的编号,第二名系的编号,第三名系的编号,第四名系的编号,第五名系的编号。

2.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语言程序设计》课题运动会分数统计系统专业班级电气工程及其自动化学生姓名学号指导老师审批任务书下达日期年月日任务完成日期年月日第一部分《C语言课程设计》任务书前言《C语言程序设计》课程设计是对学生的一种全面综合训练,它包括问题分析,总体结构设计,用户界面设计,程序设计基本技能和技巧,多人合作,以至一整套软件工作规范的训练和科学作风的培养。

是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节。

通常,课程设计的课题比平时的习题复杂得多,也更接近实际。

课程设计着眼于与应用的结合点,使学生学会如何把书上学到的知识用于解决实际问题,培养软件工作所需要的动手能力;另一方面,能使书上的知识变“活”,使学生更好地深化理解和灵活掌握教学内容。

为了达到上述目的,本课程设计安排了八个设计课题,训练重点在于基本的程序设计方法和分析问题的能力,而不强调面面俱到。

学生可任选其中一题进行设计,设计完毕写出课程设计报告,用A4纸打印成册;并将课程设计报告与源程序存盘。

学习委员将课程设计报告与磁盘收齐后交指导老师。

一、目的全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

二、设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的问题,为将来编写软件积累一些典型的案例处理经验。

运动会运动会分数统计(数据结构)

运动会运动会分数统计(数据结构)

摘要:本文详细介绍了运动会分数统计程序的设计与实现,该程序具有运动会成绩的输入,每个学校所参加的项目成绩的查询,修改,删除,统计操作以及学校成绩单和团体得分报表的输出等功能。

概要设计部分给出了程序功能说明,数据结构设计和函数变量说明。

详细设计和实现部分列出了系统功能模块、算法原理及流程图。

最后还给出了调试和操作说明。

在课程设计中,程序设计语言采用Visual C++,程序运行平台为Windows 98/2000/XP。

对于获得名次的同学在存储其成绩的时候采用了链表的结构,有利于数据的存储与查找。

程序通过调试运行,实现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。

关键词:运动会分数统计;程序设计;C++;链表目录1需求分析 (3)2概要设计 (4)2.1 程序功能说明 (4)2.2 数据结构设计 (4)2.3 函数及变量说明 (5)3详细设计和实现 (5)3.1 系统功能模块 (5)3.2 算法原理 (6)3.3 流程图 (7)4调试与操作说明 (7)4.1调试过程中出现的问题及处理方式 (7)4.2运行界面 (9)总结 (12)致谢 (13)参考文献 (14)1需求分析运动会问题:参加运动会的N个学校编号为1—N。

比赛分为M个男子项目和W个女子项目,项目编号分别为1—M和M+1—M+W。

由于各项目的参加人数差别较大,有些项目取前五名,得分顺序为7,5,3,2,1;还有些项目只取前三名,得分顺序为5,3,2。

该系统具备的基本功能:该统计程序能产生各种成绩单和得分报表:各校的成绩单,内容包括各学校所取得每项成绩的项目号,名次(成绩),姓名和得分;产生团体总分报表,内容包括校号,男子团体总分,女子团体总分和团体总分。

也能对其中的错误项进行修改或删除。

本课程设计主要解决在运动会上,将各个比赛项目所有获得名次的同学的成绩输入;成绩查询;成绩修改;成绩删除;以及成绩输出。

实验环境:Microsoft Visual C++ 6.0。

东北大学数据结构运动会竞赛成绩统计实验报告

东北大学数据结构运动会竞赛成绩统计实验报告

《数据结构》实验报告实验内容:运动会竞赛成绩统计数据结构实验报告一.课题概述 (1)二.概要设计原理 (1)三.详细程序清单及注释说明 (2)四.运行与测试及结果 (7)五.本人编写函数 (11)六.心得体会 (13)七.参考文献 (13)一、课题概述1.实验目的:线性表应用类实验题目参考2.实验内容:运动会竞赛成绩统计【问题描述】东北大学第51届运动大会成功举行。

共有N个学院的男女代表队参赛。

大会共设M个男子项目和W个女子项目。

大会即将闭幕,准备公布成绩。

【实验要求】设计运动会竞赛成绩统计程序。

(1)采用顺序表或链表等数据结构。

(2)统计各代表队的男女总分和团体总分。

(3)公布各单项成绩的前六名和团体成绩的前三名。

(4)可以查询成绩。

二、概要设计原理本程序主要采用了链表的存储结构,实现了对数据的存储,访问等操作。

本程序实现了男子团体成绩、女子团体成绩、总成绩的输出。

以及对个单项和团体成绩的前六名的输出。

并实现了查找功能。

程序主要分为四个函数:1.Zongfen()这个函数主要实现计算各学院的男子总分、女子总分、以及团体总分的计算以及存储操作。

2.tuandui_paiming()此函数运用了排顺函数,实现了对团体总分的排序,以及前六名的输出。

3.danxiang_paiming()此函数运用了排序函数,实现了对单项成绩的排名,以及对各个单项前六名的输出。

4.chazhao()通过此函数,可以实现对各个学院的查找,并且显示出各个学院的单项成绩,以及男子团体成绩、女子团体成绩、总成绩的输出。

5.main()6.主函数,实现对所有函数的协调,并且执行了一些程序中相当关键的部分,对整个程序的执行以及正确的输出起到了很大的作用。

7.zhujiemain()主界面函数,实现函数运行时界面的输出,以及对接下来操作的选择,是整个程序的关键部分。

三、详细程序清单及注释说明#include<>#include<>#include<>typedef struct xueyuan{char name[10]; 成绩及团体排名 ----\n""---- 2.单项排名----\n""---- 3.查找----\n""---- 其他.退出----\n""----------------------------------------------------\n");int choose;printf("请输入您的选择:");scanf("%d",&choose);switch(choose){case 1:zongfen();tuandui_paiming();break;case 2:danxiang_paiming();break;case 3:chazhao();break;default:exit(0);}}void main() 界面2.各学院总分3.团体总分4.单项排名5.查找—信息---机械6.退出五.本人编写函数#include<>#include<>#include<>typedef struct xueyuan{char name[10]; 成绩及团体排名 ----\n""---- 2.单项排名----\n""---- 3.查找----\n""---- 其他.退出----\n""----------------------------------------------------\n");int choose;printf("请输入您的选择:");scanf("%d",&choose);switch(choose){case 1:zongfen();tuandui_paiming();break;case 2:danxiang_paiming();break;case 3:chazhao();break;default:exit(0);}}void main() //主函数{shuju();zhujiemian();}六.心得体会通过这次的程序设计,使自己对链表的操作有了更进一步的了解。

成绩分析数据结构课程设计

成绩分析数据结构课程设计

成绩分析数据结构课程设计一、课程目标知识目标:1. 让学生掌握数据结构的基本概念,如线性表、树、图等,并了解它们在实际问题中的应用。

2. 使学生能够理解和分析不同数据结构的特点,如时间复杂度和空间复杂度。

3. 帮助学生掌握常见算法的实现原理,如排序、查找等,并能够运用到成绩分析中。

技能目标:1. 培养学生运用数据结构解决实际问题的能力,特别是针对成绩分析的数据处理。

2. 提高学生编写和优化算法的能力,以便对大量成绩数据进行有效分析。

3. 培养学生使用计算机工具(如编程语言和数据处理软件)进行数据结构相关操作的能力。

情感态度价值观目标:1. 激发学生对数据结构学习的兴趣,培养主动探索和积极思考的学习态度。

2. 引导学生认识到数据结构在解决问题中的重要作用,提高对数学和计算机科学的认识。

3. 培养学生的团队合作意识,学会在团队中分享、交流和协作,共同完成成绩分析任务。

课程性质:本课程属于计算机科学与数学相结合的学科,注重理论知识与实践操作的结合。

学生特点:学生已具备一定的数学基础和编程能力,但对数据结构的应用和深入分析尚处于初级阶段。

教学要求:结合学生特点,通过案例分析和实际操作,使学生在掌握数据结构基本知识的基础上,能够将其应用于成绩分析,提高解决实际问题的能力。

同时,注重培养学生的团队合作和创新能力。

在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。

二、教学内容1. 数据结构基本概念:线性表、栈、队列、树、图等,对应教材第1章。

- 线性表的应用实例:成绩排序、查找。

- 树的结构及其在成绩分类中的应用。

- 图的表示方法及其在成绩关系分析中的应用。

2. 算法分析:时间复杂度、空间复杂度,对应教材第2章。

- 分析不同排序算法的时间复杂度,如冒泡排序、快速排序等。

- 探讨查找算法的空间复杂度,如二分查找、哈希查找等。

3. 常见数据结构与算法的应用:对应教材第3-5章。

- 整理和优化成绩分析相关算法,如平均值计算、优秀率统计等。

数据结构课程设计

数据结构课程设计

数据结构课程设计运动会分数统计东华大学信息科学与技术学院班级:电气1403班姓名:余晨辉学号:140400529一.任务:参加运动会有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) 可以按1.学校编号、2.学校总分、3.男女团体总分排序输出;4) 可以按学校编号查询学校某个项目的情况;5) 可以按项目编号查询取得前三或前五名的学校。

三.测试数据:现将表格中的数据输入(“1”代表第一名,“2”代表第二名,“3”代表第三名,“0”代表没有名次。

且实际输入时,以对应的“0”和“1”输入到三维的存储结构中去,而不是以“1”“2”“3”“0”等输入)。

四.算法设计:然后进入总目录1)输入:1 统计各学校总分并输出;2)输入:2按学校总分排序输出;3)输入:2 按学校编号排序输出;4)输入:4 按男团体总分排序输出;5)输入: 5 按女团体总分排序输出;6) 输入:6 按学校编号查询学校某个项目情况;7)输入:7 按项目编号查询取得名次的学校;8)输入:0 退出系统;9)输入其他数据会提示错误输入,重新输入。

一.概要设计1 结构体运动项目{ 项目编号;名次;};学校{ 学校编号;项目;团体总分;男团体总分;女团体总分;};2 主程序(main)包括登陆欢迎程序,分数录入程序,查询程序,分数统计程序,退出程序3 程序模块机之间的调用关系4 取N=5,bg=gg=5;为简便,取前三名进行实验二,详细设计1、宏定义:#define N 5#define bg 5#define gg 52、数据类型定义(1)运动项目的定义:struct xiangm{Int xiangmm;//项目名int paix[3];//排名}xia[bg+gg];(2)学校的定义:struct xuex{int xuexm;//学校名int zf;//总分int bzf;//boy总分int gzf;//girl总分struct xiangm xia[bg+gg];//项目}xue[N];主要算法的设计思想:本程序主要是使用顺序表来实现操作。

c语言课程设计运动会比赛计分系统(含任务书)

c语言课程设计运动会比赛计分系统(含任务书)

c语言课程设计运动会比赛计分系统(含任务书)第一篇:c语言课程设计运动会比赛计分系统(含任务书)一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。

(6)熟练掌握C语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。

二、课程设计名称及内容课程设计名称:运动会比赛计分系统设计内容:设计一个运动会比赛计分系统,该系统要求对运动会比赛得分进行管理和维护。

三、任务和要求要求:初始化输入:N-参赛学校总数,M-男子竞赛项目数,W-女子竞赛项目数各项目名次取法有如下几种:(1)取前5名:第一名得分7分,第二名得分5,第三名得分3,第四名得分2,第五名得分1;(2)取前3名:第一名得分5,第二名得分3,第三名得分2;(3)用户自定义:各名次权值由用户指定。

四、设计方案提示(1)界面系统以菜单方式工作(2)输入数据并存入文件使用到结构体变量和动态链表,由程序提醒用户填写比赛结果,输入各项目获奖运动员信息。

对输入的信息进行合法性判断,直到输入正确为止。

都输入完成后,调用写文件函数对指定的文件进行写操作,把输入的信息写入到文件中。

运动会分数统计课程设计

运动会分数统计课程设计

运动会分数统计课程设计一、课程目标知识目标:1. 学生能理解并掌握运动会分数统计的基本概念和方法。

2. 学生能运用所学知识,正确进行运动会各项比赛的分数统计。

3. 学生了解并掌握运用图表进行数据展示和分析的方法。

技能目标:1. 学生能熟练运用加减乘除运算进行分数统计。

2. 学生能运用信息技术工具(如Excel等)进行分数的录入、统计和图表制作。

3. 学生具备分析数据、发现问题和解决问题的能力。

情感态度价值观目标:1. 学生培养对数学学科的兴趣,认识到数学在实际生活中的应用价值。

2. 学生培养合作意识,学会与他人共同完成数据统计和分析任务。

3. 学生在分数统计过程中,培养公平、公正、客观的态度,增强诚信意识。

课程性质:本课程为数学学科的教学内容,结合实际生活中的运动会分数统计案例,以提高学生的实际操作能力和数据分析能力。

学生特点:四年级学生具备一定的数学基础和运算能力,对实际生活中的问题充满好奇心,但可能缺乏数据分析的经验。

教学要求:结合学生特点,注重实践操作,让学生在实际操作中掌握知识,提高技能。

同时,关注学生的情感态度培养,使其在课程学习中形成正确的价值观。

通过分解课程目标为具体的学习成果,为后续教学设计和评估提供依据。

二、教学内容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.可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

输出形式:有中文提示,各学校分数为整型。

界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。

存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。

测试数据:要求使用1、全部合法数据;2、整体非法数据;3、局部非法数据。

进行程序测试,以保证程序的稳定。

概要设计:1.本系统的流程图如下:开始 -。

初始化 -。

输入N -。

输入Y -。

Case3 -。

输入学校及男女项目范围 -。

输入某项目各名次成绩 -。

继续输入 -。

输入N -。

成绩查询 -。

Case1 -。

查询各学校成绩 -。

Case2 -。

查询团体总分 -。

输入Y -。

继续 -。

输出查询学校成绩 -。

输入N -。

继续 -。

输入N -。

结束 -。

退出2.本系统采用结构化设计理念的存储结构,包括三个数据表:1)项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。

本数据表根据要求设计存储每个项目的编号、名称、要取的名次以及各个名次对应的学校的编号,在初始输入时仅输入项目编号、名称及要取的名次,而各名次对应的学校编号将由系统自动统计。

运动会分数统计数据结构报告

运动会分数统计数据结构报告

运动会分数统计数据结构报告一、概述本报告主要介绍了运动会分数统计系统的数据结构。

运动会分数统计系统需要对运动员的各项比赛成绩进行记录、统计和分析,以便为比赛组织者和运动员提供全面、准确的数据支持。

为了实现这一目标,我们设计了一个合理的数据结构,以存储和处理运动会分数数据。

二、数据结构设计1. 运动员信息表字段名称字段类型字段含义运动员ID INT 唯一标识运动员的编号姓名 VARCHAR(50) 运动员的姓名性别 CHAR(1) 运动员的性别(男/女)年龄 INT 运动员的年龄所属单位 VARCHAR(100) 运动员所属的单位或学校名称2. 比赛项目表字段名称字段类型字段含义项目ID INT 唯一标识比赛项目的编号项目名称 VARCHAR(50) 比赛项目的名称项目类型 VARCHAR(50) 比赛项目的类型(田径、游泳、篮球等)项目难度系数 FLOAT 比赛项目的难度系数,用于计算总成绩时进行加权处理3. 比赛成绩表字段名称字段类型字段含义成绩ID INT 唯一标识比赛成绩的编号运动员ID INT 与运动员信息表相关联的外键,标识产生该成绩的运动员项目ID INT 与比赛项目表相关联的外键,标识该成绩所属的比赛项目成绩时间戳 TIMESTAMP 该成绩的记录时间(精确到秒)成绩分数 FLOAT 该成绩对应的分数值(根据项目难度系数计算得出)三、数据结构特点1. 分层设计:数据结构分为三个层次,分别是运动员信息层、比赛项目层和比赛成绩层,各层之间通过外键关联,便于进行数据查询和更新操作。

2. 数据完整性:通过外键关联确保了数据的完整性,即一个运动员只能对应一个成绩记录,一个成绩只能对应一个比赛项目。

3. 可扩展性:数据结构设计考虑了未来可能增加的字段和表,例如可以增加教练信息表、领队信息表等,便于对数据进行扩展和补充。

4. 数据灵活性:数据结构设计允许对字段进行灵活调整,例如可以根据需要增加或删除某些字段,以适应实际需求的变化。

运动会分数统计系统的设计与实现

运动会分数统计系统的设计与实现

运动会分数统计系统的设计与实现一、需求分析在运动会活动中,为了方便对各个参赛选手进行成绩的记录和统计,需要设计一个运动会分数统计系统。

该系统可以录入参赛选手的成绩,并对成绩进行统计和排序,以便于后续的奖项评定和排名。

二、系统设计1.数据库设计该系统需要一个数据库来存储参赛选手的相关信息和成绩数据。

数据库中应包含以下表:-参赛选手表:存储参赛选手的编号、姓名、性别、年龄等基本信息。

-成绩表:存储参赛选手的各个项目的成绩信息,包括项目名称、参赛选手编号、成绩等字段。

2.功能设计-参赛选手管理:实现对参赛选手的录入、修改和删除功能。

-成绩录入:实现对选手的成绩录入功能,包括指定项目、选择参赛选手和录入成绩等操作。

-成绩统计和排序:实现对成绩进行统计和排序功能,可以根据项目名称或成绩进行排序。

-成绩查询:实现对参赛选手的成绩查询功能,可以按照项目或参赛选手进行查询。

3.界面设计根据系统的功能需求,设计相应的界面进行用户操作。

可以使用图形界面或者命令行界面来实现,并提供相应的按钮、菜单或命令进行用户交互。

三、系统实现1.技术选择根据系统的需求,可以选择使用Java、C#等编程语言来实现系统。

数据库可以选择使用MySQL、Oracle等关系数据库来存储数据。

2.开发环境的搭建搭建相应的开发环境,包括安装相应的开发工具和数据库,并进行相应的配置。

3.数据库的创建和表的设计使用SQL语句创建相应的数据库和表,并进行相应的字段、主键和外键的设计。

4.界面的设计和编码根据系统的界面设计,使用相应的技术和工具进行界面的设计和编码。

可以使用Java Swing、C# WinForms等技术来实现图形界面,也可以使用命令行界面进行实现。

5.功能的实现和测试根据系统的功能需求,进行相应的功能实现和测试。

包括对参赛选手的管理、成绩录入、成绩统计和排序、成绩查询等功能的开发和测试。

四、系统部署和维护1.系统部署将开发完成的系统部署到实际运行环境中,并进行相关的配置和测试。

数据结构课程设计报告

数据结构课程设计报告

浙江师范大学数理与信息学院数据结构与算法分析报告班级:计算机051班曹玮(05190101)葛生生(05190107)董毅(04190107)指导老师:瞿有甜数理与信息工程学院《数据结构与算法设计》课程设计组号:无设计主题: 数据结构相关实现程序指导老师: 瞿有甜组长(学号): 曹玮(05190101)组员(学号):葛生生(05190107)、董毅(04190107)完成时间: 2007年1月26日需求分析:该程序实现菜单化、可视化、界面良好的输入和输出效果,各部分之间用模块连接。

第一部分模块实现输入功能,用户可根据提示按要求输入;在选择数字后,就进入了各个分模块中。

第一模块是约瑟夫环(Joseph)问题,这是一个模拟报数的问题,用户根据提示输入总的人数和要循环报的数,通过运行程序输出最后剩下的人的编号。

第二部分是有关二叉树的层序和先序遍历问题,输入结点数,建立二叉树,然后层序和先序输出结果。

第三部分是有关哈夫曼树的建立,输入要建立的哈夫曼树各结点的权值,按照最优生成树的建立方法建立哈夫曼树,最后输出最小全值。

第四部分是纸牌游戏,用户按要求输入和输出,这是一道典型的模拟题。

第五部分是有关图的广度优先遍历和深度优先遍历问题,输入各边的两端点和长度,建立存储结构,按两种方法输出。

第六部分是有关运动会分数统计的问题。

概要设计:第一部分:有关运动会分数统计的问题,涉及排序、搜索算法,用到结构体,链表的运用以及数组等数据结构,按要求实现即可。

第二部分:飞机定票系统,通过结构体,和两个单链表的运用完成飞机定票系统的各项功能设计,再在主函数里实现这些功能。

第三部分:约瑟夫环(Joseph)问题实际上是一个模拟问题,我们可以利用链表这一数据结构来求解,利用链表的删除结点来模拟人的退出,直到最后只剩下一个结点。

第四部分:猴子选大王的思想和约瑟夫环一样,不做分析。

第五部分:二叉树的层序和先序遍历问题,我们可以通过建立二叉树来实现这一要求,遍历可以用递归或非递归算法实现。

运动会得分统计课程设计

运动会得分统计课程设计

运动会得分统计课程设计一、课程目标知识目标:1. 学生能理解运动会得分统计的基本概念,掌握不同比赛项目的计分规则。

2. 学生能运用数学知识,如加、减、乘、除等运算,进行得分数据的计算和处理。

3. 学生了解并掌握制作统计图表的基本方法,能运用图表清晰展示运动会得分情况。

技能目标:1. 学生能运用信息技术工具,如电子表格软件,进行得分数据的录入、计算和整理。

2. 学生通过实际操作,提高数据处理和分析能力,培养解决问题的策略和技巧。

3. 学生通过小组合作,锻炼沟通协调能力,提升团队协作完成统计任务的能力。

情感态度价值观目标:1. 学生培养对数据的敏感性,认识到数据在现实生活中的重要作用。

2. 学生在统计过程中,学会尊重事实和数据,形成客观、公正的态度。

3. 学生通过参与运动会得分统计,增强集体荣誉感,培养积极参与学校活动的热情。

4. 学生在小组合作中,学会分享、互助,培养团队精神和合作意识。

本课程针对小学高年级学生设计,结合其年龄特点和认知水平,注重培养学生的实际操作能力和团队合作精神。

课程要求学生在掌握基本统计知识的基础上,能够将所学应用于实际情境,达到学以致用的目的。

通过本课程的学习,学生将能更好地理解数学与生活的紧密联系,提高综合运用知识解决实际问题的能力。

二、教学内容本章节教学内容主要包括以下几部分:1. 运动会得分统计的基本概念:介绍得分统计的定义、作用和意义,使学生了解运动会得分统计的基本要求。

2. 计分规则:根据不同比赛项目,讲解计分方法,如个人项目得分、团体项目得分、破纪录额外加分等。

3. 数据处理方法:结合数学知识,教授如何进行得分数据的收集、整理、计算和存储。

4. 统计图表制作:指导学生运用电子表格软件(如Microsoft Excel)制作柱状图、折线图等统计图表,直观展示得分情况。

5. 小组合作与分工:教授学生如何进行有效的小组合作,明确分工,提高统计工作效率。

教学内容与教材关联性如下:1. 《数学》教材中关于数据处理、统计图表制作等相关章节,为学生提供理论支持。

C运动会分数统计系统

C运动会分数统计系统

课程设计报告运动会分数统计系统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)。

每个项目结束时,将其编号输入,并按名次顺序输入运动员姓名、学校编号和成绩。

请用C/C++编写一系统,模拟运动会分数统计过程,软件应包括如下几个方面:(一)功能要求:(1)成绩输入:要求:可以输入各个项目的前三名或前五名的成绩。

(2)成绩查询:要求:可以按学校编号查询学校各项目情况;可以按项目编号查询取得前三名或前五名的学校。

(3)成绩统计:要求:能统计各学校总分。

(4)成绩排序:要求:可以按学校编号、学校总分、男女团体总分排序输出。

(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读;(2)至少采用文本菜单界面(如果能采用图形菜单界面更好);(3)学生可自动增加新功能模块(视情况可另外加分);(4)写出课程设计报告,具体要求见相关说明文档。

2 概要设计2.1 系统功能设计根据运动会分数统计系统问题的分析和设计要求,可以将该系统可以分为三个模块:信息统计模块、信息输出模块、信息查询模块,其系统功能结构图如图1所示。

(1)信息统计模实现信息的输入、统计。

(2)信息输出模块,实现信息的输出。

(3)信息查询实现信息的查询。

图1 系统功能结构图3.详细设计:毕业设计有困难?加QQ929486211(1)定义运动项目数据类型,用于存放运动项目,包括项目编号、项目所取名次数、名次、分数。

(2)定义学校数据类型,用来存储参赛学校信息,包括学校编号、学校总分、男团总分、女团总分、项目数组。

运动会分数统计C++

运动会分数统计C++

运动会分数统计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.用线性链表时应注意细节,指针的使用过程中很容易出错,从而达不到采用其起到的效果。

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

学号********数据结构课程设计设计说明书运动会分数统计起止日期:2011年1月10 日至2011 年1月15日学生姓名李翔班级08计算机2班成绩指导教师(签字)电子与信息工程系2011年1 月15 日目录目录一、设计目的 (1)二、设计要求 (1)三、设计内容(运动会分数统计查询系统) (1)(一)需求分析 (1)(二)概要设计 (2)(三)详细设计(源代码) (4)(四)测试数据及运行结果 (20)四、运行环境 (29)五、参考文献 (29)一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。

凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。

三、设计内容(运动会分数统计查询系统)(一)需求分析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)构造线性表的存储结构(简单一维线性表,广义二维表)。

具体包括:(1)运动会项目加初始化(2)录入运动会中各学校的成绩(3)计算各学校详细成绩以及排名可以将以上信息存储在线性表中(一维,二维)2)根据每个学生的名次确定相应的得分。

3)可以分别按男子团体总分,女子团体总分和团体总分降序输出各学校的成绩。

4)可以按学校编号查询学校某个项目的情况,也可以按项目编号查询取得前三或前五名的学校。

5)运动会的相关数据要可以存储在数据文件中(本系统提供的功能可以自己选择存储的文件名)。

此外,本系统还提供往届运动会成绩查询功能(磁盘文件读取)。

(二)概要设计1. 该程序包含两个核心结构体分别为:struct s //学校结构体,用来存储学校成绩{int bianhao; //学校的编号int balcore; //学校的男团总分int brank; // 学校男团排名int galcore; //学校的女团总分int grank; // 学校女团排名int alscore; //学校的团体总分int arank; //学校团体总排名};以学校结构体构造一维线性表,完成以学校编号查询,以学校团体、男团、女团总分排名等操作。

struct s_p //学校--项目对应关系数组单元(广义2维线性表){int attend; //是否在该项目取得名次char sex; //该项目性质'b'或'g'(冗余)int nature; //该项目取前几名(冗余)int NO; //在该项目中排名int score; //在该项目中得分};学校--项目结构体用来存储每一个学校对应的每—项目的相关数据,所以有必要依此构造二维线性表,本系统中以a[i][j]表示i号学校j号项目的相关成绩,这样该二维表既可以进行以学校为单位查询或统计、计算各种成绩,也可以以项目为单位查询在本项目中取得名次的学校编号(如果结合学校结构体还可以查询具体的信息)当然,我本来还可以定义一个关于编号结构体的一维线性表,但是其核心思想与学校结构体并无本质差异,而且如果要做具体查询,都要结合s_p 学校——项目结构体的二维表。

此外,鉴于本系统不涉及线性表删除、修改的功能应用。

本着节省空间的资源原则,两个线性表全部定义为动态,不定义最大长度,在建立线性表时再根据需要确定长度。

(s_p **a; s *B;)2.本程序包括4个模块:1>初始化项目信息(编号、取名次等情况)。

2>每个项目中取得名次的学校统计。

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

4>查询功能,用户按学校编号查询学校具体信息,按项目编号查询,存储本次运动会信息,以及查询已录入的往届运动会信息(须知道准确的存储文件的文件名)5>登录模块,为了数据安全,设置登录功能(本功能尚待完善)。

6>流程图设计:(附:登陆名:lixiang 密码:5211)(三)详细设计(源代码)//08710211.hstruct s_p //学校--项目对应关系数组单元(广义2维线性表){int attend; //是否在该项目取得名次char sex; //该项目性质'b'或'g'(冗余)int nature; //该项目取前几名(冗余)int NO; //在该项目中排名int score; //在该项目中得分};struct s{int bianhao; //学校的编号int balcore; //学校的男团总分int brank; // 学校男团排名int galcore; //学校的女团总分int grank; // 学校女团排名int alscore; //学校的团体总分int arank; //学校团体总排名};class yonghu{private:char name[100];double code;public:yonghu( char *a,double b){strcpy(name,a);code=b;}void chushi( char *a,double b);bool paiduan(char *a,double b);};class athelet{private:int m; //m个项目int b; //男子项目数int g; //女子项目数int n; //n个学校int t; //取前三名的项目数int *T; //记录取前三名的项目编号int *F; //记录取前五名的项目编号s_p **a; //定义学校——项目广义二维线性表(本次只在此两个线性表实现文件读写)s *B; //定义学校一维线性表(同上)bool sf;public:void chushi( ); //项目学校信息初始化void luruchengji(); //学校成绩录入void jisuan(); //学校排名计算void bianhao( ); //学校按编号排名void zongcore( ); //学校按总分排名void bscore(); //学校按男团总分排名void gscore(); //学校那女团总分void xuexiao_bianhao(); //学校按编号查询void xiangmu(); //按项目查询void W(char s); //功能函数void cun( ); //存盘函数void du( ); //读盘函数void test(); //综合测试void login( ); //登录};//08710211.cpp#include<iostream>#include<iomanip>#include<string>#include<fstream>#include <stdlib.h>#include"08710211.h"using namespace std;void yonghu::chushi( char *a,double b){strcpy(name,a);code=b;}bool yonghu::paiduan(char *a,double b){if(strcmp(a,name)==0&&b==code) return 1;else return 0;}void athelet::chushi( ){/*1.初始化项目*/L:cout<<"男子项目数:"<<endl; cin>>b;if(b<=0){cout<<"数据错误,请重新输入!!"<<endl;goto L;}J:cout<<"女子项目数:"<<endl; cin>>g;if(g<=0){cout<<"数据错误,请重新输入!!"<<endl;goto J;}m=b+g;cout<<"学校数:"<<endl;L1:cin>>n;if(n<5){cout<<"学校数据(不得少于5个)错误,请重新输入!!"<<endl;goto L1;}a=new s_p *[n+1];B=new s[n+1];for(int i=1;i<=n;i++)a[i]=new s_p[m+1];/*2.项目如何取名次的设置(取前3或前5)*/V:cout<<"请输入有几个项目取前三名"<<endl;cin>>t;if(t<=0||t>=m){cout<<"输入错误,请重新输入!!"<<endl;goto V;}T=new int[t+1]; //用来记录取前3名的项目编号F=new int[m-t+1]; //用来记录取前5名的项目编号L2:cout<<"请依此输入这"<<t<<"个项目的编号"<<endl;for(i=1;i<=t;i++){cin>>T[i];if(T[i]<=0||T[i]>=m){cout<<" 项目编号超出范围,请充值数据!!"<<endl;goto L2;}}cout<<"取前3名项目编号为:"<<endl;for(i=1;i<=t;i++)cout<<T[i]<<"号项目";cout<<endl;cout<<"取前5名项目编号为:"<<endl;//输出同时计算取前5名的项目的编号int k=1;for(i=1;i<=m;i++){int y=1;for(int j=1;j<=t;j++)if(i==T[j]) y=0;if(y==1) {F[k++]=i;cout<<F[k-1]<<"号项目";}}cout<<endl;/*对s_p a二维数组的初始化信息,默认情况下,nature是取前5名的*/for(i=1;i<=n;i++)for(int j=1;j<=m;j++){a[i][j].attend=0;a[i][j].nature=5;a[i][j].NO=0;a[i][j].score=0;if(j<=b)a[i][j].sex='b';else a[i][j].sex='g';}/*符合条件情况下,则nature修改为取前3名*/for(i=1;i<=n;i++)for(int j=1;j<=m;j++)for(int h=1;h<=t;h++){if(j==T[h]) a[i][j].nature=3;}/*测试数据的函数*/for(i=1;i<=n;i++){for(int j=1;j<=m;j++)cout<<a[i][j].nature<<a[i][j].sex<<" ";cout<<endl;}cout<<"项目初始化完毕!!!"<<endl<<endl;}void athelet::luruchengji(){/*1.(1号功能)录入成绩功能*//*取前3名项目的成绩*/cout<<"现在录入取前三名的项目的成绩:"<<endl;int one,two,three,four,five;for(int i=1;i<=t;i++){A1:cout<<T[i]<<"号项目的第1名学校编号为";cin>>one;if(one<=0||one>n) {cout<<"输入错误,请重新录入";goto A1;}//异常处理if(a[one][T[i]].attend==1) {cout<<"输入错误,请重新录入";goto A1;}//异常处理,下同a[one][T[i]].attend=1;a[one][T[i]].NO=1;a[one][T[i]].score=5;B1:cout<<T[i]<<"号项目的第2名学校编号为";cin>>two;if(two<=0||two>n) {cout<<"输入错误,请重新录入";goto B1;}//异常处理if(a[two][T[i]].attend==1) {cout<<"输入错误,请重新录入";goto B1;}a[two][T[i]].attend=1;a[two][T[i]].NO=2;a[two][T[i]].score=3;C1:cout<<T[i]<<"号项目的第3名学校编号为";cin>>three;if(three<=0||three>n) {cout<<"输入错误,请重新录入";goto C1;}//异常处理if(a[three][T[i]].attend==1){cout<<"输入错误,请重新录入";goto C1;}a[three][T[i]].attend=1;a[three][T[i]].NO=3;a[three][T[i]].score=2;}/*取前5名项目的成绩*/cout<<"现在录入取前5名的项目的成绩:"<<endl;for(i=1;i<=m-t;i++){o1:cout<<F[i]<<"号项目的第1名学校编号为";cin>>one;if(one<=0||one>n) {cout<<"输入错误,请重新录入";goto o1;}//异常处理if(a[one][F[i]].attend==1) {cout<<"输入错误!!请重新录入";goto o1;}a[one][F[i]].attend=1;a[one][F[i]].NO=1;a[one][F[i]].score=7;p:cout<<F[i]<<"号项目的第2名学校编号为"; cin>>two;if(two<=0||two>n) {cout<<"输入错误,请重新录入";goto p;}//异常处理if(a[two][F[i]].attend==1) {cout<<"输入错误!!请重新录入";goto p;}a[two][F[i]].attend=1;a[two][F[i]].NO=2;a[two][F[i]].score=5;q:cout<<F[i]<<"号项目的第3名学校编号为"; cin>>three;if(three<=0||three>n) {cout<<"输入错误,请重新录入";goto q;}//异常处理if(a[three][F[i]].attend==1) {cout<<"输入错误!!请重新录入";goto q;}a[three][F[i]].attend=1;a[three][F[i]].NO=3;a[three][F[i]].score=3;r:cout<<F[i]<<"号项目的第4名学校编号为"; cin>>four;if(four<=0||four>n) {cout<<"输入错误,请重新录入";goto r;}//异常处理if(a[four][F[i]].attend==1) {cout<<"输入错误!!请重新录入";goto r;}a[four][F[i]].attend=1;a[four][F[i]].NO=4;a[four][F[i]].score=2;S:cout<<F[i]<<"号项目的第5名学校编号为"; cin>>five;if(five<=0||five>n) {cout<<"输入错误,请重新录入";goto S;}//异常处理if(a[five][F[i]].attend==1) {cout<<"输入错误!!请重新录入";goto S;}a[five][F[i]].attend=1;a[five][F[i]].NO=5;a[five][F[i]].score=1;}cout<<"成绩录入完毕!!!"<<endl<<endl;}void athelet::jisuan(){/*(2号功能)统计各学校总分*//*学校数据初始化*/for(int i=1;i<=n;i++){B[i].bianhao=i;B[i].alscore=0;B[i].balcore=0;B[i].galcore=0;B[i].arank=B[i].brank=B[i].grank=0;}int sum;/*计算学校的男团总得分、女团总得分、总得分*/for(i=1;i<=n;i++){sum=0;for(int j=1;j<=b;j++){sum+=a[i][j].score;}B[i].balcore=sum;sum=0;for(j=b+1;j<=m;j++){sum+=a[i][j].score;}B[i].galcore=sum;B[i].alscore=B[i].balcore+B[i].galcore;}/*计算学校根据男团总得分的排名*/s temp;for(i=1;i<=n-1;i++)for(int j=i+1;j<=n;j++)if(B[i].balcore<B[j].balcore){temp=B[i];B[i]=B[j];B[j]=temp;}for(i=1;i<=n;i++) B[i].brank=i;/*计算学校根据女团总得分的排名*/for(i=1;i<=n-1;i++)for(int j=i+1;j<=n;j++)if(B[i].galcore<B[j].galcore){temp=B[i];B[i]=B[j];B[j]=temp;}for(i=1;i<=n;i++) B[i].grank=i;/*计算学校根据总得分的排名*/for(i=1;i<=n-1;i++)for(int j=i+1;j<=n;j++)if(B[i].alscore<B[j].alscore){temp=B[i];B[i]=B[j];B[j]=temp;}for(i=1;i<=n;i++) B[i].arank=i;cout<<"个学校积分、排名计算完毕!!!"<<endl<<endl;}void athelet::bianhao( ){/*可以查询任意编号学校的总分、男团总分、女团总分*//*按编号排序输出学校的总分、男团总分、女团总分*/for(int i=1;i<=n-1;i++)for(int j=i+1;j<=n;j++)if(B[i].bianhao>B[j].bianhao){s temp=B[i];B[i]=B[j];B[j]=temp;}/*按编号输出成绩*/cout<<"按编号输出:"<<endl;cout<<"学编号"<<setw(10)<<"团总分"<<setw(10)<<"团排名"<<setw(10)<<"男总分"<<setw(10) <<"男团排"<<setw(10)<<"女团总分"<<setw(10)<<"女团排"<<endl;for(i=1;i<=n;i++)for(int j=1;j<=n;j++)if(B[j].bianhao==i){cout<<B[j].bianhao<<setw(10)<<B[j].alscore<<setw(10)<<B[j].arank<<setw(10)<<B[j].balcore<<setw(10)<<B[j].brank<<setw(10)<<B[j].galcore<<setw(10)<<B[j].grank<<endl;}cout<<"按编号输出完毕!!!"<<endl<<endl;}void athelet::zongcore( ){/*按总得分排名输出成绩*//*按团总分排序输出学校的总分、男团总分、女团总分*/cout<<"按总得分排名输出:"<<endl;cout<<"学编号"<<setw(10)<<"团总分"<<setw(10)<<"团排名"<<setw(10)<<"男总分"<<setw(10) <<"男团排"<<setw(10)<<"女团总分"<<setw(10)<<"女团排"<<endl;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(B[j].arank==i){cout<<B[j].bianhao<<setw(10)<<B[j].alscore<<setw(10)<<B[j].arank<<setw(10)<<B[j].balcore<<setw(10)<<B[j].brank<<setw(10)<<B[j].galcore<<setw(10)<<B[j].grank<<endl;}cout<<"按团体总分排名书输出完毕!!!"<<endl<<endl;}void athelet::bscore(){/*按男团总分排序输出学校的总分、男团总分、女团总分*/cout<<"男排名"<<endl;cout<<"学编号"<<setw(10)<<"团总分"<<setw(10)<<"团排名"<<setw(10)<<"男总分"<<setw(10) <<"男团排"<<setw(10)<<"女团总分"<<setw(10)<<"女团排"<<endl;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(B[j].brank==i){cout<<B[j].bianhao<<setw(10)<<B[j].alscore<<setw(10)<<B[j].arank<<setw(10)<<B[j].balcore<<setw(10)<<B[j].brank<<setw(10)<<B[j].galcore<<setw(10)<<B[j].grank<<endl;}cout<<"按男子团体总分排名输出完毕!!!"<<endl<<endl;}void athelet::gscore(){/*按女团总分排序输出学校的总分、男团总分、女团总分*/cout<<"女排名"<<endl;cout<<"学编号"<<setw(10)<<"团总分"<<setw(10)<<"团排名"<<setw(10)<<"男总分"<<setw(10) <<"男团排"<<setw(10)<<"女团总分"<<setw(10)<<"女团排"<<endl;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(B[j].grank==i){cout<<B[j].bianhao<<setw(10)<<B[j].alscore<<setw(10)<<B[j].arank<<setw(10)<<B[j].balcore<<setw(10)<<B[j].brank<<setw(10)<<B[j].galcore<<setw(10)<<B[j].grank<<endl;}cout<<"按女子团体总分排名输出完毕!!!"<<endl<<endl;}void athelet::xuexiao_bianhao(){/*(4号功能)按学校编号查询学校某个项目的情况*/int M,N;E:cout<<"请输入学校编号"<<endl;cin>>M;if(M<=0||M>n) {cout<<"输入学校编号错误!!,请重新输入!!"<<endl;goto E;} U:cout<<"请输入"<<M<<"号学校的项目"<<endl;cin>>N;if(N<=0||N>m) {cout<<"输入项目编号错误!!,请重新输入!!"<<endl;goto U;} cout<<M<<"号学校"<<N<<"号项目的具体信息如下"<<endl;cout<<"学校号"<<setw(10)<<"项目号"<<setw(10)<<" 性质(g/b)"<<setw(10)<<" 是否取得名次(1/0)"<<setw(10)<<"取得名次"<<setw(10)<<"该项得分"<<endl;cout<<M<<setw(10)<<N<<setw(10)<<a[M][N].sex<<setw(10)<<a[M][N].attend<<setw(10)<<a[M][N].NO<<setw(10)<<a[M][N].score<<endl;cout<<"按学校查询完毕!!!"<<endl<<endl;}void athelet::xiangmu(){/*(最后的功能,5号功能)按项目编号查询取得前三或前五名的学校*/HH:cout<<"请输入要查询的项目号"<<endl;int N;cin>>N;if(N<=0||N>m) {cout<<"输入项目编号错误!!,请重新输入!!"<<endl;goto HH;}cout<<"学校编号"<<setw(18)<<"名次"<<setw(18)<<"分数"<<endl;for(int i=1;i<=n;i++){if(a[i][N].attend==1)cout<<i<<setw(18)<<a[i][N].NO<<setw(18)<<a[i][N].score<<endl;}cout<<"按项目查询完毕!!!"<<endl<<endl;}void athelet::W(char s){cout<<"请按任意字符继续......"<<endl;cin>>s;cout<<endl;}void athelet::cun( ){char name[100];char name1[100];cout<<"请输入存档文件的文件名!!"<<endl;cin>>name;strcpy(name1,name);/*一维线性表存入磁盘*/strcat(name,".txt");ofstream outfile,outfile1; //定义输出流对象outfile.open(name,ios::out); //以输出形式打开if(!outfile){cerr<<"open file error!"<<endl;abort ( );}outfile.write((char *)&n,sizeof(n));//n(学校数)存入文档for(int i=1;i<=n;i++)outfile.write((char *)&B[i],sizeof(s));outfile.close();/*二维线性表存入磁盘*/strcat(name1,".bat");outfile1.open(name1,ios::out);if(!outfile1){cerr<<"open file error!"<<endl;abort ( );}outfile1.write((char *)&m,sizeof(m));for( i=1;i<=n;i++)for(int j=1;j<=m;j++)outfile1.write((char *)&a[i][j],sizeof(s_p));outfile1.close();cout<<"存储完毕!!!"<<endl;}void athelet::du( ){sf=1;int t=0;char q[100];char q1[100];ss:if(t==5){cout<<"对不起,您的操作过多,必须强制退出!!!"<<endl;sf=0;return ;}cout<<"请输入您要查询的运动会存档文件名(输入0放弃查询)....."<<endl;cin>>q;strcpy(q1,q);/*一维线性表从磁盘读取*/strcat(q,".txt");ifstream infile; //定义输入流对象infile.open(q,ios::in); //以输入形式打开磁盘文件发txtif(!infile){cerr<<"文件未找到!!请重新输入文件名"<<endl;goto ss;t++;}//infile.read((char *)&m,sizeof(m));//m(项目数)从文件中取infile.read((char *)&n,sizeof(n));//n(学校数)从文档中取B=new s[n+1];for(int i=1;i<=n;i++)infile.read((char *)&B[i],sizeof(s));infile.close( );/*二维线性表从磁盘读取*/strcat(q1,".bat");ifstream infile1;infile1.open(q1,ios::in);if(!infile1){cerr<<"学校项目文件已丢失或已损坏!!请重新输入文件名"<<endl;goto ss;}infile1.read((char *)&m,sizeof(m));//m(项目数)从文件中取a=new s_p *[n+1];for( i=1;i<=n;i++)a[i]=new s_p[m+1];for( i=1;i<=n;i++)for(int j=1;j<=m;j++)infile1.read((char *)&a[i][j],sizeof(s_p));infile1.close();cout<<"你要查询的运动会成绩已成功打开!!"<<endl;}void athelet::test( ){char I='1';int H[3]={0,0,0};while(I!='0'){cout<<"\n\t 运动会成绩统计系统"<<endl;cout<<"\t 主菜单\t"<<endl;cout<<"****************************************"<<endl;cout<<"\t 1、运动会项目加初始化\t"<<endl;cout<<"\t 2、录入运动会中各学校的成绩\t"<<endl;cout<<"\t 3、计算个学校详细成绩以及排名\t"<<endl;cout<<"\t 4、按编号输出各学校成绩\t"<<endl;cout<<"\t 5、按团体总得分排名输出各学校成绩\t"<<endl;cout<<"\t 6、按男子团体总得分排名输出各学校成绩\t"<<endl;cout<<"\t 7、按女子团体总得分排名输出各学校成绩\t"<<endl;cout<<"\t 8、查询某一学校某一项目的成绩\t"<<endl;cout<<"\t 9、按项目编号查询该项目详细信息\t"<<endl;cout<<"\t A、本届运动会成绩存档\t"<<endl;cout<<"\t B、读取上届运动会成绩存档\t"<<endl;cout<<"\t 0、退出\t"<<endl;cout<<"***************************************"<<endl;cout<<"请输入你的选择:(0-5)"<<endl;cin>>I;char P;switch(I){case '1':if(H[0]==1) cout<<"初始化已完成,若想重置数据,请重新登录该系统!!"<<endl;else {chushi( );H[0]=1;}W( P);break;case '2':if(H[0]==1&&H[1]!=1) {luruchengji( );H[1]=1;}else cout<<" 本操作无法执行,请先执行项目初始化!!"<<endl;W( P);break;case '3':if(H[1]==1) {jisuan( );H[2]=1;}else cout<<" 本操作无法执行,请先执行项目初始化与成绩录入!!"<<endl;W( P);break;case '4':if(H[2]==1) bianhao( );else cout<<" 本操作无法执行,请先执行项目初始化、成绩录入与计算学校排名!!"<<endl;W( P);break;case '5':if(H[2]==1) zongcore( );else cout<<" 本操作无法执行,请先执行项目初始化、成绩录入与计算学校排名!!"<<endl;W( P);break;case '6':if(H[2]==1) bscore( );else cout<<" 本操作无法执行,请先执行项目初始化、成绩录入与计算学校排名!!"<<endl;W( P);break;case '7':if(H[2]==1) gscore( );else cout<<" 本操作无法执行,请先执行项目初始化、成绩录入与计算学校排名!!"<<endl;W( P);break;case '8':if(H[2]==1) xuexiao_bianhao( );else cout<<" 本操作无法执行,请先执行项目初始化、成绩录入与计算学校排名!!"<<endl;W( P);break;case '9':if(H[2]==1) xiangmu( );else cout<<" 本操作无法执行,请先执行项目初始化、成绩录入与计算学校排名!!"<<endl;W( P);break;/* */case 'A':if(H[2]==1)cun( );else cout<<" 本操作无法执行,请先执行项目初始化、成绩录入与计算学校排名!!"<<endl;W( P);break;case 'B':du( );if(sf==1)goto BB;W( P);break;/* */case '0':break;default:cout<<"选择错误,请再次选择!!!"<<endl;}}BB:while(I!='0'){cout<<"\n\t 往届运动会成绩查询系统"<<endl;cout<<"\t 主菜单\t"<<endl;cout<<"****************************************"<<endl;cout<<"\t 4、按编号输出各学校成绩\t"<<endl;cout<<"\t 5、按团体总得分排名输出各学校成绩\t"<<endl;cout<<"\t 6、按男子团体总得分排名输出各学校成绩\t"<<endl;cout<<"\t 7、按女子团体总得分排名输出各学校成绩\t"<<endl;cout<<"\t 8、查询某一学校某一项目的成绩\t"<<endl;cout<<"\t 9、按项目编号查询该项目详细信息\t"<<endl;cout<<"\t 0、退出\t"<<endl;cout<<"***************************************"<<endl;cout<<"请输入你的选择:(0-5)"<<endl;cin>>I;char P;switch(I){case '4': bianhao( );W( P);break;case '5': zongcore( );W( P);break;case '6': bscore( );W( P);break;case '7': gscore( );W( P);break;case '8': xuexiao_bianhao( );W( P);break;case '9': xiangmu( );W( P);break;case '0':break;default:cout<<"选择错误,请再次选择!!!"<<endl;}}}void athelet::login( ){char name[100];string E;yonghu D("lixiang",5211);double code;int Y=0;while(1){int i=0;if(t==5){cout<<"对不起,您的错误操作过多,必须强制退出!!!"<<endl;break ;}cout<<" 请输入用户名:"<<endl;cin>>name;cout<<" 请输入密码:"<<endl;cin>>code;if(D.paiduan(name,code)==1){cout<<"登录成功!!"<<endl;test( );}else {cout<<" 登录失败!!"<<endl;i++;}cout<<"请选择是否继续登录(0结束,否则继续登录):"<<endl;cin>>Y;if(Y==0) break;}}//main.cpp#include<iostream>#include"08710211.cpp"using namespace std;void main(){athelet TEST;TEST.login( );}(四)测试数据及运行结果:运动会分析学号08710211四、运行环境WindowsXP visual C++ 6.0五、参考文献1.王红梅.数据结构.清华大学出版社2.王红梅.数据结构学习辅导与实验指导.清华大学出版社3.严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社29。

相关文档
最新文档