实践内容:
本次课程设计要求设计一款赛事管理系统,用于管理中国大学生计算机设计大赛江苏省组委会的省级赛事。系统需要实现赛务相关的数据管理和信息服务,解决以下问题:
管理参赛队的基本信息,包括参赛队编号、参赛作品名称、参赛学校、赛事类别、参赛者和指导老师。需要支持增加、删除和修改参赛队伍的信息。
从team.txt文件中读取参赛队伍的基本信息,并通过基于二叉排序树的查找功能实现按参赛队编号查找参赛队伍信息。如果查找成功,输出对应赛事类别的基本信息和平均查找长度(ASL);否则输出"查找失败!"。
提供按参赛学校或赛事类别查询参赛团队的功能。根据输入的参赛学校名称或赛事类别,输出该学校参赛的所有团队的基本信息,并按赛事类别有序输出。排序算法可以选择从选择排序、插入排序、希尔排序、归并排序、堆排序中的任意一种,并给出选择该算法的原因。
设计一个决赛叫号系统,模拟省赛现场的参赛队进场情况。参赛队根据赛事组织文件中的赛事类别分配到9个决赛室,按顺序叫号进场,比赛结束后才能进入下一参赛队。
提供赛地的校园导游程序,为参赛者提供路径导航的查询服务。以某校长山校区为例,提供不少于10个目标地的导航查询。参赛者可以查询任意两个目的地之间的最短路径,并查询校园地图中任意目标地的相关信息。
根据上述内容,我们可以将系统的功能分为以下五个模块:
-
参赛队伍管理模块:
- 数据结构:可以使用链表或数组进行参赛队伍信息的管理,每个节点或元素代表一个参赛队伍。
- 功能:
- 增加参赛队伍的信息。
- 删除参赛队伍的信息。
- 修改参赛队伍的信息。
-
参赛队伍查找模块:
- 数据结构:基于二叉排序树(Binary Search Tree)。
- 功能:
- 从文件中读取参赛队伍的基本信息,并构建二叉排序树。
- 实现按参赛队编号查找参赛队伍信息的功能。
- 如果查找成功,输出对应赛事类别的基本信息和平均查找长度(ASL);否则输出"查找失败!"。
-
参赛团队查询模块:
- 数据结构:根据选择的排序算法不同,可以使用数组或链表进行参赛团队信息的管理。
- 功能:
- 按参赛学校查询参赛团队的功能。
- 按赛事类别查询参赛团队的功能。
- 根据输入的参赛学校名称或赛事类别,输出该学校参赛的所有团队的基本信息,并按赛事类别有序输出。
-
决赛叫号系统模块:
- 数据结构:可以使用队列(Queue)进行参赛队伍的进场顺序管理。
- 功能:
- 按赛事类别将参赛队伍分配到9个决赛室。
- 按顺序叫号进场。
- 等待比赛结束后,才能进入下一参赛队。
-
校园导游程序模块:
- 数据结构:可以使用图(Graph)表示校园地图,每个目的地节点之间的路径权重代表距离。
- 功能:
- 提供路径导航的查询服务。
- 查询任意两个目的地之间的最短路径。
- 查询校园地图中任意目标地的相关信息。