数据结构课设预习报告

1 问题定义

  1.1 从team.txt中读取参赛队伍的基本信息,能够管理各参赛队的基本信息,赛事类别共11项;包括增加、删除、修改参赛队伍的信息。

1.2 实现基于二叉排序树的查找。根据提示输入参赛队编号,若查找成功,输出该赛事类别对应的基本信息,同时,输出查找成功时的平均查找长度ASL;否则,输出“查找失败!”。请输出ASL的计算表达式和结果值。

1.3 能够提供按参赛学校查询参赛团队,根据提示输入参赛学校名称,若查找成功,输出该学校参赛的所有团队的基本信息,输出的参赛团队需有序输出。

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

1.5 赛事系统为参赛者提供赛地的校园导游程序。为参赛者提供各种路径导航的查询服务。可为参赛者提供校园地图中任意目标地相关信息的查询;提供图中任意目标地的问路查询,即查询任意两个目的地之间的一条最短的简单路径。

2 问题分析

2.1 需要从文件中读取字符串行,参赛队伍的六项信息由#字符进行分隔。同时要能够对参赛队伍信息进行增删改查,并且能够将变动写入文件中;文件操作需要用到文件流,使用列表临时存储参赛队伍信息。

2.2 利用数据建立二叉排序树,实现节点的插入,并且能够对树进行中序遍历查找,查找同时计算ASL。

2.3 通过参赛学校查找多个符合的参赛团队,并在输出前对查找到的符合条件的参赛团队按顺序排列然后有序输出。因为数据量并不算特别多,而且没有重复数据,此处排序使用实现起来较为简单、占用空间更少的选择排序。

2.4 为9个赛事分别按顺序分配队伍,同时模拟比赛进行中依次进场比赛的过程,用延时输出模拟比赛的等待过程。

2.5 存储学校的地图信息,在各个地标之间建立联系,根据需求计算两个地标之间的最短简单路径和途经地标。

3 、概要设计

3.1 用于存储的team类部分:

public Team(String teamNumber, String projectName, String school, String eventCategory, String participants, String instructor)

{

    this.teamNumber = teamNumber;

    this.projectName = projectName;

    this.school = school;

    this.Category = Category;

    this.participants = participants;

    this.instructor = instructor;

}

3.2 存储二叉排序树的节点信息:

public class Node

{

    Team team;

    Node left;

    Node right;

    public Node(Team team)

    {

        this.team = team;

        this.left = null;

        this.right = null;

    }

}

ASL的计算方法:(搜索长度/总节点数)

double asl = (double) searchLength / totalNodes;

3.3 建立一个新数组用于存储筛选出的参赛团队,并为排序输出做准备:

List<Team> teamsBySchool = new ArrayList<>();

3.4 分别使用两个数组用于存储参赛房间对应的队伍队列和赛事进程信息:

public List<ROOM> rooms;

public List<Thread> threads;

3.5 用邻接矩阵存储地标信息:

private int[][] adjacencyMatrix;

用哈希图来表现地图信息:

Navigation navigation=CreateMap();

HashMap<String,Integer> map=new HashMap<>();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值