数据结构结课设计预习日志

问题分析:

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

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

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

(3)决赛地图导览:为参赛者提供决赛主办地的各种路径导航的查询服务,以我校长山校区提供比赛场地为例,为参赛者提供不少于12个目标地的导航。为参赛者提供校园地图中任意目标地(建筑物)相关信息的查询;提供图中任意目标地(建筑物)的问路查询。信息初始化和构建二叉排序树      我使用结构体class类来创建队伍的基本信息对象,我先定义一个class对象Team来定义参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师等基本信息定义一个二叉排序树的结点结构体struct TreeNode,其中包含一个队伍对象和指向左右子节点的指针。

struct TreeNode{

Team team;

TreeNode* left;

TreeNode* right;

};

文件操作      

打开文件后,使用getline函数,逐行读取,然后在使用while循环,如果遇到#就停止,然后将数据压入到vector类型的items当中,然后如果items当中的函数如果有六个元素,那么元素就一个一个插入到a当中,然后将a插入到teamsall和二叉排序树中队伍管理模块其中addteam()

队伍管理模块

其中addteam()和deletefile(),还有revise()函数是对文件进行操作,addteam()向文件中插入新的数据,deletefile()是删除指定元素,revise()函数是修改指定的元素,而addteam2()和deleteteam(),还有reworkteam()函数是对vector类型变量进行操作,addteam2()是向vector中加入Team类型的变量,而deleteteam()便是删除指定元素reworkteam()是修改指定的vector类型的变量队伍查询模块

1.根据提示输入参赛编号2.插入排序的查询输出(根据学校名称查询)对于按参赛学校查询,需要遍历完整容器来寻找符合条件的参赛团队;对于按赛事类别查询,可以直接使用teamID容器根据键值查找符合条件的参赛团队,按赛事类别有序输出结果,可以使用插入排序算法将参赛团队按赛事类别排序后输出结果。

决赛叫号系统

 

读取赛事组织文件中的参赛队信息,将其按照赛事类别分到各个决赛室的待叫号队列中。

先选择赛区,看看是要拿输出哪个赛区。

此时输出赛区的数字,然后输出赛区的叫号顺序,然后开始叫号后,一秒一秒地输出赛区的参赛队伍编号。

1.先在函数外面创建17个决赛区
vector<Team> a1;
vector<Team> a2;
vector<Team> a3;
vector<Team> a4;
vector<Team> a5;
vector<Team> a6;
vector<Team> a7;
vector<Team> a8;
vector<Team> a9;

vector<Team> a10;
vector<Team> a11;
vector<Team> a12;
vector<Team> a13;
vector<Team> a14;
vector<Team> a15;
vector<Team> a16;
vector<Team> a17;

2.把31个项目分别分成17个决赛区

3.先输出进场顺序

4.最后模拟叫号,一秒一秒地输出赛区的参赛队伍编号,只到最后输出完毕为止。然后返回系统界面。

校园导游系统

7b802062b93d4a2a838415ee8837195e.png

无向图的建立与输出 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值