问题定义
本次课程设计要求设计一款赛事管理系统,用于管理中国大学生计算机设计大赛江苏省组委会的省级赛事。系统需要实现赛务相关的数据管理和信息服务,解决以下问题:
- 管理参赛队的基本信息,包括参赛队编号、参赛作品名称、参赛学校、赛事类别、参赛者和指导老师。需要支持增加、删除和修改参赛队伍的信息。
- 从team.txt文件中读取参赛队伍的基本信息,并通过基于二叉排序树的查找功能实现按参赛队编号查找参赛队伍信息。如果查找成功,输出对应赛事类别的基本信息和平均查找长度(ASL);否则输出"查找失败!"。
- 提供按参赛学校或赛事类别查询参赛团队的功能。根据输入的参赛学校名称或赛事类别,输出该学校参赛的所有团队的基本信息,并按赛事类别有序输出。排序算法可以选择从选择排序、插入排序、希尔排序、归并排序、堆排序中的任意一种,并给出选择该算法的原因。
- 设计一个决赛叫号系统,模拟省赛现场的参赛队进场情况。参赛队根据赛事组织文件中的赛事类别分配到9个决赛室,按顺序叫号进场,比赛结束后才能进入下一参赛队。
- 提供赛地的校园导游程序,为参赛者提供路径导航的查询服务。以某校长山校区为例,提供不少于10个目标地的导航查询。参赛者可以查询任意两个目的地之间的最短路径,并查询校园地图中任意目标地的相关信息。
问题分析
针对以上需求,可以将系统的功能分为五个模块:参赛队伍管理模块、参赛队伍查找模块、参赛团队查询模块、决赛叫号系统模块和校园导游程序模块。
概要设计
-
参赛队伍管理模块:
- 提供添加参赛队伍信息的功能,包括参赛队编号、参赛作品名称、参赛学校、赛事类别、参赛者和指导老师。
- 提供删除参赛队伍信息的功能,根据参赛队编号删除相应的队伍信息。
- 提供修改参赛队伍信息的功能,根据参赛队编号选择要修改的队伍信息进行更新。
-
参赛队伍查找模块:
- 从team.txt文件中读取参赛队伍的基本信息,构建二叉排序树。
- 提供按参赛队编号查找的功能,根据输入的编号在二叉排序树中进行查找,如果查找成功,输出基本信息和平均查找长度(ASL);否则输出"查找失败!"。
-
参赛团队查询模块:
- 提供按参赛学校查询参赛团队的功能,根据输入的学校名称查询参赛的所有团队的基本信息,并按赛事类别进行排序输出。
- 提供按赛事类别查询参赛团队的功能,根据输入的赛事类别查询参赛的所有团队的基本信息,并按赛事类别进行排序输出。选择排序算法进行排序,因为在数据规模较小的情况下,选择排序简单且性能良好。
-
决赛叫号系统模块:
- 将参赛队伍按赛事类别分配到9个决赛室,按顺序叫号进场。
- 模拟决赛叫号过程,显示各决赛室的参赛队进场情况,确保叫号顺序与进场秩序一致。
-
校园导游程序模块:
- 提供校园地图中不少于10个目标地的导航查询服务,参赛者可以查询任意两个目的地之间的最短路径,并查询任意目标地的相关信息。
- 使用合适的图数据结构表示校园地图,例如图的邻接表表示法。
- 使用迪杰斯特拉算法计算最短路径,根据参赛者输入的起始点和目标点,输出最短路径和相关信息。