赛事管理系统的预习日志

该系统设计用于管理中国计算机设计大赛江苏省的比赛信息,包括队伍管理、基于二叉排序树的查找、按学校或类别查询、决赛叫号模拟及校园导游服务。采用二叉树实现高效查找,提供多种查询和排序算法,同时具备数据存取和交互界面设计。
摘要由CSDN通过智能技术生成

本系统用于管理中国计算机设计大赛江苏省组委会的赛事信息 

一、问题定义描述及要求

1.问题描述

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

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

2)从team.txt中读取参赛队伍的基本信息,实现基于二叉排序树的查找。根据提示输入参赛队编号,若查找成功,输出该赛事类别对应的基本信息(参赛作品名称、参赛学校、赛事类别、参赛者和指导老师信息),同时,输出查找成功时的平均查找长度ASL;否则,输出“查找失败!”。

3)能够提供按参赛学校查询参赛团队(或根据赛事类别查询参赛团队),即,根据提示输入参赛学校名称(赛事类别),若查找成功,输出该学校参赛的(该赛事类别的)所有团队的基本信息,输出的参赛团队按赛事类别有序输出。(排序算法可从选择排序、插入排序、希尔排序、归并排序、堆排序中任意选择,并为选择算法的原因做出说明。)

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

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

2.设计要求

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

2)赛地目的地查询,需提供目的地(建筑物)名称、代号、简介、两地之间路径长度等信息;

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

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


二、问题分析

1.管理读取参赛队信息

创建并定义参赛队对象,成员变量为参赛队编号、参赛作品名称、参赛学校、赛事类别、参赛者和指导老师等。为队伍对象设计构造函数,用于初始化对象的属性。实现对队伍对象的增删改查,

2.按编号、具体信息查找排序

 在主函数中读取参赛队伍文件的基本信息,传入参赛队对象的属性中。创建二叉树类,并将对象按编号插入二叉树各节点,实现基于二叉排序树的查找。创建函数输出搜索信息、平均查找长度。根据参赛学校或赛事类别查询参赛团队,使用快速排序,按赛事类别有序进行输出。

3.决赛叫号系统

4.校园导游系统

三、概要设计 

定义一个 Team 类来存储参赛队伍的基本信息:

class Team {
    private String teamID;//参赛队编号
    private String name;//参赛作品名称
    private String school;//参赛学校
    private String category;//赛事类别
    private String members;//参赛者
    private String teacher;//指导老师
 
    public Team(String teamID, String name, String school, String category, String members, String teacher) {
        this.teamID = teamID;
        this.name = name;
        this.school = school;
        this.category = category;
        this.members = members;
        this.teacher = teacher;
    }

接下来,我们从 team.txt 文件中读取参赛队伍的基本信息,并将其存储在二叉树中。

然后,我们需要定义一个二叉排序树的节点类 ,以实现基于二叉排序树的查找功能。

接下来,我们可以实现一个二叉排序树的类 BST,并在其中实现查找功能。

class BSTNode {
    Team team;
    BSTNode left;
    BSTNode right;
 
    public BSTNode(Team team) {
        this.team = team;
    }
}
 
class BST {
    BSTNode root;
 
    /*...*/
}

现在我们已经将参赛队伍的信息存储在bst二叉树中,接下来我们可以实现增加、删除、修改参赛队伍的信息的功能。

public class TeamManagement {
 
    //读取txt,存到二叉树里
    private static BinarySearchTree bst = new BinarySearchTree();
 
    //展示所有
    private static void displayAllTeams() {...}
 
    //按编号查
    private static void searchTeam() {...}
 
    //增加记录
    private static void addTeam() {...}
 
    //删
    private static void deleteTeam() {...}
 
    //改
    private static void modifyTeam() {...}
 
}

以下是校园地图以及无向带权图:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值