数据结构课程设计项目计划书

该项目计划设计一个赛事管理系统,包括参赛队信息管理、二叉排序树查找、学校或类别查询、决赛叫号模拟和校园导航服务。信息管理系统采用链表和归并排序优化数据操作,决赛叫号系统实现有序叫号流程,校园导游程序利用广度优先算法寻找最短路径。
摘要由CSDN通过智能技术生成

数据结构课程设计项目计划书

1. 项目背景

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

2. 项目要求

本次课程设计要求协助中国大学生计算机设计大赛江苏省组委会,设计一款赛事管理系统,实现赛务相关的数据管理及信息服务,该系统能够为省级赛事管理解决以下问题:

2.1 管理各参赛队的基本信息(见下表),实现增、删、改、查的功能

信息变量
参赛队编号ID
参赛作品名称name
参赛学校school
赛事类别category
参赛者participant
指导老师instructor

2.2 从team.txt(见下图)中读取参赛队伍的基本信息,实现基于二叉排序树的查找

  • 根据提示输入参赛队编号
  • 若查找成功,输出该参赛队基本信息,同时输出查找成功时的平均查找长度ASL
  • 否则,输出“查找失败!

在这里插入图片描述

2.3 根据参赛学校参赛类别查询该学校该类别所有的参赛团队

  • 根据提示输入参赛学校(或参赛类别)
  • 若查找成功,输出该学校(或该类别)的所有参赛队信息
  • 输出信息需要按参赛类别(或参赛学校)有序输出

2.4 设计决赛叫号系统

  • 共9个决赛室,决赛室按顺序叫号,被叫号参赛队进场,比赛结束后下一参赛队才能进场
  • 模拟决赛叫号系统,演示各决赛室进场情况,模拟时展示较好顺序与进场顺序一致

2.5 设计校园导游程序,为参赛者提供导航查询服务

  • 需要为参赛者提供任意两个目的地之间的最短路径
  • 长山校区地图与10个目的地的位置信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cjKei0Bl-1685549911850)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531202156354.png)]

目的地

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XIrtgB7I-1685549911850)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531202200481.png)]

选取10个目的地

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J25ix7A0-1685549911851)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531202233162.png)]

目的地与距离数学模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TUc4pm4L-1685549911851)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531202239895.png)]

3. 解决思路

整个系统可分为三个子系统:【信息管理系统】、【决赛叫号系统】、【校园导游系统】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ODpiVBQP-1685549911851)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531221528881.png)]

3.1 信息管理系统

【第一步】读取并封装原始数据,将参赛队的基本信息封装成类,每支参赛队构建一个对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TV08a7M4-1685549911852)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531205252323.png)]

【第二步】由于参赛队总数不确定,且需要随时增减参赛队数量,本项目采用链表来对所有参赛队进行管理。与数组相比,链表具有以下优点:

  • 物理地址非连续,内存利用率高
    • 如果增加参赛队,不用在数组后面预留空间,可以在任意地址新增数据
    • 如果删除某个参赛队,原本占有的数据空间可以直接释放
  • 插入删除速度快,仅需修改指针域next即可增加、删除节点
  • 大小不固定,可随意增减参赛队

但是同时,链表也需要注意以下缺点:

  • 不能随机查找数据,必须从第一个开始遍历,查找效率低

链表建模如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SSwJL0Gg-1685549911852)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531211408895.png)]

【第三步】增删改只需利用链表的增加节点、删减结点、节点定位即可

【第四步】根据参赛学校查询该学校所有参赛队信息,按赛事类别分组、按参赛队编号排序输出。下面需要进行排序算法的选择,首先对比分析选择排序、插入排序、希尔排序、归并排序和堆排序的优劣

算法时间复杂度数据规模
选择排序O(n^2)小规模
插入排序O(n^2)小规模
希尔排序介于O(n)和O(n^2)之间中等规模
归并排序O(nlogn)任意规模
堆排序O(nlogn)任意规模

从时间复杂度来看,选择排序、插入排序和希尔排序的时间复杂度都是O(n^2),而归并排序和堆排序的时间复杂度都是O(nlogn)。因此,在处理大规模数据集时,归并排序和堆排序具有更好的性能

从空间复杂度来看,选择排序、插入排序、希尔排序和堆排序的空间复杂度都是O(1),而归并排序的空间复杂度是O(n)。因此,如果内存空间有限,选择排序、插入排序、希尔排序和堆排序更适合

从算法稳定性来看,稳定的排序算法会保持相同元素的相对顺序不变。选择排序、希尔排序都不稳定,可能会破坏相同元素的相对顺序

五种算法的数据规模、时间复杂度、空间复杂度、算法稳定性性能对比如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZevjgJKX-1685549911852)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531220518391.png)]

本项目数据规模中等(排除选择排序)、优先考虑运算时间(在堆排序和归并排序中选择)、考虑算法稳定性,最终选择归并排序。

3.2 决赛叫号系统

  1. 分组工作

    • 将所有参赛队平均分配(尽可能)到9个决赛室,随机分配

    • 将每个房间的参赛队按参赛学校(第一级)、参赛编号(第二级)排序

  2. 叫号流程

    • 赛前等待阶段,统一显示“请等待”
    • 开始决赛,开始按顺序叫号“请xxxx学校xxxx参赛队入场”
    • 一小段时间后(用随机数)各决赛队伍加入决赛房间,每组显示10分钟(演示时可以采用20秒)
    • 某一组决赛结束,继续叫号“请xxxx学校xxxx参赛队入场”
    • 某一决赛室所有组别全部结束,显示“决赛毕”

3.3 校园导游系统

  1. 导航地点数学建模

    • 使用邻接矩阵对导航图进行建模:

      01000200000000
      100080150000000
      080001201100000
      200150005000000
      00120500001502300
      00110000806000
      0000080000100
      000015060009070
      00002300090050
      00000010070500

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lRbEKfje-1685549911852)(C:\Users\Chorgy\AppData\Roaming\Typora\typora-user-images\image-20230531202239895.png)]

  1. 找最短路径:需要找到相对最优解,采用广度优先算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值