公园导游管理系统.doc
《公园导游管理系统.doc》由会员分享,可在线阅读,更多相关《公园导游管理系统.doc(28页珍藏版)》请在咨信网上搜索。
1、计算机信息工程学院数 据 结 构课 程 设 计 报 告题 目: 公园导游系统 专 业: 计算机科学与技术(软件方向) 班 级: 学 号: 姓 名: 指导教师: 完成日期: 目 录一、概要设计11.题目的内容与要求1 1.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 导入新文件(Loadnewmap)13三、测试分析53.
2、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()、SaveM
5、ap(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,w
6、)定义了弧的意义或信息基本操作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;
8、int vexnum,arcnum; /图的顶点数和弧数ALGraph;int EdgeMAXMAX; /用来存放路径的权值int n,e;/存放结点数和边数读取文件信息代码如下:for(i=1;i=n;i+)fscanf(fp,%d,&num);fscanf(fp,%s,name);fscanf(fp,%s,information);ListInsert(L, num, name, information);Update(L,g); for ( j=1;jdata=a; p-nextarc=gb.firstarc; gb.firstarc=p; /把p插进来 q=(ArcLink)mallo
9、c(sizeof(ArcNode); q-data=b; q-nextarc=ga.firstarc; ga.firstarc=q;二、详细设计2.1 创建图(Fprint-Link)从文件中读出数据,函数流程图2-1所示。结束j+开始读入n,eArcLink p,q;初始化链表,邻接表,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=eYNUpdate(L,g);/给g赋值图2-
10、1 Fprint-Link函数流程图2.2 寻找最佳路径(DFSTraverse)利用深度优先的思想,遍历图找出一条最佳最佳的的路径,让它遍历所有景点。利用递归的思想,往下遍历,访问标志位,若访问过在下次就不用访问。若找完一个分支在下次重新遍历,函数流程如图2-2所示。开始初始化visitv=0/初始化标志位If(visitv=0)DFS(g,v,visited); v+Count+Count=n结束YN图2- 2 寻找最佳路径流程图2.3 最短路径(ShortPath)利用迪杰特斯拉算法,求v0到其余顶点的最短路径path,distance 是用来存放各路径的权值,借助辅助数组s标志,是否当
11、前顶点属于S(1,属于) 函数流程图2-3所示。 开始初始化distence,s,path开始主循环 ,每次求得v0到某顶点v的最短距离,并将v并入中minDis=MAXEDGE;/当前所知v0的最短距离并设初值为MAXEAGE,int i=1,j=1,u=v0;!sj&distancejminDisu=j;/在s下一直往下找minDis=distancej ;j=nj=0;更新当前最短路径及距离;newDist=distanceu+GetWeightudistancej=newDist;pathj=u;/记录寻找的最短的路径i=n结束If(newDistdistancej)J=nYNYNYY
12、N图2- 3 寻找最短路径流程图2.4 遍历出某一起点到终点的所有路径(SearchAllPath) 利用图的深度优先遍历,利用访问标志位。path记录路径,visited设访问标志,v起点,des终点,length,代表的是访问景点的长度。若碰见死路或者不同的路,则从上一个景点,从新扫描,searchAllPath()流程如图2-4所示。If(visitedV)returen;/若所有景点都访问过,则终止v=desPrintfPath(G,path,length);visitedv=1;GetWeight(v,i)!=MAXEDG&!visitediSearchAllPath(G,path,
13、visited,i,des,length+1)i+i=n结束开始NYvisitedv=0;NY图2- 4 searchAllPath()流程图2.5 导入新文件(Loadnewmap)将指定文件导入到邻接表中,再保存到zheke1.txt 中 ,具体实现如图2-5所示。开始初始化Link p,输入文件名filename20Fprint-Link(p,g,filename)SaveMap(g)L=P;结束图2- 5导入新文件结构示图三、测试分析3.1 可行性分析所谓可行性分析就是用最小的代价在尽可能短的时间内确定问题是否能够解决。这步工作的主要是要进行一次大大压缩简化了的系统分析和设计的过程,也
14、就是在较高层次上以比较抽象的方式进行系统分析和设计的过程。可行性研究的最根本任务是对以后的行动方针提出建议,以避免时间、资源、人力和金钱的浪费,推荐一个较好的解决方案,并且为工程制定一个初步的计划。3.1.1技术可行性查找最短路径以及查询任意两景点之间的所有路径采用迪杰特斯拉算法或弗洛伊德算法实现。解决这个问题的一个方法是:每次以一个顶点为源点,重复执行迪杰斯特拉算法n次。这样,便可求得每一对顶点之间的最短路径。总的执行时间为O(n3)。虽然弗洛伊德算法时间复杂度也是O(n3),但形式简单些。从任意景点遍历全部的景点采用深度优先遍历或广度优先搜索遍历图实现。所谓可行性分析就是用最小的代价在尽可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 公园 导游 管理 系统
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【快乐****生活】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【快乐****生活】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。