c语言邻接表做公园导游系统,公园导游管理系统

《公园导游管理系统》由会员分享,可在线阅读,更多相关《公园导游管理系统(40页珍藏版)》请在人人文库网上搜索。

1、计算机信息工程学院数 据 结 构课 程 设 计 报 告题 目: 公园导游系统 专 业: 计算机科学与技术(软件方向) 班 级: 学 号: 姓 名: 指导教师: 完成日期: 21 / 40文档可自由编辑目 录一、概要设计11.题目的内容与要求11.1 程序模块61.2 系统涉及的数据结构61.2.1 程序数据结构71.2.2 具体数据类型定义7二、详细设计22.1 创建图(Fprint-Link)92.2 寻找最佳路径(DFSTraverse)92.3 最短路径(ShortPath)102.4 遍历出某一起点到终点的所有路径(SearchAllPath)122.5 导入新文件(Loadnewma。

2、p)13三、测试分析53.1 可行性分析43.1.1技术可行性43.1.2 工具可行性43.1.3 经济可行性43.1.4 操作可行性53.2 需求分析53.2.1 功能需求53.2.2 输入输出的要求5四、使用说明与执行结果64.1 主界面144.2 游客界面154.3 系统用户界面15附 录(程序清单)8一、概要设计1.题目的内容与要求1.1课题的研究背景、要求和意义现代公园范围的广阔,内容不断的增加,使得公园整个系统变得复杂。使用电脑对游客进行导游成为发展的趋势,以达到更好的为游客服务的目的。对于公园的游客来说,他们要求:能够浏览整个公园的信息、查询每一个景点的信息、从任意景点遍历全部的。

3、景点、能够查找最短路径。对于系统用户来说,他们要求:删除地点、添加地点、添加路径、删除路径、保存修改、导入文件数据。采用图这么一种数据结构,采用邻接表的存储方式,用一个二维数组来记录所有的边,为了实现地图的随时更新,采用了静态链表实现对图的接点的添加,删除。应用文件的读写来进行文件操作。查找最短路径采用迪杰特斯拉算法实现,从任意景点遍历全部的景点采用深度优先遍历实现。对于界面设计,游客不能进行地图的修改,更换,所以首先要验证身份,再出现对应的界面。2.总体设计程序模块从文件中对出数据(Fprint-Link():通过调用Update(L,g),先将链表L的信息赋值给邻接数组g中,进行更新。 建。

4、立无向图,把公园的景点及景点的信息,连接起来建立邻接表采用链式加顺式存储。浏览学校的全景(Browser):列出学校的所有的景点。寻找最佳路径(DFSTraverse:):输入一个景点,会吧所有都浏览一边,并找出最佳的路径。最短路径(ShortPath):求出起点和终点的最佳路径,并求出最佳路径的长度。遍历出某一起点到终点的所有路径(SearchAllPath):找出所有路径,利用深度优先遍历。删除地点、添加地点、添加路径、删除路径、保存修改、导入文件数据。对应代码函数如下:DeleteAdv(L,g)、InsertAdv(L,g)、InsertEdge()、DeleteEdge()、Save。

5、Map(g)、Loadnewmap(p,g)。总体结构设计如图1-1所示。删除地点主模块系统用户游客模块添加地点添加路径删除路径保存存修改入文件数据任意景点遍历查询景点信息和浏览公园简图查询任意两个景点最短的路径遍历输出任意一个景点的所有路径图1- 1 系统框架图3.系统数据结构3.1 程序数据结构程序主要用了图和静态链表两种数据结构,采用矩阵来保存图形结构的地图,用数组来保存遍历经过的结点用以遍历回溯,以及存储最最终路径。图的抽象数据类型:ADT Graph数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。数据关系:R=VRVR=|v,wv且P(v,w)表示从v到w的弧,谓词P(v,。

6、w)定义了弧的意义或信息基本操作P:PrintMap(g)Serach(g)DFSTraverse(g)ShortPath(g)。ADT Graph线性链表的抽象数据类型:ADT List数据对象:D=ai|aiElemSet,i=1,2,,n,n0数据关系:R1=|ai-1,aiD,i=2, ,n基本操作: DeleteAdv(L,g) InsertAdv(L,g)InsertEdge() DeleteEdge()SaveMap(g) Loadnewmap(p,g)ADT List。 3.2.2 具体数据类型定义typedef struct LNodechar name30;int num;。

7、char introduction100;struct LNode *next;LNode,*Link;typedef struct ArcNodeint data; /该弧所得指向的顶点的位置ArcNode *nextarc; /指向下一条弧的指针ArcNode,*ArcLink;typedef struct VNode /顶点信息char name30;int num;char introduction100;ArcLink firstarc; /指向第一条依附该顶点的弧的指针VNode,AdjListMAX+1;typedef struct ALGraphAdjList vdata; i。

8、nt vexnum,arcnum; /图的顶点数和弧数ALGraph;int EdgeMAXMAX; /用来存放路径的权值int n,e;/存放结点数和边数读取文件信息代码如下:for(i=1;idata=a;p-nextarc=gb.firstarc; gb.firstarc=p; /把p插进来q=(ArcLink)malloc(sizeof(ArcNode);q-data=b;q-nextarc=ga.firstarc;ga.firstarc=q;二、详细设计2.1 创建图(Fprint-Link)从文件中读出数据,函数流程图2-1所示。结束j+开始读入n,eArcLink p,q;初始化。

9、链表,邻接表,Eage i=1,j=1,p=q=(ArcLink)malloc(sizeof(ArcNode);inextarc=gb.firstarc; gb.firstarc=p; /把p插进来q-nextarc=ga.firstarc; ga.firstarc=q;j#include#define INT_MAX 10000#define n 10int costnn;/* 边的值*/int shortestnn;/* 两点间的最短距离*/int pathnn;/* 经过的景点*/void welcome()printf(n 欢迎光临n);printf(n 凝香公园 nnnnn);pri。

10、ntf(n 给您最纯净的享受n);printf(n Pure as the south polar snow nn);printf(n );system(pause);void Menu()/函数的主显示界面system(cls);system(color 70);printf( n);printf( 凝香公园导游系统 n);printf( n);printf( n);printf( n);printf( n);printf( 1:浏览公园全景 n);printf( n);printf( 2:最佳游览路线 n);printf( 主 n);printf( 3:查看单个景点 n);printf( 。

11、菜 n);printf( 4:游览线路查询 n);printf( 单 n);printf( 5:凝香公园简介 n);printf( n);printf( 6:退出导游系统 n);printf( n);printf( n);printf( n);printf( n);printf( n);printf(nn 请按键选择:);void Browser()printf(n 公园全景图 n);printf(n);printf( n);printf( 紫金大道 n);printf( 北 n);printf( n);printf( 1沁园 2公园大门 n);printf( n);printf( n);pr。

12、intf( 3梨园4春 园10夏园 n);printf( n);printf( n);printf( 5鼎湖 8秋园9冬园 n);printf( n);printf( n);printf( n);printf( 6聚缘阁7凝香园 n);printf( n);printf( n);printf( 2012年7月4日n);printf(n);void place()char z;printf(nnn【公园简介】n);printf(n n 凝香园也称“正春园”,位于菏泽城东岳程办事处岳楼行政村。nn);printf( 始建于元末明初,原为袁姓所有,称“袁家堂”花园。nn);printf( 凝香园是我。

13、国古代北方八大名园之一,俗称“何家花园”,距今有近1000余年的历史。nn);printf( 园中有百多年的刺柏、几百年的腊梅、紫丁香,千年翠兰松和一块假山石。nn);printf( “凝香园”附近的何应瑞墓地古柏成林,苍郁参天。nn);printf(n 注:本公园和真正的“凝香园”是同名,而非真实园林!n);printf(nnn);printf(nnn 请输入任意字符【返回主菜单】n);z=getchar();z=getchar();void go()printf(nnnnnn 感谢使用n);printf( n);printf( n);printf( n);printf( 请按任意键退出! 。

14、n);printf( n);printf( n);printf( 程序制作:陈明 n);printf( 学号:3100931036n);printf( nnnnnn);exit(0);void way()char z;printf(nn);printf( 本公园的最佳全景游览路线为:nn);printf( 2公园大门 1沁园 3梨园 5鼎湖 6聚缘阁 7凝香园 4春园 8秋园 9冬园 10夏园 2公园大门n);printf( 全程所需行程:276米!nn);printf( 如需其他路线请返回主菜单进入【浏览路线查询】n);printf(nnn);printf(nnn 请输入任意字符【返回主菜单。

15、】n);z=getchar();z=getchar();void introduce()/*景点介绍*/int a;char z;printf(请输入您想查询的景点编号:);scanf(%d,&a);getchar();printf(nn【 查询结果:】nn);switch(a)case 1:printf( 1:沁园nn一首沁园春.雪让您对眼前的梅花感慨万千。n);break;case 2:printf( 2:公园大门nn仿古的气势宏伟建筑仿佛置身于100年前。n);break;case 3:printf( 3:梨园nn丛林间嬉戏的小鸟不禁让你回头倾听。n);break;case 4:prin。

16、tf( 4:春园nn广阔的草地伴着阵阵花香,躺在上面可以仰望南天。n);break;case 5:printf( 5:鼎湖nn 圆滑的湖面仿佛一面大鼎将湖水撑起来。n);break;case 6:printf( 6:聚缘阁nn来自大江南北的古玩古画齐聚一堂。n);break;case 7:printf( 7:凝香园nn神奇的南方小筑隐匿在桂花林中。聚香也。n);break;case 8:printf( 8:秋园nn当你独自一人行走在大片阔叶林里,才能感受自然的气息。n);break;case 9:printf( 9:冬园nn冬日恋歌在这里尽情唱响,High起来吧!n);break;case 1。

17、0:printf( 10:夏园nn荷花池中一抹红,荷塘月色任你赏!n);break;default:printf( Error:景点编号输入错误!请输入110的数字编号!nn);break;printf(nn);void floyed()/*用floyed算法求两个景点的最短路径*/int i,j,k;for(i=1;i(shortestik+shortestkj)/*用path记录从i到j的最短路径上点j的前驱景点的序号*/shortestij=shortestik+shortestkj;pathij=k;pathji=k;void display(int i,int j)/* 打印两个景点。

18、的路径及最短距离 */int a,b;a=i; b=j;printf(n【 查询结果:】nn);printf( 路径: );if(shortestij!=INT_MAX)if(i请输入要查询的两个景点的编号(用空格键隔开):);scanf(%d %d,&i,&j);if(in|in|j请输入要查询的两个景点的编号(用空格键隔开):);scanf(%d %d,&i,&j);elsefloyed(); display(i,j);printf( 请输入任意字符【返回主菜单】n);z=getchar();z=getchar();return 1;void main()/*主函数*/system(col。

19、or 8f);/界面背景颜色system(mode con: cols=100 lines=15);/界面长度及宽度welcome();system(mode con: cols=100 lines=40);int i,j; char k,z;for(i=0;i请输入任意字符【返回主菜单】n);z=getchar();z=getchar();Menu();break;case 2:system(cls);system(color f2);Browser();printf(n 【 最佳游览路线 】nn);way();break;case 3:system(cls);system(color f2。

20、); Browser();printf(n 【 查看单个景点 】nn);introduce();printf(nnn 请输入任意字符【返回主菜单】n);z=getchar(); break;case 4:system(cls);system(color f2); Browser();printf(n 【 游览线路查询 】nn);shortestdistance(); break;case 5:system(cls);system(color f2);place();Menu();break;case 6:system(cls);system(color f2);go();default: printf(nn);printf(Error:输入错误,请您核对后重新输入!n);printf(nnn);system(pause);break;课程设计总结:这次课程设计让我学到了很多,课程设计开始之前,我看了别做的系统,认真的分析了别人的代码,当我弄懂了迪杰特斯拉算法和弗洛伊德算法时,我就开始编写自己的系统。我想再添加一些新的功能,但是这两周下来我当然也感到累,也有心情烦躁的时候,体会到调试成功使的那种喜悦。指导教师评语:指导教师(签字): 年 月 日课程设计成绩。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值