校园导游系统42851
校园导游系统 实验报告
校园导游系统实验报告校园导游系统实验报告1. 引言在现代高校中,校园导游系统作为一种重要的信息化工具,被广泛应用于校园导览、活动推广等方面。
本实验旨在设计一个校园导游系统,通过实际操作和用户反馈,评估其功能和可用性。
2. 实验设计与方法2.1 系统设计本实验采用Web应用程序作为校园导游系统的开发平台,采用HTML、CSS、JavaScript等前端技术,以及PHP、MySQL等后端技术进行系统设计与开发。
2.2 实验对象实验对象为本校学生,共计50人。
实验过程中,将收集用户对系统功能、界面设计、易用性等方面的反馈。
2.3 实验步骤a) 系统功能测试:用户通过系统进行校园导览,测试系统的导航、搜索、展示等功能。
b) 界面设计评估:用户评估系统的界面设计是否美观、直观,并提出改进建议。
c) 易用性测试:用户完成一系列任务,评估系统的易用性和用户体验。
3. 实验结果与分析3.1 系统功能测试结果在系统功能测试中,用户普遍认为系统的导航功能准确、搜索功能便捷,展示内容详细且易于理解。
然而,部分用户反映系统在室内导航方面存在一定的不准确性。
3.2 界面设计评估结果用户对系统的界面设计普遍评价良好,认为界面美观、直观。
然而,少数用户认为系统的颜色搭配不够舒适,建议增加自定义主题功能。
3.3 易用性测试结果用户在易用性测试中完成任务的平均时间为10分钟,任务完成率达到90%以上。
用户普遍认为系统的操作流程清晰,易于上手。
然而,部分用户认为系统的某些功能按钮位置不够显眼,建议进行调整。
4. 结论与建议本实验设计的校园导游系统在功能、界面设计和易用性方面均获得了较好的评价。
然而,仍存在一些问题和改进空间。
针对室内导航不准确的问题,可以考虑引入更精确的定位技术。
针对界面设计的改进建议,可以增加自定义主题功能和调整按钮位置。
此外,还可以进一步完善系统的互动性,增加用户评论、分享等功能,提升用户参与度。
5. 实验总结通过本实验,我们深入了解了校园导游系统的设计与开发过程,并对其功能和可用性进行了评估。
校园导游系统课程设计
校园导游系统课程设计一、课程目标知识目标:1. 学生能理解校园导游系统的基本概念,掌握其功能结构与操作流程。
2. 学生能运用所学的信息技术知识,结合校园实际情况,设计出实用的校园导游系统。
3. 学生了解并掌握校园导游系统中的地理信息、历史文化等相关知识。
技能目标:1. 学生能够运用所学的编程语言或软件工具,独立或合作完成校园导游系统的设计与制作。
2. 学生通过实践操作,提高自己的信息收集、处理、分析及解决问题的能力。
3. 学生能够通过项目实践,提升自己的团队协作、沟通表达及组织协调能力。
情感态度价值观目标:1. 学生在学习过程中,培养对信息技术的兴趣和爱好,提高主动学习和探究的精神。
2. 学生通过了解校园的历史文化,增强对学校的热爱和自豪感,培养积极向上的情感态度。
3. 学生在团队协作中,学会尊重他人、关心同伴,形成良好的人际关系,树立正确的价值观。
本课程针对中学生设计,结合信息技术学科特点,注重实践操作和团队协作。
课程目标旨在帮助学生将所学知识运用到实际项目中,提高他们的综合能力和素养。
通过本课程的学习,使学生能够更好地了解校园,提升自我解决问题的能力,同时培养他们的团队精神和价值观。
二、教学内容1. 校园导游系统概述- 了解校园导游系统的定义、功能与意义。
- 分析现有校园导游系统的优缺点。
2. 校园地理信息与历史文化- 学习校园地理分布、建筑特点及历史文化背景。
- 收集并整理校园内重要景点的信息。
3. 信息技术应用- 掌握编程语言(如Python)或软件工具(如GIS软件)的基本使用方法。
- 学习数据库管理,整理并存储校园导游信息。
4. 系统设计与制作- 制定校园导游系统的设计方案,明确系统功能模块。
- 学习界面设计,掌握一定的UI设计原则。
- 编程实现校园导游系统的基本功能,如地图导航、景点介绍等。
5. 项目实践与团队协作- 分组进行项目实践,明确分工与协作。
- 定期进行项目进度汇报,交流问题与经验。
校园导游系统设计与实现
校园导游系统设计与实现第一篇:校园导游系统设计与实现校园导游系统设计与实现目录 1.设计要求 2.1需求分析 2.2概要设计2.3各个模块名称和功能 2.4 系统导游主界面2.4.1前台系统2.4.2后台系统2.4.3退出系统 3实验总结参考文献附件1.设计要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。
2.1需求分析⑴设计学校的校园平面图。
选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于 30 个。
以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。
⑵存放景点代号、名称、简介等信息供用户查询。
⑶为来访客人提供图中任意景点相关信息的查询。
⑷为来访客人提供图中任意景点之间的问路查询。
⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。
景点距离图2.2概要设计校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。
用图的结点代表景点,用图的边代表景点之间的路径。
所以首先应设计一个图类。
结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。
本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。
计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。
最后用 switch 选择语句选择执行浏览景点信息或查询最短路径。
1、主界面设计为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。
2、存储结构设计本系统采用图结构类型(mgraph)存储抽象校园图的信息。
其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量 vexnum、arcnum 表示,它们是整型数据。
校园导游系统数据结构实习报告
校园导游系统数据结构实习报告校园导游系统数据结构实习报告一、引言随着信息技术的快速发展,数字化校园已成为许多学校的重要建设目标。
其中,校园导游系统作为数字化校园的一部分,对于提高校园文化氛围,方便新生和游客游览校园,增强校园归属感起到了重要作用。
在这次实习中,我们的主要任务是设计和实现一个校园导游系统,采用数据结构技术对校园地图进行建模和优化,以提供高效、便捷的导游服务。
二、系统设计1、数据结构选择:考虑到校园地图的复杂性,我们采用了图(Graph)作为基础数据结构。
图是由节点(顶点)和边组成的集合,可以很好地表示校园中各个地点之间的连接关系。
2、地图表示:我们将校园地图转化为图,其中每个地点对应一个节点,地点之间的路径对应边。
为了更准确地表示实际环境,我们使用了带权重的边,权重表示路径的长度或美观度。
3、导游路径规划:我们使用了最短路径算法,如Dijkstra算法和A*算法,来规划最佳游览路径。
用户可以在系统中设定起点和终点,系统会根据图中的边和权重计算出最短路径。
4、语音导航:系统可以通过用户的手机实时获取位置信息,并使用TTS(Text-to-Speech)技术将规划的路径转化为语音提示,方便用户边听边走。
5、数据库设计:我们设计了一个关系型数据库,用于存储校园地图信息、用户信息等。
通过使用索引和查询优化技术,提高了系统性能。
三、系统实现1、环境配置:我们使用了Python语言和相关的数据结构库来实现系统。
开发环境为Windows 10操作系统,数据库采用了MySQL。
2、代码实现:我们对Python语言和相关库进行了深入学习,掌握了图算法的实现方法。
在实现过程中,我们遇到了一些问题,如最短路径算法的优化、语音导航的实时性等。
通过查阅资料、讨论和实践,我们成功解决了这些问题。
3、测试与调试:我们对系统进行了全面的测试,包括单元测试、集成测试和系统测试。
在测试过程中,我们发现并修复了一些bug,提高了系统的稳定性和可靠性。
西安邮电大学-(数据结构)校园导游系统课程教学设计报告
西安郵電大學数据结构课程设计报告书崔斌专业名称 计算机科学与技术专业计科1106系部名称计算机学院 学生姓名04111185指导教师2012年12月15日 至 间2012年12月21日实验题目:校园导游系统一、实验目的① :为了让非本校的同学们,家长们能够充分了解本校 ---西安邮电大学。
② :实践数据结构所学知识。
二、实验内容学校简易的俯视图。
各个景点的简单介绍。
任意两景点之间的所有路径。
任意两景点之间的最少中转景点路径。
任意两景点之间的带权路径长度。
三、需求分析①: ②: ③: ④: ⑤:Init();初始化两个顺序栈Menu();进行选择的模块函数;Intro();景点介绍函数;SearchO;判断是否有此编号的景点;Fin dall path();找路径函数;Fin dallway();找任意两个景点之间的所有路径;(存在栈里面) ShortestwayO;任意两个景点之间中转次数最少的路径;(从栈里面读取出来) NicewayO;任意两个景点之间总权值最小的路径;(从栈里面读取出来) Calculate();(从栈里面读取出来相关数据),进行分析运算;Byebye();你懂得!四、概要设计1、方案设计对系统进行分析,给出景区图+++++++++++牛++++++++¥++++占-I-ILnJ一戸IJ]一(一恃//思想;递归结合循环,然后,找到终点时还要回溯;两点之间的所有路径void findallway(adjlist *G,int m,int n)//int i,t,k;arcnode *p;p a_th rp;p ush(s,m);G->vertex[m-1].flag=1;if(m==n)rp .sumweight=k=calculate(G);rp .sum=s->t op;rp.num=(y+1);p ush1(&z,r p);printf(" 路径%3d 为(途径%2d 个景点,长度为%3d) : ",y+1,s->top,k);for(i=O;iv=s->t op ;i++)p rintf("->%d",s->elem[i]);p rintf("\n");G->vertex[m-1].flag=1;y++;//外部全局变量二for(p=G->vertex[m-1].firstarc ;p!=NULL ;p=p-> nextarc)t=p->num;if(G->vertex[t-1].flag==0)findallway(G,t,n);G->vertex[s->elem[s->to p]-1].flag=0;// pop s(s);}//从文件里读取数据;错误1 ;不知道此节点有几个邻接点,因为%s 的原因,就会只把第一个节点的相关数据读出来,从第二个节点的相关信息处,开始读出错误(即烫烫烫烫烫烫烫烫烫烫烫)不超过m;错误2 ;读文件时,因为有链表的部分,就按照单链表的创建些写,结果总是此节点的 最后一个邻接点没被读到内存里,究其原因,是最后一个 (不仅我把 p2->nextarc=NULL;还把 free(p1);)void readnet(adjlist *G) {int i,count,m;arcnode *head,* p2,* p1; FILE *fp;fp=fo pen(U,"rt"); if(fp==NULL) {printf(-文件打开失败! ! ");exit(0);}for(i=0;i<vnum;i++) {fscanf(fp,"%d %s %s %d %d",&G->vertex[i].num,G->vertex[i].name,G->vertex[i].introduce,&G->vertex[ i].sum,&G->vertex[i].flag);//fprintf()的''后面不加第一个空格也可以。
校园导游图系统数据结构实验报告
4.查看景点信息:直接用编号进行单个景点查询。
四.详细设计
重点设计及编码
在求最短路径时采用迪杰斯特拉算法
//迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径,v0为起点
void ShortestPath_DIJ(MGraph * G)
(1)将导游图看作一张带权无向图,顶点表示公园的各个景点,边表示各景点之间的道路,
边上的权值表示距离.为此图选择适当的数据结构。
(2)把各种路径都显示给游客,由游客自己选择浏览路线。
(3)画出景点分布图于屏幕上。
[实现提示]
(1)构造一个无向图G并用邻接矩阵来存储。
(2)利用迪杰斯特拉算法来计算出起点到各个顶点之间的最短路径用二维数组p[i][]来记录,
if(D[v]<INFINITY)
{p[v][v0]=1;p[v][v]=1;} //v0到v有边相连,修改p[v][v0]的值为1
}//各顶点自己到自己要连通
D[v0]=0; //自己到自己的权值设为0
final[v0]=1; //v0的访问标志设为1,v属于s集
for(i=1;i<G->vexnum;i++) //对其余g.vexnum-1个顶点w,依次求v到w的最短路径
}
for(v=0;v<G->vexnum;v++)
{
final[v]=0;//初始化各顶点访问标志
D[v]=G->arcs[v0][v].adj; //v0到各顶点v的权值赋值给d[v]
for(w=0;w<G->vexnum;w++) //初始化p[][]数组,各顶点间的路径全部设置为空路径0
校园导游系统实训报告
导游咨询系统1需求分析编制一个为来访客人进行最短路径导游的程序〔1〕从学校的平面图上选取n个有代表性的景点,根据用户指定的起点和终点输出相应路径,或根据用户指定的景点输出景点的信息.<2>.为来访客人提供图中任意景点相关信息的查询.<3>.为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径.2、设计思路校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟. 用图的结点代表景点,用图的边代表景点之间的路径.所以首先应设计一个图类.〔草稿纸〕结点值代表景点信息,边的权值代表景点间的距离.结点值与边的权值用顺序表存储,所以需要设计一个顺序表类.本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度与路线,为方便操作,所以给每个景点一个代码,用结构体类型实现.计算路径长度和最短路线时可用弗洛伊德〔Floyd〕算法实现.最后用switch选择语句选择执行浏览景点信息或查询最短路径.3 算法设计一、概要设计程序中包含的模块〔1〕主程序模块主函数:voidmain<>〔2〕查询模块景点信息查询:void CreateUDN<>〔3〕打印模块打印两个景点的路径与最短距离:voiddisplay<>模块间的调用关系主函数main<>调用:void CreateUDN<>void ShortestPath<>/*要查找的两景点的最短距离*/void NextValue<>void HaMiTonian<>voiddisplay<>/*打印两个景点的路径与最短距离*/3.2详细设计界面菜单设计:char Menu<>{char c;int flag;do{flag=1;system<"cls">;narrate<>;printf<"\t\t\t-------1、查询景点路径-------\n">; printf<"\t\t\t-------2、查询景点信息-------\n">; printf<"\t\t\t-------3、推荐参观路线-------\n">; printf<"\t\t\t-------e、退出-----------\n">;printf<"\t\t\t\t请输入您的选择:">;scanf<"%c",&c>;if<c=='1'||c=='2'||c=='3'||c=='e'>flag=0;}while<flag>;return c;}char SearchMenu<>{char c;int flag;do{flag=1;system<"cls">;narrate<>;printf<"\t\t\t-----1、按照景点编号查询-----n">; printf<"\t\t\t-----2、按照景点名称查询-----n">; printf<"\t\t\t-----e、返回-----------n">;printf<"\t\t\t\t请输入您的选择:">;scanf<"%c",&c>;if<c=='1'||c=='2'||c=='e'>flag=0;}while<flag>;return c;}void search<>{int num;int i;char c;char name[20];do{system<"cls">;c=SearchMenu<>;switch <c>{case '1':system<"cls">;narrate<>;printf<"\n\n\t\t请输入您要查找的景点编号:">; scanf<"%d",&num>;for<i=0;i<NUM;i++>{if<num==G.vex[i].number>{printf<"\n\n\t\t\t您要查找景点信息如下:">;printf<"nnttt%-25snn",G.vex[i].description>;printf<"\n\t\t\t按任意键返回...">;getchar<>;getchar<>;break;}}if<i==NUM>{printf<"\n\n\t\t\t没有找到!">;printf<"\n\n\t\t\t按任意键返回...">;getchar<>;getchar<>;}break;case '2':narrate<>;system<"cls">;printf<"\n\n\t\t请输入您要查找的景点名称:">; scanf<"%s",name>;for<i=0;i<NUM;i++>{if<!strcmp<name,G.vex[i].sight>>{printf<"\n\n\t\t\t您要查找景点信息如下:">;printf<"\n\n\t\t\t%-25snn",G.vex[i].description>;printf<"\n\t\t\t按任意键返回...">;getchar<>;getchar<>;break;}}if<i==NUM>{printf<"\n\n\t\t\t没有找到!">;printf<"\n\n\t\t\t按任意键返回...">;getchar<>;getchar<>;}break;}}while<c!='e'>;}介绍景点:void CreateUDN<int v,int a>{int i,j;G.vexnum=v;G.arcnum=a;for<i=0;i<G.vexnum;++i> G.vex[i].number=i; G.vex[0].sight="行政楼";G.vex[0].description="学校领导,办公室之地.";G.vex[1].sight="校大礼堂";G.vex[1].description="业余活动,举办各种晚会.";G.vex[2].sight="5教";G.vex[2].description="教室,自习室";G.vex[3].sight="1教";G.vex[3].description="教室,自习室";G.vex[4].sight="图书馆";G.vex[4].description="阅览,借阅图书,电子阅览";G.vex[5].sight="第五食堂";G.vex[5].description="餐饮休闲";G.vex[6].sight="翠湖";G.vex[6].description="欣赏休闲,放松心情";G.vex[7].sight="南区食堂";G.vex[7].description="餐饮休闲";G.vex[8].sight="小树林";G.vex[8].description="晨读";for<i=0;i<G.vexnum;++i>for<j=0;j<G.vexnum;++j>G.arcs[i][j].adj=Max;G.arcs[0][1].adj=G.arcs[1][0].adj=12;G.arcs[0][2].adj=G.arcs[2][0].adj=6;G.arcs[0][3].adj=G.arcs[3][0].adj=5;G.arcs[1][4].adj=G.arcs[4][1].adj=11;G.arcs[2][4].adj=G.arcs[4][2].adj=2;G.arcs[3][5].adj=G.arcs[5][3].adj=4;G.arcs[5][7].adj=G.arcs[7][5].adj=9;G.arcs[4][6].adj=G.arcs[6][4].adj=2;G.arcs[4][7].adj=G.arcs[7][4].adj=14;G.arcs[6][8].adj=G.arcs[8][6].adj=7;G.arcs[7][8].adj=G.arcs[8][7].adj=3;}要查找的两个景点的最短距离:void ShortestPath<int num>{int v,w,i,t;int final[NUM];int min;for<v=0;v<NUM;v++>{final[v]=0;D[v]=G.arcs[num][v].adj;for<w=0;w<NUM;w++>P[v][w]=0;if<D[v]<20000>{P[v][num]=1;P[v][v]=1;}}D[num]=0;final[num]=1;for<i=0;i<NUM;++i>{min=Max;for<w=0;w<NUM;++w>if<!final[w]>if<D[w]<min>{v=w;min=D[w];}final[v]=1;for<w=0;w<NUM;++w>if<!final[w]&&<<min+G.arcs[v][w].adj><D[w]>>{D[w]=min+G.arcs[v][w].adj;for<t=0;t<NUM;t++>P[w][t]=P[v][t];P[w][w]=1;}}}打印两个景点的路径与最短距离:void display<>{int i=0;printf<"nnt">;for<i=0;i<8;i++>printf<"%s->",G.vex[x[i]-1].sight>;printf<"出口">;printf<"n">;}4、调试分析菜单界面景点名称景点描述两景点的最短路径。
最新校园导游系统设计与实现资料
校园导游系统设计与实现目录1.设计要求2.1需求分析2.2概要设计2.3各个模块名称和功能2.4 系统导游主界面2.4.1前台系统2.4.2后台系统2.4.3退出系统3实验总结参考文献附件1.设计要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。
2.1需求分析⑴设计学校的校园平面图。
选取若干个有代表性的景点抽象成一个无向带权图(无向网),所含景点不少于30 个。
以图中顶点表示校内各景点,边上的权值表示两景点之间的距离。
⑵存放景点代号、名称、简介等信息供用户查询。
⑶为来访客人提供图中任意景点相关信息的查询。
⑷为来访客人提供图中任意景点之间的问路查询。
⑸可以为校园平面图增加或删除景点或边,修改边上的权值等。
景点距离图2.2概要设计校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟。
用图的结点代表景点,用图的边代表景点之间的路径。
所以首先应设计一个图类。
结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。
本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。
计算路径长度和最短路线时可用迪杰斯特拉(Dijkastra)算法实现。
最后用switch 选择语句选择执行浏览景点信息或查询最短路径。
1、主界面设计为了实现校园导游系统各功能的管理,首先设计一个含有多个菜单项的主控菜单子程序以链接系统的各项子功能,方便用户使用本系统。
2、存储结构设计本系统采用图结构类型(mgraph)存储抽象校园图的信息。
其中,各景点间的邻接关系用图邻接矩阵类型(adjmatrix)存储;景点(顶点)信息用结构数组(vexs)存储,其中每个数组元素是一个结构变量,包含景点编号、景点名称及景点介绍三个分量;图的顶点个数及边的条数由分量vexnum、arcnum 表示,它们是整型数据。
校园导游咨询系统-中南大学数据结构课程设计
程序实现过程中的主要难点和解决方法
程序设计的主要难点就是在对结构体的设计和弗洛伊德算法的具体实 现上,通过查询数据结构的书及相关算法书,我了解到弗洛伊德算法主要运 用了动态规划的相关思想, 通过一个图的权值矩阵求出它的每两点间的最短 路径矩阵。 从图的带权邻接矩阵 A=[a(i,j)] n×n 开始, 递归地进行 n 次更新, 即由矩阵 D(0)=A,按一个公式,构造出矩阵 D(1);又用同样地公式由 D(1)
主要数据结构
链接矩阵,相关代码 typedef struct arc { int adj; }arc,adjmatrix[40][40];
//路径长度 //建一个结构体数组保存路径长度
typedef struct scenery //存储景点信息 { int num;//景点编号 char name[20];//景点名称 char introduction[200];//景点介绍 }scenery;
主要流程: int main() { b=initgraph(); while(1) { Menu(); int choice; cin>>choice; switch(choice)
//初始化
//界面 //选择功能
4
{ case 1: 查看校园景点 showall(&b); system("pause"); system("cls"); break; case 2: 查看景点信息 showselect(&b); system("pause"); system("cls"); break; case 3: 查找最短旅游路线 floyd(&b); system("pause"); system("cls"); break; case 4: 退出系统 exit(1); break; default: cout<<"请在 1-4 中选择操作!"<<endl; system("pause"); system("cls"); break; } } return 0; }
校园导游系统[新版]
校园导游系统[新版]校园导游系统// 校园导游咨询/*[问题描述]设计一个校园导游程序,为来访的客人提供各种信息查询服务。
[基本要求](1)设计你的学校的校园平面图,所含景点不少于10个。
以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
[实现提示]一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。
顶点和边均含有相关信息。
一需求分析1从武汉理工大学余家头校区平面图中选取10个大家熟悉的景点,抽象成一个无向带权图(如图所示)。
以图中顶点表示景点,边上的权值表示两地的距离。
2本程序的目的是为用户提供路径咨询和景点查询。
根据用户指定的始点和终点输出相应路径或者根据用户指定的景点输出景点的信息。
二、概要设计1本文采用的数据结构*//*包含头文件*/// 数据结构课程设计.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"#include<stdio.h>#include<process.h> //定义符号常量 #define INT_MAX 10000 #define n 10 //定义全局变量 int cost[n][n];// 边的值 int shortest[n][n];//两点间的最短距离int path[n][n];// 经过的景点 void introduce(); //自定义函数原型说明int shortestdistance(); void floyed();void display(int i,int j); /*(1)景点信息查询(2)两景点的最短距离 (3)两个景点之间的路径三、详细设计 */void main() //主函数 {int i,j;char k;for(i=0;i<=n;i++)for(j=0;j<=n;j++)cost[i][j]=INT_MAX;cost[1][3]=cost[3][1]=200;cost[1][2]=cost[2][1]=50;cost[2][3]=cost[3][2]=150;cost[2][4]=cost[4][2]=120;cost[1][4]=cost[4][1]=150;cost[4][5]=cost[5][4]=80;cost[4][9]=cost[9][4]=120;cost[5][9]=cost[9][5]=220;cost[5][7]=cost[7][5]=180;cost[5][6]=cost[6][5]=90;cost[6][7]=cost[7][6]=50;cost[7][8]=cost[8][7]=70;cost[8][6]=cost[6][8]=130;cost[1][1]=cost[2][2]=cost[3][3]=cost[4][4]=cost[5][5]=0;cost[6][6]=cost[7][7]=cost[8][8]=cost[9][9]=cost[10][10]=0;while(1){printf("----------------欢迎使用中原工学院校园导游系统!----------------\n");printf("1.景点信息查询………请按 i (introduc)键\n");printf("2.景点最短路径查询…请按 s (shortestdistance)键\n");printf("3.退出系统……………请按 e (exit)键\n");printf("学校景点列表:\n");printf("1:学校正门 ");printf("2:图书馆 ");printf("3:行政楼");printf("4:体育馆 "); printf("5:操场\n"); printf("6:北苑宿舍楼群 "); printf("7:北苑餐厅 "); printf("8:紫薇广场 "); printf("9:滴水涌泉 ");printf("10:南苑操场\n"); printf("请选择服务:"); scanf("\n%c",&k); switch(k){case 'i':printf("进入景点信息查询:"); introduce();break;case 's':printf("进入最短路径查询:"); shortestdistance(); break;case 'e':exit(0);default:printf("输入信息错误~\n请输入字母i或s或e.\n");break;}}}/*main*/void introduce() {/*景点介绍*/int a;printf("您想查询哪个景点的详细信息?请输入景点编号:");scanf("%d",&a);getchar();printf("\n");switch(a){case 1:printf("1:学校正门\n\n 学校的大门,前面一条宽敞的马路,它是107国道,学校大门后面就是宏伟高大的图书馆,两者相互衬托不仅显示出学校大门的气魄,也显示出图书馆的匠心独具。
校园导游系统42884
课程设计说明书课程名称:数据结构与算法设计题目:校园导游系统院系:计算机科学与信息工程学院学生姓名:学号:专业班级:计算机科学与技术信息技术方向11-1指导教师:2013年6月21日课程设计任务书校园导游系统摘要:随着社会经济的发展,人们接近自然的机会就越多,因此外出旅游现在被越来越多的都市人所看中,所以如何快速方便的找到我们想要的旅游景点的信息和最短路径,如何简单的修改相关的信息,就成了很重要的问题。
本设计基于图的结构,用数组表示法创建一个无向图,针对游客的实际需求,将安阳工学院的景点编号、名称、介绍等信息放入到图的顶点当中,将路径长度的信息存放在弧当中。
利用弗洛伊德算法求出两个景点之间的最短路径,利用迪杰斯特拉算法来求从一个景点到其他剩余的所有景点的最短距离;用相应的函数来查找景点,并显示出它的编号,信息,简介。
并进行一定的界面美化,更贴近用户,相应的提示使用户操作起来更容易。
关键词:最短路径、查找景点信息、无向图目录1. 设计背景 (5)1.1程序设计内容 (5)1.2程序设计要求 (5)2.设计方案 (6)2.1 景点抽象图 (6)校园景点抽象图比较直观的反应的校园景点的总体布局。
图中顶点代表校园景点,顶点之间的边代表景点之间的路径,权值代表景点间的距离,两个顶点间没有边,表明两个景点不能直接到达。
(6)景点抽象图如图1所示: (7)2.2 程序模块图 (7)2.3 主函数设计简要 (8)2.4 各函数模块的功能 (9)3. 方案实施 (9)3.1 程序执行流程图 (9)3.2 主函数设计思想 (10)4. 结果测试 (12)4.1 主函数功能模块测试 (13)4.2主函数功能测试 (13)4.3 各功能所执行的操作 (17)5. 结论 (18)6. 收获与致谢 (19)7. 参考文献 (19)8. 附件 (19)1. 设计背景1.1程序设计内容根据设计要求,利用无向图将学校的景点作为图的顶点,顶点的边作为景点之间的距离进行存储,根据游客的需求,查找各个景点的信息,找出两个景点的最短路径,实现校园的导游目的。
校园导游系统
西安郵電大学数据结构课程设计报告题目:校园导游系统院系名称:专业名称:班级:学生姓名:学号(8位):指导教师:设计起止时间:2013年12月16日~2013年12月27日一. 设计目的(1)了解二叉树特性、存储及其操作实现,在计算机领域运用二叉树编译代码实现一件简单实际的操作,熟练掌握二叉树的三种遍历递归与非递归的实现;(2)掌握图的两种遍历深度优先遍历和广度优先遍历,了解两者的区别和优缺点。
学习在计算机中表示和处理图形结构以及绘制简单的地图并输出,熟练掌握图的逻辑结构和存储结构,学习用算法来解决实际问题;(3)掌握邻接链表和邻接矩阵的存储结构,以及这两者的区别,会用邻接链表和邻接数组两种方法来实现数据的存储与读取;(4)巩固文件的存储与读取部分,以便能够加深对文件读写的理解和更好的更熟练的实际应用;(5)学会用计算机解决实际问题,将生活中的问题数据化,然后输入到计算机中以便更快的解决,提高自己的实践能力以及自身的学习能力,加深对课本知识的理解和掌握。
二. 设计内容<1> 设计题目:设计一个校园导游程序,并按各要求进行编程:要求:(1)设计并显示学校的校园平面图,地点(地点名称、地点介绍),路线(公里数)均不少于10个。
(2)提供图中任意地点相关信息的查询。
(3)提供图中任意地点的问路查询:1>任意两个地点之间的一条最短的简单路径;(最短路径长度——中转次数最少)2>任意两个地点之间的一条最佳访问路线;(带权(公里数)最短路径长度)3>任意两个地点之间的所有简单路径。
(4)提供图中所有地点的最佳布网方案;(5)增加新地点和路线、撤销旧地点和路线。
三.概要设计1.功能模块图:2.各个模块详细的功能描述。
该导游系统能为来访者提供包括景点介绍、景点查询、仿真地图、最短路径之类的快捷指导。
最短路径查询和景点概况主要运用了Dijstra算法来实现,其他功能都是通过一些简单的算法来编写的。
校园导游系统 数据结构实习报告
校园导游系统数据结构实习报告在当今数字化的时代,校园导游系统对于提升校园的服务质量和访客体验具有重要意义。
本次数据结构实习,我致力于开发一个实用的校园导游系统,通过运用所学的数据结构知识,实现了系统的核心功能,并对整个开发过程进行了深入的总结和反思。
一、系统需求分析校园导游系统旨在为访客提供便捷的校园导航服务,帮助他们快速了解校园布局、建筑物位置以及相关设施信息。
具体需求包括:1、校园地图的构建与展示:能够清晰呈现校园的地理布局,包括建筑物、道路、绿地等。
2、地点查询功能:访客可以输入目标地点,系统能够快速定位并提供导航路径。
3、周边设施查询:如餐厅、图书馆、停车场等,方便访客了解周边服务设施。
二、数据结构选择为了实现上述功能,需要选择合适的数据结构来存储和管理校园信息。
经过分析,我选用了以下几种数据结构:1、图结构用图来表示校园的地理布局,将建筑物和道路视为图的顶点和边。
可以使用邻接矩阵或邻接表来存储图的关系,便于进行路径搜索和遍历。
2、哈希表用于快速查找地点和设施的信息,提高查询效率。
3、链表存储导航路径,方便进行路径的添加和删除操作。
三、系统功能实现1、地图构建首先,对校园进行实地考察,收集建筑物和道路的位置信息。
然后,将这些信息转化为图的顶点和边,并建立相应的邻接关系。
2、地点查询当访客输入地点名称时,通过哈希表快速定位到对应的顶点。
接着,使用图的搜索算法(如迪杰斯特拉算法)计算从当前位置到目标位置的最短路径。
3、周边设施查询为每个设施建立相应的标识,并在哈希表中存储设施的位置和相关信息。
根据访客的当前位置,搜索附近一定范围内的设施。
四、系统界面设计为了提供友好的用户体验,设计了简洁直观的系统界面。
界面主要包括以下几个部分:1、地图展示区以图形化的方式展示校园地图,标注出建筑物和道路。
2、查询输入框访客可以在此输入地点或设施名称进行查询。
3、结果显示区显示查询结果,包括目标地点的位置、导航路径以及周边设施信息。
基于微信平台的校园智能导游系统介绍
校园智能导游系统系统&功能简介北京迅邦科技2016.05校园智能导游系统系统介绍校园智能导游系统是基于GPS定位的校园导游系统:访客只需关注校园微信平台,即可使用智能导游服务,访客可以选择感兴趣的游览线路,沿途可以随时通过手机定位,通过地图找到自己所处的位置,聆听所处的景观的真人语音介绍。
除此之外,还具备各类校园热点、新生接待地点、ATM机、配套商家等多项功能。
通过校园智能导游平台,三维地图中的热点信息以主动弹出的方式出现,能够让访客更快捷的找到,距离自己多远。
尤其对于新生来说,从进入校门起,所需要的所有信息都可以通过校园导游便捷查询,为学子们快速的融入新的学习和生活,提供最大的便利。
访客无需下载任何软件或客户端,关注官方公众号即可使用,校园智能导游一切为师生服务!2系统优势3校园单位的信息大都跟地理位置有关,基于位置的信息服务是移动应用的强项。
互联网服务几乎可以整合吃、住、行、游、购、学习等各个方面的信息。
无需安装,使用简单;可结合图片、文字、音频、视频、360全景等方式生动展现景点的信息和周边服务。
访客的移动性、信息需求的多样性、及时性、智能地图导游对于校庆、会议接待来说是尤为重要的。
通过微博,微信等分享功能,快速分享到朋友圈,实现校园品牌宣传。
校园导游系统会议接待地理性广泛性简单易用口碑宣传新生接待无论是新生接待处,还是公寓、宿舍、食堂等必要信息,都离不开地图导航。
为什么要用校园智能导游?校园智能导游系统使用流程4校园三维全景地图展示GPS实时定位功能校园单位线路实时查询校园单位信息查询与讲解单位内部及周边信息查询扫描二维码、或关注校园微信公众平台,即可使用。
手机打开微信扫一扫校园智能导游系统校园智能导游系统功能介绍1、校园全景地图展示以3D地图的形式展现校园全貌,快速放大、缩小、移动,方便访客对校区全面了解,统筹规划线路。
配有校园三维地图,旅游线路、沿途单位景点、周边服务设施都可以在地图上展示,一目了然。
数据结构-校园导游系统
课程设计论文(附有代码!)题目:校园导游咨询学院:计算机科学与工程学院专业:计算机科学与技术姓名:学号:指导教师:2014年9月22日摘要桂林众山环绕,风景优美,加之近年来校园环境也得到不断地改善,来访校园的游客逐渐增加,为了方便众多游客对校园景点的参观,需要给来访人士提供校园导游咨询服务,利用计算机建立一个便利的咨询系统可以很好地解决这个问题。
在本设计实验中,我所采用的是邻接矩阵作为数据的存储结构,用不同的功能模块对两地距离和校园道路信息进行编辑。
当游客来访时,系统能根据用户输入的景点代号查询景点信息,提供任意两个景点间的最短路径查询,并能查询校园内的交通信息,方便游客访问。
工作人员还可以为校园更新景点以及路径信息。
本文将简单介绍该系统的开发背景,详细介绍系统的主要设计思路,函数的建立和使用过程,该系统功能的实现方式和实现结果,以及对所遇到问题的分析解决,最后对该系统进行总结描述。
关键词:校园导游咨询;C++;数据结构;最短路径;查询;目录引言 (1)1系统概述 (1)2需求分析 (1)2.1 系统需求 (1)2.2 开发环境 (2)3详细设计 (3)3.1 系统结构 (3)3.2 数据结构设计以及数据的初始化 (4)3.2.1 图结构设计 (4)3.2.2 数据的初始化 (4)3.3 查询模块的详细设计 (5)3.3.1 查询模块功能子函数设计 (5)3.4 更新功能模块详细设计 (7)3.4.1 更新模块功能子函数设计 (8)4所遇到的问题和分析解决 (10)5系统特色及关键 (11)6结论 (12)参考文献 (13)引言随着计算机科学技术的不断提高,计算机依靠其强大的功能已经成为人们生活中不可缺少的一部分,计算机能解决人类生活中的大部分问题,为人类文明和社会进步做出了巨大贡献。
桂林是一个全世界著名的旅游城市,近几年来旅游业得到了飞速的发展,来自各个国家各个城市的游客给城市带来了巨大的经济效益。
校园导游咨询系统源代码
typedef struct//用来定义一个图 {
infotype vexs[10]; Ad arcs; int vexnum,arcnum; }MGraph; MGraph b;
MGraph InitGraph()//初始化图形 {
MGraph G;
int i;
int j;
G.vexnum=10; G.arcnum=10;
printf(" \n"); printf( 车结束):"
}
4.查看各景点信息 5.退出系统
"诚心为你服务-请选择(输入编号.回 );
//查看各 v;
printf("\n");
printf("编号.景点名称.简介 \n");
#include<stdlib.h>//standard library 标准库头文件
#include<stdio.h>//标注输入输出函数头文件
#include<string.h>//字符函数头文件
#define MAX 10000 //定义路程最远距离符号常量无穷大
#define MAX_VERTEX_NUM 10//定义的景点/顶点数量符号常量 最大顶点数 10 个
for(i=0;i<G.vexnum;i++) for(j=0;j<G.vexnum;j++) G.arcs[j][i].adj=G.arcs[i][j].adj; return G; }
//菜单
void Menu()
{ printf("\n *************************** **************************\n");
校园导游服务咨询系统C++(含源代码)说明书---2015
计算机科学与技术教研室课程设计说明书(2014-2015学年第1学期)注:成绩均用百分制。
总成绩=平时成绩*20%+报告成绩*40%+演示与答辩成绩*40%设计题目:校园附近门店服务查询系统1、课程设计目的(1)数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C++语言),自行实现一个较为完整的应用系统.(2)通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。
(3)学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力.1)熟练掌握链表存储结构及其建立过程和常用操作;2)学会自己调试程序的方法并掌握一定的技巧;3)通过温习旧的知识,学习新知识,并提高分析和解决问题的能力。
2、课程设计正文2.1概要设计2.1。
1 系统分析该系统主要功能包括:增添服务信息、查询服务信息、修改服务信息、删除服务信息以及推荐路径等。
1。
主程序模块:连接各种功能子模块,使用循环等待用户操作,完成程序的基本操作实现功能.2.菜单显示模块:生成每个菜单的显示界面,使程序更简单清晰。
3.查询服务信息:用户在选择此功能模块后,按照屏幕上方提示的服务信息名称及其对应的编号,要求用户输入想要查询的服务信息的编号,回车后系统将在已存储的服务信息中进行匹配,若该景点信息尚未存储则将提示错误;若找到对应信息则系统将输出服务信息,显示于幕上方。
4.查询两服务信息最短路径:运用弗洛伊德算法,用户在选择此功能模块后,按照屏幕上方提示的服务信息名称及其对应的编号,要求用户输入起点和终点的编号,系统将在已存储的景点中进行匹配,若未找到所需查询的服务信息编号,系统将提示错误并要求用户再次输入。
若输入信息合法,则回车后系统将给出最短路径,显示于屏幕上方。
5.删除服务信息:用户操作功能模块,由主程序直接调用的函数模块,将功能具象化,系统工具函数模块,先查找到所存在的服务信息,然后对用户希望删除的服务信息进行删除操作,若所要删除的服务信息不存在,则输出不存在此服务信息. 2.1.2系统结构图系统要实现的功能:1、增添服务信息;2、修改服务信息;3查询服务信息;4、查询两服务信息之间最短路径;5、删除服务信息;6、退出系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安邮电大学(计算机学院)数据结构课程设计报告题目:校园导游系统专业名称:网络工程班级:网络150学生姓名:学号(8位):指导教师:王春梅设计起止时间:2016年12月26日—2016年12月30日一. 题目要求1、设计学校的校园平面图,地点(地点名称、地点介绍)不少于10个。
2、提供图中任意地点相关信息的查询。
3、提供图中任意地点的问路查询:1)任意两个地点之间的一条最短(中转最少)的简单路径;2)任意两个景点的最佳访问路线(带权)查询;3)任意两个地点之间的所有路径。
4、地点和道路的扩充以及撤销;地点基本信息的文件存储。
(附加:加分题)二.概要设计1.功能模块的调用关系图2.各个模块详细的功能描述。
1.首先,main()函数调用loge()函数,输出欢迎界面,然后调用showmenu()函数来选择用户所要进行的操作。
其中showmenu()函数就是一个菜单供使用者来选择他所要进行的相关操作,比如信息的查询,最短路径查询之类。
2.browser()函数,用于输出校园平面图,给用户提供校园的景点分布状况,方便用户选择景点参观。
3.Search()函数,用于查询用户所选的景点信息,用户需要输入要查询的景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出该景点的相关信息,包括景点名字,景点的相关介绍,否则返回重新输入。
4.SearchAllpath()函数,用于查询用户所选的任意两个景点间的所有路径,用户需要输入要查询的起始景点编号,函数会对编号进行判断,如果是合法输入,用户需要输入要查询的终点景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出输查询的两个景点间的所有路径,否则返回重新输入。
函数使用深度遍历DeepFirstSeach()查找路径。
5.Wellway()函数,用于查询用户所选的任意两个景点间的最短路径,用户需要输入要查询的起始景点编号,函数会对编号进行判断,如果是合法输入,用户需要输入要查询的终点景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出输查询的两个景点间的最短路径,否则返回重新输入。
函数的生成主体是迪杰斯特拉算法来计算出起点到终点之间的最短路径。
6.minway()函数,用于查询用户所选的任意两个景点间的最佳路径(即中转最少),用户需要输入要查询的起始景点编号,函数会对编号进行判断,如果是合法输入,用户需要输入要查询的终点景点编号,函数会对编号进行判断,如果是合法输入,则在屏幕上输出输查询的两个景点间的最短路径,否则返回重新输入。
7. CreatUDN()函数,创建的图,它是MGraph型,G->vexnum表示顶点的个数;G->arcnum表示边数。
CreatUDN()函数的功能就是实现图的创建,将已知的景点的一些信息,转换成图的信息,并进行存储。
三.详细设计(主要函数的程序流程图)1.任意两个地点之间的一条最短(中转最少)的简单路径利用遍历的思想,遍历图找出一条最佳最佳的的路径,让它遍历所有景点。
往下遍历,访问标志位,若访问过在下次就不用访问。
若找完一个分支在下次重新遍历。
zz[0]->zhi=m;zz[0]->front=NULL;flag[m]=1;for(top=0;top<20;top++){for(i=0;i<20;i++){if(G->arcs[zz[top]->zhi][i].adj!=INFINITY&&i==n){printf("%s\n",G->vexs[n].name);printf("%s\n",G->vexs[zz[top]->zhi].name);zz[top]=zz[top]->front;while(zz[top]!=NULL){printf("%s\n",G->vexs[zz[top]->zhi].name);zz[top]=zz[top]->front;}getch();return;}else if(G->arcs[zz[top]->zhi][i].adj!=INFINITY&&flag[i]==0) {zz[++j]->zhi=i;zz[j]->front=zz[top];flag[i]=1;}}}2.任意两个景点的最佳访问路线(带权)查询利用迪杰特斯拉算法,求v0到其余顶点的最短路径D[],p [][]是用来存放各路径的权值,借助辅助数组final[]标志,是否当前顶点属于final(1,属于)。
for(v=0;vvexnum;v++) {final[v]=0;D[v]=G->arcs[v0][v].adj;for(w=0;wvexnum;w++)p[v][w]=0;if(D[v]<infinity)< p=""></infinity)<>{p[v][v0]=1;p[v][v]=1;}}D[v0]=0;final[v0]=1;for(i=1;ivexnum;i++){min=INFINITY;for(w=0;wvexnum;w++)if(!final[w])if(D[w]< p=""><>final[v]=1;for(w=0;wvexnum;w++)if(!final[w]&&(min+G->arcs[v][w].adj<d[w]))< p=""></d[w]))<> {D[w]=min+G->arcs[v][w].adj;vexs[v0].name);flag=0;min=INFINITY;for(w=0;wvexnum;w++){if(p[v][w]&&w!=v0){f l" />} do { } for(x=0;xvexnum;x++) p[w][x]=p[v][x]; p[w][w]=1; v=v1; w1=v0; printf("%s",G->vexs[v0].name); flag=0;min=INFINITY; for(w=0;wvexnum;w++) { if(p[v][w]&&w!=v0) { flag=1;if(D[w]3.任意两个地点之间的所有路径利用深度优先的思想,遍历图找出所有的路径,让它遍历所有景点。
利用递归的思想,往下历,访问标志位,若访问过在下次就不用访问。
{int s;if(v[k]==j)/*找到一条路径*/{count++;/*路径的条数值加1*/printf("第%d条:",count);for(s=1;s<="" p="">printf("%s->",G->vexs[v[s]].name);printf("%s\n",G->vexs[v[s]].name);}for(s = 1;svexnum;s++){if(s!=i)/*保证找到的是简单路径*/{if(G->arcs[v[k]][s].adj!=INFINITY&&visited[s]==0)/*当vk与vs之间有边存在且vs未被访问过*/{visited[s]=1; /*置访问标志位为1,即已访问的*/v[k+1]=s; /*将顶点s加入到v数组中*/DeepFirstSeach(G,i,j,k+1); /*递归调用之*/visited[s]=0; /*重置访问标志位为0,即未访问的,以便该顶点能被重新使用*/ }}}}若找完一个分支在下次重新遍历。
四.测试数据及运行结果1.正常测试数据和运行结果2.异常测试数据及运行结果五.调试情况,设计技巧及体会1.改进方案本次实习设计总体上来说是成功的,我在规定的时间内完成了老师交代的任务,并让程序能够运行起来,可以说大体上没有问题,当然在细节上还有需要改进的地方;合理之处:①对于老师所提出的问题要求很好并及时的解决了;②程序运行整体上没有大的错误;③对于各大模块划分清晰,知道先做什么后做什么;④程序运行后界面漂亮,用户使用方便;⑤合理恰当的把书上所学的关于图的知识应用到程序设计之中,使程序明了可读性较高。
不合理之处:①程序之中存在一些小毛病,不能100%的运行无误;②关于文件存储这一模块掌握的不是很好,所创建的图不能很好的保存到文件之中;③程序设计中最短路径(中转最少)显示的时候是倒着显示改进方案:对于程序存在的小问题一个个的仔细排除,精尽量做到准确无误;对于文件和最短路径的设计应多参考相关书籍,找到合理正确的解决方法,将图存储到指定的文件中去,并且使最短路径在输出的时候能够以正确的顺序输出。
2.体会这次课程设计给我的感触很多,课程设计没开始之前我总是在想今年的课程设计会不会象去年那样辛苦,但是这一周下来我当然也感到累,也有心情烦躁的时候,体会到调试成功时的那种喜悦。
课程设计之前老师让我们自己先想好设计思路,都要做哪些模块。
那天下午编了一下午,没什么成就弄得我很心烦,再想到快要考试,那种急于求成的心更迫切,自己很难平静。
第二天老师检查时我什麽都没有,看到同学的程序我开始着急了,但那会我只有一个念头我得从新开始,由于对图不是很了解,我就从读写模块开始,就使用简单的C语知识,那天早上将那两个模块给拿下了。
下机后我在寝室开始编程,开始进入真正的图部分,边思考怎样可以将它们联系起来,边进行调试。
对编程兴趣很浓,直到晚上十点我已经将老师的要求完成差不多。
这些日子是很辛苦,但我学到了很多东西,理解了图的运用,还和同学一起分享调试成功的那种喜悦,我完成的早,同学有问题会让我帮助,在帮他们的过程中我也学会了很多种不同的思想,让我对图有了更深刻的理解。
当然,我要感谢学校领导精心给我们安排的这次实习操作,更感谢我们的程序设计老师,是她给了我们一个相对轻松有趣的环境,让我们感到在设计中没有压力,在她的帮助下,我终于完成了本次课程设计的任务。
#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<windows.h>#include<string.h>#define INFINITY 10000 /*无穷大*/#define MAX_VERTEX_NUM 40#define MAX 40typedef struct ArCell{int adj; //路径长度}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介等信息,s {char name[30];int num;int x;int y;char introduction[500];//简介}infotype;struct zui //最短路径记录结构体{int zhi;struct zui *front;};typedef struct{infotype vexs[MAX_VERTEX_NUM]; AdjMatrix arcs;int vexnum,arcnum;}MGraph;<p>void showmenu();</p><p>void loge(); //启动动画</p><p>void Wellway(MGraph * ); // 计算任意两个景点之间的最短路径MGraph InitGraph(void); //初始化</p><p>void browser(); //浏览校园全景</p><p>void Search(MGraph *G); //查看景点信息</p><p>MGraph *CreatUDN(MGraph *G); //创建图</p><p>void SearchAllpath(MGraph *G); //查找两点间所有路径void minway(MGraph *G);</p><p>MGraph *CreatUDN(MGraph *G);</p><p> </p><p>int openfile(MGraph *G);</p><p>int writefile(MGraph *G);</p><p> </p><p>int writefile(MGraph *G)</p><p>{</p><p>FILE *fp;</p><p>int i;</p><p> </p><p>fp = fopen("xiaoyuanxinxi.txt", "w");</p> <p> </p><p>if(fp == NULL)</p><p>{</p><p>printf("打开失败!");</p><p>return FALSE;</p><p>}</p><p>for(i = 0; i < 20; i++)</p><p>fwrite(&G , sizeof(MGraph), 1 ,fp);</p><p> </p><p>return TRUE;</p><p>fclose(fp);</p><p>}</p><p> </p><p>int openfile(MGraph *G)</p><p>{</p><p>FILE *fp;</p><p>int i = 0;</p><p>int t = 0;</p><p> </p><p>fp = fopen("xiaoyuanxinxi.txt", "r");</p> <p> </p><p>if(fp == NULL)</p><p>{</p><p>printf("文件为空,无景点信息,请按任意键返回添加!"); return FALSE;</p> <p>}</p><p> </p><p>while(!feof(fp))</p><p>{</p><p>fread(&G, sizeof(MGraph), i, fp);</p><p>i++;</p><p>}</p><p> </p><p>for(t=0;t<i;t++)</p>{printf("%d%s%s",G->vexs[t].num,G->vexs[t].name,G->vexs[t].introduction);printf("\ n");}fclose(fp);returni;}voidmain(void){intk;system("modecon:cols=140lines=130");>{</p><p>printf("%d %s %s",G->vexs[t].num,G->vexs[t].name,G->vexs[t].introductio n); printf("\n");</p><p>}</p><p> </p><p>fclose(fp);</p><p>return i;</p><p>}</p><p> </p><p>void main(void)</p><p>{</p><p>int k;</p><p>system("mode con: cols=140 lines=130");</p><p>loge();</p><p>b=InitGraph();</p><p> </p><p>system("cls");</p><p>printf(" 欢迎进入西安邮电大学校园导游咨询系统\n");</p> <p>Sleep(1000);</p><p>do</p><p>{</p><p> </p><p>while(1)</p><p>{</p><p>showmenu();</p><p>printf("请选择:");</p><p>scanf("%d",&k);</p><p>if(k<0||k>6)</p><p>{</p><p>printf("输入有误请重新输入\n");</p> <p>scanf("%d",&k);</p><p>}</p><p>else break;</p><p>}</p><p>switch(k)</p><p>{</p><p>case 1:browser();system("cls");break;</p><p>case 2:Search(&b);system("cls");break;</p><p>case 3:SearchAllpath(&b);system("cls");break;</p> <p>case 4:Wellway(&b);system("cls");break;</p><p>case 5:minway(&b);system("cls");break;</p><p>case 6:CreatUDN(&b);system("cls");break;</p><p>case 0:exit(0);</p><p> </p><p>}</p><p>}while(1);</p><p>}</p><p>void showmenu()</p><p>{</p><p>printf(" ************************************\n");</p><p>printf(" $ 主要景点列表$ \n");</p><p>printf(" $ 建议观看$ \n");</p><p>printf(" ************************************\n");</p><p>printf(" <12> 田操场<09> 西邮小湖\n");</p>printf("教学楼A体育馆\n");printf("教学楼B图书馆\n");printf("1号实验楼2号实验楼\n");printf("3号实验楼校医院\n");printf("大学生活动中心喷泉\n");printf("美食广场旭日苑\n")"<p>printf(" <2> 教学楼A<14> 体育馆\n"); printf(" <3> 教学楼B<10>图书馆\n"); printf(" <5> 1号实验楼<6> 2号实验楼\n"); printf(" <7> 3号实验楼<11> 校医院\n"); printf(" <8> 大学生活动中心<4> 喷泉\n"); printf("<13> 美食广场<15> 旭日苑\n");printf(" 1.查看学校景点分布图\n");printf(" 2.查询景点简介查询\n");</p><p>printf(" 3.查询某两个景点间所有的路径\n"); printf(" 4.任意两景点之间的最佳路径\n");printf(" 5.任意两景点之间的最短路径\n");printf(" 6.建图并保存到文件\n"); printf(" 0.退出\n");</p><p>}</p><p> </p><p>void loge()</p><p>{</p><p>printf("\t\t\t\t\t\t\t");</p><p>printf("欢"); Sleep(100);</p> <p>printf("迎"); Sleep(100);</p> <p>printf("进"); Sleep(100);</p> <p>printf("入"); Sleep(100);</p> <p>printf("西"); Sleep(100);</p> <p>printf("安"); Sleep(100);</p> <p>printf("邮"); Sleep(100);</p> <p>printf("电"); Sleep(100);</p> <p>printf("大"); Sleep(100);</p><p>printf("学"); Sleep(100);</p><p>printf("校"); Sleep(100);</p><p>printf("园"); Sleep(100);</p><p>printf("导"); Sleep(100);</p><p>printf("游"); Sleep(100);</p><p>printf("系"); Sleep(100);</p><p>printf("统"); Sleep(100);</p><p>printf("\n");</p><p>}</p><p>MGraph InitGraph()</p><p>{</p><p>MGraph G;</p><p>int i,j;</p><p>G.vexnum=20;</p><p>G.arcnum=18;</p><p>for(i=0;i<G.vexnum;i++)</p><p>G.vexs[i].num=i;</p><p>strcpy(G.vexs[0].name,"大门");</p><p>strcpy(G.vexs[1].name,"行政楼");</p><p>strcpy(G.vexs[2].name,"教学楼A"); strcpy(G.vexs[3].name,"教学楼B");strcpy(G.vexs[4].name,"喷泉");</p><p>strcpy(G.vexs[5].name,"一号实验楼"); strcpy(G.vexs[6].name,"二号实验楼");strcpy(G.vexs[7].name,"三号实验楼");</p>strcpy(G.vexs[8].name,"大学生活动中心");strcpy(G.vexs[9].name,"西邮小湖");strcpy(G.vexs[10].name,"图书馆");strcpy(G.vexs[11].name,"校医室");strcpy(G.vexs[12].name,"田径场");strcpy(G.vexs[13]"<p>strcpy(G.vexs[8].name,"大学生活动中心");</p><p>strcpy(G.vexs[9].name,"西邮小湖");</p><p>strcpy(G.vexs[10].name,"图书馆");</p><p>strcpy(G.vexs[11].name,"校医室");</p><p>strcpy(G.vexs[12].name,"田径场");</p><p>strcpy(G.vexs[13].name,"美食广场");</p><p>strcpy(G.vexs[14].name,"体育馆");</p><p>strcpy(G.vexs[15].name,"旭日苑");</p><p>strcpy(G.vexs[16].name,"男生宿舍");</p><p>strcpy(G.vexs[17].name,"女生宿舍");</p><p>strcpy(G.vexs[18].name,"超市");</p><p>strcpy(G.vexs[19].name,"篮球场");</p><p> </p><p>strcpy(G.vexs[0].introduction,"学校大门,出门坐车的地方门口有600,有616(到火车站)有321等,平常学生外出坐车的地方。