校园导游系统课程设计报告.doc_第1页
校园导游系统课程设计报告.doc_第2页
校园导游系统课程设计报告.doc_第3页
校园导游系统课程设计报告.doc_第4页
校园导游系统课程设计报告.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录1、需求分析12、总体设计12.1 抽象数据类型图的定义12.2 程序中包含的模块12.3模块间的调用关系33、详细设计33.1 代码设计33.1.1 定义结构体和全局变量33.1.2 平面图的初始化43.1.3 最短路径查询53.1.4 景点信息查询83.1.5景点信息更新83.2 界面分析93.2.1 主程序界面93.2.2 景点信息的查询103.2.3 最短路径查询113.2.4 管理校园查询系统124、总结报告12参考文献13 151、需求分析设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询。(1).设计潍坊学院校园平面图,所含的景点不少于10个。以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。(2).为来访客人提供图中任意景点相关信息的查询。(3).为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。2、算法设计2.1 概要设计 2.1.1 函数定义的变量 /*定义符号常量*/#define INT_MAX 10000#define n 10/*定义全局变量*/int costnn; /* 边的值*/int shortestnn;/* 两点间的最短距离*/int pathnn; /* 经过的景点*/2.1.2 程序中包含的模块(1)主程序模块void main()/*主函数*/打印菜单,景点,景点信息定义景点之间的权值(2)查询模块景点信息查询:void introduce()/*景点介绍*/最短路径查询:int shortestdistance() /*要查找的两景点的最短距离*/void floyed()/*用floyed算法求两个景点的最短路径*/ (3)打印模块 打印最短路径:void display(int i,int j) /* 打印两个景点的路径及最短距离 */2.1.3模块间的调用关系Main()void introduce()int shortestdistance()void floyed()void display()2.2 详细设计#include #include /*定义符号常量*/#define INT_MAX 10000#define n 10/*定义全局变量*/int costnn; /* 边的值*/int shortestnn;/* 两点间的最短距离*/int pathnn; /* 经过的景点*/*自定义函数说明*/void introduce();int shortestdistance();void floyed(); void display(int i,int j);void main() int i,j; char k; for(i=0;i=n;i+) for(j=0;j10的数字编号!nn); break; /*introduce*/int shortestdistance() /*要查找的两景点的最短距离*/ int i,j; printf(请输入要查询的两个景点的编号(1-10的数字编号并用,间隔):); scanf(%d,%d,&i,&j); if(in|in|j10的数字编号并用,间隔):n); scanf(%d,%d,&i,&j); else floyed(); display(i,j); return 1;/*shortestdistance*/void floyed()/*用floyed算法求两个景点的最短路径*/ int i,j,k; for(i=1;i=n;i+) for(j=1;j=n;j+) shortestij=costij; pathij=0; for(k=1;k=n;k+) for(i=1;i=n;i+) for(j=1;j(shortestik+shortestkj) /*用path记录从i到j的最短路径上点j的前驱景点的序号*/ shortestij=shortestik+shortestkj; pathij=k; pathji=k; /*floyed*/void display(int i,int j) /* 打印两个景点的路径及最短距离 */ int a,b; a=i; b=j; printf(您要查询的两景点间最短路径是:nn); if(shortestij!=INT_MAX) if(ij) printf(%d,b); while(pathij!=0) /* 把i到j的路径上所有经过的景点按逆序打印出来*/ printf(-%d,pathij); if(ij) j=pathij; else i=pathji; printf(%d)最短距离是:%d米nn,a,b,shortestab); else printf(%d,a); while(pathij!=0) /* 把i到j的路径上所有经过的景点按顺序打印出来*/ printf(-%d,pathij); if(i%d,b); printf(nn); printf(%d-%d)最短距离是:%5d米nn,a,b,shortestab); else printf(输入错误!不存在此路!nn); printf(n); /*display*/3 测试结果3.1 主程序界面根据图中提示选择要执行的操作 图1 主界面3.2输入错误输入i ,s ,e来完成相应的操作,如果输入有误,系统将显示错误信息,请重新输入。3.3 景点信息的查询输入你要查询的景点名称:通过调用函数void introduce()来查询景点信息。如果输入的景点不存在,系统会提示你输入错误,请重新输入。 图2 信息查询界面输入编号存在,则系统显示要查询的景点信息。3.4 最短路径查询输入你所在的景点和要到达的景点,将输出这两点的最短距离:调用函数void floyed();来求最短路径。 图3 路径查询界面3.5 退出系统根据提示按“e”退出该系统,程序结束。4、总结报告通过本次课程设计实验,使我更能熟练地掌握c语言、c+以及数据结构等知识的综合运用。当然在课程设计期间,也遇到了大大小小的一些问题,是我看到了自己的不足之处,使我认识到在以后的学习中要善于发现自己的不足,找出自己的薄弱环节,以便能够更好的去巩固所学的。本次设计中要求求最短路径,就必须了解最短路径的算法:Dijkstra算法和Floyd算法。在拿到题目时,通过查找相关的资料才回忆起这两种方法的具体算法。比较这两种算法的复杂度,尽量选用复杂度小。当然任何程序都不可能完美,往往会牺牲程序的空间来换取时间,或者牺牲时间来换取足够大的空间,这就需要根据程序的具体要求来设计算法。在选用存储方法是,要尽量选用时间复杂度较小的方法,这样能够节省程序执行时间,提高查询效率。课程设计中所使用的计算机语言其使用范围比较广阔,在很多编程中都可以用到,所以无论以后我们从事计算机编程、软

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论