数据结构课程设计-项目二-校园导游咨询(完整代码)


本文为校园导游咨询项目报告,实验准备点击此链接跳转

一. 结构体定义

1.存储景点信息的结点结构体

定义一个无向图结点node结构体,图中的每个结点代表校园内的一个景点,该结构体中包含该景点的详细信息——String类型的景点名称,int类型的景点代号,String类型的景点简介等。

/*
 * 定义一个node类作为存储景点信息的结点
 */
class node{
   
    private int index;     //景点代号
    private String name;   //景点名称
    private String jianjie;//景点简介

    public node(int index, String name, String jianjie) {
    //结点的构造方法
        this.index = index;
        this.name = name;
        this.jianjie = jianjie;
    }

    public int getIndex() {
   
        return index;
    }

    public String getName() {
   
        return name;
    }

    public String getJianjie() {
   
        return jianjie;
    }
}
2.无向图结构体

定义一个无向图Graph结构体,私有成员包括存放结点的数组vertex[ ],存放邻接矩阵的数组adj[ ],以及结点个数和边的条数。

/*
 *定义一个图结构体来存放无向图网络
 */
class Graph{
   
    private node []vertex;  //存放结点信息
    private int [][]adj;    //存放邻接矩阵
    private int vertexnum;  //结点个数
    private int edgenum;    //无向边的数目

    public Graph(node[] vertex, int[][] adj,int vertexnum,int edgenum) {
   
        this.vertex = vertex;
        this.adj = adj;
        this.vertexnum = vertexnum;
        this.edgenum = edgenum;
    }

    public node getVertex(int i) {
   
        return vertex[i];
    }

    public int getAdj(int i,int j) {
   
        return adj[i][j];
    }

    public int getVertexnum() {
   
        return vertexnum;
    }

    public int getEdgenum() {
   
        return edgenum;
    }
}

二. 各功能模块

1.菜单模块

用于输出与用户之间交互的菜单界面

void menu(){
   
        System.out.print("\t\t\t       ***校园导游咨询***\n");
        System.out.print("\t\t\t*****************************\n");
        System.out.print("\t\t\t*  1、通过景点代号查询景点信息   *\n");
        System.out.print("\t\t\t*  2、查询两景点间的最短路径     *\n");
        System.out.print("\t\t\t*  3、查看景点列表             *\n");
        System.out.print("\t\t\t*  4、查看菜单                *\n");
        System.out.print("\t\t\t*  0、退出系统                *\n");
        System.out.print("\t\t\t*****************************\n");
    }
2.景点信息查询模块
//通过景点代号查询景点信息
    void visit1(Graph G,int i){
   
        System.out.println("景点代号:" + G.getVertex(i).getIndex());
        System.out.println("景点名称:" + G.getVertex(i).getName());
        System.out.println("景点简介:" + G.getVertex(i).getJianjie());
    }
3.查看景点列表模块
//查看景点列表
    void spotlist(Graph G){
   
        System.out.println("\t\t\t***********景点列表************     ");
        System.out.println("\t\t  ------------------------------------------");
        for (int i = 1;i <= G.getVertexnum();i++){
   
            System.out.println("\t\t   " + G.getVertex(i).getIndex() + "、" + G.getVertex(i).getName());
        }
        System.out.println("\t\t  ------------------------------------------");
    }
4.Floyd求任意两结点间最短路径模块
  /*
     *弗洛伊德算法求图中任意两点间的最短路径
     * @param G 无向图网络
     * @param [][]A 用于存放图中所有顶点对之间的最短路径长度
     * @param [][]P 保存由顶点i到顶点j的最短路径中i的直接后继结点
     */
    void Floyd(Graph G,int [][]A,int [][]P){
   
        int i,j,k;
        for (i = 1;i <= G.getVertexnum();i++){
   
            for (j = 1;j <&#
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值