1.问题定义
开发一个赛事管理系统,实现赛事相关的数据管理和信息服务,包括参赛队的信息管理,基于二叉排序树的查找,参赛团队的查询和排序,决赛叫号系统模拟,以及校园导航系统。
2.问题分析
本次课程设计的主要目标是设计一款赛事管理系统,实现赛务相关的数据管理及信息服务,以解决中国大学生计算机设计大赛江苏省组委会在省级赛事管理中遇到的问题。具体要求如下:
1.管理参赛队的基本信息,包括参赛队编号、参赛作品名称、参赛学校、赛事类别、参赛者和指导老师。需要支持增加、删除和修改参赛队伍的信息。
2.从"team.txt"文件中读取参赛队伍的基本信息,并基于二叉排序树进行查找。根据输入的参赛队编号,如果查找成功,则输出该赛事类别对应的基本信息,并计算平均查找长度ASL;否则,输出"查找失败!"。
3.提供按参赛学校查询参赛团队(或根据赛事类别查询参赛团队)的功能。根据输入的参赛学校名称(或赛事类别),如果查找成功,则输出该学校参赛的(该赛事类别的)所有团队的基本信息,并按赛事类别有序输出。排序算法可以选择从选择排序、插入排序、希尔排序、归并排序、堆排序中的任意一种,并需要给出选择算法的原因。
4.设计一个决赛叫号系统,模拟省赛现场各决赛室的参赛队进场情况。参赛队按赛事组织文件中的赛事类别分配到9个决赛室,按顺序叫号,被叫号参赛队进场,比赛结束后,下一参赛队才能进赛场。需要能够直观展示叫号顺序与进场秩序的一致性。
5.提供赛地的校园导游程序,包括路径导航的查询服务。以指定校区为例,需要提供不少于10个目标地的导航,并提供任意两个目标地之间的最短路径查询。
3.概要设计:
根据问题分析,可以将赛事管理系统设计为以下几个模块:
1.参赛队伍管理模块:负责参赛队伍的增加、删除和修改操作,以及参赛队伍信息的存储和读取。
2.参赛队伍查询模块:基于二叉排序树实现参赛队伍的查找功能,并计算平均查找长度ASL。
3.参赛学校查询模块:根据参赛学校名称(或赛事类别),查询并输出相关参赛团队的信息,并使用排序算法对输出结果进行排序。
4.决赛叫号系统模块:模拟决赛叫号系统,实现参赛队伍按顺序进场。
5.赛地导游模块:提供赛地的校园导游程序,包括目标地信息查询和最短路径查询功能。
每个模块可以设计相应的函数来实现其功能,通过合理的交互设计,将功能组织成菜单形式供用户选择。在设计算法时,可以选择合适的数据结构和排序算法来满足功能需求,并绘制函数调用关系图来描述各个模块之间的关系。