没有合适的资源?快使用搜索试试~ 我知道了~
首页数据结构课程设计——运动会分数统计
数据结构课程设计——运动会分数统计
需积分: 15 398 浏览量
更新于2023-03-03
评论 3
收藏 306KB DOC 举报
设计一个运动会统分程序,参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m<=20,n<=20)。可以输入各个项目的前三名或前五名的成绩,能统计各学校总分,可以按学校编号、学校总分、男女团体总分排序输出,可以按学校编号查询学校某个项目的情况;可以按项目编号查询取得前三或前五名的学校。
资源详情
资源评论
资源推荐

目 录
1 问题描述...................................................................................................................................................1
2 需求分析...................................................................................................................................................1
3 概要设计...................................................................................................................................................2
3.1 抽象数据类型定义.....................................................................................................................2
3.2 模块划分.....................................................................................................................................4
4 详细设计...................................................................................................................................................5
4.1 数据类型的定义.........................................................................................................................5
4.2 主要模块的算法描述................................................................................................................6
5 测试分析.................................................................................................................................................11
6 课程设计总结.........................................................................................................................................14
参考文献....................................................................................................................................................16
附录(源程序清单)................................................................................................................................17

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)学校个数用 n 存储、男子项目个数用 m 存储、女子项目个数用 w 存储,对于
运动会中的项目,把所有项目链接成一个头结点为 ITEM 的单链表,将所有
结点顺序存储在一个 ITEM a[MAX]一维数组中。对于运动会中的学校信息,
把所有学校信息链接成一个头结点为 SCHNode 的单链表,将所有结点顺序
存储在一个 SCHNode b[MAX]一维数组中。
(2)演示程序的输入输出形式为在输出设如备上显示输入提示后,由用户在输入、
备上输入相应数据(学校的个数、男子项目的个数、女子项目的个数)。在输
入数据之后,用户可以进行查询成绩的操作,包括:按学校编号查询项目、按
项目编号查询学校成绩;户还可以分别按学校编号、学校总分、男女团体总分
排序输出数据,然后进行数据保存操作。
(3)本程序执行命令包括:
① 结构体定义、链表的构造
② 输入相关数据
③ 按要求排序输出数据
④ 按要求查询相关记录
⑤Exit
(4)测试数据
m=3,w=2,n=5
1

项目 1 前五名:5 3 1 2 4
项目 2 前五名:3 5 4 2 1
项目 3 前五名:1 2 3 4 5
项目 4 前五名:1 5 2 4 3
项目 5 前五名:5 4 3 2 1
3 概要设计
3.1 抽象数据类型定义
(1)线性表的抽象数据类型定义
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=1,2, …,n }
基本操作:
InitList( &L )
操作结果:构造一个空的线性表 L。
DestroyList( &L )
初始条件:线性表 L 已存在。
操作结果:销毁线性表 L。
ClearList( &L )
初始条件:线性表 L 已存在。
操作结果:将 L 重置为空表。
ListEmpty( L )
初始条件:线性表 L 已存在。
操作结果:若 L 为空表,则返回 TRUE,否则返回 FALSE。
ListLength( L )
初始条件:线性表 L 已存在。
操作结果:返回 L 中数据元素个数。
GetElem( L, i, &e )
初始条件:线性表 L 已存在,1≦i≦ListLength(L)。
操作结果:用 e 返回 L 中第 i 个数据元素的值。
LocateElem( L, e, compare() )
2

初始条件:线性表 L 已存在,compare()是数据元素判定函数。
操作结果:返回 L 中第 1 个与 e 满足关系 compare()的数据元素的位序。若这样的
数据元素不存在,则返回值为 0。
PriorElem( L, cur_e, &pre_e )
初始条件:线性表 L 已存在。
操作结果:若 cur_e 是 L 的数据元素,且不是第一个,则用 pre_e 返回它的前驱,
否则操作失败,pre_e 无定义。
NextElem( L, cur_e, &next_e )
初始条件:线性表 L 已存在。
操作结果:若 cur_e 是 L 的数据元素,且不是最后一个,则用 next_e 返回它的后继,
否则操作失败,next_e 无定义。
ListInsert( &L, i, e )
初始条件:线性表 L 已存在,1≦i≦ListLength(L)+1。
操作结果:在 L 中第 i 个位置之前插入新的数据元素 e,L 的长度加 1。
ListDelete( &L, i, &e )
初始条件:线性表 L 已存在且非空,1≦i≦ListLength(L)。
操作结果:删除 L 的第 i 个数据元素,并用 e 返回其值,L 的长度减 1。
ListTraverse( L, visit() )
初始条件:线性表 L 已存在。
操作结果:依次对 L 的每个数据元素调用函数 visit()。一旦 visit()失败,则操作
败。
}ADT List
(2)运动会分数统计链表的抽象数据类型定义:
ADT Games{
数据对象:D={ai|ai∈TermSet,I=1,2,…,m, m≥0 TermSet 中的每个元
包含一个表示系数的实数和表示指数的整数 }
3

数据关系:R1={<ai-1,ai>| ai-1,ai∈D,且 ai<20}
基本操作:void funct1(ALLitems *g1,ALLNode *g2)
操作结果:输入输入运动会的一些基本信息(参赛学校数 n,男女的项目数 m、n
建立 g2->z,再建立学校和项目链表。
void funct2(ALLNode *g2)
初始条件:链表 g2 已存在。
操作结果:输出各学校的总分。
void funct3(ALLNode *g2)
初始条件:链表 g2 已存在。
操作结果:按学校编号排序输出。
void funct4(ALLNode *g2)
初始条件:链表 g2 已存在。
操作结果:按学校总分排序输出。
void funct5(ALLNode *g2)
初始条件:链表 g2 已存在。
操作结果:按男团体总分排序输出。
void funct6(ALLNode *g2)
初始条件:链表 g2 已存在。
操作结果:按女团体总分排序输出。
void funct7(ALLNode *g2)
初始条件:链表 g2 已存在。
操作结果:按学校编号查询学校某个项目情况。
void funct8(ALLNode *g2)
初始条件:链表 g2 已存在。
操作结果:按项目编号查询取得名次的学校 。
} ADT Games
3.2 模块划分
本程序共九个模块:
(1)主程序模块
main()
4
剩余25页未读,继续阅读














安全验证
文档复制为VIP权益,开通VIP直接复制

评论0