数据结构课程设计预习报告——中国大学生计算机设计大赛省级赛事管理系统

一.背景介绍与任务描述

1.1背景介绍

中国大学生计算机设计大赛是我国高校面向本科生的计算机应用设计大赛,大赛旨在激发学生学习计算机知识和技能的兴趣与潜能,提高学生运用信息技术解决实际问题的综合能力。通过大赛这种计算机教学实践形式,可展示师生的教与学成果,最终以赛促学,以赛促教,以赛促创。该赛事在历届学生中影响力较大,参与者众多。

请了解该赛事组织及管理方式,利用数据结构课程所学的相关知识,为中国大学生计算机设计大赛江苏省组委会设计一个省级赛事管理系统。以2021年省赛数据为例,通过对数据的处理和分析,设计合理的数据结构对赛事相关的数据进行存储及处理。

1.2任务描述

设计一款赛事管理系统,实现赛务相关的数据管理及信息服务,该系统能够为省级赛事管理解决以下问题:

(1)赛事信息管理:从team.txt中读取参赛队伍的基本信息,设计合适的数据结构存储,能实现对参赛队伍的增加、修改和浏览。为参赛队伍分配一个分数为60~100之间的初赛成绩,并能实现参赛队伍的成绩查询(实现基于二叉排序树的查找)。设计合适的输入输出,根据提示输入参赛队编号,查询队伍的初赛成绩,若查找成功,输出该赛事类别对应的基本信息(参赛作品名称、参赛学校、赛事类别、参赛者和初赛成绩信息)。另外,输出全部参赛队的平均查找长度ASL。

(2)决赛现场模拟:首先进行决赛分组,生成决赛秩序册,供参赛队查询。根据赛事类别将参赛队伍分配到17个决赛室(编号为1~17)。秩序册中每个决赛室的进场顺序为初赛成绩降序排列。(排序算法从选择排序、插入排序、希尔排序、归并排序、堆排序中选择一种,并为选择该算法的原因做出说明)然后,模拟决赛秩序。比赛现场会设置大型候赛区,场地中有大屏以时间线动态展示各决赛室中正在决赛的队伍,侯赛的队伍及比赛结束的队伍信息。请编写程序模拟候赛区大屏上动态展示各参赛队候场、比赛中、比赛结束的状态。

(3)决赛地图导览:为参赛者提供决赛主办地的各种路径导航的查询服务,以我校长山校区提供比赛场地为例,为参赛者提供不少于12个目标地的导航。为参赛者提供校园地图中任意目标地(建筑物)相关信息的查询;提供图中任意目标地(建筑物)的问路查询。

1.3任务要求

(1)请根据任务描述的问题,设计合理的菜单,菜单交互设计要合理,便于用户根据提示使用系统的所有功能。

(2)赛事数据要求从文件(txt或excel)读入,修改后的信息能存入文件。

(3)第三个任务赛地目的地查询,需输出目的地(建筑物)名称、代号、简介等信息;最短路径的输出需包含途经地及最短路径值;并分析主要算法的时间复杂度。

(4)请自行设计测试数据。使用全部合法数据,整体非法数据,局部非法数据对程序测试,以保证程序的健壮性。

(5)编码时请注意规范代码结构,重要的变量,函数要有清晰的注释;注重代码的效率和可重用性,实现低耦合、高内聚,不要将各种功能混在一个方法中编写。

二.要求分析

任务一:赛事信息管理

需要的模块:

        参赛队伍信息管理与二叉排序树模块

        查询功能模块

具体要求分析:

(1)参赛信息管理模块:

要求:从team.txt中读取参赛队伍的基本信息

可添加fstream头文件,用其中的“>>”流操作提取符来读取文件,并将读取的数据保存起来。

要求:能实现队参赛队伍的增加,修改和浏览

用于我使用的是二叉排序树进行数据的存储,可调用二叉排序树类中的插入函数。同样的修改队伍的数据则需遍历二叉排序树找到需要更改的队伍,再进行数据的修改,修改后的数据要导入文件。浏览参赛队伍可对二叉排序树进行遍历并输出。

要求:为参赛队伍分配一个初赛成绩

引用头文件“cstdlib”和“ctime”,用sctdlib中的srand来生成随机数,用ctime中的time函数来获取系统时间,这样便可以产生一个随机数了,并且设置范围为60-100即可。

(2)查询功能模块

要求:输入参赛队编号,查询队伍的初赛成绩,若查找成功则输出赛事类别对应的基本信息

二叉排序树根据各队伍的编号进行构建,在查询到该队伍后,将结点中的各个队伍信息进行输出。

要求:输出全部参赛队的平均查找长度ASL

在成功查找一个队伍的成绩后,也会输出该队的平均查找长度。用查找该队的概率×查找过程中比较的次数来表示平均查找长度,输出ASL即可。

 

 

任务二:决赛现场模拟

需要的模块:

决赛叫号秩序模块

要求:进行决赛分组,生成决赛秩序册

导入分组后的数据,并将每一组的数据根据初赛成绩进行降序排序,将排序后的数据生成决赛秩序册。

要求:模拟候赛区大屏动态展示各参赛队候场,比赛中,比赛结束的状态

将各队伍的编号用队列存储,队列中的对头为比赛中状态,其他队伍为候场状态,当一个队出队列时便是比赛结束状态。

任务三:决赛地图导览

需要的模块:

校园导航模块

要求:目的地的导航

将地图抽象成带权无向图,将地图中的12个地点(包括比赛地点文理大楼和东苑西苑食堂)用顶点表示,给用户输出各地点的顶点序号,由用户来输入所在的地的序号和目的地的序号,用Dijkstra算法计算最短路径,并将所经过的各个顶点序号以及权值之和输出给用户。

要求:目的地信息查询

用户输入目的地的序号,系统输出目的地的名称,代号,简介等

 

 

 

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值