景区旅游管理系统Word文档下载推荐.docx

上传人:b****6 文档编号:15964602 上传时间:2022-11-17 格式:DOCX 页数:15 大小:47.22KB
下载 相关 举报
景区旅游管理系统Word文档下载推荐.docx_第1页
第1页 / 共15页
景区旅游管理系统Word文档下载推荐.docx_第2页
第2页 / 共15页
景区旅游管理系统Word文档下载推荐.docx_第3页
第3页 / 共15页
景区旅游管理系统Word文档下载推荐.docx_第4页
第4页 / 共15页
景区旅游管理系统Word文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

景区旅游管理系统Word文档下载推荐.docx

《景区旅游管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《景区旅游管理系统Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

景区旅游管理系统Word文档下载推荐.docx

2设计流程

主程序采用设计主菜单调用若干功能模块,同时在主程序中定义两个邻接链表类型变量G和G1,作为调用子函数的参数.

 

建图子模块建立无向带权图,输入顶点信息和边的信息,输出邻接链表G。

由于是无向边,输入一条边时构建两条边.  

输出图子模块:

从邻接链表g转换成邻接矩阵a,并输出邻接矩阵a。

图中边的权值∞用32767表示.

遍历子模块:

通过遍历图G,只得到遍历的顶点序列。

我们先将顶点序列存在数组vex中,然后再转换成导游线路存入数组vex1中,最后生成导游线路图G1(同样用邻接链表存储,供拓朴排序用)。

将遍历顶点序列转换成导游线路。

  

图10—43(a)(b)(c)三个无向图的深度优先搜索遍历的结果均为v1→v2→v3→v4.但它们的导游线路图却不同.图(a)的导游线路图为v1→v2→v3→v4,与遍历结果相同.

  图(b)的导游线路图为v1→v2→v3→v2→v4,图(c)的导游线路图为v1→v2→v3→v2→v1→v4.

  遍历结点序列与导游线路图转换的策略:

  设遍历结果为v1→v2→…→vi→vi+1→…→vn

  对于结点vi和vi+1,如果vi和vi+1存在边,则直接转换。

  否则,加入边vi→vi—1,如果vi—1和vi+1存在边,则加入边vi-1→vi+1。

  再否则,加入边vi-1→vi-2,如果vi—2和vi+1存在边,则加入边vi-2→vi+1。

  如果vi—2和vi+1还不存在边,继续回溯,一定能找到某个整数k(因为景点分布图是连通图),使得vi-k和vi+1存在边,则加入边vi-k→vi+1。

  在本任务中,转换后的线路图存于数组vex1中。

流程图见10—29。

拓朴排序子模块流程图,见图10-39源程序,参见10。

7节的samp10-8。

c。

求最短路径子模块流程图:

见10-34。

源程序,参见10。

6节的samp10-6.c。

求最小生成树子模块流程图:

见19-33。

源程序,参见10.6节的samp10-5。

3数据结构

景点的信息包括景点的名称和近邻景点之间的通路和距离。

用邻接链表存储景点分布图的信息。

(带权无向)图的邻接链表

  /***************************************************************/

/*程序功能:

建立一个旅游景区管理系统,实现旅游路线选择   */

  /*景区道路优化等功能                   */

  /***************************************************************/

  #include“stdio。

h”

  #include“stdlib.h”

  #include“string.h”

  #defineMAX_EDGE_NUM100/*定义图的最大边数*/

  #defineMAX_VERTEX_NUM20

  #defineMAXNUM32767

  typedefcharVertex_type[10];

  typedefstructnode/*边表结点*/

  {

    intadjvex;

/*邻接点域*/

    intweight;

    structnode*next;

/*指向下一个邻接点的指针域*/

  }Edge_node;

  typedefstruct/*顶点表结点*/

  {

    Vertex_typevertex;

/*顶点域,存放景点名称*/

    Edge_node*firstedge;

/*边表头指针*/

  }Vertex_node;

  typedefstruct

    Vertex_nodeadjlist[MAX_VERTEX_NUM];

/*邻接表*/

    intn,m;

/*顶点数和边数*/

  }Lgraph;

边的类型定义

在求最小生成树时,用到边的定义。

    inti;

/*顶点vi的序号*/

    intj;

/*顶点vi的序号*/

    intweight;

  }Edge_type;

1.4程序清单

主程序源程序

/*************************************************************/

  /*函数名:

main                      */

  /*入口参数:

无                       */

  /*返回值:

  /*************************************************************/

  voidmain()

    Lgraph*g,*g1;

    intsele;

    voidcreate_graph();

    voidoutput_graph();

    voiddfs_main();

    voidtopo_sort_main();

    voidmin_distance_main();

    voidmin_tree();

    g=(Lgraph*)malloc(sizeof(Lgraph));

    g—〉m=0;

    g1=(Lgraph*)malloc(sizeof(Lgraph));

    while

(1)

    {

      system(”cls"

);

      printf(“\n\n******景区旅游管理信息系统******\n”);

      printf(“1.输入景点分布图\n”);

      printf(“2.输出景点分布图邻接矩阵\n”);

      printf(“3.生成导游线路图\n”);

      printf(“4。

输出导游线路图中回路\n”);

      printf(“5。

求两景点间最短路径和最短距离\n"

      printf(“6。

输出景区道路修建规划图\n”);

      printf(“0。

退出\n"

);

      printf(“请选择功能序号:

”);

      scanf(“%d"

,&sele);

      printf(”\n\n***************************************************\n\n"

      switch(sele)

      {

        case1:

create_graph(g);

break;

        case2:

output_graph(g);

break;

        case3:

dfs_main(g,g1);

        case4:

topo_sort_main(g1);

        case5:

min_distance_main(g);

break;

        case6:

min_tree(g);

        case0:

exit(0);

      }

      getchar();

      printf(”按回车键继续..。

..。

"

    }

  }

建图子模块源程序参见10.3节的create_graph()函数。

输出图子模块

/**************************************************************/

  /*函数名:

output_graph                  */

  /*函数功能:

输出图G的邻接矩阵                */

  /*入口参数:

g-——邻接链表                  */

  /*返回值:

无                        */

  /**************************************************************/

  voidoutput_graph(Lgraph*g)

    inti,j,n;

    inta[MAX_VERTEX_NUM][MAX_VERTEX_NUM];

    Edge_node*p;

    if(g—〉n==0)

    {

      printf(“景点分布图未输入,无法输出!

\n"

      return;

    }

    for(i=0;

i〈g—>

n;

i++)

      for(j=0;

j〈g-〉n;

j++)

        if(i==j)

          a[i][j]=0;

        else

          a[i][j]=MAXNUM;

    for(i=0;

i<

g—>

      p=g—>

adjlist[i].firstedge;

      while(p!

=NULL)

        j=p->

adjvex;

        a[i][j]=p->

weight;

        p=p—>

next;

      }

    printf("

景点分布图邻接矩阵为:

\n\n"

    printf(”%8s”,””);

g-〉n;

      printf("

%8s"

,g—>

adjlist[i].vertex);

    for(i=0;

i〈g-〉n;

   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1