校园导游咨询系统源代码

合集下载

校园导游系统设计与实现

校园导游系统设计与实现

校园导游系统设计与实现第一篇:校园导游系统设计与实现校园导游系统设计与实现目录 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 表示,它们是整型数据。

校园导游程序c课程设计

校园导游程序c课程设计

校园导游程序c课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中数组、函数、指针等基本概念及其应用;2. 学生能运用结构体、文件操作等知识模块,实现校园导游程序的基本功能;3. 学生了解并掌握程序设计中模块化、结构化的基本方法。

技能目标:1. 学生能运用C语言编写具有实用价值的程序,具备一定的编程能力;2. 学生通过校园导游程序的设计,培养解决实际问题的能力;3. 学生能够进行程序调试与优化,提高程序性能。

情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,树立自信心;2. 学生通过团队合作,培养沟通、协作能力,增强团队意识;3. 学生能够关注校园文化,将课程与实际生活相结合,提高社会责任感。

课程性质分析:本课程为C语言编程实践课,旨在让学生通过实际项目的开发,巩固所学知识,提高编程能力。

学生特点分析:学生已具备C语言基础,具有一定的编程能力,但实际应用经验不足。

教学要求:结合学生特点,课程注重实践操作,引导学生运用所学知识解决实际问题,提高学生的编程素养。

将目标分解为具体的学习成果,以便后续的教学设计和评估。

1. C语言基础知识回顾:数组、函数、指针、结构体、文件操作等;2. 程序设计方法:模块化、结构化编程;3. 校园导游程序功能需求分析:地图展示、路径规划、景点介绍等;4. 校园导游程序设计与实现:- 数据结构设计:景点结构体定义、路径数组等;- 功能模块实现:地图展示、路径规划算法、景点信息查询等;- 界面设计:命令行界面设计、功能菜单编写等;5. 程序调试与优化:调试技巧、性能优化方法;6. 团队合作与项目展示:分组合作、项目汇报与评价。

教学大纲安排:1. 第一周:C语言基础知识回顾,理解并掌握基本概念;2. 第二周:程序设计方法学习,分析校园导游程序需求;3. 第三周:校园导游程序数据结构设计,功能模块划分;4. 第四周:实现各功能模块,编写界面代码;5. 第五周:进行程序调试与优化,确保程序稳定运行;6. 第六周:团队合作,完成项目展示与评价。

c语言校园导游课程设计

c语言校园导游课程设计

c语言校园导游课程设计一、教学目标本课程旨在通过C语言编程,使学生掌握基本的编程技能,并应用于校园导游系统的开发。

具体目标如下:1.理解C语言的基本语法和数据结构。

2.掌握函数的定义和调用。

3.了解面向对象编程的基本概念。

4.能够使用C语言编写简单的程序。

5.能够利用面向对象编程设计校园导游系统。

6.能够进行程序调试和优化。

情感态度价值观目标:1.培养学生的创新意识和解决问题的能力。

2.培养学生团队合作和沟通的能力。

3.培养学生对编程和计算机科学的兴趣。

二、教学内容教学内容将按照以下大纲进行:1.C语言基础:介绍C语言的基本语法和数据结构,包括变量、运算符、控制语句等。

2.函数:讲解函数的定义、声明和调用,包括递归函数和作用域规则。

3.面向对象编程:介绍类和对象的概念,讲解构造函数、析构函数和继承等。

4.校园导游系统设计:引导学生利用C语言编程实现校园导游系统的基本功能,如景点介绍、路径规划等。

三、教学方法将采用多种教学方法相结合,以激发学生的学习兴趣和主动性:1.讲授法:讲解C语言基础知识和编程技巧。

2.案例分析法:分析典型的校园导游系统案例,引导学生思考和解决问题。

3.实验法:安排实验课,让学生动手编写代码和调试程序。

4.讨论法:学生进行小组讨论,促进团队合作和沟通。

四、教学资源将提供以下教学资源,以支持教学内容和教学方法的实施:1.教材:《C语言程序设计教程》2.参考书:《C Primer Plus》、《C++ Primer》3.多媒体资料:PPT课件、编程实例视频教程4.实验设备:计算机、编程环境(如Visual Studio、Code::Blocks)5.在线资源:编程论坛、开源校园导游系统项目五、教学评估教学评估将采用多元化的方式,全面客观地评价学生的学习成果。

评估方式包括:1.平时表现:通过课堂参与、提问和小组讨论等环节,评估学生的学习态度和参与度。

2.作业:布置编程作业,评估学生的编程能力和解决问题的能力。

c语言校园导游课程设计

c语言校园导游课程设计

c语言校园导游课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中数组、函数、指针等基本概念及其在程序设计中的应用。

2. 学生能够运用C语言编写具有实际意义的程序,如校园导游系统,实现对校园景点信息的存储、查询和展示。

3. 学生了解结构体和文件操作在C语言中的应用,能够实现对校园导游系统中数据的组织、存储和读取。

技能目标:1. 学生掌握C语言编程的基本技巧,具备分析问题、设计算法和编写程序的能力。

2. 学生能够运用所学知识,独立设计并实现一个简单的校园导游系统,提高实际编程能力。

3. 学生通过课程学习,培养解决实际问题的能力,提高逻辑思维和团队协作能力。

情感态度价值观目标:1. 学生对C语言编程产生兴趣,树立学习信心,形成积极的学习态度。

2. 学生在学习过程中,培养良好的编程习惯,注重程序的可读性和可维护性。

3. 学生通过课程学习,认识到编程在解决实际问题中的重要性,激发对计算机科学技术的热爱。

课程性质:本课程为C语言程序设计实践课程,结合实际应用场景,培养学生的编程能力和解决实际问题的能力。

学生特点:学生具备一定的C语言基础,对编程感兴趣,但实际编程经验不足。

教学要求:教师应注重理论与实践相结合,引导学生运用所学知识解决实际问题,关注学生的个体差异,提高学生的编程能力和综合素质。

教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。

二、教学内容1. 数组与函数:回顾数组的使用,强调其在存储大量数据时的优势;讲解函数的定义、调用和参数传递,强调模块化编程的重要性。

- 教材章节:数组、函数- 内容列举:一维数组、二维数组、函数定义、函数调用、局部变量、全局变量2. 指针与结构体:介绍指针的概念,讲解指针的使用方法;引入结构体,展示如何利用结构体组织相关数据。

- 教材章节:指针、结构体与联合- 内容列举:指针变量、指针运算、结构体定义、结构体变量、结构体数组3. 文件操作:讲解文件的基本概念,介绍文件读写操作,为校园导游系统数据存储提供支持。

校园导航系统的两个代码

校园导航系统的两个代码

#1 数据结构实验之校园导游咨询#include<>#include<>#include<>#include<>#include<>#include ""#define null 0#define num 20#define maxdist 10000typedef struct{char data[num];int edges[num][num];}graph;void dijkstra(graph g,int n,int i,int d[num],int p[num]) {int s[num];int mindist,dist;int j,k,u;for(j=0;j<n;j++){d[j]=[i][j];s[j]=0;if((d[j]<maxdist)&&(d[j]!=0))p[j]=i;elsep[j]=-1;}s[i]=1;for(j=0;j<n-1;j++){mindist=maxdist;u=i;for(k=0;k<n;k++)if((s[k]==0)&&(d[k]<mindist)){u=k;mindist=d[k];}s[u]=1;for(k=0;k<n;k++)if(s[k]==0){dist=d[u]+[u][k];if(dist<d[k]){d[k]=dist;p[k]=u;}}}void opdijk(int v0,int n,int d[],int p[]){int i,pre;for(i=0;i<n;i++)if(i!=v0){printf("\n%d",i);pre=p[i];while(pre!=-1){printf("<--%d",pre);/****************************/ pre=p[pre];}if(d[i]==maxdist)printf("<--%d",v0);printf("\tshortestway:%d",d[i]);}}void floyd(graph g,int n,int d[][num],int p[][num]){int i,j,k;for(i=0;i<n;i++)for(j=0;j<n;j++){d[i][j]=[i][j];if((d[i][j]<maxdist)&&(d[i][j]!=0))p[i][j]=j;elsep[i][j]=-1;}for(i=0;i<n;i++)d[i][i]=0;for(k=0;k<n;k++)for(i=0;i<n;i++)for(j=0;j<n;j++)if(d[i][j]>d[i][k]+d[k][j]){d[i][j]=d[i][k]+d[k][j] ;p[i][j]=p[i][k];}}void opfloy(int n,int d[][num],int path[][num]){int i,j,next;for(i=0;i<n;i++){printf("\n\nyuandian is v%d:",i);for(j=0;j<n;j++){printf("\nthe shortest way from%dto%dis:\n",i,j);printf("%d",i);next=path[i][j];while(next!=-1){printf("->%d",next);next=path[next][j];}if(d[i][j]==maxdist)printf("<-%d",j);/***************************/printf("\t%d",d[i][j]);}}}void main(){graph g;int i,j,k,n;int d[num],p[num],sd[num][num],sp[num][num];点信息查询………请按s键\n");printf("2.景点最短路径查询…请按b键\n");printf("3.退出系统……………请按e键\n");printf("校园平面图如下:\n");printf(" 5------9-----7----8 \n");printf(" | \\ | / \n");printf(" | 4 | / \n");printf(" | \\ | / \n");printf(" 6 \n");printf(" | / \n");printf(" | / \n");printf(" 10 \n\n");printf("请选择服务:");scanf("\n%c",&k);switch(k){case 's':printf("进入景点信息查询:\n");introduce();break;case 'b': printf("进入最短路径查询:\n");shortestdistance();break; case 'e':exit(0);default:printf("Error Input\n请输入字母s或b或e.\n\n");break; }}}。

数据结构-校园导游程序(附源码)

数据结构-校园导游程序(附源码)

数据结构-校园导游程序(附源码)简介本文档旨在介绍一个校园导游程序的设计与实现。

该程序使用数据结构来管理校园地点信息,并提供导游功能,供用户查找并导航到目标地点。

文档将依次介绍相关的背景知识、程序设计原理、算法实现以及使用方法。

目录1.背景知识1.校园导游需求2.数据结构概述2.程序设计原理1.数据结构设计2.地点信息管理3.导航算法设计3.算法实现1.数据结构定义2.地点信息管理算法3.导航算法4.使用方法1.程序安装2.数据录入3.导游功能使用5.附录1.附件1:源码文件2.附件2:数据样例1.背景知识1.1 校园导游需求校园导游程序是为了帮助使用者在校园中快速找到目标地点,并提供导航功能,方便出行和参观。

该程序需要管理校园地点的信息,包括名称、位置和介绍等。

使用者可以通过程序查找地点、导航到目标地点。

1.2 数据结构概述数据结构是计算机中用来组织和存储数据的方式。

在校园导游程序中,我们需要选择适合的数据结构来存储和管理地点信息。

常用的数据结构有数组、链表、树、图等。

根据需求分析,我们可以使用图这一数据结构来表示校园地点之间的关系,方便进行导航。

2.程序设计原理2.1 数据结构设计在校园导游程序中,我们使用图这一数据结构来表示校园地点之间的关系。

每个地点可以看作图的一个节点,节点之间的边表示地点之间的连接关系。

通过构建图数据结构,我们可以方便地管理地点信息并进行导航。

2.2 地点信息管理地点信息管理是校园导游程序的核心功能之一。

我们需要设计适合的数据结构来存储地点的信息,包括名称、位置和介绍等。

通过合理的数据结构设计,可以快速地查找和修改地点信息。

2.3 导航算法设计导航算法是实现导游功能的关键。

我们需要设计算法来计算出从起点到目标地点的最短路径,并提供导航指引。

常用的导航算法有Dijkstra算法、A算法等,我们根据需求选择合适的算法进行实现。

3.算法实现3.1 数据结构定义我们使用图这一数据结构来表示校园地点之间的连接关系。

(完整word版)数据结构校园导游系统课程设计

(完整word版)数据结构校园导游系统课程设计

滨江学院《数据结构》课程设计题目校园导游咨询程序设计学号学生姓名院系专业指导教师二O一二年月日1、题目的内容及要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。

2、需求分析(1)设计你的学校的校园平面图,所含景点不少于10个.以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。

(3)为来访客人提供图中任意景点相关信息的查询。

3、概要设计1.功能模块图;void CreateUDN();//创建无向网void Search();//查询景点信息void Shortestpath(int i);//计算最短路径void Output(int sight1,int sight2);//输出函数2.各个模块详细的功能描述。

CreateUDN();//创建无向网、主要用来保存各景点信息Search();//查询景点信息、景点的名称及介绍Shortestpath(int i);//计算两景点间最短路径Output(int sight1,int sight2);//输出两景点最短路径及信息3。

模块图4、详细设计一、图的储存结构#define Max 30000#define NUM 10typedef struct ArcCell{int adj; /*相邻接的景点之间的路程*/ }ArcCell; /* 定义边的类型*/ typedef struct VertexType{int number;/*景点编号*/char *sight; /*景点名称*/char *description;/*景点描述 */}VertexType; /*定义顶点的类型 */typedef struct{VertexType vex[NUM]; /*图中的顶点,即为景点*/ ArcCell arcs[NUM][NUM];/* 图中的边,即为景点间的距离 */ int vexnum,arcnum;/* 顶点数,边数*/}MGraph; /* 定义图的类型二、算法1.主程序void main(){int v0,v1;char ck;CreateUDN(NUM,11);do{ck=Menu();switch(ck){case ’1’:system("cls”);// narrate();printf("\n\n\t\t\t请选择起点景点(0~9):”);scanf(”%d",&v0);printf(”\t\t\t请选择终点景点(0~9):”);scanf(”%d",&v1);ShortestPath(v0); /*计算两个景点之间的最短路径*/ output(v0,v1); /*计算两个景点之间的最短路径 */ printf("\n\n\t\t\t\t请按任意键继续。

校园导游咨询讲解

校园导游咨询讲解

《算法与数据结构》课程设计报告班级:专业级班姓名:学号:课程设计题目:校园导游咨询所属课程:算法与数据结构实验室(中心):指导教师:完成时间:年月日学院信息科学与工程学院课程设计任务书信息科学与工程学院课程设计成绩单指导教师:A课程设计课程名称:算法与数据结构性别男班级学号姓名指导教师算法与数据结构班级课程A2201完成时校园导游咨 201主介绍校园的景点,同时提供任意两点之间最短的路径内.封面.课程设计成绩单、课程设计任务.内容提要.“课程设计报告”正文部分主要应包括①问题分析和任务定义②环境简介③设计:主要是指数据结构与核心算法的设计描述;操作界设的设计;主要功能的算法框架;测试用例设计等内容(要求使报C+)要④编译参数与步骤的说明⑤上机调试总结与分析⑥用户使用说明⑦测试数据与测试结果等内容⑧课程设计总结:可以包括课程设计过程的收获、遇到的问及解决过程的思考、对数据结构这门课程的思考和认识等内容⑨附录程序清.参考文1题目用黑体三号,段后1磅(行),居中对齐2标题用黑体四号,段前、段后磅(0.版行)3正文用小四号宋体,行距1.2倍行距要4标题按“一”、“㈠”、“1”、“⑴”顺序编号星周指11-时1-安11-5-指专业实验406/40地点综合成绩□能正确运行□基本能正确运行□能运行但结果不完善程序运行情况15分)((10分)分)(20(占总成绩20%)□不完善□基本完善□完善程序功能完善程度分)(5(8分)(分)10)10%(占总成绩□不太合理□基本合理程序结构的合理性□合理5分)(8分)()(占总成绩10%分)(10□基本能正确回答□概念正确有创新□能正确回答所有问题30(分)40(分)(35分)对问题的答辩情况□部分问题回答概念不清晰40%(占总成绩)(20分)□工作态度认真能独立完成任务□工作态度认真但独立性较差学生的工作态度与(10分)(分)8独立工作能力□工作态度基本认真但缺乏独立性(占总成绩10%)(5分)□规范性较差□符合规范□基本符合规范设计报告的规范性(5分)10分)(8(分))10%(占总成绩.摘要数据结构课程设计对于训练学生掌握程序设计技术、使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。

C语言课设(校园导游)

C语言课设(校园导游)

校园导游目录摘要 ......................................................................................... 错误!未指定书签。

1绪论 .......................................................................................... 错误!未指定书签。

2系统分析 .................................................................................. 错误!未指定书签。

2.1功能需求 ........................................................................... 错误!未指定书签。

2.2数据需求............................................................................ 错误!未指定书签。

2.3性能需求 ........................................................................... 错误!未指定书签。

3总体设计 .................................................................................. 错误!未指定书签。

3.1系统设计方案.................................................................... 错误!未指定书签。

3.2功能模块设计.................................................................... 错误!未指定书签。

基于微信小程序的校园智能导览系统设计与实现

基于微信小程序的校园智能导览系统设计与实现

基于微信小程序的校园智能导览系统设计与实现一、引言随着移动互联网的快速发展,人们对于信息获取和导航需求的日益增加,校园导览系统作为一种便捷的信息服务工具,受到了广泛关注。

本文将介绍基于微信小程序的校园智能导览系统的设计与实现,旨在为校园师生提供更加便捷、高效的导览服务。

二、系统设计1. 系统架构设计基于微信小程序的校园智能导览系统主要包括前端界面设计、后端服务接口设计和数据库设计三个部分。

前端界面设计通过小程序页面实现地图展示、路径规划等功能;后端服务接口设计提供数据支持和算法计算;数据库设计存储地图数据、用户信息等。

2. 功能模块设计用户认证模块:用户通过微信登录进行身份认证。

地图展示模块:展示校园地图,并支持缩放、拖动等操作。

路径规划模块:用户输入起点和终点,系统进行路径规划并展示最优路径。

兴趣点查询模块:用户可以查询校园内各类兴趣点信息。

导航功能模块:提供语音导航和文字导航功能,引导用户到达目的地。

三、系统实现1. 前端实现前端采用微信小程序开发框架,利用WXML编写页面结构,WXSS 编写样式,JavaScript编写交互逻辑。

通过调用微信小程序API实现地图展示、路径规划等功能。

2. 后端实现后端采用Node.js搭建服务器,使用Express框架开发RESTful API接口。

通过接口与前端进行数据交互,实现用户认证、路径规划等功能。

3. 数据库实现数据库采用MySQL存储地图数据、用户信息等。

通过建立地图数据表、用户信息表等实现数据的存储和管理。

四、系统优化与扩展1. 算法优化针对路径规划算法进行优化,提高路径规划的准确性和效率。

2. 用户体验优化不断收集用户反馈意见,优化界面设计和功能体验,提升用户满意度。

3. 功能扩展增加更多实用功能,如周边推荐、活动通知等,丰富系统的服务内容。

五、总结与展望基于微信小程序的校园智能导览系统为校园师生提供了便捷的导览服务,具有较高的实用性和推广价值。

Java实现的具有GUI的校园导航系统

Java实现的具有GUI的校园导航系统

Java实现的具有GUI的校园导航系统0.写在前⾯2020-5-18 更新这个东西已经是两年前的了,现在问我具体细节我也不是很清楚了,⽽且现在review两年前的代码感觉写的好烂。

请⼤家有问题下⾯留⾔,不要加我的企鹅了,正在准备考研,⽐较忙。

⼀点建议:1.当时会的⽐较少,对象实例化对于单纯的数据查询来说效率极低⽽且很蠢,我现在更建议使⽤数据库,或者简单点⽤xml or json都可以,建议想写的好⼀点的同学把⾥⾯的数据读写逻辑改⼀改,⽤数据库不⾹吗2.这个是分客户端服务端的,服务端相当于⽤底层⼿撸了⼀个相当简单的tomcat,所有的界⾯都是要从Client进去的。

先开server再开Client,在注册时以邀请码判断是否为管理员。

以管理员⾝份进⼊client之后再去添加信息。

3.如果注册时报access is denied 在Flie的路径下加⼀层⽂件夹,如下⼩⼀个⽉没更新博客了,主要是临近期末,各科的⼤作业都下来了,今天把⾃⼰奋⽃了⼀个礼拜的校园导航系统贴在上⾯,也算满⾜下⾃⼰的⼩成就感('ᴗ' )و实验要求如下:以我校为例,设计⼀个校园导航系统,主要为来访的客⼈提供信息查询。

系统有两类登陆账号,⼀类是游客,使⽤该系统⽅便校内路线查询;⼀类是管理员,可以使⽤该系统查询校内路线,可对校园景点路线可编辑。

说简单点,就是给定⼀个地图数据,然后地图上有好⼏个点,每个点间有距离,这个程序提供了查询两点间最短路径的功能。

当然,你可以为他增加很多细节,⽐如查看景点信息啊,后台的管理啊等等,这些都是加分项。

⽼师推荐使⽤C,其实题⽬也是这么要求的。

但是使⽤C有⼏个⽐较⿇烦的问题:第⼀,要是只实现基本的功能⽤C的话肯定是没什么问题,但是要是想添枝加叶的话,C的代码就没法看了,写起来⿇烦读起来也难受。

第⼆,地图是有地图数据的,要是⽤C的话⼀般⼈都会直接printf N多⾏的地图吧,这也是⼀个⽐较⿇烦的事⼉。

校园导游咨询讲解

校园导游咨询讲解
MGr.legs[8][9]=MGr.legs[9][8]=60;
MGr.legs[9][10]=MGr.legs[10][9]=50;
、弗洛伊德算法folyd()函数
用弗洛伊德算法求两节点之间最短的路径,具体算法为:在两节点之间
如->num=1;
strcpy(p->,"南大门");
strcpy(p->date.number,"1");
strcpy(p->date.introduce,"学校的大门,很有特色的拱桥型的大门,十分的霸
");
p->next=q->next;
MGr.legs[1][3]=MGr.legs[3][1]=15;
MGr.legs[1][4]=MGr.legs[4][1]=20;
MGr.legs[2][8]=MGr.legs[8][2]=80;
MGr.legs[3][5]=MGr.legs[5][3]=20;
MGr.legs[3][6]=MGr.legs[6][3]=15;
q->next=p;
q=p;
p=(Place *)malloc(sizeof(Place));
p->num=2;
strcpy(p->,"李子湖");
strcpy(p->date.number,"2");
strcpy(p->date.introduce,"学校最有风景的地方,是情侣晚上最喜欢去的地方!
q->next=p;
q=p;
p=(Place *)malloc(sizeof(Place));

基于HTML5的虚拟校园导览系统设计与开发

基于HTML5的虚拟校园导览系统设计与开发

基于HTML5的虚拟校园导览系统设计与开发随着互联网技术的不断发展,虚拟校园导览系统作为一种便捷、高效的校园信息展示和导航工具,受到越来越多学校和院校的青睐。

本文将介绍基于HTML5的虚拟校园导览系统的设计与开发过程,包括系统需求分析、系统设计、前端开发和后端开发等内容。

一、系统需求分析在设计与开发虚拟校园导览系统之前,首先需要进行系统需求分析。

通过与学校相关部门和用户的沟通,明确系统的功能需求和性能需求。

典型的虚拟校园导览系统应该包括以下功能:地图展示:显示学校校园地图,并标注各个重要建筑物和场所。

导航功能:用户可以输入起点和终点,系统给出最优路径并提供导航指引。

搜索功能:用户可以通过关键词搜索学校内部各类信息,如教学楼、食堂、图书馆等。

信息展示:提供学校各类信息的展示,如新闻动态、活动通知等。

用户反馈:用户可以对系统使用过程中遇到的问题进行反馈,以便系统改进。

二、系统设计在系统设计阶段,需要考虑系统的整体架构和各个模块之间的交互关系。

基于HTML5的虚拟校园导览系统通常包括前端页面设计和后端数据库设计两个方面。

1. 前端页面设计前端页面是用户直接接触到的界面,设计简洁直观的前端页面是提升用户体验的关键。

在HTML5技术下,可以使用Canvas绘制地图、使用CSS3实现动画效果、使用JavaScript实现交互功能等。

同时,响应式设计也是必不可少的,以适配不同设备尺寸的屏幕。

2. 后端数据库设计后端数据库主要用于存储学校地图数据、建筑信息、用户反馈等内容。

在数据库设计时,需要考虑数据表的结构设计、索引优化以及数据安全性等方面。

常用的数据库管理系统包括MySQL、MongoDB等。

三、前端开发在前端开发阶段,需要按照系统设计稿实现前端页面的布局和交互功能。

HTML5提供了丰富的标签和API,如Canvas、Geolocation等,可以实现地图展示和定位功能;CSS3可以实现页面样式的美化和动画效果;JavaScript则是实现页面交互和逻辑处理的重要工具。

毕业设计 课程设计 校园导游系统设计报告

毕业设计 课程设计 校园导游系统设计报告
四.详细设计过程
1.景点基本信息的设计
为了方便操作,每一个景点名称用一个代码表示,因此景点基本信息设计成结构体类型,此类型包含两个成员变量:景点名称及其代码。在此我们设计了10个景点,具体如下:
struct Sight
{
char Name[40];
int Num;
}W[10] = {{"校门", 1},{"操场", 2},{"教学楼", 3},{"图书馆", 4},
introduce();
break;
case 's':
printf("进入最短路径查询:");
shortestdistance();
break;
case 'e':
exit(0);
default:
printf("输入信息错误!\n请输入字母i或s或e.\n");
break;
}
}
}/*main*/
void introduce()
cost[4][10]=cost[10][4]=30;
cost[1][4]=cost[4][1]=15;
cost[4][5]=cost[5][4]=15;
cost[4][9]=cost[9][4]=25;
cost[5][9]=cost[9][5]=10;
cost[5][7]=cost[7][5]=55;
printf("->%d",path[i][j]);
if(i<j)
j=path[i][j];
else
i=path[j][i];
}
printf("->%d",b);

校园导游咨询系统源代码

校园导游咨询系统源代码

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");

旅游信息管理系统程序代码

旅游信息管理系统程序代码

旅游信息管理程序代码(1)用户信息表:users(2)旅游线路表:lines(3)员工信息表:workers(4)团队信息表:teamsuse travelscreate table users(uno varchar(10) not null,umi varchar(10) not null)create table lines(lno varchar(10) not null,lname varchar(30),lmode varchar(10),lprice int)create table workers(wno varchar(10) not null,wname varchar(10) not null,wsex varchar(2),wmoney int,wtype varchar(10),wyears smalldatetime)create table Teams(tno varchar(10) not null,tname varchar(10) not null,tline varchar(10),tprice int,tday int)insert into users values('09302208','09302208')insert into users values('09302207','09302208')insert into users values('09302223','09302223')insert into users values('09302225','09302225')insert into lines values('0001','沈阳-海口','火车','316')insert into lines values('0002','沈阳-北京','火车','220')insert into lines values('0003','沈阳-哈尔滨','火车','159')insert into lines values('0004','沈阳-拉萨','火车','560')insert into lines values('0005','沈阳-杭州','飞机','640')insert into lines values('0006','沈阳-上海','飞机','299')insert into workers values('0001','李雷','男','5000','全导','6')insert into workers values('0002','韩梅梅','女','5500','地导','6')insert into workers values('0003','林涛','男','4200','地导','5')insert into workers values('0004','李丽','女','4800','全导','4')insert into workers values('0005','王博','男','4600','地导','2')insert into workers values('0006','张明明','男','3800','地导','1')insert into Teams values('0001','星光旅行社','海南五日游','3500','5')insert into Teams values('0002','北方旅行社','北京三日游','2200','3')insert into Teams values('0003','南方旅行社','哈尔滨三日游','1800','3')insert into Teams values('0004','白鹭旅行社','西藏七日游','7400','7')insert into Teams values('0005','时光旅行社','杭州七日游','4000','7')insert into Teams values('0006','北方旅行社','上海五日游','5000','5')用户登陆界面代码Private Sub Command1_Click()Adodc1.RecordSource = "select * from users where uno ='" & Text1.Text & "'" Adodc1.RefreshIf Adodc1.Recordset.EOF ThenMsgBox "没有这个用户,请重新输入正确的用户名", , "错误提示"ElseIf Text2.Text = Adodc1.Recordset.Fields("umi") ThenMsgBox "登录成功!", , "错误提示"Form1.HideForm2.ShowElseMsgBox "你的密码错误,请输入正确的用户密码!", , "错误提示"End IfEnd IfEnd Sub(1)公共模块代码(Public recs As Integer '用于保存线路记录个数Public flag As Integer '用于保存操作方式')(2)旅游线路管理代码Private Sub Form_Activate()DataGrid1.SetFocus '焦点移向DataGrid1控件Call encomm '调用本窗体自定义的encomm过程End SubPrivate Sub Command3_Click() '添加教师记录flag = 1 'flag=1表示添加操作Form4.Show vbModal '调用edt1窗体End SubPrivate Sub Command4_Click() '修改教师记录flag = 2 'flag=2表示修改操作Form4.Show vbModal '调用edt1窗体修改当前教师记录End SubPrivate Sub command6_Click()Form3.HideForm2.ShowEnd SubPrivate Sub Command1_Click()condstr = "" '条件表达式,以下代码根据设置条件框架建立condstr If Trim(Text1.Text) <> "" ThenIf condstr = "" Thencondstr = "lno like '" + Trim(Text1.Text) + "%'"End IfEnd IfIf Trim(Text2.Text) <> "" ThenIf condstr = "" Thencondstr = "lname like '" + Trim(Text2.Text) + "%'"Elsecondstr = condstr + "and lname like '" + Trim(Text2.Text) + "%'"End IfEnd IfIf Trim(Text3.Text) <> "" ThenIf condstr = "" Thencondstr = "lmode like '" + Trim(Text3.Text) + "%'"Elsecondstr = condstr + "and lmode like '" + Trim(Text3.Text) + "%'"End IfEnd IfIf Trim(Text4.Text) <> "" ThenIf condstr = "" Thencondstr = "lprice like '" + Trim(Text4.Text) + "%'"Elsecondstr = condstr + "and lprice like '" + Trim(Text4.Text) + "%'"End IfEnd IfIf condstr <> "" Then '有条件,根据condstr返回相应的记录集Adodc1.RecordSource = "select * from lines where " + condstrAdodc1.RefreshElseAdodc1.RecordSource = "select * from lines"Adodc1.RefreshEnd Ifrecs = Adodc1.Recordset.RecordCountText5.Text = recsIf recs = 0 ThenMsgBox "没有任何满足条件的记录", obokonly, "信息提示"End IfCall encomm '调用本窗体自定义的encomm过程End SubPrivate Sub Command2_Click() '重置,将设置条件框架中的所有输入清空Text1.Text = "": Text2.Text = ""Text3.Text = "": Text4.Text = ""End SubPrivate Sub encomm()'自定义子过程:判断Adodc1中是否存在记录,使相应命令按钮无效或有效If recs = 0 ThenCommand4.Enabled = False: Command5.Enabled = FalseElseCommand4.Enabled = True: Command5.Enabled = TrueEnd IfEnd SubPrivate Sub Command5_Click()If MsgBox("确认要删除吗?", vbOKCancel + vbQuestion, "信息提示") = vbOK Then Adodc1.Recordset.DeleteIf Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveLastEnd IfEnd IfEnd Sub添加操作代码Private Sub Form_Activate()If flag = 2 Then '修改操作Text1.Text = Trim(Form3.Adodc1.Recordset.Fields("lno")) & ""Text2.Text = Trim(Form3.Adodc1.Recordset.Fields("lname")) & ""Text3.Text = Trim(Form3.Adodc1.Recordset.Fields("lmode")) & ""Text4.Text = Trim(Form3.Adodc1.Recordset.Fields("lprice")) & ""ElseText1 = "": Text2 = "": Text3 = "": Text4 = ""End IfEnd SubPrivate Sub Command2_Click() '取消操作Form4.HideForm2.ShowEnd SubPrivate Sub Command1_Click()If Trim(Text1.Text) = "" ThenMsgBox "加*数据项不能为空,请重新设置", vbOKOnly, "信息提示"Text1.SetFocusExit SubEnd If' If Trim(Text3.Text) <> "" Then' If Not IsDate(Trim(Text3.Text)) Then' MsgBox "交通工具输入不正确,重新输入", vbOKOnly, "信息提示"' Text3.SetFocus' Exit Sub'End IfIf flag = 1 Then '添加操作recs = recs + 1Form3.Adodc1.Recordset.AddNew '添加一个记录End IfForm3.Adodc1.Recordset.Fields("lno") = Trim(Text1.Text)Form3.Adodc1.Recordset.Fields("lname") = Trim(Text2.Text)Form3.Adodc1.Recordset.Fields("lmode") = Trim(Text3.Text)'If Trim((Text3).Text)<> "" Then'Form1.Adodc1.Recordset.Fields("lmode") = Format(Trim(Text3.Text), "飞机")'End IfForm3.Adodc1.Recordset.Fields("lprice") = Trim(Text4.Text)Form3.Adodc1.Recordset.Update '保存记录Unload Me' End If '释放窗体End Sub员工信息代码Private Sub Command1_Click()Adodc2.RecordSource = "select wno as '工号',wname as '名字',wsex as '性别',wtype as '类型',wyears as '年份' from workers where wno='" + DataCombo1.Text + "'"Adodc2.RefreshSet DataGrid1.DataSource = Adodc2DataGrid1.RefreshEnd SubPrivate Sub Command2_Click()If MsgBox("确认要删除吗?", vbOKCancel + vbQuestion, "信息提示") = vbOK ThenAdodc2.Recordset.DeleteIf Adodc2.Recordset.EOF ThenAdodc2.Recordset.MoveLastEnd IfEnd IfEnd Sub团队添加代码Private Sub Command1_Click()Adodc2.RecordSource = "select tno as '序号',tname as '团队名',tline as '线路',tprice as '价格',tday as '时间' from teams where tno='" + DataCombo1.Text + "'"Adodc2.RefreshSet DataGrid1.DataSource = Adodc2DataGrid1.RefreshEnd SubPrivate Sub Command2_Click()If MsgBox("确认要删除吗?", vbOKCancel + vbQuestion, "信息提示") = vbOK ThenAdodc2.Recordset.DeleteIf Adodc2.Recordset.EOF ThenAdodc2.Recordset.MoveLastEnd IfEnd IfEnd SubPrivate Sub Command5_Click()Form6.HideForm2.ShowEnd SubPrivate Sub Form_Load()recs1 = Adodc1.Recordset.RecordCount '求出当前记录数,recs是模块变量Text1.Text = recs1If recs > 0 Then '已有教师时Adodc1.Recordset.MoveLast '移到最后一个记录Adodc1.Recordset.MoveFirst '移到开头记录End IfEnd Sub用户注册界面代码Private Sub Command1_Click()'判断新添加的用户名是否为空If Text1.Text = "" ThenMsgBox "请输入用户名!"Text1.SetFocusExit SubEnd If'查询在用户信息表中是否存在出入的用户mandType = adCmdTextAdodc1.RecordSource = "select*from users where uno ='" & Trim(Text1.Text) & "'" Adodc1.Refresh'如果存在,则返回If Adodc1.Recordset.EOF = False ThenMsgBox "已经存在此用户名,请您重新输入!"Text1.SetFocusText1.Text = ""Exit Sub'判断输入的密码是否为空ElseIf Text2.Text = "" ThenMsgBox "请输入密码!"Text2.SetFocusExit SubEnd IfEnd If'判断输入的确认密码是否为空If Text3.Text = "" ThenMsgBox "请输入确认密码!"Text3.SetFocusExit SubEnd If'判断密码与确认密码是否一致If Text2.Text = Text3.Text Then'向数据表中添加新用户Adodc1.Recordset.AddNewAdodc1.Recordset.Fields("uno") = Trim(Text1.Text)Adodc1.Recordset.Fields("umi") = Trim(Text2.Text)Adodc1.Recordset.Fields("umi") = Trim(Text3.Text)Adodc1.Recordset.UpdateAdodc1.RefreshMsgBox "恭喜,您已经注册成功!"Text2.SetFocusText3.SetFocusElseMsgBox "对不起,您的密码和确认密码不一致,请重新输入!"Text3.Text = ""Text3.SetFocusExit SubEnd IfEnd SubPrivate Sub Command2_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""End Sub用户修改界面代码Private Sub Command1_Click()'判断新添加的用户名是否为空If Text1.Text = "" ThenMsgBox "请输入用户名!"Text1.SetFocusExit SubEnd If'查询在用户信息表中是否存在出入的用户mandType = adCmdTextAdodc1.RecordSource = "select*from users where uno ='" & Trim(Text1.Text) & "'" Adodc1.Refresh'如果存在,则返回If Adodc1.Recordset.EOF = False ThenMsgBox "已经存在此用户名,请您重新输入!"Text1.SetFocusText1.Text = ""Exit SubEnd IfIf Text2.Text = "" ThenMsgBox "请输入旧密码!"Text2.SetFocusExit SubEnd If'判断输入旧密码是否为空If Text3.Text = "" ThenMsgBox "请输入新确认密码!"Text3.SetFocusExit SubEnd If'判断新密码是否为空If Text4.Text = "" ThenMsgBox "请输入确认密码!"Text4.SetFocusExit SubEnd If'判断新密码与确认密码是否一致If Text3.Text = Text4.Text Then'向数据表中添加新用户Adodc1.Recordset.AddNewAdodc1.Recordset.Fields("uno") = Trim(Text1.Text)Adodc1.Recordset.Fields("umi") = Trim(Text2.Text)Adodc1.Recordset.Fields("umi") = Trim(Text3.Text)Adodc1.Recordset.Fields("umi") = Trim(Text4.Text)Adodc1.Recordset.UpdateAdodc1.RefreshMsgBox "恭喜您,您已经修改成功!"Text2.SetFocusText3.SetFocusForm9.HideForm1.ShowElseMsgBox "对不起,您的新密码和确认密码不一致,请重新输入!" Text4.Text = ""Text4.SetFocusExit SubEnd IfEnd SubPrivate Sub Command2_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""End Sub。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<stdlib.h>//standard library标准库头文件#include<stdio.h>//标注输入输出函数头文件#include<string.h>//字符函数头文件#define MAX 10000 //定义路程最远距离符号常量无穷大#define MAX_VERTEX_NUM 10//定义的景点/顶点数量符号常量最大顶点数10个typedef struct //定义一个结构体用于表示路径{int adj; //路径长度权值}Ar,Ad[10][10];//起点和终点变量名typedef struct //定义一个结构体用于存放景点信息{char name[30];//景点名int num;//景点编号char introduction[100];//景点介绍}infotype;//景点信息变量名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;for(i=0;i<G.vexnum;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(G.vexs[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<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[i][j].adj=MAX;G.arcs[0][1].adj=600;G.arcs[0][2].adj=600;G.arcs[0][3].adj=700;G.arcs[1][2].adj=50;G.arcs[1][4].adj=100;G.arcs[2][5].adj=150;G.arcs[2][3].adj=50;G.arcs[3][5].adj=250;G.arcs[4][5].adj=100;G.arcs[4][8].adj=450;G.arcs[5][6].adj=150;G.arcs[5][8].adj=200;G.arcs[6][7].adj=50;G.arcs[6][8].adj=100;G.arcs[6][9].adj=250;G.arcs[7][8].adj=100;G.arcs[7][9].adj=80;G.arcs[8][9].adj=50;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");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;v<G->vexnum;v++){printf("%-4d%-16s%-56s\n",G->vexs[v].num,G->vexs[v].name,G->vexs[v].introduction);}printf("\n");printf("§·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽§\n");printf("§——>东§\n");printf("§§\n"); printf("§——————1.二教—————4. 媒体楼————————————§\n");printf("§┃┃┃┃§\n");printf("§┃┃┃┃§\n");printf("§ 0.老校区宿舍———2.石头楼————5.图书馆————————————┃§\n");printf("§┃┃┃┃§\n");printf("§┃┃┃————6.专家招待所———8.东街§\n");printf("§——————3.主教———————┃—__________/ ┃§\n");printf("§┃/ —┃§\n");printf("§ 7.学术交流中心————9.校医院§\n");printf("§§\n");printf("§·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·§\n");printf("请按任意键继续!");printf("\n");getch();}//查看所有浏览路线void ShortestPath_DIJ(MGraph * G){int v,w,i,min,t=0,x,flag=1,v0;int final[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]);}}//弗洛伊德算法用于求最短路void Floyd(MGraph *G){int v,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]||p[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]);}//查询单个景点信息void Search(MGraph *G)int k,flag=1;while(flag){printf("请输入要查询的景点编号0-9:");scanf("%d",&k);if(k<0||k>G->vexnum){printf("景点编号不存在!请重新输入景点编号0-9:");scanf("%d",&k);}if(k>=0&&k<G->vexnum)flag=0;}printf("\n");printf("编号.景点名称.简介\n");printf("%-4d%-16s%-56s\n",G->vexs[k].num,G->vexs[k].name,G->vexs[k].i ntroduction);printf("\n");}int LocateVex(MGraph *G,char* v)/* 初始条件: 图G存在,v和G中顶点有相同特征*//* 操作结果: 若G中存在顶点v,则返回该顶点在图中位置;否则返回-1 */ {int c=-1,i;for(i=0;i<G->vexnum;i++)if(strcmp(v,G->vexs[i].name)==0){c=i;}return c;}void print(MGraph *G)//输出景点间距离{int v,w,t=0;for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++){if(G->arcs[v][w].adj==MAX)printf("∞");//没有路输出无穷else printf("%-7d",G->arcs[v][w].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);}}。

相关文档
最新文档