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

一.问题及要求

【问题描述】 本次课程设计要求协助中国大学生计算机设计大赛江苏省组委会,设计一款赛事管理系统,实现赛务相关的数据管理及信息服务。

【基本要求】

(1)从team.txt中读取参赛队伍的基本信息,能够管理各参赛队的基本信息(包含参赛队编号,参赛作品名称,参赛学校,赛事类别,参赛者,指导老师),赛事类别共11项(参见大赛官网jsjds.blcu.edu.cn);包括增加、删除、修改参赛队伍的信息。

(2)实现基于二叉排序树的查找。根据提示输入参赛队编号,若查找成功,输出该赛事类别对应的基本信息(参赛作品名称、参赛学校、赛事类别、参赛者和指导老师信息),同时,输出查找成功时平均查找长度ASL;否则,输出“查找失败!”。请输出ASL(成功)的计算表达式和结果值。
(3)能够提供按参赛学校查询参赛团队,根据提示输入参赛学校名称,若查找成功,输出该学校参赛的所有团队的基本信息,输出的参赛团队需有序输出(按参赛队编号)。(排序算法可从选择排序、插入排序、希尔排序、归并排序、堆排序中任意选择,并为选择算法的原因做出说明。)

(4)为省赛现场设计一个决赛叫号系统。所有参赛队按赛事组织文件中的赛事类别分到9个决赛室,决赛室按顺序叫号,被叫号参赛队进场,比赛结束后,下一参赛队才能进赛场。请模拟决赛叫号系统,演示省赛现场各决赛室的参赛队进场情况。(模拟时,各参赛队进场比赛时间可设为0.5秒)

(5)赛事系统为参赛者提供赛地的校园导游程序。为参赛者提供各种路径导航的查询服务。以我校长山校区提供比赛场地为例,(请为参赛者提供不少于10个目标地的导航。可为参赛者提供校园地图中任意目标地(建筑物)相关信息的查询;提供图中任意目标地(建筑物)的问路查询,即查询任意两个目的地(建筑物)之间的一条最短的简单路径。

【设计要求】

(1)赛事数据要求存入文件(txt或excel)并能读入查询;

(2)赛地目的地查询,需提供目的地(建筑物)名称、代号、简介等信息;最短路径的输出需包含途经地及最短路径值。

(3)输入数据形式和范围:赛事相关数据可从键盘输入,或自文件导入。

(4)界面要求:交互设计要合理,每个功能可以设计菜单,用户根据提示,完成相关功能的要求。

【实现提示】

(1)分析任务,进行模块划分;

(2)定义数据结构,建议按照抽象数据类型的定义、表示和实现来描述,用类C语言(伪代码)来描述数据的存储表示和相应操作的具体实现过程。

(3)设计合适的算法来实现其功能,并绘制函数调用关系图

【测试数据】 要求使用全部合法数据,整体非法数据,局部非法数据。进行程序测试,以保证程序的健壮性。

二.需求分析


1、所需功能 

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

增加参赛队伍信息:收集参赛队伍的基本信息,并将其添加到系统中。
删除参赛队伍信息:根据参赛队编号删除相应的参赛队伍信息。
修改参赛队伍信息:根据参赛队编号选择要修改的参赛队伍,并允许更新相关信息。


(2).二叉排序树模块:

从文件(team.txt)中读取参赛队伍的基本信息,并构建二叉排序树数据结构。
实现基于二叉排序树的查找功能:根据参赛队编号在二叉排序树中进行查找,并返回对应赛事类别的基本信息。
计算平均查找长度(ASL):统计查找过程中访问节点的总数,计算平均查找长度。


(3).查询功能模块:

按参赛学校查询参赛团队:根据输入的参赛学校名称,输出该学校参赛的所有团队的基本信息。
按赛事类别查询参赛团队:根据输入的赛事类别,输出该类别的所有团队的基本信息。
排序功能:根据赛事类别对参赛团队进行排序,可选择选择排序、插入排序、希尔排序、归并排序或堆排序,需说明选择算法的原因。
决赛叫号系统模块:

(4).设计决赛叫号系统:根据赛事组织文件中的赛事类别将参赛队伍分配到9个决赛室。
模拟叫号和进场过程:按顺序叫号,展示叫号顺序与参赛队伍进场秩序的一致性。


(5).校园导游程序模块:

提供目标地导航信息查询:根据输入的目标地名称,查询并输出相关信息,包括名称、代号、简介等。
最短路径查询:根据输入的两个目标地名称,计算并输出它们之间的最短路径长度。

 无向带权图

2.类的结构

程序有三个包分别为:domain、service、 UI

      domain包下提供了两个类:

  • (1)View类是景点的抽象,生成的对象代表学校里的景点,具有私有属性:目的地的编号、名称以及目的地的介绍。
  • (2)MGraph类是图的数据结构,采用邻接矩阵表示,顶点数组中存放每一个目的地的对象,该类的构造方法初始化了图的结点和边。
  • Service包下提供了三个类:
  • (1)ShortestPathService类提供了求图中任意两个目的地之间的最短路径的Floyd算法。
  • (2)TourPathService类提供了求推荐游览路径(哈密尔顿路径)的马踏棋盘算法。
  • (3)ViewsService类用来展示各目的地的详细信息。
  • UI包中是Swing的一些组件类,该包下有提供了8个类用于实现GUI组件的组装以及功能的实现,同时其中的MainInterface类也是程序的入口,这里就不一一列举了。

3.模块功能描述

界面采用JTree进行选择,分为根结点:校园导游系统。叶子结点:校园概况、校园风光、问路查询和路径推荐,下面详细介绍每个叶子结点模块功能:

  1. 校园概况页面:进入程序默显示的页面,通过文本对校园的情况作了简短的介绍。
  2. 校园风光页面:该页面通过图片展示校园内部景点的信息,可以点击图片跳转窗口查看各个景点的详细介绍。
  3. 问路查询页面:用户通过下拉选项框选择出发地和目的地,系统会给出两景点间的最短路线和它的长度。
  4. 路径推荐页面:用户通过下拉选项框选择出发地,系统会给出不重复地游览所有景点一次的推荐路线。

三.重难点

  1. 数据存储于文件中
  2. 数据从文件中调用
  3. 数据更新后重新写入另一个文件中
  4. 路径重复问题
  5. 最短路径选择问题
  6. 路径始末方向的保存

四.编程语言

JAVA

五.开发工具

IDEA


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值