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

合集下载

运动会分数统计系统大数据结构课程设计

运动会分数统计系统大数据结构课程设计

石家庄经济学院华信学院课程设计报告学院:专业:班级:学号:姓名:运动会分数统计系统的设计与实现一.问题描述大学作为一个提供学生全面发展的高等教育机构,不仅要培养学生的学习能力,而且更要注重学生的德智体美全面发展。

在大学中有很多丰富多彩的比赛和活动,例如运动会,演讲比赛,歌唱比赛,书法比赛等,在比赛和竞争中,我们的这些素质和能力更容易得到培养提升。

但是比赛最后的分数统计和查询往往是举办者头疼的事情,分数的统计和查询需要快速准确,因此我们设计了这个运动会分数统计系统,以方便分数的统计查询。

参加运动会的n个学校编号为1~n。

比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。

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

写一个统计程序产生各种成绩单和得分报表。

二.需求分析系统功能描述:(1)可以输入各个项目的前三名或前五名的成绩;(2)能统计各学校总分;(3)可以按学校编号或名称、学校总分、男女团体总分排序输出;(4)可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。

三.概要设计3.1链表结构的ADT的定义ADT List{数据对象:D={a i|a i∈ElemSet,i=1,2,…,n,n≥0}数据关系:R1={<a i-1,a i>|a i-1,a i∈D,i=2,…,n}基本操作:InitList(&L)操作结果:构造一个空的线性表L。

GetElem(L,i,&e)初始条件:线性表L已存在,1≦i≦ListLength(L)操作结果:用e返回L中第i个数据元素的值。

LocateElem(L,e,compare())初始条件:线性表L已存在,compare()是数据元素判定函数。

操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。

数据结构运动会分数管理系统

数据结构运动会分数管理系统
#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.h>
typedef struct athlete
{
int n; //学院编号
char college[20]; //学院名称
int x; //运动员编号
p=q;
q=(comp)malloc(sizeof(com));
}
p->next=NULL;
}
i=1;
while(i!=0)
{
printf("\n**************************************************************************\n");
while(q!=NULL)
{
ch=q->m;
if(ch%3==0)
{
switch(q->score)
{
case 1:
sum1[(q->n)]=sum1[(q->n)]+5;
if((q->m)<=t)
sum2[(q->n)]=sum2[(q->n)]+5;
else
sum3[(q->n)]=sum3[(q->n)]+5;
else
sum3[(q->n)]=sum3[(q->n)]+1;
break;
}
}
q=q->next;
}
if(step==3 || step==4)

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

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

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

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

本文主要介绍了基于数据结构课程设计的运动会分数统计系统,使用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、收获:在完成本次实验中采用了线性数组存储信息,是我对这种存储方式有了更深的认识,也加深了掌握。

本次程序分为两大模块,使得程序清晰易懂,各模块具有良好的重要性,确实得到了良好的程序设计训练。

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

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

‘实验报告题目:运动会分数统计班级:14电子商务平台建设班完成日期:2015.10.10 学号:20141103468 姓名:孙少辉学号:20141103421 姓名:杨德龙学号:20141103407 姓名:柴益新一:需求分析参加运动会的n个学校编号为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,姓名长度不超过20个字符。

每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名、校名(和成绩)。

二:概要设计采用结构体二维数组存储方式产生各学校的成绩单,内容包括各校所取得的每项成绩的项目号、名次(成绩)、姓名和得分;产生团体总分报表,内容包括校号、男子团体总分、女子团体总分和团体总分。

三:详细设计1:数据结构的定义元素类型、变量、指针类型(1)项目数据表:运动会开始前必须详细制定本次运动会所需的参赛项目为接下来报名、场地的准备提供依据。

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

这也有利于以后项目情况的查询。

3.1结构体3.2子函数3:函数调用关系四:调试分析在调试的过程中,我们发现了在查询成绩功能是只能按照各个学校的编号进行查询选手,学校的成绩信息,查询功能有待健壮完善。

五:用户使用说明(1)首先运行文件运动会统计分数系统(2) 输入信息:1.输入学校数量→2.输入各个学校名称→3.男子运动项目数量→4.女子运动项目数量。

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

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

目录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、需求分析学校每次举行运动会都是用的原始的计分方式——笔和纸,难道在如今的信息时代里我们仍然不能摆脱这种古老而又麻烦的计分方式吗?我不信。

给我一台电脑,我会让计分从此变得简单,当然的加上我的程序。

这样一个实际而又稍显复杂的问题便迎刃而解了,当然让电脑做的东西必须是非常具体的:也就是说必须在特定的条件下,我的程序才能算出结果,为此我们把问题描述的更为具体,如下:参加运动会的n个学校编号为1~n,比赛分成m个男子项目和w个女子项目,项目编号分别为1~m和m+1~m+w。

有些项目取前五名,得分依次为6,4,3,2,1;有些项目取前三名,得分依次为4,2,1。

写一程序产生各学校的成绩单(包括各校所取得的每项成绩的项目号、成绩、姓名和得分)和团体总分报表(包括校号、男子团体总分、女子团体总分和团体总分)。

2、概要设计稍微分析了上面的问题,发现此问题的输入量有点大,如何处理好输入稍显复杂,我想就把输入和输出分别用一个函数模块,数据结构采用链表,创建链表也分为一个函数模块,再就是问题的关键所在——计算排名的函数模块,到此为止,问题分块已经完成。

这样问题立刻变得清晰明了:大致就是输入->创建链表->计算->输出。

考虑到输入的种种可能出现的错误,设计了各种应对方法,所以输入略显繁杂,但思路是清晰的:输入学校数目和项目数目,这个是下面输入的标准;输入各项目的排名,超过范围或者重复输入则重新输入;输入获奖学校,超出范围则重新输入;输入获奖运动员姓名;是否继续输入,是的话则返回继续输入;停止输入则跳出输入;进入计算函数;计算时按按项目号位为奇数时取前五名,项目号位为偶数时取前三名计算得分。

到这里问题基本结束了,就只要按链表输出计算结果就完成了,输出时先输出各校所以运动员得分情况,再输出总的排名情况。

好!退出主函数,问题结束。

流程图设计如下:由上图看来问题已被分解的相当清晰了,分析其条理,没有出项Bug 的可能,那么就让它实现吧。

运动会分数统计实验报告

运动会分数统计实验报告

运动会分数统计实验报告运动会分数统计实验报告一、引言运动会是学校中一项重要的体育活动,旨在促进学生的身心健康发展和团队合作精神。

而分数统计则是评估学生在各项比赛中的表现,为学校提供数据支持。

本实验旨在通过分数统计的实际操作,探索如何准确记录和分析运动会的成绩。

二、实验设计与方法1. 实验目标:了解分数统计的基本原则和方法,并通过实际操作掌握相关技巧。

2. 实验材料:计分表格、计分器、笔、纸等。

3. 实验步骤:a) 设计计分表格:根据运动会项目和规则,设计适用于各项比赛的计分表格,包括项目名称、参赛者姓名、成绩等栏目。

b) 实际操作:在模拟的运动会中,记录各个项目的比赛成绩。

使用计分器准确记录每位选手的成绩,并填写到相应的计分表格中。

c) 统计分析:根据计分表格,进行分数统计和分析。

计算每个项目的平均分、最高分、最低分等,并绘制相应的统计图表。

三、实验结果与讨论1. 计分表格设计:通过实验,我们发现设计合理的计分表格对于准确记录成绩非常重要。

在设计过程中,我们考虑了项目名称、参赛者姓名和成绩等要素,并合理设置了栏目的顺序和间距,以便于记录和查阅。

2. 分数统计与分析:通过实际操作和数据处理,我们得出了运动会各项目的平均分、最高分和最低分等数据。

例如,在田径比赛中,平均成绩为10.5秒,最高成绩为9.8秒,最低成绩为11.2秒。

这些数据可以帮助我们评估每个项目的整体水平和选手的个人表现。

3. 统计图表绘制:为了更直观地呈现数据,我们使用了柱状图和折线图等图表形式。

通过图表的绘制,我们可以清晰地看到各个项目的得分分布情况,进一步分析比赛的结果和趋势。

四、实验总结通过本次实验,我们深入了解了分数统计的原则和方法,并通过实际操作掌握了相关技巧。

我们发现设计合理的计分表格对于准确记录成绩非常重要,并且分数统计和分析能够为我们提供有价值的数据支持。

同时,通过绘制统计图表,我们可以更直观地呈现数据,进一步分析比赛结果。

运动会分数查询系统数据结构课程设计

运动会分数查询系统数据结构课程设计

14-15上13信息管理与信息系统1班《数据结构课程设计》“运动会分数系统”的设计与实现一、设计要求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)可以按学校编号查询学校某项目情况,可以按项目编号查询取得前三名或前五名的学校。

二、概要设计为了实现以上功能,可以从3个方面着手设计。

为了实现运动会分数统计系统,设计一个含有多个菜单项的主控菜单子程序以连接系统的各项子程序,方便用户使用本程序。

本系统主控菜单运行界面下图1所示:1.主界面设计图1 运动会分数系统主菜单2.存储结构设计本程序采用链式存储类型(LNode)存储运动会分数统计系统的节点信息。

运动会分数统校园导游系统设计第1 页共16 页14-15上13信息管理与信息系统1班《数据结构课程设计》计系统的链表中的结点包括8个域:项目编号域(objnum)、项目类型(objtype)、运动员编号(athnum)、运动员姓名(athname[20])、学校编号(schnum)、校名(schname[30])、运动员分数(athscore)和指向下一个节点的指针域(struct LNode *next)。

3.系统功能设计本系统设置了8个子功能菜单。

8个子功能的设计描述如下:(1)录入各项目的成绩。

由函数creatLink()实现。

当用户选择该功能时,系统会以用户输入的数据运动会分数统计链表。

(2)统计各学校分数。

由函数schoolScore()实现。

运动会分数统计报告模板.参考例子

运动会分数统计报告模板.参考例子

南京邮电大学通达学院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进行成绩统计,通过建立一个数据表格来记录各项目的参赛人员名单和成绩,实现成绩的自动计算和总结。

所需字段包括参赛项目、参赛人员、成绩等关键信息。

三、方案步骤1. 创建数据表格在Excel中创建一个新的工作表,设置合适的列标题,包括:参赛项目、参赛人员、成绩等。

根据实际需要,可以添加其他字段如学院、年级等。

2. 输入参赛人员名单将各参赛项目的参赛人员名单按照项目分类输入到表格中的“参赛人员”列中。

根据实际比赛情况,可以使用下拉列表等方式来简化输入过程。

确保每个参赛人员的姓名都只出现在一个项目中。

3. 输入比赛成绩在每个参赛项目对应的“成绩”列中输入每个参赛人员的成绩。

可以根据需要选择合适的格式,如时间、分数等。

若有未参赛选手或未获得成绩的情况,可以使用“--”或其他符号代替。

4. 计算总分根据比赛规则,计算每个参赛人员的总分。

可以使用Excel的函数和公式实现成绩的自动计算,并将结果显示在“总分”列中。

根据需要可以进行排序,以便于查看和排名。

5. 总结与分析根据项目和参赛人员的数量,可以使用Excel的自动筛选功能对成绩进行筛选和分析。

此外,也可以添加图表来直观地展示各个项目的成绩和排名情况。

这些功能能够帮助组织者更好地总结比赛结果。

四、方案要点1. 数据准确性在输入参赛人员名单和比赛成绩时,确保数据的准确性。

避免漏填或填写错误的信息,以免影响成绩的计算和排名结果。

2. 数据保密性比赛成绩是与个人隐私相关的敏感信息,应采取措施保护数据的安全性和保密性。

限制成绩表格的访问权限,仅授权人员可以查看和编辑数据。

3. 备份与存档定期对成绩数据进行备份和存档。

C语言数据结构大作业之运动会统计

C语言数据结构大作业之运动会统计

C语言数据结构课程设计之运动会统计一、【问题描述】:参加运动会有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) 可以按学校编号或名称、学校总分、男女团体总分排序输出;三、【测试数据】:对于n=4,m=3,w=2,姓名长度不超过20个字符。

每个项目结束时,将其编号、类型符(区分取前五名还是前三名)输入,并按名次顺序输入运动员姓名,校名和成绩。

四、【我的代码】:#include<stdio.h>#include<iostream>#include<math.h>#include<malloc.h>#include<string.h>#define status int#define Typelem int#define maxn 31//最大学校数目#define wmaxn 30//最大女子数目#define mmaxn 30//最大男子数目using namespace std;int n;//全局变量学校数目;int m;//全局变量男子数目int w;//全局变量女子数目typedef struct{int itemnum;//项目编号int flag;//取前几名int k;//取得的名次int score[wmaxn+mmaxn];//分数int rank[mmaxn+wmaxn];//名次char name[wmaxn+mmaxn][20];//学生的名字}itemnode;//建立项目节点typedef struct{int schoolnum;//学校编号int wscore;//女子项目总分int mscore;//男子项目总分int teamscore;//学校项目总分itemnode item[wmaxn+mmaxn];//项目数组}headnode;//建立项目节点headnode h[maxn];//定义头结点数组status input()//输入数据{printf("***************请输入******************\n");printf("学校数目:");cin>>n;printf("男子项目数目:");cin>>m;printf("女子项目数目:");cin>>w;for(int i=0;i<n;i++)//初始化头结点{h[i].teamscore=0;h[i].wscore=0;h[i].mscore=0;}for(int i=0;i<n;i++)//输入学校的数据{printf("请输入学校编号:");scanf("%d",&h[i].schoolnum);printf("*****请先输入男子项目再输入女子项目*****\n");for(int j=0;j<m+w;j++){printf("请输入项目编号:");cin>>h[i].item[j].itemnum;printf("取得几个名次:");cin>>h[i].item[j].k;printf("取前几名?(前三名或前五名):");cin>>h[i].item[j].flag;for(int l=0;l<h[i].item[j].k;l++)//初始化分数,姓名,名次{h[i].item[j].score[l]=0;h[i].item[j].rank[l]=0;//h[i].item[j].name[l]="0";printf("请输入第%d号项目第%d个名次的名次:",h[i].item[j].itemnum,l+1);cin>>h[i].item[j].rank[l];printf("请输入第%d号项目选手第%d个名次的选手姓名:",h[i].item[j].itemnum,l+1);scanf("%s",h[i].item[j].name[l]);if(h[i].item[j].flag==3)//根据取前几名计分{switch (h[i].item[j].rank[l]){case 0:h[i].item[j].score[l]=0;break;case 1:h[i].item[j].score[l]=5;break;case 2:h[i].item[j].score[l]=3;break;case 3:h[i].item[j].score[l]=2;break;}}else{switch (h[i].item[j].rank[l]){case 0:h[i].item[j].score[l]=0;break;case 1:h[i].item[j].score[l]=7;break;case 2:h[i].item[j].score[l]=5;break;case 3:h[i].item[j].score[l]=3;break;case 4:h[i].item[j].score[l]=2;break;case 5:h[i].item[j].score[l]=1;break;}}if(j<m)//男子项目加入男子项目总分h[i].mscore=h[i].mscore+h[i].item[j].score[l];else if(j>=m&&j<m+w)//女子项目加入女子总分h[i].wscore=h[i].wscore+h[i].item[j].score[l];}//cout<<"j="<<j<<endl;putchar('\n');}h[i].teamscore=h[i].wscore+h[i].mscore;//团体总分}}status output()//输出函数{printf("学校团体成绩统计如下:\n");for(int i=0;i<n;i++){printf("学校编号:-------%d\n",h[i].schoolnum);printf("学校团体总分:---%d\n",h[i].teamscore);printf("学校男团总分:---%d\n",h[i].mscore);printf("学校女团总分:---%d\n",h[i].wscore);}for(int i=0;i<n;i++){printf("第%d 号学校单项成绩统计如下:\n",h[i].schoolnum);for(int j=0;j<m+w;j++){if(j<m)printf("男子项目:\n");elseprintf("女子项目:\n");for(int l=0;l<h[i].item[j].k;l++){printf(" 项目编号:%d\n",h[i].item[j].itemnum);if(h[i].item[j].rank[l]!=0){printf(" 选手姓名:%s\n",h[i].item[j].name[l]);printf(" 项目排名:%d\n",h[i].item[j].rank[l]);printf(" 项目得分:%d\n",h[i].item[j].score[l]);}}}}}status main(){printf("*******************欢迎使用运动会成绩统计系统!**************\n");printf("======请输入各项数据=======\n");input();output();return 0;}五、【测试结果】:。

运动会成绩统计 实验报告

运动会成绩统计  实验报告

实验说明题目:运动会分数统计一.需求分析: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、函数调用关系:开始InitSCH(&S2,n)input(&S1,n,m,w)mark(&S1,&S2,n,m,w)output(S1,S2)结束四.调试分析1.用线性链表时应注意细节,指针的使用过程中很容易出错,从而达不到采用其起到的效果。

运动会分数统计系统数据结构课程设计论文

运动会分数统计系统数据结构课程设计论文
4)培养算法分析能力。分析所设计算法的时间复杂度和空间复杂度,进一步提高程序设计水平。
5)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
1.2 课程设计内容
问题描述:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)
10
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
5
符合本专业相关规范或规定要求;规范化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。
11
创新
10
对前人工作有改进或突破,或有独特见解。
课题工作量
7
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。
关键字:运动会,计分系统,数据结构,程序
1
1.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.系统部署将开发完成的系统部署到实际运行环境中,并进行相关的配置和测试。

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

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

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

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

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

在课程设计中,程序设计语言采用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。

Visual C++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。

Visual C++ 6.0提供的控制台应用程序对学习和掌握标准C++内容非常有利。

“可视”的资源编辑器与MFC类以及应用程序向导,为快速高效地开发出功能强大的Windows应用程序提供了极大的方便。

利用Visual C++ 6.0进行Internet、数据库及多媒体等多方面的程序开发也很容易。

本课程设计采用了C++。

C++语言是在C语言的基础上发展起来的,不仅继承了C语言的所有特点,而且引入了面向对象的程序设计方法,改进了程序涉及思路,将编程方式进化到面向对象进行程序设计这一新的思维过程。

C++语言代表着对以往语言之精华的发展和提炼,并能很好的与C语言兼容,既支持面向对象的程序设计,也支持结构化的程序设计。

它修补了C语言中的一些漏洞,提供更好的类型检查和编译时的分析,提供了异常处理机制,简化了程序的出错处理,利用throw、try和catch关键字,出错处理程序不必与正常的代码紧密结合,提高了程序的可靠性和可读性。

函数重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。

提供了模板机制。

摸板包括类摸板和函数模板两种,它们将数据类型作为参数。

对于具体数据类型,编译器自动生成模板类或模板函数,它提供了源代码复用的一种手段。

2概要设计2.1 程序功能说明该程序用于运动会上,涉及到比赛项目成绩的录入,某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除,以及某个学校所有获得成绩的得分报表以及团体成绩的得分报表。

其中比赛成绩的录入可以按照运动项目举行的次序输入,也可以输入自己指定的运动项目的成绩;自己扩展的功能是“某个学校在某个项目中获得成绩的查询,某个学校在某个运动项目中获得的成绩的修改,某个学校在某个运动项目中获得的成绩的删除”三项,这三项都要求输入学校以及运动项目编号,通过这两项作为参数具体的函数可以查询、修改成绩或者是删除某项成绩记录,进而影响到最后得分报表的输出。

2.2 数据结构设计创建了学生成绩记录结点:struct RE // 学生成绩记录{int iterm; //项目编号int pos; //名次int score; //成绩int snum; //学校编号char name[10]; //学生姓名RE *next;};RE sc[20]={0};其中具体的操作主要采用的是一个链表的结构,涉及到了链表的插入,链表的查找,以及链表的删除等知识点。

链表的插入解决了各个项目中获得名次的同学的成绩的录入问题;链表的查找解决了运动项目成绩的查询;成绩的删除,先查找到其所在的结点,然后将该结点前后结点相连,再删除该结点。

2.3 函数及变量说明void insertlist(int iterm,int n); 该函数用来添加成绩记录,iterm 是运动项目的编号,n为参加比赛的学校总数,需要注意地是根据运动项目是奇数还是偶数来判定最后结果取前三还是前五名,这里用(iterm%2)是否为零来判断。

RE *findlist(int snum,int fiterm); 该函数用来查找指定的学校的某项目成绩并返回该成绩所在节点的前一个节点的地址,其中snum是要查找的学校的编号,而fiterm为要查找的运动项目编号,返回一个指向RE型的指针,RE为定义的一个结构体类型,用来存储获得名次的学生的基本信息(包括学生姓名,取得的名次,获得的分数,所在的学校编号以及运动项目编号)。

RE *findend(int snum); 查找并返回每个学校的最后一个数据节点的地址,函数返回类型同上,snum为学校编号。

void printlist1(int snum); 输出每项具体的成绩,snum为学校编号。

void printlist2(int snum,int m,int w); 输出团体成绩,m为男生项目数,w为女生项目数。

void modlist(int snum,int miterm); 修改成绩 miterm为要修改的项目编号void deletelist(int snum,int diterm); 删除成绩记录,diterm为要删除的项目编号还有主函数void main( )里用一个嵌套在do—while循环语句中的switch 语句来控制要执行操作的编号,用户可以有多种选择,根据不同的需要选择不同的操作,这个也很关键。

3详细设计和实现3.1 系统功能模块系统功能模块如下:图3.1 系统功能模块图3.2 算法原理该程序先采用了一个嵌套在do—while循环语句中的switch语句来控制要执行操作的编号,用户可以有多种选择,根据不同的需要选择不同的操作。

其中具体的操作主要采用的是一个链表的结构,涉及到了链表的插入,链表的查找,以及链表的删除等知识点。

链表的插入解决了各个项目中获得名次的同学的成绩的录入问题,具体为:为每个学校建立一个头结点,若该学校有同学取得名次,建立一个新的结点来存储该同学的信息,并将其插到该学校所在链表的最后一个结点后面。

链表的查找解决了运动项目成绩的查询,以及后面的成绩的输出、删除都要用到链表的查找,查找时先将头结点的地址赋给查找函数,根据查找的条件依次与每个结点中相应的比较,若相等则输出所需要的信息,否则返回“查找的元素不存在”信息。

而成绩的删除,先查找到其所在的结点,然后将该结点前后结点相连,再删除该结点;成绩的修改要先查找到其所在的结点,然后再重新录入数据;至于学校所获得的各项成绩的输出,将该校所在的头结点的地址赋给控制输出的函数,利用指针的移动依次将各项成绩输出,而团体成绩的输出,先要根据运动项目编号来确定是男生还是女生项目,然后再依次累加,分别得到男女生的团体得分,最后将两者相加,得到学校的团体得分。

3.3 流程图4调试与操作说明4.1调试过程中出现的问题及处理方式在void printlist1(int snum)函数中,当将要输出成绩的学校所在的链表的头结点所指向的下一个结点的地址赋给temp的时候,RE *temp;temp=&sc[snum-1];temp=temp->next;要检测temp是否为NULL,如果为NULL会发生溢出,程序无法向下继续进行解决的方法是加上if(temp==NULL)cout<<"该学校在该项目上没有取得任何成绩"<<endl;此句可以有效的防止溢出发生此类问题还发生在void printlist2(int snum,int m,int w)和void modlist(int snum,int miterm)里面,在后面的那个函数里面RE *curr=findlist(snum,miterm);在这个赋值语句后面也要跟上if(curr==NULL) return;curr=curr->next;if(curr==NULL) {cout<<"该学校在该项目上没有任何成绩记录"<<endl;return;}这也是为了防止溢出的发生而设定的条件。

在插入结点的时候是将其直接插到该学校所在链表的最后,因此需要找到每个学校所在链表的最后一个结点的地址,而函数RE *findlist(int snum,int fiterm); 只是返回需要查找的结点的地址,不一定是最后一个结点解决办法是重新定义一个函数,RE *findend(int snum);尽管这样在效率上可能会有些差,因为每次插入的时候都要从头结点开始查找,时间上的开销会大一些,但还是可以解决上述问题的此外,还有一些就是细节问题了,如:主函数中的if(num>6||num<0) {cout<<"输入有误,请重新输入要操作的项目编号"<<endl;cin>>num;}这个if语句判断输入的操作编号是否在目录中,如果超出范围重新输入;还有函数void insertlist(int iterm,int n)里面在用new申请空间的时候为防止内存分配空间错误用下面的语句来监控if(temp==NULL)cout<<"内存分配错误"<<endl;以及函数void insertlist(int iterm,int n)里面在输入学校编号的时候用下面的if语句判断输入的学校编号是否符合要求,如果超出范围重新输入if(temp->snum>n) {cout<<"输入的学校编号有误,请重新输入"<<endl;cin>>temp->snum;}4.2运行界面图4.1 初始运行界面图4.2 输入具体项目成绩的界面图4.3 查找成功的界面图4.4 修改成绩的界面图4.5 编号为1的学校的成绩单界面图4.6 编号为1的学校的团体得分报表界面总结这次课程设计使我对做系统的认识深刻了许多。

相关文档
最新文档