1.问题定义
赛事管理系统
2.问题分析
问题一:管理参赛队伍的基本信息,要求可以实现增删改等操作,这显然是一个对于存储方式的考察,每支队伍信息有十一项,所以每支队伍的基本信息要使用数组存储,然后将所有的队伍参赛信息进行存储,这里要考虑使用的存储方式是否便于增删改的操作。
问题二:从文件中中读取参赛队伍的基本信息,实现基于二叉排序树的查找。根据编号对参赛队伍信息进行查询输出,这显然是对二叉树内容的考察,使用遍历查询还是递归查询也要考虑,查找成功则输出队伍基本信息,反之输出查找失败。
问题三:任然是查询问题,要求根据参赛队伍学校名称或赛事类别进行查询,同时还要求对输出的信息进行排序,这就考察到了排序方法,确定该使用什么方法来对信息进行排序。
问题四:要求实现一个叫号系统,对参与决赛的队伍分别分配到9个决赛室,这里要求按顺序叫号,分别进入1到9决赛室,前一支队伍结束在叫下一支队伍,对所有队伍编号,模拟实际情况。
问题五:为参赛队伍提供地图导航服务,主要考察图论方面的知识,校园地图是无向连通图,导航要实现两个目的地之间的最短路径问题,需要采用经典算法解决最短路径问题,包括Dijkstra 算法,Floyd-Warshell 算法,Bellman-Ford 算法和深度优先遍历。不同算法有不同的好坏之处,具体使用什么方法自己决定。
3.概要设计
参赛队伍信息的数据结构:类--Team,用于存储每支参赛队伍的信息
public class Team{
//为了便于后面对参赛队伍信息进行增删改,数据全部使用string类型
//参赛队伍编号
public int id;
//参赛作品名称
public string name;
//参赛学校
public string college;
//赛事类别
public char category;
//参赛者
public string player;
//构造方法
public Team (int id,string name,string college,char category,string player){
this.id = id;
this.name = name;
this.college = college;
this.category = category;
this.player = player;
}
}
//get set 方法,通过idea自带的重构方式写出来
接下来是每个问题对应的函数
问题一:增加参赛队伍信息,只需要新创建一个Team
类,对该类中的数据进行设置即可添加,删除只需要找到对应信息的id,进行删除操作即可,修改要先确定修改的信息,同样通过对应函数操作实行。
问题二:先将所有参赛队伍生成一个二叉树,通过查找关键字,对二叉树进行遍历,查找成功则输出信息,查找失败则输出“查找失败!”。
问题三:根据线性表的查找方式找出所需要的信息,然后编写相应的排序算法几即可。
问题四:写一个叫号系统的函数,对所有参赛队伍编号,挨个叫号,1到9个决赛室由操作员决定是否有参赛队伍,没有则叫号进入对应的决赛室即可模拟叫号。
问题五:创建一个点类,用来存储各个目的地的信息,然后采用邻接矩阵的存储方式对各个目的地之间进行存储,当参赛选手想要到达某个目的地时,之需要在起始位置与目的地之间运用最短路径算法即可实现导航。