校园导游系统源程序
- 格式:doc
- 大小:93.50 KB
- 文档页数:12
1、需求分析设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询。
(1)。
设计工商学院校园无向图,所含的景点不少于10个.以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)。
为来访客人提供图中任意景点相关信息的查询。
(3)。
为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
2、设计思路校园旅游模型是由景点和景点之间的路径组成的,所以这完全可以用数据结构中的图来模拟.用图的结点代表景点,用图的边代表景点之间的路径.所以首先应设计一个图类.结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值用顺序表存储,所以需要设计一个顺序表类。
本系统需要查询景点信息和求一个景点到另一个景点的最短路径长度及路线,为方便操作,所以给每个景点一个代码,用结构体类型实现。
计算路径长度和最短路线时可用弗洛伊德(Floyd)算法实现。
最后用switch选择语句选择执行浏览景点信息或查询最短路径。
3 算法设计3。
1 概要设计3。
1。
1 程序中包含的模块(1)主程序模块主函数:void main(void)void cmd(void) cmd修改显示框大小,字体背景颜色,初始化景点,景点信息打印菜单,MGraph InitGraph(void); //初始化图。
MGraph * CreatUDN(MGraph *G);//初始化图形接受用户输入void Menu(void);//菜单函数void Browser(MGraph *G);//浏览函数void ShortestPath_DIJ(MGraph *G);void Floyd(MGraph *G);//查询图中任意两个景点间的所有路径void Search(MGraph *G);//查找函数int LocateVex(MGraph *G,char*v); // 迪杰斯特拉算法计算起点各顶点间短路径,void print(MGraph *G);//输出函数(2)查询模块景点信息查询:void introduce()最短路径查询:要查找的两景点的最短距离:用floyd算法求两个景点的最短路径:(3)打印模块:void print(MGraph *G);3。
校园导游系统设计与实现第一篇:校园导游系统设计与实现校园导游系统设计与实现目录 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)设计你所在学校的校园平面图,所含景点不少于10个。
以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点相关信息的查询。
(3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一个最短的简单路径。
【测试数据】由读者根据实际情况指定。
【实现提示】一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。
顶点和边均含有相关信息。
【选作内容】(6)扩充每个景点的邻接景点的方向等信息,使得路径查询结果能提供详尽的导向信息。
二、概要设计1)抽象数据类型定义描述#include<iostream>using namespace std;const int MaxSize=18;const int INFINITY=65535;//最大值无穷class direction;template <class T> class MGraph;template <class T>class VertexNode//定义景点结点,存储景点信息{friend class MGraph<T>;public:int vex;//景点名称T vexname;//景点名称T vexinf;//景点信息direction dir;//存放景点方位信息的direction类的dir。
};class direction{public:int ln;//存放在方向图中的横坐标,表示东西int col;//存放在方向图中的纵坐标,表示南北};template <class T>class MGraph//定义无向图的邻接矩阵{public:MGraph();//构造函数,初始化具有n个顶点的图void printvexname();//显示所有景点及景点代号void printvexinf(int i);//显示代号为i景点的名称及信息void printroad(int i,int j);//显示景点i~j的最短路径方案信息void printdir(int i,int j);//显示景点i到j的方向信息,如“向东100m,向南200m”VertexNode<T> adjlist[MaxSize]; //存放景点全部信息的景点类数组int vertexNum,arcNum; //图的顶点数和边数void Root(int p,int q);//递归寻找pq间的最短路径int Path[MaxSize][MaxSize],Dist[MaxSize][MaxSize];//创建Path和Dist分别存放两点间最短路径的前驱节点,两点间最短路径长度int Line[MaxSize];//Line存放路径int kkk;//在floyed算法中,做Line[]数组的标记private:T vertex[MaxSize]; //存放图中顶点的数组int arc[MaxSize][MaxSize];//存放图中边的数组};2)功能模块设计(如主程序模块设计)int funcchoice()//系统功能选择页面{int choice;cout<<"=============================================================="<<endl;cout<<" 欢迎进入校园导游咨询平台"<<endl;cout<<" 1--显示校园所有景点信息"<<endl;cout<<" 2--查询校园景点信息"<<endl;cout<<" 3--问路查询系统"<<endl;cout<<" 4--退出导游资讯平台"<<endl;cout<<"=============================================================="<<endl;cout<<"请输入要选择的功能号:";cin>>choice;return choice;}3)模块层次调用关系图三、详细设计//程序的头文件#include<iostream>#include<iomanip>#include"guide.h"using namespace std;template <class T>MGraph<T>::MGraph()//a[]为景点代号,b[]为景点名称,c[]为景点信息,d[]为景点方位信息的横坐标,e[]为景点方位信息的纵坐标,s[]为存放景点邻接矩阵信息的一维数组,根据其对称性可以用公式赋值给二维数组arc[][]{i nt s[]={0,1,0,0,2,0,0,0,2,0,0,0,2,3,0,0,0,0,4,2,0,0,0,0,0,2,3,0,0,0,0,0,2,3,1,0,0,0,2,0,2,0,0,2,0,4,0,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,0,0,2,0};i nt a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};c har* b[]={"南门","实验楼","南图","大活","睿思楼","大礼堂","南4教","知行楼","国交楼","南3教","南2教","南1教","北图","北3教","北4教","北2教","北1教","北门"};c har* c[]={"南校区正门","物理实验楼","南校区图书馆","大学生活动中心","教师办公楼、医务室及留学生公寓","大礼堂,用于举办各种文艺演出","南校区第4教学楼","实习基地,计算机房等","国际交流中心,教职工餐厅","南校区第3教学楼","南校区第2教学楼","南校区第1教学楼","北校区图书馆","北校区第3教学楼","北校区第4教学楼","北校区第2教学楼","北校区第1教学楼","北校区正门"};i nt d[]={8,6,4,4,1,0,0,1,3,4,6,8,4,3,2,3,5,8};i nt e[]={8,8,8,10,8,10,7,6,6,6,6,6,3,1,0,0,0,2};i nt i,j;v ertexNum=18;a rcNum=30;f or(i=0;i<vertexNum;i++){adjlist[i].vex=a[i];adjlist[i].vexname=b[i];adjlist[i].vexinf=c[i];adjlist[i].dir.ln=d[i];adjlist[i].dir.col=e[i];}f or (i=0; i<vertexNum; i++)//初始化邻接矩阵for (j=0; j<vertexNum; j++)arc[i][j]=arc[j][i]=s[(i*(i+1))/2+j]; //根据s[]的对称性,将一维数组中的数据赋给二维数组arc[][]}template<class T>void MGraph<T>::printvexname(){i nt i;f or(i=0;i<vertexNum;i++)cout<<adjlist[i].vex<<" "<<adjlist[i].vexname<<endl;;}template<class T>void MGraph<T>::printvexinf(int i){c out<<i<<" "<<adjlist[i].vexname<<":"<<adjlist[i].vexinf<<endl;}template<class T>void MGraph<T>::printdir(int i,int j){i nt dx,nb;//临时存放i与j之间的南北东西关系 j在i的哪边??d x=adjlist[j].dir.col-adjlist[i].dir.col;n b=adjlist[j].dir.ln-adjlist[i].dir.ln;i f(dx>0)//即j在i的东边cout<<"向东"<<dx*100<<"m,";e lsecout<<"向西"<<dx*(0-100)<<"m,";i f(nb>0)//即j在i的南边cout<<"向南"<<nb*100<<"m";e lsecout<<"向北"<<nb*(0-100)<<"m";}template<class T>void MGraph<T>::Root(int p,int q){i f (Path[p][q]>0){Root(p,Path[p][q]);Root(Path[p][q],q);}e lse{Line[kkk]=q;kkk++;}}template<class T>void MGraph<T>::printroad(int i,int j){i nt p,q,m,k,item1,item2;f or(p=0;p<vertexNum;p++)for(q=0;q<vertexNum;q++)Dist[p][q]=arc[p][q];//邻接矩阵赋值f or(k=0;k<vertexNum;k++)for(p=0;p<vertexNum;p++)if (Dist[p][k]>0)for(q=0;q<vertexNum;q++)if (Dist[k][q]>0)if (((Dist[p][q]>Dist[p][k]+Dist[k][q])||(Dist[p][q]==0))&&(p!=q)){Dist[p][q]=Dist[p][k]+Dist[k][q];Path[p][q]=k;}c out<<"\n=====================================================\n";c out<<"从"<<adjlist[i].vexname<<"到"<<adjlist[j].vexname<<"的最短路径为:"<<endl;c out<<adjlist[i].vexname;k kk=2;R oot(i,j);i tem2=Line[2];c out<<"-->";p rintdir(i,item2);c out<<"-->"<<adjlist[item2].vexname;f or(m=3;m<=kkk-1;m++){item1=Line[m];cout<<"-->";printdir(item1-1,item1);cout<<"-->"<<adjlist[item1].vexname;}c out<<endl;c out<<"\n=====================================================\n";}========================以下为main.cpp文件中主函数的实现========================== #include<iostream>#include"guide.cpp"using namespace std;int funcchoice()//系统功能选择页面{i nt choice;c out<<"=============================================================="<<endl;c out<<" 欢迎进入校园导游咨询平台"<<endl;c out<<" 1--显示校园所有景点信息"<<endl;c out<<" 2--查询校园景点信息"<<endl;c out<<" 3--问路查询系统"<<endl;c out<<" 4--退出导游资讯平台"<<endl;c out<<"=============================================================="<<endl;c out<<"请输入要选择的功能号:";c in>>choice;r eturn choice;}void main(){M Graph<char*> mg;i nt funcchoice();i nt fc;w hile(1){fc=funcchoice();if(fc==1){int i;for(i=0;i<mg.vertexNum;i++)mg.printvexinf(i);}else if(fc==2){int i;mg.printvexname();cout<<endl<<"请输入所要查询景点代号:";cin>>i;mg.printvexinf(i);}else if(fc==3){int i,j;mg.printvexname();cout<<"请输入两景点代号(我们将把最短路线反馈予您):";cin>>i>>j;mg.printroad(i,j);}else if(fc==4)break;elsecout<<"输入有误,请重新输入!"<<endl;}}if调试分析遇到的问题及解决的办法:在调试过程中,最常见到的问题有以下几种:1、忘记调用函数类模块template<class T>,有些类中或者函数中涉及函数类模块的调用,但忘记标注会导致编译错误。
课题五:校园导游程序1)问题描述用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
2)基本要求(1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径。
(3)能够将图的信息保存到文件中,并指定文件打开。
(4)增加、删除、更新有关景点和道路的信息。
附加难度:有余力的同学可以考虑用图形界面实现寻址的过程3) 设计思想核心数据结构定义一个图,将图保存后,对图进行面向指定节点到各个节点的最短路径的操作。
可以再文件中保存多个导游图,例如保存学校图、芜湖市图等文件。
开始时选择文件,将指定文件中的信息导入到内存的图中。
#define Infinity 1000#define MaxVertexNum 35#define MAX 40#include<fstream>#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<iostream.h>typedef struct arcell //边的权值信息{int adj; //权值}arcell,adjmatrix[MaxVertexNum][MaxVertexNum]; //图的邻接矩阵类型typedef struct vexsinfo //顶点信息{int position; //景点的编号char name[32]; //景点的名称char introduction[256]; //景点的介绍}vexsinfo;typedef struct mgraph //图结构信息{vexsinfo vexs[MaxVertexNum]; //顶点向量(数组)adjmatrix arcs; //邻接矩阵int vexnum,arcnum; //分别指定顶点数和边数}mgraph;//全局变量int visited[35]; //用于标志是否已经访问过int d[35]; //用于存放权值或存储路径顶点编号mgraph campus; //图变量(大学校园)// (1) 对图初始化mgraph initgraph(){int i=0,j=0;mgraph c;c.vexnum =28; //顶点个数c.arcnum =39; //边的个数for(i=0;i<c.vexnum ;i++) //依次设置顶点编号c.vexs[i].position =i;//依次输入顶点信息strcpy(c.vexs[0].name ,"正门: ");strcpy(c.vexs[0].introduction ,"学校大门,离公交站很近""|r\n");strcpy(c.vexs[1].name ,"学校后门门: ");strcpy(c.vexs[1].introduction ,"去往新区、学校班车进出口");strcpy(c.vexs[2].name ,"人文学院: ");strcpy(c.vexs[2].introduction ,"人文学院办公楼的住处,楼高3层");strcpy(c.vexs[3].name ,"管理学院: ");strcpy(c.vexs[3].introduction ,"MBA培训中心,楼高7层");strcpy(c.vexs[4].name ,"行政楼: ");strcpy(c.vexs[4].introduction ,"行政办公大楼,楼高5层");strcpy(c.vexs[5].name,"建设银行: ");strcpy(c.vexs[5].introduction ,"学生取款处,楼高1层");strcpy(c.vexs[6].name ,"体育馆: ");strcpy(c.vexs[6].introduction ,"室内各类球类运动");strcpy(c.vexs[7].name,"外语学院: ");strcpy(c.vexs[7].introduction ,"各种外语教学,楼高6层");strcpy(c.vexs[8].name ,"双馨园食堂: ");strcpy(c.vexs[8].introduction ,"学生就餐地点");strcpy(c.vexs[9].name, "博学楼: ");strcpy(c.vexs[9].introduction , "计算机科学与技术学院大楼,楼高13层"); strcpy(c.vexs[10].name ,"学生宿舍: ");strcpy(c.vexs[10].introduction ,"若干栋,离中山园食堂近");strcpy(c.vexs[11].name ,"中山园食堂: ");strcpy(c.vexs[11].introduction ,"学生就餐处");strcpy(c.vexs[12].name ,"图书馆: ");strcpy(c.vexs[12].introduction ,"历史悠久,文化气氛好");strcpy(c.vexs[13].name ,"法学楼: ");strcpy(c.vexs[13].introduction ,"研修法学佳地");strcpy(c.vexs[14].name ,"贵大学生超市: ");strcpy(c.vexs[14].introduction ,"买各种日用品的地方");strcpy(c.vexs[15].name ,"大礼堂: ");strcpy(c.vexs[15].introduction ,"文艺演出所在地");strcpy(c.vexs[16].name ,"慎思楼(新图书馆): ");strcpy(c.vexs[16].introduction ,"自习的好地方");strcpy(c.vexs[17].name ,"逸夫楼: ");strcpy(c.vexs[17].introduction ,"经济学院办公楼");strcpy(c.vexs[18].name ,"文化书院: ");strcpy(c.vexs[18].introduction ,"推动东西方文化交流的重要桥梁");strcpy(c.vexs[19].name ,"派出所: ");strcpy(c.vexs[19].introduction ,"保卫学校安全");strcpy(c.vexs[20].name ,"贵州大学出版社: ");strcpy(c.vexs[20].introduction ,"发行各种图书");strcpy(c.vexs[21].name ,"贵州大学网球场: ");strcpy(c.vexs[21].introduction ,"打网球的地方");strcpy(c.vexs[22].name ,"化工学院: ");strcpy(c.vexs[22].introduction ,"各种实验的研究之地");strcpy(c.vexs[23].name ,"贵州大学高等教育研究所: ");strcpy(c.vexs[23].introduction ,"关于高等教育的各种研究");strcpy(c.vexs[24].name ,"花溪海洋学校: ");strcpy(c.vexs[24].introduction ,"贵大内部学校");strcpy(c.vexs[25].name ,"贵州大学党校: ");strcpy(c.vexs[25].introduction ,"党员学习的地方");strcpy(c.vexs[26].name ,"校医院: ");strcpy(c.vexs[26].introduction ,"看小病的地方");strcpy(c.vexs[27].name ,"体育场: ");strcpy(c.vexs[27].introduction ,"田径远动地点");//依次输入边上的权值信息for(i=0;i<c.vexnum ;i++)for(j=0;j<c.vexnum ;j++)c.arcs [i][j].adj =Infinity; //先初始化图的邻接矩阵//部分弧长c.arcs[0][2].adj=50; c.arcs[0][3].adj=60;c.arcs[1][4].adj=90;c.arcs[2][3].adj=60; c.arcs[2][8].adj=40;c.arcs[3][4].adj=60; c.arcs[3][6].adj=40;c.arcs[4][5].adj=70; c.arcs[4][9].adj=70; c.arcs[4][10].adj=80;c.arcs[4][17].adj=200;c.arcs[5][7].adj=70;c.arcs[6][9].adj=40;c.arcs[7][18].adj=190;c.arcs[8][11].adj=50;c.arcs[9][12].adj=40;c.arcs[10][18].adj=70;c.arcs[11][12].adj=60; c.arcs[11][14].adj=50; c.arcs[11][15].adj=50;c.arcs[12][16].adj=50;c.arcs[13][14].adj=40; c.arcs[13][22].adj=60;c.arcs[14][15].adj=50; c.arcs[14][20].adj=90;c.arcs[15][16].adj=60; c.arcs[15][21].adj=40;c.arcs[16][17].adj=60;c.arcs[17][18].adj=80;c.arcs[18][19].adj=60;c.arcs[20][21].adj=60; c.arcs[20][24].adj=80;c.arcs[22][23].adj=60; c.arcs[22][25].adj=80;c.arcs[23][24].adj=60;c.arcs[24][26].adj=100; c.arcs[24][27].adj=100;c.arcs[25][26].adj=90;c.arcs[26][27].adj=90;for(i=0;i<c.vexnum ;i++) //邻接矩阵是对称矩阵,对称赋值for(j=0;j<c.vexnum ;j++)c.arcs[j][i].adj =c.arcs[i][j].adj ;FILE * pFile;pFile = fopen ("myfile.txt","w");fwrite(c.vexs[0].name,2,3,pFile);fwrite(c.vexs[0].introduction,2,11,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[1].name,2,6,pFile);fwrite(c.vexs[1].introduction,2,12,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[2].name,2,5,pFile);fwrite(c.vexs[2].introduction,2,15,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[3].name,2,5,pFile);fwrite(c.vexs[3].introduction,2,10,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[4].name,2,4,pFile);fwrite(c.vexs[4].introduction,2,11,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[5].name,2,5,pFile);fwrite(c.vexs[5].introduction,2,10,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[6].name,2,4,pFile);fwrite(c.vexs[6].introduction,2,8,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[7].name,2,5,pFile);fwrite(c.vexs[7].introduction,2,11,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[8].name,2,6,pFile);fwrite(c.vexs[8].introduction,2,6,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[9].name,2,4,pFile);fwrite(c.vexs[9].introduction,2,17,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[10].name,2,5,pFile);fwrite(c.vexs[10].introduction,2,11,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[11].name,2,6,pFile);fwrite(c.vexs[11].introduction,2,5,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[12].name,2,4,pFile);fwrite(c.vexs[12].introduction,2,10,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[13].name,2,4,pFile);fwrite(c.vexs[13].introduction,2,6,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[14].name,2,7,pFile);fwrite(c.vexs[14].introduction,2,9,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[15].name,2,4,pFile);fwrite(c.vexs[15].introduction,2,7,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[16].name,2,10,pFile); fwrite(c.vexs[16].introduction,2,6,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[17].name,2,4,pFile);fwrite(c.vexs[17].introduction,2,7,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[18].name,2,5,pFile);fwrite(c.vexs[18].introduction,2,14,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[19].name,2,4,pFile);fwrite(c.vexs[19].introduction,2,6,pFile); fwrite("\r\n",2,1,pFile);fwrite(c.vexs[20].name,2,8,pFile);fwrite(c.vexs[20].introduction,2,6,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[21].name,2,8,pFile);fwrite(c.vexs[21].introduction,2,6,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[22].name,2,5,pFile);fwrite(c.vexs[22].introduction,2,9,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[23].name,2,12,pFile);fwrite(c.vexs[23].introduction,2,11,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[24].name,2,7,pFile);fwrite(c.vexs[24].introduction,2,6,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[25].name,2,7,pFile);fwrite(c.vexs[25].introduction,2,7,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[26].name,2,4,pFile);fwrite(c.vexs[26].introduction,2,6,pFile);fwrite("\r\n",2,1,pFile);fwrite(c.vexs[27].name,2,4,pFile);fwrite(c.vexs[27].introduction,2,6,pFile);fwrite("\r\n",2,1,pFile);fclose (pFile);return c;}//initgraph// (2) 查找景点在图中的序号int locatevex(mgraph c,int v){int i;for(i=0;i<c.vexnum ;i++)if(v==c.vexs[i].position)return i; //找到,返回顶点序号i return -1; //否则,返回-1}//(3) 、(4) 求两景点间的所有路径// (3) 打印序号为m,n景点间的长度不超过8个景点的路径void path(mgraph c, int m,int n,int k){int s,x=0;int t=k+1; //t 记载路径上下一个中间顶点在d[]数组中的下标if(d[k]==n && k<8) //d[k]存储路径顶点。
校园导游咨询一、目的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课程设计一、课程目标知识目标: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. 第六周:团队合作,完成项目展示与评价。
#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语言程序设计实现校园导游咨询系统,学生能够了解并掌握数据结构的基本概念、算法和编程技术,培养学生的编程能力和解决实际问题的能力。
二、系统需求分析(1)用户管理系统需要实现学生、教师、管理员三种用户的管理,分别具有不同的权限等级。
要实现用户注册、登录、退出等基本功能。
(2)地图导航系统需要实现校内地图的导航功能,包括校门、教学楼、图书馆、宿舍等位置的标注,提供校园内部的导航和查找服务。
(3)建筑信息系统需要提供校内建筑的信息查询功能,包括建筑名称、位置、使用情况等,方便师生查询。
(4)在线咨询系统需要提供在线咨询功能,方便学生、教师等用户在线咨询学校相关事宜,并实现客服人员的消息处理。
三、数据结构设计(1)用户信息表采用哈希表作为用户信息表的数据结构,将用户信息存储在表中,方便用户登录和信息的管理。
哈希表的键值是用户名,值是用户信息(包括用户名、密码、权限等级等)。
(2)建筑信息采用结构体数组作为建筑信息的数据结构,将建筑信息存储在数组中,方便查询和展示。
结构体包含建筑名称、位置、使用情况等信息。
(3)校内地图为方便地图导航,采用邻接矩阵作为校内地图的数据结构,将校内各个建筑之间的距离存储在矩阵中。
矩阵的行和列分别表示建筑的编号,矩阵元素表示建筑之间的距离。
(4)消息队列为实现在线咨询功能,采用队列作为消息队列的数据结构,将用户发送的消息存储在队列中。
消息队列的队首指针和队尾指针分别表示最早和最晚的消息,方便客服人员的处理。
四、代码实现(1)用户管理用户管理实现了注册、登录和退出等功能。
用户密码使用MD5加密,保证用户信息的安全性。
管理员可以添加、删除学生和教师用户。
(2)地图导航地图导航实现了最短路径算法和深度优先搜索算法,方便用户查询和展示校内地图。
用户可以查找建筑的详细信息,包括位置、使用情况等。
数据结构-校园导游程序(附源码)简介本文档旨在介绍一个校园导游程序的设计与实现。
该程序使用数据结构来管理校园地点信息,并提供导游功能,供用户查找并导航到目标地点。
文档将依次介绍相关的背景知识、程序设计原理、算法实现以及使用方法。
目录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 数据结构定义我们使用图这一数据结构来表示校园地点之间的连接关系。
校园导游程序课程设计一、课程目标知识目标:1. 学生能够理解程序设计的基本概念,掌握运用流程图进行程序设计的思路。
2. 学生能够运用所学编程语言,实现校园导游程序中的主要功能,如路径规划、景点介绍等。
3. 学生了解并掌握程序测试与调试的基本方法,提高程序的正确性和可靠性。
技能目标:1. 学生能够运用编程软件进行程序设计,培养编程实践能力。
2. 学生通过小组合作,提高沟通与协作能力,共同完成校园导游程序的设计与实现。
3. 学生能够运用信息技术解决实际问题,提高问题解决能力。
情感态度价值观目标:1. 学生培养对计算机科学的兴趣和爱好,激发学习编程的热情。
2. 学生通过参与课程,增强自信心,培养勇于克服困难的意志品质。
3. 学生在小组合作中,学会尊重他人,培养团队协作精神。
4. 学生关注校园环境,提高爱护学校、爱护公共设施的意识。
分析课程性质、学生特点和教学要求,本课程目标具体、可衡量,旨在帮助学生掌握编程技能,培养实际应用能力,同时注重培养学生的情感态度和价值观,使学生在课程学习中得到全面发展。
后续教学设计和评估将围绕以上课程目标展开。
二、教学内容1. 程序设计基本概念:变量、数据类型、运算符、控制结构(条件语句、循环语句)。
2. 编程语言基础:运用教材中推荐的编程语言(如Python),进行基本语法学习与实践。
3. 流程图绘制:学习如何使用流程图表达程序设计思路,分析校园导游程序需求,绘制流程图。
4. 程序设计方法:根据流程图,编写校园导游程序代码,实现路径规划、景点介绍等功能。
5. 程序测试与调试:学习程序测试方法,对校园导游程序进行测试,发现问题并进行调试。
6. 小组合作与项目实践:分组进行项目实践,共同完成校园导游程序的设计与实现。
教学内容安排和进度:第一周:程序设计基本概念学习,熟悉编程环境。
第二周:编程语言基础学习,完成简单程序设计。
第三周:流程图绘制,分析校园导游程序需求。
第四周:编写校园导游程序代码,实现基本功能。
#include <stdio.h>#include <stdlib.h>#include <conio.h>#include<string.h>#define MaxSize 100#define VISITED 1#define NOTVISITED 0#define Infinite 1073741823#define MaxViewNum 50 /*景点个数最大50*/#define MaxRoad 1000 /*定义路径为无穷大*/#define N 16 /*目前景点个数*/typedef struct{char name[30]; /*景点名称*/char number[10]; /*景点代号*/char introduce[200]; /*景点介绍*/}Elemtype;typedef struct{int num; /*景点编号*/Elemtype date; /*景点信息*/}View; /*定义景点*/typedef struct{View view[MaxViewNum]; /*存放顶点的一维数组,数组第零单元没有用上*/ unsigned int length[MaxViewNum][MaxViewNum]; /*存放路径长度*/int m,n;}MGraph;MGraph MGr; /*全局变量,定义MGr为MGraph类型*/int shortest[MaxViewNum][MaxViewNum]; /*定义全局变量存贮最小路径*/int path[MaxViewNum][MaxViewNum]; /*定义存贮路径*/void init(){int i,j;MGr.view[1].num=1;strcpy(MGr.view[1],"学校正门");strcpy(MGr.view[1].date.number,"001");strcpy(MGr.view[1].date.introduce,"毗邻中心大道,交通便利。
");MGr.view[2].num=2;strcpy(MGr.view[2],"行政楼");strcpy(MGr.view[2].date.number,"002");strcpy(MGr.view[2].date.introduce,"学校领导,办公主楼。
");MGr.view[3].num=3;strcpy(MGr.view[3],"科技楼");strcpy(MGr.view[3].date.number,"003");strcpy(MGr.view[3].date.introduce,"逸夫科技楼");MGr.view[4].num=4;strcpy(MGr.view[4],"家属院");strcpy(MGr.view[4].date.number,"004");strcpy(MGr.view[4].date.introduce,"兰州理工大学,教职工家属院。
");MGr.view[5].num=5;strcpy(MGr.view[5],"图书馆");strcpy(MGr.view[5].date.number,"005");strcpy(MGr.view[5].date.introduce,"历史悠久,文化积淀。
供同学安静学习的环境。
");MGr.view[6].num=6;strcpy(MGr.view[6],"机械基地");strcpy(MGr.view[6].date.number,"006");strcpy(MGr.view[6].date.introduce,"土木工程学院和机电工程学院,实习实践的地方。
");MGr.view[7].num=7;strcpy(MGr.view[7],"学生公寓");strcpy(MGr.view[7].date.number,"007");strcpy(MGr.view[7].date.introduce,"学生宿舍区,本科、研究生,以及教师公寓。
");MGr.view[8].num=8;strcpy(MGr.view[8],"餐厅");strcpy(MGr.view[8].date.number,"008");strcpy(MGr.view[8].date.introduce,"清泽、智林、风味三大餐厅,周边开水房等服务场所。
");MGr.view[9].num=9;strcpy(MGr.view[9],"怡情园");strcpy(MGr.view[9].date.number,"009");strcpy(MGr.view[9].date.introduce,"学校新修建的花园,景色优美,适合同学们晨读");MGr.view[10].num=10;strcpy(MGr.view[10],"体育场");strcpy(MGr.view[10].date.number,"010");strcpy(MGr.view[10].date.introduce,"绿茵地、活动中心。
篮球场、足球场、网球场依次,丰富课余生活。
");MGr.view[11].num=11;strcpy(MGr.view[11],"国际交流中心");strcpy(MGr.view[11].date.number,"011");strcpy(MGr.view[11].date.introduce,"外国留学生、外籍教师上课活动场所。
");MGr.view[12].num=12;strcpy(MGr.view[12],"流体实验室");strcpy(MGr.view[12].date.number,"012");strcpy(MGr.view[12].date.introduce,"兰州理工大学流体实验室,同样也是理学院研究生实验室");MGr.view[13].num=13;strcpy(MGr.view[13],"工大高层");strcpy(MGr.view[13].date.number,"013");strcpy(MGr.view[13].date.introduce,"新建工大高层,是各个院办公室所在地,同样也是各个院行政楼。
");MGr.view[14].num=14;strcpy(MGr.view[14],"教学楼");strcpy(MGr.view[14].date.number,"014");strcpy(MGr.view[14].date.introduce,"外语院,设计院等学生日常上课的地方。
");MGr.view[15].num=15;strcpy(MGr.view[15],"附属中学");strcpy(MGr.view[15].date.number,"015");strcpy(MGr.view[15].date.introduce,"兰州理工大学附属中学。
");MGr.view[16].num=16;strcpy(MGr.view[16],"教学北楼");strcpy(MGr.view[16].date.number,"016");strcpy(MGr.view[16].date.introduce,"外国留学生日常上课的地方。
");for(i=1;i<=N;i++){for(j=1;j<=N;j++){MGr.length[i][j]=MaxRoad;}}for(i=1;i<=N;i++){shortest[i][j]=0;}MGr.length[1][2]=MGr.length[2][1]=30;MGr.length[2][3]=MGr.length[3][2]=50;MGr.length[3][4]=MGr.length[4][3]=60;MGr.length[3][5]=MGr.length[5][3]=120;MGr.length[5][6]=MGr.length[6][5]=20;MGr.length[6][7]=MGr.length[7][6]=230;MGr.length[6][9]=MGr.length[9][6]=50;MGr.length[7][8]=MGr.length[8][7]=50;MGr.length[8][9]=MGr.length[9][8]=230;MGr.length[8][10]=MGr.length[10][8]=50;MGr.length[9][11]=MGr.length[11][9]=50;MGr.length[10][11]=MGr.length[11][10]=230;MGr.length[11][12]=MGr.length[12][11]=60;MGr.length[12][13]=MGr.length[13][12]=60;MGr.length[13][14]=MGr.length[14][13]=60;MGr.length[11][14]=MGr.length[14][11]=60;MGr.length[16][14]=MGr.length[14][16]=80;MGr.length[13][15]=MGr.length[15][13]=80;MGr.length[2][16]=MGr.length[16][2]=50;MGr.length[1][1]=MGr.length[2][2]=MGr.length[3][3]=MGr.length[4][4]=0;MGr.length[5][5]=MGr.length[6][6]=MGr.length[7][7]=MGr.length[8][8]=0;MGr.length[9][9]=MGr.length[10][10]=MGr.length[11][11]=MGr.length[12][12]=0;MGr.length[13][13]=MGr.length[14][14]=MGr.length[15][15]=MGr.length[16][16]=0; }void introduce(){int m;printf("请输入查询景点编号:\n");scanf("%d",&m); fflush(stdin);switch(m){case 1:printf("景点编号:%s\t",MGr.view[1].date.number);printf("景点名称:%s\n",MGr.view[1]);printf("景点简介:%s\n",MGr.view[1].date.introduce);break;case 2:printf("景点编号:%s\t",MGr.view[2].date.number);printf("景点名称:%s\n",MGr.view[2]);printf("景点简介:%s\n",MGr.view[2].date.introduce);break;case 3:printf("景点编号:%s\t",MGr.view[3].date.number);printf("景点名称:%s\n",MGr.view[3]);printf("景点简介:%s\n",MGr.view[3].date.introduce);break;case 4:printf("景点编号:%s\t",MGr.view[4].date.number);printf("景点名称:%s\n",MGr.view[4]);printf("景点简介:%s\n",MGr.view[4].date.introduce);break;case 5:printf("景点编号:%s\t",MGr.view[5].date.number);printf("景点名称:%s\n",MGr.view[5]);printf("景点简介:%s\n",MGr.view[5].date.introduce);break;case 6:printf("景点编号:%s\t",MGr.view[6].date.number);printf("景点名称:%s\n",MGr.view[6]);printf("景点简介:%s\n",MGr.view[6].date.introduce);break;case 7:printf("景点编号:%s\t",MGr.view[7].date.number);printf("景点名称:%s\n",MGr.view[7]);printf("景点简介:%s\n",MGr.view[7].date.introduce);break;case 8:printf("景点编号:%s\t",MGr.view[8].date.number);printf("景点名称:%s\n",MGr.view[8]);printf("景点简介:%s\n",MGr.view[8].date.introduce);break;case 9:printf("景点编号:%s\t",MGr.view[9].date.number);printf("景点名称:%s\n",MGr.view[9]);printf("景点简介:%s\n",MGr.view[9].date.introduce);break;case 10:printf("景点编号:%s\t",MGr.view[10].date.number);printf("景点名称:%s\n",MGr.view[10]);printf("景点简介:%s\n",MGr.view[10].date.introduce);break;case 11:printf("景点编号:%s\t",MGr.view[11].date.number);printf("景点名称:%s\n",MGr.view[11]);printf("景点简介:%s\n",MGr.view[11].date.introduce);break;case 12:printf("景点编号:%s\t",MGr.view[12].date.number);printf("景点名称:%s\n",MGr.view[12]);printf("景点简介:%s\n",MGr.view[12].date.introduce);break;case 13:printf("景点编号:%s\t",MGr.view[13].date.number);printf("景点名称:%s\n",MGr.view[13]);printf("景点简介:%s\n",MGr.view[13].date.introduce);break;case 14:printf("景点编号:%s\t",MGr.view[14].date.number);printf("景点名称:%s\n",MGr.view[14]);printf("景点简介:%s\n",MGr.view[14].date.introduce);break;case 15:printf("景点编号:%s\t",MGr.view[15].date.number);printf("景点名称:%s\n",MGr.view[15]);printf("景点简介:%s\n",MGr.view[15].date.introduce);break;case 16:printf("景点编号:%s\t",MGr.view[16].date.number);printf("景点名称:%s\n",MGr.view[16]);printf("景点简介:%s\n",MGr.view[16].date.introduce);break;default:printf("输入序号错误。