《C语言课设(校园导游)(共24页).doc》由会员分享,可在线阅读,更多相关《C语言课设(校园导游)(共24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上校园导游目录摘 要11绪论12系统分析22.1 功能需求22.2数据需求22.3 性能需求23总体设计23.1系统设计方案23.2功能模块设计34详细设计44.1浏览校园全景模块54.2查询所有浏览路线模块64.3求最短路径74.4查询各景点信息模块85调试与测试95.1 调试95.2 测试96结论10结束语10参考文献10附录1用户手册11附录2源程序14专心-专注-专业摘 要为了让游客更好地了解各个旅游景点,查询相关信息,特开放此程序为游客服务。游客只需输入相应的编号就可以实现对其功能的查询;编号(1-9)主要功能如下:(1) 校园所含景点不少于10个,以图中顶点
2、表示校园内各景点,存放景点名称、代号、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。(2) 为来访客人提供图中任意景点相关信息的查询。(3) 为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的路径(列出所有),并向访客推荐一条最短路径。关键词:任意景点信息,所有路径,最短路径,所有景点。1绪论导游是每个游客旅游必不可少的一部分,如果能用一个电子导游器代替一个导游为游客服务的话,那不就更方便吗、因此特开发此程序为游客服务,希望能得到大家的认可。题目要求:设计一个校园导游咨询程序,对来访的客人提供各种信息查询服务。基本要求:(1)校园所含景点不少于10个,以图中顶点表示校园
3、内各景点,存放景点名称、代号、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。(2)为来访客人提供图中任意景点相关信息的查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的路径(列出所有),并向访客推荐一条最短路径。2系统分析2.1 功能需求所需功能如下:(1)校园所含景点不少于10个,以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。(2)为来访客人提供图中任意景点相关信息的查询。(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的路径(列出所有),并向访客推荐一条最短路径。2.2数据需求
4、所涉及到的数据如下:结构体,栈,表格(菜单),数组(1) 输入数据:景点编号(0-9)(2) 输出数据:编号,名称,信息(数字和中文)2.3 性能需求性能简介:安全性高、可靠性强、稳定性强、响应速度快 3总体设计3.1系统设计方案通过一个主函数对各个子函数的调用实现所需功能:游客只需输入相应的编号就可以实现对其功能的查询;编号(1-9)(1) 菜单如下: 欢迎来到沈阳航空航天大学 祝你:旅途愉快 1.浏览校园全景 2.查看所有游览路线 3.选择出发点和目的地 4.查看各景点信息 5.退出系统 诚心为你服务-请选择(输入编号.回车结束): (2) 抽象数据类型定义:数据对象:V(顶点)数据关系:
5、VR (3) 存储结构:邻接表 (4) 算法设计:主要应用:迪杰斯特拉算法,弗洛伊德算法,输入输出函数3.2功能模块设计 校园导游 浏览校园全景查看所有游览路线 求最短路径查看各景点信息图1功能模块图(1) 浏览校园全景模块该模块部分通过一个函数输出所有景点的编号,名称,信息。(2) 查看所有游览路线模块该模块是对游客当前所在位置提供可游览的所有景点。(3) 球最短路径模块 该模块是根据游客当前所在位置和将要游览的位置提供一条最短路径。(4) 查看各景点信息模块 该模块专门为游客提供每个景点的详细信息查询。4详细设计主函数void main() 图2主函数选择所需功能4.1浏览校园全景模块MG
6、raph InitGraph()图3浏览校园全景模块4.2查询所有浏览路线模块void Browser(MGraph *G)图4查询所有浏览路线模块4.3求最短路径void Floyd(MGraph *G)图5 求最短路径模块4.4查询各景点信息模块void Search(MGraph *G)图6 查询各景点信息模块5调试与测试5.1 调试调试是软件开发过程中的一个重要环节,也是最复杂,对软件开发者来说也是最艰巨的任务。调试的任务是及时改正测试过程中发现的软件错误。具体地说,调试过程由两个步骤组成,从表示程序中存在错误的某迹象开始,首先确定错误的准确位置,也就是找出哪个模块或哪个语句引起的错误
7、。然后仔细研究推断代码以确定问题的原因,并设法改正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到问题、原因和解决方法如下面介绍。(1) 运行完程序一次有错误提醒原因是上次运行程序后没有关闭操作界面当点击编译时会有一个错误提示,解决方法:将上一次运行时的操作界面关闭。其原因是指针指向的位置出现错误导致程序传参错乱,无法运行,解决办法:使程序进入调试状态在传参,出现错误的位置一句句查找传递的参数是否是你所希望的,如若不是就加以修正。调试过程主要是运行编制好的程序,然后遇到错误后根据系统的提示,找到相关的问题所在。本系统调试过程中遇到的主要问
8、题、原因和解决方法如下面介绍。5.2 测试软件测试是软件生存期中的一个重要阶段,是软件质量保证的关键步骤从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。过度测试则会浪费许多宝贵的资源。到测试后期,即使找到了错误,然而付出了过高的代价。测试数据过程如下。 (1) 输入功能测试输入数据:4 1预期结果:1 图书馆 文化交流中心运行结果:1 图书馆 文化交流中心
9、说明:所输入的数据与输出的结果相符合,与预期结果完全一致,程序编写成功。6结论课程设计顺利完成,任务书中所提出的要求全部实现,不过这个程序还有些不够完善。 结束语为期两个礼拜的计算机综合训练终于顺利完成,在这期间真正的学到了一些经验,能够熟练的掌握一些数据结构的编程思路,能够熟练的运用学到的东西,学会了在曾经编写过的函数上加以修改实现了我期望实现的功能,知道学习编程必须亲手将每一个字符敲入电脑中这样才能真正的学到课本或一些理论中学不到的知识,这才达到了实践的目的,当程序编写完成而且能够正常运行心里一种说不出的自豪感,虽然这对于一名程序员来说可能什么也不是,但这是我编程的开始,如果希望在编程这方
10、面能够有所发展我所要走过的路还很长,还需要不断的学习!学习!参考文献1 谭浩强.C语言程序设计(第三版).清华大学出版社,20072 姜灵芝,余健.C语言课程设计案例精编.清华大学出版社,20083 严蔚敏,吴伟民.算法与数据结构(C语言版)清华大学出版社,20084 严蔚敏,吴伟民.数据结构题集(C语言版)清华大学出版社,20085 网上相关资料附录1用户手册点击运行,首先出现的是登录界面,选择用户名称,正确的输入编号即可,如图7所示。图7主界面按照菜单提示输入编号即可图13浏览校园景点界面为来访客人提供图中任意景点的问路查询按照主菜单提示输入编号即可图14查看所有游览路线为访客推荐一条最短
11、路径。 按照菜单提示输入编号即可 图15选择出发点和目的地 为来访客人提供图中任意景点相关信息的查询按照菜单提示输入编号即可 图16查看各景点信息 附录2源程序 #include#include#include#define MAX 10000 #define MAX_VERTEX_NUM 10typedef struct int adj; Ar,Ad1010;typedef struct char name30; int num; char introduction100;infotype;typedef structinfotype vexs10; Ad arcs; int vexnum,
12、arcnum;MGraph;MGraph b;MGraph InitGraph()MGraph G; int i,j; G.vexnum=10; G.arcnum=10; for(i=0;iG.vexnum;i+) G.vexsi.num=i; strcpy(G.vexs0.name,北门); strcpy(G.vexs0.introduction,校大门-雄伟而美丽); strcpy(G.vexs1.name,图书馆); strcpy(G.vexs1.introduction,文化交流中心); strcpy(G.vexs2.name,南生活区); strcpy(G.vexs2.introdu
13、ction,学生家园(南区)); strcpy(G.vexs3.name,南门); strcpy(G.vexs3.introduction,校内外交通枢纽); strcpy(G.vexs4.name,校医院); strcpy(G.vexs4.introduction,带去一份真诚,换回一身健康); strcpy(G.vexs5.name,北生活区); strcpy(G.vexs5.introduction,学生家园(北区)); strcpy(G.vexs6.name,运动场); strcpy(G.vexs6.introduction,发扬体育运动,曾强师生体质); strcpy(G.vexs7
14、.name,教学楼); strcpy(G.vexs7.introduction,教学圣地); strcpy(G.vexs8.name,实验基地); strcpy(G.vexs8.introduction,实践与理论相结合的地方); strcpy(G.vexs9.name,清阳湖); strcpy(G.vexs9.introduction,美丽校园的核心); for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsij.adj=MAX; G.arcs01.adj=200; G.arcs02.adj=500; G.arcs06.adj=480; G.ar
15、cs17.adj=100; G.arcs23.adj=50; G.arcs36.adj=400; G.arcs34.adj=300; G.arcs45.adj=350; G.arcs49.adj=180; G.arcs59.adj=420; G.arcs67.adj=280; G.arcs69.adj=220; G.arcs78.adj=250; G.arcs89.adj=320; for(i=0;iG.vexnum;i+) for(j=0;jG.vexnum;j+) G.arcsji.adj=G.arcsij.adj; return G;void Menu() printf(n 欢迎来到沈阳
16、航空航天大学 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(诚心为你服务-请选择(输入编号.回车结束):);void Browser(MGraph *G)int v; printf(n); printf(编号.景点名称.简介 n); for(v=0;vvexnum;v+) printf(%-4
17、d%-16s%-56sn,G-vexsv.num,G-vexsv.name,G-vexsv.introduction); printf(n);void ShortestPath_DIJ(MGraph * G)int v,w,i,min,t=0,x,flag=1,v0; int final20, D20, p2020; while(flag) printf(请输入一个起始景点编号0-9:); scanf(%d,&v0); if(v0G-vexnum) printf(景点编号不存在!请重新输入景点编号0-9:); scanf(%d,&v0); if(v0=0&v0vexnum) flag=0; f
18、or(v=0;vvexnum;v+) finalv=0; Dv=G-arcsv0v.adj; for(w=0;wvexnum;w+) pvw=0; if(DvMAX) pvv0=1;pvv=1; Dv0=0;finalv0=1; for(i=1;ivexnum;i+) min=MAX; for(w=0;wvexnum;w+) if(!finalw) if(Dwmin)v=w;min=Dw; finalv=1; for(w=0;wvexnum;w+) if(!finalw&(min+G-arcsvw.adjarcsvw.adj; for(x=0;xvexnum;x+) pwx=pvx; pww=
19、1; for(v=0;vvexnum;v+) if(v0!=v) printf(%s,G-vexsv0.name); for(w=0;wvexnum;w+) if(pvw&w!=v0) printf(-%s,G-vexsw.name); t+; if(tG-vexnum-1&v0!=v)printf(总路线长%dmnn,Dv);void Floyd(MGraph *G)int v,u,i,w,k,j,flag=1,p1010,D1010; for(v=0;vvexnum;v+) for(w=0;wvexnum;w+) Dvw=G-arcsvw.adj; for(u=0;uvexnum;u+)
20、pvw=0; if(DvwMAX) pvw=1;pvw=1; for(u=0;uvexnum;u+) for(v=0;vvexnum;v+) for(w=0;wvexnum;w+) if(Dvu+DuwDvw) Dvw=Dvu+Duw; for(i=0;ivexnum;i+) pvw=pvu|puw; while(flag) printf(请输入出发点和目的地的编号0-9如(* *):); scanf(%d%d,&k,&j); if(kG-vexnum|jG-vexnum) printf(景点编号不存在!请重新输入出发点和目的地的编号:); scanf(%d%d,&k,&j); if(k=0&
21、kvexnum&j=0&jvexnum) flag=0; printf(%s,G-vexsk.name); for(u=0;uvexnum;u+) if(pkj&k!=u&j!=u) printf(-%s,G-vexsu.name); printf(-%s,G-vexsj.name); printf( 总路线长%dmn,Dkj);void Search(MGraph *G)int k,flag=1; while(flag) printf(请输入要查询的景点编号0-9:); scanf(%d,&k); if(kG-vexnum) printf(景点编号不存在!请重新输入景点编号0-9:); sc
22、anf(%d,&k); if(k=0&kvexnum) flag=0; printf(n); printf(编号.景点名称.简介n); printf(%-4d%-16s%-56sn,G-vexsk.num,G-vexsk.name,G-vexsk.introduction); printf(n);int LocateVex(MGraph *G,char* v)/找出int c=-1,i; for(i=0;ivexnum;i+) if(strcmp(v,G-vexsi.name)=0)c=i; return c;void print(MGraph *G)int v,w,t=0; for(v=0;
23、vvexnum;v+) for(w=0;wvexnum;w+) if(G-arcsvw.adj=MAX) printf(); else printf(%-7d,G-arcsvw.adj); t+; if(t%G-vexnum=0) printf(n); void main()int i; b=InitGraph(); Menu(); scanf(%d,&i); while(i!=5)switch(i)case 1:system(cls);Browser(&b);Menu();break; case 2:system(cls);ShortestPath_DIJ(&b);Menu();break; case 3:system(cls);Floyd(&b);Menu();break; case 4:system(cls);Search(&b);Menu();break; default:exit(1);scanf(%d,&i);完成日期:2011年01月08日