C语言课设校园导游_第1页
C语言课设校园导游_第2页
C语言课设校园导游_第3页
C语言课设校园导游_第4页
C语言课设校园导游_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未指定书签。未定义书签。未指定书签。未指定书签。未指定书签。校园导游目录摘要 错误!1绪论 错误!2系统分析 错误!功能需求 错误!数据需求 错误!性能需求 错误!3总体设计 错误!系统设计方案 错误!功能模块设计 错误!4详细设计 错误!浏览校园全景模块 错误!查询所有浏览路线模块 错误!求最短路径 错误!查询各景点信息模块 错误!5调试与测试 错误!调试 错误!测试 错误!6结论 错误!结束语 错误!参考文献 错误!附录1一用户手册 错误!附录2一源程序 错误!摘要为了让游客更好地了解各个旅游景点,查询相关信息,特开放此程序为游客服务。游客只需输入相应的编号就可以实现对其功能的查询;编号(1-9)主要功能如下:(1)校园所含景点不少于10个,以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。(2)为来访客人提供图中任意景点相关信息的查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的路径(列出所有),并向访客推荐一条最短路径。关键词:任意景点信息,所有路径,最短路径,所有景点。1绪论导游是每个游客旅游必不可少的一部分,如果能用一个电子导游器代替一个导游为游客服务的话,那不就更方便吗、因此特开发此程序为游客服务,希望能得到大家的认可。题目要求:设计一个校园导游咨询程序,对来访的客人提供各种信息查询服务。基本要求:(1)校园所含景点不少于10个,以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。(2)为来访客人提供图中任意景点相关信息的查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的路径(列出所有),并向访客推荐一条最短路径。2系统分析功能需求所需功能如下:(1)校园所含景点不少于10个,以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。(2)为来访客人提供图中任意景点相关信息的查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的路径(列出所有),并向访客推荐一条最短路径。2.2数据需求所涉及到的数据如下:结构体,栈,表格(菜单),数组(1)输入数据:景点编号(0-9)(2)输出数据:编号,名称,信息(数字和中文)2.3性能需求性能简介:安全性高、可靠性强、稳定性强、响应速度快3总体设计系统设计方案通过一个主函数对各个子函数的调用实现所需功能:游客只需输入相应的编号就可以实现对其功能的查询;编号(1-9)(1)菜单如下:欢迎来到沈阳航空航天大学祝你:旅途愉快.浏览校园全景.查看所有游览路线.选择出发点和目的地.查看各景点信息.退出系统诚心为你服务-请选择(输入编号.回车结束):(2)抽象数据类型定义:数据对象:V(顶点)数据关系:R={VR}VR={<V.R>}(3)存储结构:邻接表(4)算法设计:

主要应用:迪杰斯特拉算法,弗洛伊德算法,输入输出函数功能模块设计块图(1)浏览校园全景模块该模块部分逋过一个函数输刎有景点的编名称,(2)查看所有该模块是(3)球最短路该模块是(4)查看各景览路游提置

查霄有游叭檬线

位在供可游和将要求新路径

的(1)浏览校园全景模块该模块部分逋过一个函数输刎有景点的编名称,(2)查看所有该模块是(3)球最短路该模块是(4)查看各景览路游提置

查霄有游叭檬线

位在供可游和将要求新路径

的览的景点。置提查短路径。该模块专门为游客提供每个景点的详细信息查询。4详细设计主函数voidmain()图2主函数选择所需功能浏览校园全景模块MGraphInitGraph()图3浏览校园全景模块查询所有浏览路线模块voidBrowser(MGraph*G)图4查询所有浏览路线模块求最短路径voidFloyd(MGraph*G)图5求最短路径模块查询各景点信息模块voidSearch(MGraph*G)图6查询各景点信息模块5调试与测试调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者来说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误。然后仔细研究推断代码以确定问题的原因,并设法改正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。(1)运行完程序一次有错误提醒原因是上次运行程序后没有关闭操作界面当点击编译时会有一个错误提示,解决方法:将上一次运行时的操作界面关闭。其原因是指针指向的位置出现错误导致程序传参错乱,无法运行,解决办法:使程序进入调试状态在传参,出现错误的位置一句句查找传递的参数是否是你所希望的,如若不是就加以修正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到的主要问题、原因和解决方法如下面介绍。测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。测试数据过程如下。(1)输入功能测试输入数据:4 1预期结果:1图书馆文化交流中心运行结果:1图书馆文化交流中心说明:所输入的数据与输出的结果相符合,与预期结果完全一致,程序编写成功。6结论课程设计顺利完成,任务书中所提出的要求全部实现,不过这个程序还有些不够完善。结束语为期两个礼拜的计算机综合训练终于顺利完成,在这期间真正的学到了一些经验,能够熟练的掌握一些数据结构的编程思路,能够熟练的运用学到的东西,学会了在曾经编写过的函数上加以修改实现了我期望实现的功能,知道学习编程必须亲手将每一个字符敲入电脑中这样才能真正的学到课本或一些理论中学不到的知识,这才达到了实践的目的,当程序编写完成而且能够正常运行心里一种说不出的自豪感,虽然这对于一名程序员来说可能什么也不是,但这是我编程的开始,如果希望在编程这方面能够有所发展我所要走过的路还很长,还需要不断的学习!学习!参考文献[1]谭浩强.C语言程序设计(第三版).清华大学出版社,2007[2]姜灵芝,余健.C语言课程设计案例精编.清华大学出版社,2008[3]严蔚敏,吴伟民.算法与数据结构(C语言版)清华大学出版社,2008[4]严蔚敏,吴伟民.数据结构题集(C语言版)清华大学出版社,2008[5]网上相关资料

附录1一用户手册点击运行,首先出现的是登录界面,选择用户名称,正确的输入编号即可,如图7所示。图7主界面按照菜单提示输入编号即可。科,C:\Docu>entsandSettIngsAAdBizLiEist:r:at口:r\桌面、课设YDEbugACppl.exe一区区地一馆活院曹襄湖一门书生门医生动学验阳北图南南校北运教看酹区纽,区,结心颉心南枢诚北动i。科,C:\Docu>entsandSettIngsAAdBizLiEist:r:at口:r\桌面、课设YDEbugACppl.exe一区区地一馆活院曹襄湖一门书生门医生动学验阳北图南南校北运教看酹区纽,区,结心颉心南枢诚北动i的中I通再运途的4流园斋园晶理园门交家外一家体圣与校大化生内去生孽践丽校文学欢迎来到沈阳航空航天大学祝你:旅途愉快路目自心旦蓝瞿全曹点园有*系统裔出各系出浏费选变退12345图13浏览校园景点界面为来访客人提供图中任意景点的问路查询按照主菜单提示输入编号即可图14查看所有游览路线为访客推荐一条最短路径。按照菜单提示输入编号即可图15选择出发点和目的地为来访客人提供图中任意景点相关信息的查询按照菜单提示输入编号即可图16查看各景点信息附录2一源程序#include<stdlib.h>#include<stdio.h>#include<string.h>#defineMAX10000#defineMAX_VERTEX_NUM10typedefstruct(intadj;}Ar,Ad[10][10];typedefstruct(charname[30];intnum;charintroduction[100];}infotype;typedefstruct(infotypevexs[10];Adarcs;intvexnum,arcnum;}MGraph;MGraphb;MGraphInitGraph()(MGraphG;inti,j;G.vexnum=10;G.arcnum=10;for(i=0;i<Gvexnum;i++)G.vexs[i].num=i;strcpy(G.vexs[0].name,"北门");strcpy(G.vexs[0].introduction,"校大门-雄伟而美丽");strcpy(G.vexs[1].name,"图书馆");strcpy(G.vexs[1].introduction,“文化交流中心");strcpy(G.vexs[2].name,"南生活区");strcpy(G.vexs[2].introduction,"学生家园(南区)”);strcpy(Gvexs[3].name,"南门”);strcpy(G.vexs[3].introduction,"校内外交通枢纽”);strcpy(G.vexs[4].name,“校医院");strcpy(G.vexs[4].introduction,"带去一份真诚,换回一身健康");strcpy(G.vexs[5].name,"北生活区");strcpy(G.vexs[5].introduction,"学生家园(北区)”);strcpy(G.vexs[6].name,“运动场");strcpy(G.vexs[6].introduction,"发扬体育运动,曾强师生体质");strcpy(G.vexs[7].name,"教学楼");strcpy(G.vexs[7].introduction,"教学圣地");strcpy(G.vexs[8].name,"实验基地");strcpy(G.vexs[8].introduction,"实践与理论相结合的地方");strcpy(G.vexs[9].name,"清阳湖");strcpy(G.vexs[9].introduction,”美丽校园的核心");for(i=0;i<Gvexnum;i++)for(j=0;j<Gvexnum;j++)G.arcs[i][j].adj二MAX;G.arcs[0][1].adj=200;G.arcs[0][2].adj=500;G.arcs[0][6].adj=480;G.arcs[1][7].adj=100;G.arcs[2][3].adj=50;G.arcs[3][6].adj=400;G.arcs[3][4].adj=300;G.arcs[4][5].adj=350;G.arcs[4][9].adj=180;G.arcs[5][9].adj=420;G.arcs[6][7].adj=280;G.arcs[6][9].adj=220;G.arcs[7][8].adj=250;G.arcs[8][9].adj=320;for(i=0;i<Gvexnum;i++)for(j=0;j<Gvexnum;j++)G.arcs[j][i].adj=G.arcs[i][j].adj;returnG;)voidMenu()(printf("\n欢迎来到沈阳航空航天大学\n");printf("\n");printf("祝你:旅途愉快\n");printf("\n");printf("1.浏览校园全景\n");printf("2.查看所有游览路线\n");printf("3.选择出发点和目的地\n");printf("4.查看各景点信息\n");printf("5.退出系统\n");printf("\n");printf(“诚心为你服务-请选择(输入编号.回车结束):");)voidBrowser(MGraph*G)(intv;printf("\n");printf("编号.景点名称.简介\n");for(v=0;v<G->vexnum;v++)printf("%-4d%-16s%-56s\n”,G->vexs[v].num,G->vexs[v].name,G->vexs[v].introduction);)printf("\n");)voidShortestPath_DIJ(MGraph*G)(intv,w,i,min,t=0,x,flag=1,v0;intfinal[20],D[20],p[20][20];while(flag)(printf("请输入一个起始景点编号0-9:");scanf("%d",&v0);if(v0<0||v0>G->vexnum)(printf("景点编号不存在!请重新输入景点编号0-9:");scanf("%d",&v0);)if(v0>=0&&v0<G->vexnum)flag=0;)for(v=0;v<G->vexnum;v++)(final[v]=0;D[v]=G->arcs[v0][v].adj;for(w=0;w<G->vexnum;w++)p[v][w]=0;if(D[v]<MAX)(p[v][v0]=1;p[v][v]=1;))D[v0]=0;final[v0]=1;for(i=1;i<G->vexnum;i++)min=MAX;for(w=0;w<G->vexnum;w++)if(!final[w])if(D[w]<min){v=w;min=D[w];}final[v]=1;for(w=0;w<G->vexnum;w++)if(!final[w]&&(min+G->arcs[v][w].adj<D[w])){D[w]=min+G->arcs[v][w].adj;for(x=0;x<G->vexnum;x++)p[w][x]=p[v][x];p[w][w]=1;for(v=0;v<G->vexnum;v++)if(v0!=v)printf("%s”,G->vexs[v0].name);for(w=0;w<G->vexnum;w++)if(p[v][w]&&w!=v0)printf("-->%s”,G->vexs[w].name);t++;if(t>G->vexnum-1&&v0!=v)printf("总路线长%dm\n\n",D[v]);voidFloyd(MGraph*G)intv,u,i,w,k,j,flag=1,p[10][10],D[10][10];for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++)D[v][w]=G->arcs[v][w].adj;for(u=0;u<G->vexnum;u++)p[v][w]=0;if(D[v][w]<MAX)(p[v][w]=1;p[v][w]=1;))for(u=0;u<G->vexnum;u++)for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++)if(D[v][u]+D[u][w]<D[v][w])(D[v][w]=D[v][u]+D[u][w];for(i=0;i<G->vexnum;i++)p[v][w]=p[v][u]11P[u][w];)while(flag)(printf(”请输入出发点和目的地的编号0-9如(**):");scanf("%d%d",&k,&j);if(k<0||k>G->vexnum||j<0||j>G->vexnum)(printf("景点编号不存在!请重新输入出发点和目的地的编号:");scanf("%d%d",&k,&j);)if(k>=0&&k<G->vexnum&&j>=0&&j<G->vexnum)flag=0;)printf("%s”,G->vexs[k].name);for(u=0;u<G->vexnum;u++)if(p[k][j]&&k!=u&&j!=u)printf("-->%s”,G->vexs[u].name);printf("-->%s”,G->vexs[j].name);printf("总路线长%dm\n",D[k][j]);)voidSearch(MGraph*G)(intk,flag=1;while(flag)(printf("请输入要查询的景点编号0-9:");scanf("%d",&k);if(k<0||k>G->vexnum)(printf("景点编号不存在!请重新输

温馨提示

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

评论

0/150

提交评论