校园导游系统的设计与实现C源代码

合集下载

校园导游程序设计

校园导游程序设计

《数据结构课程设计》报告课题名称:校园导游程序专业:班级:学号:姓名:2012 年12 月31 日目录目录 (1)1 前言 (2)2需求分析 (3)3概要设计 (3)4详细设计 (3)5源代码及调试 (3)6特殊问题解决方法 (8)7使用说明及测试结果 (9)8结论 (11)9总结与体会 (11)10参考文献 (11)1 前言1.1 课题简介课程设计题目名称:校园导游程序课程设计目的:通过《数据结构》课程的学习,将数据结构应用在具体的编程方面,更加了解课程所学习的内容及思维逻辑。

课程设计意义:利用数据结构课程设计,了解学生对《数据结构》的理解和加强学生对数据结构方面的应用知识。

希望今后学生好好利用数据结构的知识和思想,解决各方面的编程难题。

课程设计内容:实现存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

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

为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度。

课程设计预期实现效果:(1)设计学校的校园平面图,所含景点不少于10个,以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

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

(3)为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度。

1.2 方案及其论证语言:C++运行环境:Microsoft Visual C++ 6.0可行性分析:模拟一个小型的计算器界面,能够输入数学表达式并计算出表达式的结果。

2需求分析实现存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

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

为来访客人提供景点的问路查询,即已知一个景点,查询到某景点之间的一条最短路径及长度3概要设计(特殊功能)3对于本次编程的概要设计,有如下内容:功能设计1:景点查询功能设计2: 查询最短路径。

校园导游图源代码

校园导游图源代码

#include<stdio.h>#include<stdlib.h>#include<dos.h>#include<windows.h>#include<malloc.h>#define Max 100#define N 9//景点个数。

typedef int AdjMatrix[Max][Max];typedef struct{int vexs[Max];AdjMatrix arcs;}Matrix_Graph;//图的矩阵表示法。

void menu();//景点名、操作提示。

void creat(Matrix_Graph *G);//图的建立。

void path(Matrix_Graph G,int s,int e);//两景点之间最短的路径,s表示起始景点,e //最终到达景点。

#define Max 100#define N 9void menu(){printf("1---南大门\n");printf("2---老师办公室\n");printf("3---图书馆\n");printf("4---一号教学楼\n");printf("5---宿舍\n");printf("6---食堂\n");printf("7---北大门\n");printf("8---44号教学楼\n");printf("9---学校广场\n");printf("\n菜单:\n");printf("请选择位置对应数字项目:\n");printf("1----介绍\n");printf("2----路径\n");printf("0----退出\n");}void creat(Matrix_Graph *G){int i,j;for(i=1;i<=N;i++) G->vexs[i]=i;//初始化,0号位不用。

C++实现校园导游系统

C++实现校园导游系统

C++实现校园导游系统本⽂实例为⼤家分享了C++实现校园导游系统的具体代码,供⼤家参考,具体内容如下校园导游系统问题描述:设计⼀个校园导游程序,完成校园信息的维护以及为来访的客⼈提供信息查询等服务功能。

基本要求:设计学校的校园平⾯图,所含景点不少于10个,以图中顶点表⽰校内各景点,顶点的信息包括:景点名称、代号、简介等,以边表⽰道路,边上信息包括:两点距离、所需时间等相关信息。

(注:数据的输⼊可以是键盘输⼊或⽂件输⼊两种⽅式)提供对校园景点信息的编辑(如:添加、删除、修改等)的功能;为来访客⼈提供图中任意景点相关信息的查询(可提供多种查询⽅式);为来访客⼈提供从校门⼝到图中任意景点的问路查询(最短路径);为来访客⼈提供图中任意景点间的问路查询。

#include<iostream>using namespace std;int main(){int n;const int MAX=1000;static int r [MAX][MAX]={{0,100,20,200,MAX,MAX,MAX,MAX,MAX,MAX},{100,0,MAX,80,MAX,MAX,MAX,90,MAX,MAX},{20,MAX,0,MAX,MAX,MAX,200,MAX,MAX,MAX},{200,80,MAX,0,40,MAX,MAX,70,MAX,50},{MAX,MAX,MAX,40,0,300,MAX,MAX,MAX,60},{MAX,MAX,MAX,MAX,300,0,50,MAX, MAX,MAX},{MAX,MAX,200,MAX,MAX,50,0,MAX,MAX,400},{MAX,90,MAX,70,MAX,MAX,MAX,0,50,50},{MAX,MAX,MAX,MAX,MAX,MAX,MAX,50,0,70},{MAX,MAX,MAX,50,60,MAX,400,50,70,0}};struct vertex{string name;int number;string introduction;}ver[MAX]={{"校门",0,"学校主校门"},{"体育场",1,"学校举办体育活动的地⽅"},{"六号公寓",2,"校内学⽣宿舍"},{"沉思⼴场",3,"⼤草地"},{"知源亭",4,"⼩亭⼦"},{"图书馆",5,"书的栖息地"},{"综合实验楼",6,"实验室云云"},{"⼤学会馆",7,"举办会议和活动的地⽅"},{"鹏远公寓",8,"鹏远学⽣宿舍"},{"⼯学馆",9,"主教楼"}};int b;for(b=0;b<1000;b++) {cout<<"|-----------------------------------------------------------------------------|"<<endl;cout<<"| 欢迎来到校园导游系统 |"<<endl;cout<<"| 1.管理员登陆 |"<<endl;cout<<"| 2.游客登录 |"<<endl;cout<<"| 3.退出校园导游系统 |"<<endl;cout<<"|-----------------------------------------------------------------------------|"<<endl;cout<<"校园导游图:"<<endl;cout<<" 8----------9--------------------------"<<endl;cout<<" | /|| | "<<endl;cout<<" | ---/ | | | "<<endl;cout<<" | / | --- | "<<endl;cout<<" 7 | | | "<<endl;cout<<" | | | | | "<<endl;cout<<" | | | | | "<<endl;cout<<" | ---3-------4--------------5 | "<<endl;cout<<" | ---/| | | "<<endl;cout<<" | / | || "<<endl;cout<<" 1 | ------- 6 "<<endl;cout<<" | | / "<<endl;cout<<" | | ------------ "<<endl;cout<<" | | / "<<endl;cout<<" | | / "<<endl;cout<<" | | 2 "<<endl;cout<<" |/ "<<endl;cout<<" 0 "<<endl;cout<<"景点编号:"<<endl;cout<<"0.校门 1.体育场"<<endl;cout<<"2.六号公寓 3.沉思⼴场"<<endl;cout<<"4.知源亭 5.图书馆"<<endl;cout<<"6.综合实验楼 7.⼤学会馆"<<endl;cout<<"8.鹏远公寓 9.⼯学馆"<<endl;cout<<"请按对应数字选择您操作:";cin>>n;if(n==1){cout<<"|-----------------------------------------------------------------------------|"<<endl;cout<<"| 管理员您好,欢迎来到校园导游系统 |"<<endl; cout<<"| 1.添加校园景点信息 |"<<endl;cout<<"| 2.删除校园景点信息 |"<<endl;cout<<"| 3.修改校园景点信息 |"<<endl;cout<<"|-----------------------------------------------------------------------------|"<<endl;cout<<"请输⼊您将要进⾏的编辑操作编号:";int a;cin>>a;if(a==1){cout<<"请输⼊你将要添加的校园景点编号:";int m;cin>>m;ver[m].number=m;cout<<"请输⼊你将要添加的校园景点的名称:";string x;cin>>x;ver[m].name=x;cout<<"请输⼊你将要添加的校园景点的介绍:";string y;cin>>y;ver[m].introduction=y;cout<<"添加成功~" <<endl;}if(a==2){cout<<"请输⼊你将要删除的校园景点编号:";int m;cin>>m;ver[m]=ver[MAX-1];cout<<"删除成功~"<<endl;}if(a==3){cout<<"请输⼊你将要修改的校园景点编号:";int m;cin>>m;cout<<"你将要修改的景点信息如下:"<<endl;cout<<"景点名称:"<<ver[m].name<<endl;cout<<"景点介绍:"<<ver[m].introduction<<endl;cout<<"请输⼊修改后的景点名称:";string x;cin>>x;ver[m].name=x;cout<<"请输⼊修改后的景点介绍信息:";string y;cin>>y;ver[m].introduction=y;cout<<"修改成功~"<<endl;}}else if(n==2){cout<<"|-----------------------------------------------------------------------------|"<<endl;cout<<"| 游客您好,欢迎来到校园导游系统 |"<<endl; cout<<"| 1.查询校园景点信息 |"<<endl;cout<<"| 2.校门问路查询 |"<<endl;cout<<"| 3.任意景点问路查询 |"<<endl;cout<<"|-----------------------------------------------------------------------------|"<<endl;cout<<"请按对应数字选择您所需要的服务:";int o;cin>>o;switch(o){case 1:{cout<<"查询校园景点信息"<<endl<<"请输⼊所要查询的景点号码:"; int m;cin>>m;cout<<"景点名称:"<<ver[m].name<<endl;cout<<"景点介绍:"<<ver[m].introduction<<endl;}break;case 2:{cout<<"校门问路查询"<<endl;cout<<"请输⼊您想要到达的⽬的地:";static int x=0;static int y;cin>>y;cout<<"最短路径为:" ;static int u;static int v;static int w;static int i;int t;static int s[MAX];static int D[MAX][MAX];static bool P[10][10][10];for(v=0;v<10;v++)for(w=0;w<10;w++){D[v][w]=r[v][w];for(u=0;u<10;u++) P[v][w][u]=0;if(D[v][w]<MAX){P[v][w][v]=1;P[v][w][w]=1;}}for(u=0;u<10;u++)for(v=0;v<10;v++)for(w=0;w<10;w++)if(D[v][u]+D[u][w]<D[v][w]){D[v][w]=D[v][u]+D[u][w];for(i=0;i<10;i++)P[v][w][i]=P[v][u][i]||P[u][w][i];}int q=0;for(t=0;t<10;t++)if(P[x][y][t]==true) {s[q]=t;q++;}int d;int h;int f[10]={100};static int l=0;int z=x;for(d=0;d<q-1;d++)for(h=0;h<q;h++)if(D[z][s[h]]==r[z][s[h]]&&D[z][s[h]]>0&&s[h]!=f[l]){cout<<z<<"-->";l=l+1;f[l]=z;z=s[h];break;}cout<<y;cout<<"这两个地点间的最短距离为"<<D[0][y]<<"m"<<endl;cout<<"从所在地步⾏到⽬的地约⽤时为"<<D[0][y]/80.0<<"min"<<endl;}break;case 3:{cout<<"任意景点问路查询"<<endl<<"请输⼊您现在所在的地点"; static int x;cin>>x;cout<<"请输⼊您想要到的地点";static int y;cin>>y;cout<<"最短路径为:" ;static int u;static int v;static int w;static int i;int t;static int s[MAX];static int D[MAX][MAX];static bool P[10][10][10];for(v=0;v<10;v++)for(w=0;w<10;w++){D[v][w]=r[v][w];for(u=0;u<10;u++) P[v][w][u]=false;if(D[v][w]<MAX){P[v][w][v]=true;P[v][w][w]=true;}}for(u=0;u<10;u++)for(v=0;v<10;v++)for(w=0;w<10;w++)if(D[v][u]+D[u][w]<D[v][w]){D[v][w]=D[v][u]+D[u][w];for(i=0;i<10;i++)P[v][w][i]=P[v][u][i]||P[u][w][i];}int q=0;for(t=0;t<10;t++)if(P[x][y][t]==true) {s[q]=t;q++;}int d;int h;int f[10]={100};static int l=0;int z=x;for(d=0;d<q-1;d++)for(h=0;h<q;h++)if(D[z][s[h]]==r[z][s[h]]&&D[z][s[h]]>0&&s[h]!=f[l]){cout<<z<<"-->";l=l+1;f[l]=z;z=s[h];break;}cout<<y;cout<<"这两个地点间的最短距离为"<<D[x][y]<<"m"<<endl;cout<<"从所在地步⾏到⽬的地约⽤时为"<<D[x][y]/80.0<<"min"<<endl;}break;}}else {cout<<"感谢使⽤校园导游系统"<<endl;exit(0);}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

(校园导游系统)c语言

(校园导游系统)c语言

校园导游咨询一、目的1、对自己学过的知识进一步的加深理解,对数据构造的算法思想要有更深的理解。

2、通过课程设计,学会通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵敏运用并深化理解典型数据构造在软件开发中的应用。

3、学会综合运用数据构造课程中学到的数据构造和算法,如图的存储构造,数组,迪杰斯特拉算法和Floyd算法等自行实现一个较为完好的应用系统的设计与开发。

二、需求分析1、功能需求〔1〕在菜单中显示校园景点地图。

〔2〕可以查找任意景点的途径。

〔3〕可以自动查找用户键入始点景点和终点景点的最短途径。

〔4〕用户可以查询任意景点的景点信息。

2、输入根据菜单提示键入相应的数字键已完成相应的操作。

例如:在菜单界面中键入数字3,再根据系统提示键入始点和终点对应的编号,系统便会输出相应的途径。

3、输出程序将根据用户键入的数字键,调用相应函数,完成查找过程,并将结果输出到屏幕。

三、概要设计1、变量定义typedef struct //图中顶点表示主要景点,存放景点的编号、名称、简介{char name[30];int num;char introduction[100];//简介}infotype;typedef struct ArCell //定义构造体变量来储存途径长度{int adj; //途径长度}ArCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUMtypedef struct //景点信息的构造体定义:{infotype vexs[MAX_VERTEX_NUM];AdjMatrix arcs;int vexnum,arcnum;}MGraph;MGraph b;2.函数模块void cmd( );//菜单项选择择模块MGraph InitGraph( );//赋值函数void Menu(void);//菜单函数void Browser(MGraph *G);//阅读景点信息的函数void ShortestPath_DIJ(MGraph * G);//迪杰斯特拉算法void Floyd(MGraph *G);//Floyd 算法void Search(MGraph *G);//查找景点信息函()(MGraph *G);//初始化图形void print(MGraph *G);//校园全景显示函数3、流程图四、详细设计MGraph * CreatUDN(MGraph *G)//初始化图形,承受用户输入{int i,j,k,w;char v1[20],v2[20];printf("请输入图的顶点数,弧数:");scanf("%d %d",&G->vexnum,&G->arcnum);printf("请输入景点的编号:、名称、简介:\n");for(i=0;i<G->vexnum;i++){printf("景点编号:");scanf("%d",&G->vexs[i].num);printf("景点名称:");scanf("%s",G->vexs[i].name);printf("景点简介:");scanf("%s",G->vexs[i].introduction);}for(i=0;i<G->vexnum;i++)for(j=0;j<G->vexnum;j++)G->arcs[i][j].adj=INFINITY;printf("请输入途径长度:\n");for(k=0;k<G->arcnum;k++){printf("第%d条边:\n",k+1);printf("景点对(x,y):");scanf("%s",v1);scanf("%s",v2);printf("途径长度:");scanf("%d",&w);i=LocateVex(G,v1);j=LocateVex(G,v2);if(i>=0&&j>=0){G->arcs[i][j].adj=w;G->arcs[j][i]=G->arcs[i][j];}}return G;}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("请输入一个起始景点编号:");scanf("%d",&v0);if(v0<0||v0>G->vexnum){printf("景点编号不存在!请重新输入景点编号:"); 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]<INFINITY){p[v][v0]=1;p[v][v]=1;}}D[v0]=0;final[v0]=1;for(i=1;i<G->vexnum;i++){min=INFINITY;for(w=0;w<G->vexnum;w++)if(!final[w])if(D[w]<min)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]); }}//迪杰斯特拉算法Floyd 算法:void Floyd(MGraph *G){int v,u,i,w,k,j,flag=1,p[10][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][u]=0;if(D[v][w]<INFINITY){p[v][w][v]=1;p[v][w][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][i]=p[v][u][i]||p[u][w][i];}while(flag){printf("请输入出发点和目的地的编号:");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][u]&&k!=u&&j!=u)printf("-->%s",G->vexs[u].name);printf("-->%s",G->vexs[j].name);printf(" 总道路长%dm\n",D[k][j]);}//Floyd end五、调试分析1、在设计校园全景图的时候,由于在main函数中加了清屏功能的system("cls");,造成地图总是一闪而过出如今界面中。

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. 了解文件操作,掌握文件读写方法;4. 掌握C语言中的模块化编程,理解函数的定义与调用。

技能目标:1. 能够运用C语言编写简单的校园导游系统程序;2. 能够设计合理的程序结构,实现模块化编程;3. 能够使用结构体、数组等数据结构存储和处理信息;4. 能够利用文件操作保存和读取导游系统的数据。

情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习C语言的积极性;2. 培养学生团队合作精神,学会在团队中分享和交流;3. 培养学生解决问题的能力,增强面对困难的信心;4. 培养学生的创新意识,鼓励提出独特见解。

课程性质:本课程为实践性较强的学科,旨在让学生通过实际项目开发,掌握C语言编程技能。

学生特点:学生已具备一定的C语言基础,对编程有一定了解,但实际操作能力有待提高。

教学要求:结合学生特点,注重实践操作,以项目为导向,引导学生主动探究,培养编程兴趣和团队协作能力。

将课程目标分解为具体的学习成果,以便在教学设计和评估中逐一落实。

二、教学内容1. C语言基础语法复习:包括变量定义、数据类型、运算符、表达式、控制语句等;相关教材章节:第一章至第四章。

2. 结构体、数组与指针:理解结构体的定义和使用,掌握一维数组和二维数组的应用,了解指针的概念和操作;相关教材章节:第五章、第六章。

3. 函数与模块化编程:掌握函数的定义、调用、参数传递,了解模块化编程的原理;相关教材章节:第七章。

4. 文件操作:学习文件读写方法,掌握文件打开、关闭、读写等基本操作;相关教材章节:第十章。

5. 校园导游系统设计与实现:结合实际项目,运用所学知识设计并编写校园导游系统,包括景点信息展示、路径查询等功能;相关教材章节:综合应用。

教学进度安排:1. 第一周:C语言基础语法复习;2. 第二周:结构体、数组与指针;3. 第三周:函数与模块化编程;4. 第四周:文件操作;5. 第五周至第七周:校园导游系统设计与实现,分阶段完成项目。

c++数据结构课程设计校园导游设计代码

c++数据结构课程设计校园导游设计代码

C++数据结构课程设计——校园导游设计代码1. 引言在现代高校教育中,数据结构课程的重要性不言而喻。

而在C++语言中,有关数据结构的课程设计更是相当重要。

本文将探讨如何利用C++语言设计校园导游系统的代码,并给出详细的设计方案和代码实现。

2.设计思路校园导游系统主要包括地图信息的输入、导游路线的规划、用户信息的管理和景点信息的展示。

我们将采用图的数据结构和Dijkstra算法来实现导游路线的规划,采用链表和栈的数据结构来实现用户信息的管理,采用数组和哈希表的数据结构来实现景点信息的展示。

3.系统架构3.1 地图信息的输入为了实现地图信息的输入,我们将采用图的数据结构来描述校园内的各个景点之间的相互关系。

每个景点将作为图的一个节点,而景点之间的路径将作为图的一条边。

我们将设计一个函数来输入景点之间的相互关系,并将其存储在图的邻接矩阵中。

3.2 导游路线的规划为了实现导游路线的规划,我们将采用Dijkstra算法来求解最短路线。

我们将设计一个函数来实现Dijkstra算法,并根据用户的起始点和终点来输出最短路线。

3.3 用户信息的管理为了实现用户信息的管理,我们将采用链表和栈的数据结构来存储用户的历史操作信息。

我们将设计一个函数来实现用户信息的录入和查询,并将其存储在链表和栈中进行管理。

3.4 景点信息的展示为了实现景点信息的展示,我们将采用数组和哈希表的数据结构来存储校园内各个景点的相关信息。

我们将设计一个函数来实现各个景点信息的录入和展示,并将其存储在数组和哈希表中进行管理。

4. 代码实现以下是校园导游系统的C++代码实现:```// TO DO```5. 结语通过以上的设计方案和代码实现,我们成功利用C++语言设计了一个校园导游系统。

该系统能够实现地图信息的输入、导游路线的规划、用户信息的管理和景点信息的展示。

希望本文能够给读者在学习C++数据结构课程设计时提供一定的帮助。

除了以上提到的功能,校园导游系统还可以增加更多的特色功能,比如语音导览、虚拟现实导览、导游路线的可视化展示等。

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; }}}。

校园导游咨询系统数据结构课程设计c语言

校园导游咨询系统数据结构课程设计c语言

校园导游咨询系统数据结构课程设计c语言校园导游咨询系统数据结构课程设计c语言一、课程设计的目的本次课程设计旨在通过C语言程序设计实现校园导游咨询系统,学生能够了解并掌握数据结构的基本概念、算法和编程技术,培养学生的编程能力和解决实际问题的能力。

二、系统需求分析(1)用户管理系统需要实现学生、教师、管理员三种用户的管理,分别具有不同的权限等级。

要实现用户注册、登录、退出等基本功能。

(2)地图导航系统需要实现校内地图的导航功能,包括校门、教学楼、图书馆、宿舍等位置的标注,提供校园内部的导航和查找服务。

(3)建筑信息系统需要提供校内建筑的信息查询功能,包括建筑名称、位置、使用情况等,方便师生查询。

(4)在线咨询系统需要提供在线咨询功能,方便学生、教师等用户在线咨询学校相关事宜,并实现客服人员的消息处理。

三、数据结构设计(1)用户信息表采用哈希表作为用户信息表的数据结构,将用户信息存储在表中,方便用户登录和信息的管理。

哈希表的键值是用户名,值是用户信息(包括用户名、密码、权限等级等)。

(2)建筑信息采用结构体数组作为建筑信息的数据结构,将建筑信息存储在数组中,方便查询和展示。

结构体包含建筑名称、位置、使用情况等信息。

(3)校内地图为方便地图导航,采用邻接矩阵作为校内地图的数据结构,将校内各个建筑之间的距离存储在矩阵中。

矩阵的行和列分别表示建筑的编号,矩阵元素表示建筑之间的距离。

(4)消息队列为实现在线咨询功能,采用队列作为消息队列的数据结构,将用户发送的消息存储在队列中。

消息队列的队首指针和队尾指针分别表示最早和最晚的消息,方便客服人员的处理。

四、代码实现(1)用户管理用户管理实现了注册、登录和退出等功能。

用户密码使用MD5加密,保证用户信息的安全性。

管理员可以添加、删除学生和教师用户。

(2)地图导航地图导航实现了最短路径算法和深度优先搜索算法,方便用户查询和展示校内地图。

用户可以查找建筑的详细信息,包括位置、使用情况等。

C++数据结构课程设计-校园导游咨询系统

C++数据结构课程设计-校园导游咨询系统

数据结构(C++)课程设计题目: 校园导游咨询*姓名:学号:院系:专业年级:2014年7月8日目录一、设计题目 (2)二、需求分析 (2)三、概要设计 (6)四、详细设计 (11)五、调试分析 (14)六、测试结果 (14)七、附录:程序设计源代码 (21)一、设计题目校园导游咨询*二、需求分析1)运行环境(软、硬件环境)电脑型号X64 兼容台式电脑处理器英特尔第二代酷睿***************四核主板华硕P8H61-M LX (英特尔H61 芯片组)内存8 GB ( 威刚DDR3 1333MHz )主硬盘西数WDC WD10EALX-009BA0 ( 1 TB / 7200 转/分)显卡ATI Radeon HD 6700 Series ( 512 MB / ATI )显示器SGW5600 PL2208HD ( 21.7 英寸)光驱华硕DRW-24D1ST a DVD刻录机声卡瑞昱ALC887 @ 英特尔 6 Series Chipset 高保真音频网卡瑞昱RTL8168E PCI-E Gigabit Ethernet NIC / 华硕操作系统:Windows 7 Ultimate (x86) sp1编程环境:Microsoft Visual Studio 20122)输入的形式和输入值的范围内容形式范围景点代号int 自然数景点名称string 所有字符景点简介string 所有字符X坐标int 正整数Y坐标int 正整数3)输出的形式描述内容形式范围景点代号int 自然数景点名称string 所有字符景点简介string 所有字符X坐标int 正整数Y坐标int 正整数最短路径图像jpg4)功能描述以我校南汇校区部分景点、进行抽象化,生成了具有15个顶点、18条边的图,以邻接表与邻接矩阵复合形式储存在内存中,主要有以下功能:a.查询景点的信息,包括基本信息和拓展的周围节点信息;b.景点导航,给出起点、终点,规划出最短路径和风景最佳路径;c.修改景点,道路信息,包括添加景点、添加道路、修改景点功能;d.开发人员工具,包括邻接表、邻接矩阵的查看DFS深度优先遍历、BFS广度优先遍历e.显示地图,打开预制的地图文件查看5)测试数据初始地图信息:景点景点名称景点介绍X坐标Y坐标编号0 北校门学校的北入口 2 141 北图书馆学校北侧图书馆12 142 崇德楼经管学院楼26 143 奋进楼公共机房12 2826 284 北运动场具有足球场、篮球场、健身房等12 325 行政楼计算机学院楼及其他行政办公12 396 教师活动中心又称H楼,具有桌球、乒乓球、会议室、舞厅等7 雕塑校园雕塑26 398 南校门学校南入口 2 509 至诚楼办理学生事务处12 5026 5010 大礼堂学校大型文艺演出、讲座场所11 南图书馆学校南侧的图书馆12 52团委、学生会、社联所在处12 1212 大学生文化活动中心13 风帆广场绿地广场,景色优美26 5812 7014 南运动场具有足球场、篮球场、羽毛球场等距离邻接矩阵:三、概要设计1)抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验)Site类Data:编号Code景点名称SiteName景点介绍Introduction景点X坐标景点Y坐标Operation:构造函数输入:编号,名称,介绍,X坐标,Y坐标前置条件:无动作:初始化Site类元素输出:无后置条件:无SetSite输入:编号,名称,介绍,X坐标,Y坐标前置条件:无动作:赋值Site类元素输出:无后置条件:无ArcNode类Data :邻接点下标值Adjvx指向下一个边结点的指针*nextarc;风景等级sceneLevel;距离distance;Operation:构造函数输入:Adjvx, *nextarc, sceneLevel;前置条件:无动作:初始化ArcNode类输出:无后置条件:无VertexNode类Data :节点内容vex节点首指针*firstarcOperation:无Road类Data :Site型节点1,节点2距离Distance风景等级Bool型是否是机动车道carAviliable;Operation:SetRoad构造函数输入:节点1,节点2,风景等级前置条件:存在Site对象动作:初始化Road类输出:无后置条件:无BGraph 类Data :邻接表adjlist[]Int 距离矩阵Int 风景值矩阵Operation:构造函数输入:前置条件:动作:输出:后置条件:无addSite函数输入:景点名称,景点信息,景点X坐标,景点Y坐标前置条件:顶点表已建立动作:添加邻接表顶点、修改邻接矩阵输出:无后置条件:无addRoad函数输入:景点1名称,景点2名称,风景等级前置条件:顶点表已建立动作:添加邻接表的边表,修改邻接矩阵输出:无后置条件:无ShowInfo函数输入:无前置条件:函数已初始化动作:输出当前图信息输出:顶点数、边数后置条件:无pGraph函数输入:无前置条件:函数已初始化动作:输出邻接表输出:邻接表后置条件:无pMatrix输入:无前置条件:函数已初始化动作:输出邻接矩阵输出:邻接矩阵后置条件:无searchByName输入:景点名称前置条件:图已初始化动作:搜索符合名称的节点输出:节点site型后置条件:无DFSTraverse函数输入:无前置条件:图已初始化动作:深度优先遍历输出:遍历路径后置条件:无BFSTraverse函数输入:无前置条件:图已初始化动作:广度优先遍历输出:遍历路径后置条件:无FindPath函数输入:节点1,节点2前置条件:图已初始化动作:计算最短路径输出:路径经过点、路径产长度、每一步的方向后置条件:无2)功能模块设计(如主程序模块设计)1.主程序模块:连接各种功能子模块,使用循环等待用户操作,完成程序的基本操作实现功能。

校园导游服务咨询系统C++(含源代码)说明书_2015

校园导游服务咨询系统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.删除服务信息:用户操作功能模块,由主程序直接调用的函数模块,将功能具象化,系统工具函数模块,先查找到所存在的服务信息,然后对用户希望删除的服务信息进行删除操作,若所要删除的服务信息不存在,则输出不存在此服务信息。

校园导游咨询系统源代码

校园导游咨询系统源代码

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

数据结构课程设计报告(校园导游系统)附有源代码(20191123003227)

数据结构课程设计报告(校园导游系统)附有源代码(20191123003227)

图 4.3.1 景点 2 红满堂信息查询
图 4.3.2 景点 7 竹园信息查询 4.4 任意两个景点间地最短路径
根据用户地需求 , 在用户输入了起点和终点后计算出最短路径是哪一条路径 . 以下举两个例子 . 第一个例子地起点是 5 东区运动场 , 终点是 1 校史馆 . 第二个例 子地起点是 2 红满堂 , 终点是 10 黑山运动场 . 运行结果如图 4.4.1 和图 4.4.2 所 示 . 83lcPA59W9
图 4.1 校园导游节目图 4.2 华农校园地图
校园地图地查看是通过抽象化 10 个景点来用 printf( > 输入选择 1 之后弹出地界面 , 运行结果如图 4.2. HbmVN777sL
函数输出地图 , 在
图 4.2 抽象化地华南农业大学校园导游地图 4.3 景点地相关信息查询
景点地相关信息查询是通过 information( > 函数来调用输出地 , 在主菜单 那输入 2 之后 , 拿第 2 个景点红满堂和第 7 个景点竹园来当例子 , 第运行结果如 图 4.3.1 和图 4.3.2. V7l4jRB8Hs
2.2 输出 dist[j] 和 path[j] ;
2.3 修改数组 dist 和 path 。
2.4 将顶点 vk 添加到数组 s 中;
3. 系统流程
3.1 系统地简单说明 1. 创建校园图: <1)先手工画好华农地 10 个景点地草图 , 再用 C++语言输出抽象化地校园
地图 . <2)再用 C++语言定义节点个数 N,编写函数 name( >为景点赋值各类信息
为空串 . 1nowfTG4KI
数组 s[n] :存放源点和已经生成地终点 <即集合 S), 初态为只有一个源点 v.

校园导游系统代码

校园导游系统代码
{
printf("请输入一个起始景点编号:");
scanf("%d",&v0);
if(v0<0||v0>G->vexnum)
{
printf("景点编号不存在!请重新输入景点编号:");
scanf("%d",&v0);
}
if(v0>=0&&v0<G->vexnum)
void cmd(void);
MGraph InitGraph(void);
void Menu(void);
void Browser(MGraph *G);
void ShortestPath_DIJ(MGraph * G);
void Floyd(MGraph *G);
void Search(MGraph *G);
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");
G.arcs[1][7].adj=300;
G.arcs[2][3].adj=120;
G.arcs[3][6].adj=220;
G.arcs[3][4].adj=100;
G.arcs[4][5].adj=300;

校园导游系统

校园导游系统

#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#definemaxnum11//顶点个数#defineINFINITY32768//初始化值,最大值intpre[maxnum];//用于存放权值或存储路径顶点编号intvisited[maxnum];//用于标志是否已经访问过////////////////////////////////邻接矩阵法///////////////////////////////////typedefstructVData{intnum;charname[20];charjieshao[100];}VData;typedefstructANode{intadj;//弧的权值}ANode;typedefstruct{VDatavertex[maxnum];//顶点的二维数组ANodearcs[maxnum][maxnum];//邻接矩阵intvexnum,arcnum;//图的顶点数与弧数}AdjM;////////////////////////////创建图///////////////////////////////AdjMCreatUDN(void){inti,j;AdjMg;g.vexnum=11;//初始化结构中的景点数和边数g.arcnum=18;g.vertex[0].num=0;strcpy(g.vertex[0].name,"正门");strcpy(g.vertex[0].jieshao,"西安邮电学院正门位于韦郭路南侧,长安新区政府西侧,坐南向北。

");g.vertex[1].num=1;strcpy(g.vertex[1].name,"行政楼");strcpy(g.vertex[1].jieshao,"行政楼位于学校东侧,是学校老师处理公务、办公的地方。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public void addVertex(string vnam) { int i = getIndex(vnam); if (i != -1) { Console.WriteLine(&quot;\n 该景点已经存在。&quot;); return; } vertices[n] = new Vertex(vnam); n++; }
if (n == 0) { Console.WriteLine(&quot;\n 图不存在,你需要先插入一些顶点和边。&quot;); return; }
while (true) { Console.WriteLine(&quot;\n 输入起始景点: &quot;); source = Console.ReadLine(); src = getIndex(source); if (src == -1) Console.WriteLine(&quot;\n 该起始景点不存在。&quot;); else break; }
for (int j = 0; j &lt; n;] == false) &amp;&amp; (Distance[j] &lt; Distance[v])) v = j; }
Final[v] = true;
for (int w = 0; w &lt; n; w++) { if (Final[w] == false) { if (Distance[v] + cost[v, w] &lt; Distance[w]) Distance[w] = Distance[v] + cost[v, w]; } } }
public void bfs()//广度遍历 { Console.Write(&quot;广度遍历的结果:&quot; + vertices[0].vname + &quot;,&quot;); vertices[0].wasVisited = true; thequeue.Enqueue(vertices[0]); while (thequeue.Count &gt; 0) { int w = getAdjUnvisitedVertex(thequeue.Count - 1); if (w == -1) thequeue.Dequeue(); else { Console.Write(vertices[w].vname + &quot;,&quot;); vertices[w].wasVisited = true; thequeue.Enqueue(vertices[w]); } } for (int j = 0; j &lt; n; j++) vertices[j].wasVisited = false; Console.WriteLine();
public void dfs()//深度遍历 { vertices[0].wasVisited = true; Console.Write(&quot;深度遍历的结果:&quot; + vertices[0].vname + &quot;,&quot;); thestack.Push(vertices[0]); while (thestack.Count &gt; 0)
public Graph() { n = 0; for (int i = 0; i &lt; 10; i++) for (int j = 0; j &lt; 10; j++) { if (i == j) cost[i, j] = 0; else cost[i, j] = infinity; } }
private bool edgeExists() { for (int i = 0; i &lt; 10; i++) for (int j = 0; j &lt; 10; j++) if ((cost[i, j] != 0) &amp;&amp; (cost[i, j] != infinity)) return (true); return (false); }
} class Program { static void Main(string[] args) { Graph obj = new Graph(); string a = &quot;V0&quot;, b = &quot;V1&quot;, c = &quot;V2&quot;, d = &quot;V3&quot;, e = &quot;V4&quot;, f = &quot;V5&quot;, g = &quot;V6&quot;; obj.addVertex(a); obj.addVertex(b); obj.addVertex(c); obj.ad
k = j; Console.Write(&quot; --&quot; + lowcost[k] + &quot;-- &quot; + vertices[k].vname); for (j = 0; j &lt; n; j++) { if (cost[k, j] &lt; lowcost[j]) { lowcost[j] = cost[k, j]; } }
Console.WriteLine(&quot;\n 从景点 &quot; + source + &quot;到其他所有景点的最短路径 分别是: &quot;);
for (int j = 0; j &lt; n; j++) { if (Distance[j] == infinity) Console.WriteLine(source + &quot;-&gt;&quot; + vertices[j].vname + &quot; =No path&quot;); else Console.WriteLine(source + &quot;-&gt;&quot; + vertices[j].vname + &quot; = &quot; + Distance[j]); } }
} } } Console.WriteLine(); }
public void findShortestPath()//找图的最短路径 { int[] Distance = new int[10]; bool[] Final = new bool[10]; string source;
int src;
public int getAdjUnvisitedVertex(int v) { for (int j = 0; j &lt; n; j++) if (cost[v, j] != infinity &amp;&amp; vertices[j].wasVisited == false) return j; return -1; }
private int getIndex(string vname) { for (int i = 0; i &lt; n; i++) if (vertices[i].vname == vname) return (i); return (-1);//如果在列表中没有找到,返回-1。 }
public void addEdge(string v1, string v2, int a) { int i1, i2; if (n == 0) { Console.WriteLine(&quot;\n 不存在任何景点。你需要先增加一个景点。&quot;); return; } while (true) { i1 = getIndex(v1); if (i1 == -1) Console.WriteLine(&quot;\n 该起始景点不存在,请重试。&quot;); else break;
for (int i = 0; i &lt; n; i++) Distance[i] = cost[src, i];
Final[src] = true;
for (int i = 0; i &lt; n; i++) { int v = 0; for (int j = 0; j &lt; n; j++) { if (Final[j] == false) { v = j; break; } }
} while (true) { i2 = getIndex(v2); if (i2 == -1) Console.WriteLine(&quot;\n 该目的地景点不存在,请重试。&quot;); else break; } cost[i1, i2] = cost[i2, i1] = a; }
public void display() { if (n == 0) { Console.WriteLine(&quot;\n 图不存在。&quot;); return; } Console.WriteLine(&quot;\n 景点:&quot;); for (int i
{ int v = getAdjUnvisitedVertex(thestack.Count - 1);//有问题 if (v == -1) thestack.Pop(); else { vertices[v].wasVisited = true; Console.Write(vertices[v].vname + &quot;,&quot;); thestack.Push(vertices[v]); } } for (int j = 0; j &lt; n; j++) vertices[j].wasVisited = false; Console.WriteLine(); }
相关文档
最新文档