校园导游系统程序
校园导游程序设计
![校园导游程序设计](https://img.taocdn.com/s3/m/a67b2f21bb4cf7ec4bfed02b.png)
《数据结构课程设计》报告课题名称:校园导游程序专业:班级:学号:姓名: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: 查询最短路径。
校园导游咨询程序
![校园导游咨询程序](https://img.taocdn.com/s3/m/704e5e0bcc175527072208ba.png)
【问题描述】设计一个校园导游程序,为来访的客人提供各种信息查询服务。
【基本要求】(1)设计你的学校的校园平面图,所含景点不少于10个。
以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点的问路查询.(3)为来访客人提供图中任意景点相关信息的查询。
【测试数据】由读者根据实际情况指定。
【实现提示】一般情况下,校园的道路是双向通行的,可设校园平面图是一个无向网。
顶点和边均含有相关信息。
#include<stdio.h>#include<process.h>#include <cstdlib>#include<string.h>#define INT_MAX 10000#define N 20int Length[N][N];// 边的值int shortest[N][N];//两点间的最短距离int path[N][N];// 经过的景点(数字代表)void introduce();//景点介绍int shortestdPath();//任意两点的最短距离void floyed(); //弗洛伊德算法void display(int i,int j);//打印路径char str[N+1][20] = {" ","南区大门","交大子弟学校","文达湖","软件学院","南区礼堂","校医院","建设银行","宿舍楼群A","中国移动","国防生大楼","四食堂","艺术学院","8栋","一食堂","逸夫楼","图书馆","基础学院","信息学院","土木学院","电气学院"};//文字代表int main(){/*主函数*/int i,j;char k;for(i=0;i<=N;i++)for(j=0;j<=N;j++)Length[i][j]=INT_MAX;Length[1][3]=Length[3][1]=170;Length[2][3]=Length[3][2]=120;Length[3][4]=Length[4][3]=400;Length[2][5]=Length[5][2]=350;Length[3][6]=Length[6][3]=200;Length[4][8]=Length[8][4]=50;Length[8][9]=Length[9][8]=150;Length[5][12]=Length[12][5]=150;Length[6][7]=Length[7][6]=160;Length[7][9]=Length[9][7]=150;Length[6][13]=Length[13][6]=200;Length[7][14]=Length[14][7]=200;Length[9][11]=Length[11][9]=100;Length[11][14]=Length[14][11]=100;Length[12][13]=Length[13][12]=150;Length[13][14]=Length[14][13]=250;Length[12][15]=Length[15][12]=100;Length[13][16]=Length[16][13]=80;Length[13][17]=Length[17][13]=80;Length[17][19]=Length[19][17]=100;Length[19][20]=Length[20][19]=80;Length[18][16]=Length[16][18]=50;Length[15][18]=Length[18][15]=160;Length[18][20]=Length[20][18]=200;Length[15][10]=Length[10][15]=50;Length[1][1]=Length[2][2]=Length[3][3]=Length[4][4]=Length[5][5]=0;Length[6][6]=Length[7][7]=Length[8][8]=Length[9][9]=Length[10][10]=0; Length[11][11]=Length[12][12]=Length[13][13]=Length[14][14]=Length[15][15]=0; Length[16][16]=Length[17][17]=Length[18][18]=Length[19][19]=Length[20][20]=0;while(1){printf("**********************欢迎使用华东交大南区导游系统!******************\n\n");printf("1.景点信息查询请按1 \n");printf("2.景点最短路径查询请按2 \n");printf("3.退出系统请按3 \n\n");printf("学校景点列表:\n");printf("1:南区大门");printf("2:交大子弟学校");printf("3:文达湖");printf("4:软件学院");printf("5:南区礼堂\n");printf("6:校医院");printf("7:建设银行");printf("8:宿舍楼群A ");printf("9:中国移动");printf("10:国防生大楼\n");printf("11:四食堂");printf("12:艺术学院");printf("13:8栋");printf("14:一食堂");printf("15:逸夫楼\n");printf("16:图书馆");printf("17:基础学院");printf("18:信息学院");printf("19:土木学院");printf("20:电气学院\n\n");printf("*************************************************************** ******\n\n");printf("请选择服务:");scanf("\n%d",&k);switch(k){case 1:printf("进入景点信息查询:\n");introduce();break;case 2:printf("进入最短路径查询:");shortestdPath();break;case 3:exit(0);default:printf("输入信息错误!\n请输入1,2,3\n");break;}}return 0;}/*main*/void introduce(){/*景点介绍*/int a;printf("请输入您想了解的景点编号:");scanf("%d",&a);getchar();printf("\n");switch(a){case 1:printf("1:南区大门\n\n 学校的南区正门,与北区大门正对遥遥相对\n\n");break;case 2:printf("2:交大子弟学校\n\n 生源包括学校部分老师的孩子和学校周围村庄的孩子\n\n");break;case 3:printf("3:文达湖\n\n 湖心设有喷泉,湖畔绿树掩映\n\n");break;case 4:printf("4:软件学院\n\n 成立于2002年,学院有在校师生近3700人,部分学生培养方式为“软件工程+应用背景专业\n\n");break;case 5:printf("5:南区礼堂\n\n 是交大中大节日活动的举办场所,观众几乎场场爆满,星期六和星期天日新网在南礼有偿播放大片\n\n");break;case 6:printf("6:校医院\n\n 校医院的医生经验丰富,开的药钱学校给报销绝大多数\n\n");break;case 7:printf("7:建设银行\n\n 设有自动取款机,交大学生的现金多数是从那里取出来的\n\n");break;case 8:printf("8:宿舍楼群A\n\n 南区1/3 的男生住在那里\n\n");break;case 9:printf("9:中国移动\n\n 这里还有中国联通和中国电信营业厅\n\n\n");break;case 10:printf("10: 国防生大楼\n\n 国防生居住和训练的地方。
校园导游系统设计与实现
![校园导游系统设计与实现](https://img.taocdn.com/s3/m/7e1b4234a7c30c22590102020740be1e650ecc6d.png)
校园导游系统设计与实现第一篇:校园导游系统设计与实现校园导游系统设计与实现目录 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 表示,它们是整型数据。
校园导游系统程序
![校园导游系统程序](https://img.taocdn.com/s3/m/49e5e0402b160b4e767fcfcd.png)
课题五:校园导游程序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]存储路径顶点。
校园导游系统程序课程设计报告
![校园导游系统程序课程设计报告](https://img.taocdn.com/s3/m/08e33699a26925c52dc5bf44.png)
一、需求分析设计一个校园导游系统程序,为来访的客人提供各类效劳的信息查询。
(1).设计工商学院校园无向图,所含的景点很多于10个。
以图中极点表示校内各景点,寄存景点名称、代号、简介等信息;以边表示途径,寄存途径长度等相关信息。
(2).为来访客人提供图中任意景点相关信息的查询。
(3).为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单途径。
二、设计思路校园旅行模型是由景点和景点之间的途径组成的,因此这完全能够用数据结构中的图来模拟。
用图的结点代表景点,用图的边代表景点之间的途径。
因此第一应设计一个图类。
结点值代表景点信息,边的权值代表景点间的距离。
结点值及边的权值用顺序表存储,因此需要设计一个顺序表类。
本系统需要查询景点信息和求一个景点到另一个景点的最短途径长度及线路,为方便操作,因此给每一个景点一个代码,用结构体类型实现。
计算途径长度和最短线路时可用弗洛伊德(Floyd)算法实现。
最后用switch选择语句选择执行阅读景点信息或查询最短途径。
3 算法设计概要设计3.1.1 程序中包括的模块(1)主程序模块主函数:void main(void)void cmd(void) cmd修改显示框大小,字体背景颜色,初始化景点,景点信息打印菜单,MGraph InitGraph(void); 3.1.2dj=INFINITY;[0][1].adj=80;/*途径度*/[0][2].adj=180;[0][6].adj=200;[1][11].adj=120;[1][2].adj=100;[2][5].adj=50;[3][4].adj=60;[4][9].adj=140;[5][9].adj=250;[5][7].adj=150;[6][7].adj=190;[6][9].adj=150;[8][7].adj=130;[8][6].adj=50;[10][12].adj=100;[9][10].adj=150;[3][4].adj=190;[5][13].adj=150;[14][7].adj=350;[2][3].adj=190;[2][9].adj=150;[2][11].adj=120;[0][8].adj=120;[1][2].adj=50;[10][12].adj=170;[12][15].adj=160;for(i=0;i<;i++)for(j=0;j<;j++)[j][i].adj=[i][j].adj;return G;界面菜单设计:菜单项选择择void Menu(){printf("\n 武汉工商学院院导游图\n");printf(" ┏━━━━━━━━━━━━━━━━━━━━┓\n"); printf(" ┃ 1.阅读校园全景┃\n"); printf(" ┃ 2.查看所有游览线路┃\n"); printf(" ┃ 3.确信两景点之间最短距离┃\n"); printf(" ┃ 4.查看景点信息┃\n"); printf(" ┃ 5.退出导游系统┃\n"); printf(" ┗━━━━━━━━━━━━━━━━━━━━┛\n"); printf("Option-:");}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;case 5:exit(1);break;default:break;}介绍景点:void Browser(MGraph *G){int v;printf("┏━━┳━━━━━━━━━━┳━━━━━━━━━┓\n"); printf("┃编号┃景点名称┃简介┃\n"); printf("┗━━┻━━━━━━━━━━┻━━━━━━━━━┛\n"); for(v=0;v<G->vexnum;v++)printf("┃%-4d┃%-20s┃%-60s\n",G->vexs[v].num,G->vexs[v].name,G->vexs[v].introduction);printf("┗━━┻━━━━━━━━━━┻━━━━━━━━━┛\n"); }要查找的两个景点的最短距离:用floyd算法求两个景点的最短途径void Floyd(MGraph *G)dj;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",&k);if(k<0||k>G->vexnum){ printf("景点编号存!\n请输入动身地编号:");scanf("%d",&k); }printf("请输入目的地编号:");scanf("%d",&j);if(j<0||j>G->vexnum){ printf("景点编号存!\n请输入目的地编号:");scanf("%d",&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]); }查看所有游览线路算法计算,引进一个辅助向量D,它的每一个分量D表示当前所找到的从始点v0到每一个终点vi的的长度。
c语言校园导游系统课程设计
![c语言校园导游系统课程设计](https://img.taocdn.com/s3/m/fa15926ab80d6c85ec3a87c24028915f804d8431.png)
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. 第五周至第七周:校园导游系统设计与实现,分阶段完成项目。
校园导游系统
![校园导游系统](https://img.taocdn.com/s3/m/9bb139104028915f814dc25b.png)
课程设计报告课程名称:数据结构与算法题目名称:校园导游系统学生学院:数学与计算机科学系专业班级:2016级计算机科学与技术本科班小组组长:王明小组成员: 王明郑双凤吕运发指导老师:熊小颖老师2017年10月15日目录一、设计目的3二、问题描述3三、基本要求3四、概要设计3五、主程序4六、测试数据136.1调试程序所用数据136.2程序的调试结果七、总结一、设计目的随着现代社会生活节奏的加快,人们外出旅行以寻求放松的时间越来越多。
考虑到游客不可能对所有景点都有所了解,因此可能无法找到游玩景点最省时,最高效的路径,而人工导游成本又过高,故使用C语言,基于《数据结构》中图的相关算法开发了“南昌师范学院导游系统”。
开发本系统目的在于为来访我校的游客提供一条最短游览路径,本系统从实际出发,通过对校园平面图的分析,将其转化为数据并保存在系统中,因此系统提供的路径具有较大的可信性。
二、问题描述设计校园导游程序,为来访的客人提供服务,为来访我校的游客提供一条在游客当前位置到目的地的最短游览路径,找到游玩景点最省时,最高效的路径。
三、基本要求1.假设有一所校园的平面图,所含景点不小于10个,请选择适当的坐标来表示出该图上的各个景点。
2.为来访的客人提供从当前位置到其他景点的最短路径的咨询;3.必须具有校园平面图的修改和扩充功能(即某些景点坐标的修改和景点个数的增加)。
四、概要设计算法思路本设计的重难点在于问题二的解决。
利用了弗洛伊德算法函数设计Floyd() 本算法在设计时参考了《数据结构C语言版》一书中有关Floyd算法的介绍,同时借鉴了如今网上流行的设计方式。
之所以选择本算法来实现计算最短路径,原因在于本算法容易理解,可以算出任意两个节点之间的最短距离,代码编写简单。
但是,本算法缺点在于时间复杂度过高,不适合用于计算大量数据。
Floyd算法首先将两景点间路径长度数据存储于数组D[v][w]中,而后使用一个三维数组用于存放最短路径所经过的顶点,接下来使用三重循环判断两景点之间直接路径是否大于间接路径,若大于,则将三维数组中存放的顶点信息更改为简介路径所经过的顶点信息。
数据结构校园导游程序设计
![数据结构校园导游程序设计](https://img.taocdn.com/s3/m/ac6f0e276d175f0e7cd184254b35eefdc9d31549.png)
数据结构校园导游程序设计一、引言在现代社会中,校园导游已经成为了大学生活中不可或缺的一部分。
为了更好地服务于广大学生和参观者,我们需要设计一个数据结构校园导游程序,以便更好地帮助他们快速准确地了解校园环境和历史文化。
二、需求分析1. 功能需求(1)能够提供校园地图和景点介绍;(2)能够提供路线规划和导航功能;(3)能够提供实时天气信息和交通状况;(4)能够提供用户反馈功能。
2. 性能需求(1)响应速度快,界面友好;(2)数据准确性高,更新及时性强;(3)支持多平台使用,如PC端、移动端等。
三、系统设计1. 数据结构设计(1)图:用于存储校园地图信息及景点之间的关系;(2)队列:用于存储路线规划过程中的所有可能路径,并进行优先级排序;(3)堆:用于实现最短路径算法中的优先级队列。
2. 系统架构设计整个系统采用B/S架构,前端采用HTML、CSS、JavaScript等技术,后端采用Java语言和Spring框架。
系统后台采用MySQL数据库进行数据存储和管理。
四、功能设计1. 校园地图和景点介绍用户可以通过校园地图查看校园内的各个景点,并了解每个景点的详细信息。
同时,用户还可以通过搜索功能查找指定景点。
2. 路线规划和导航功能用户在选择起始点和目的地后,系统会自动计算出最短路径,并提供导航功能。
同时,系统还会提供多条路线供用户选择。
3. 实时天气信息和交通状况系统会实时获取天气信息和交通状况,并在界面上显示给用户。
这样,用户可以更好地安排行程。
4. 用户反馈功能用户可以通过反馈功能向管理员反映问题或提出建议,管理员会及时处理并回复。
五、界面设计整个系统的界面设计应该简洁明了,易于操作。
主要分为以下几个模块:(1)首页:展示校园地图和各个景点;(2)搜索页:提供搜索功能;(3)路线规划页:提供路线规划和导航功能;(4)天气页:展示实时天气信息;(5)反馈页:提供用户反馈功能。
六、测试与优化在完成系统开发后,需要进行测试和优化。
数据结构-校园导游程序(附源码)
![数据结构-校园导游程序(附源码)](https://img.taocdn.com/s3/m/68bd50babdeb19e8b8f67c1cfad6195f312be8f9.png)
数据结构-校园导游程序(附源码)简介本文档旨在介绍一个校园导游程序的设计与实现。
该程序使用数据结构来管理校园地点信息,并提供导游功能,供用户查找并导航到目标地点。
文档将依次介绍相关的背景知识、程序设计原理、算法实现以及使用方法。
目录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 数据结构定义我们使用图这一数据结构来表示校园地点之间的连接关系。
课程设计校园导游程序
![课程设计校园导游程序](https://img.taocdn.com/s3/m/f1d72245fd4ffe4733687e21af45b307e971f946.png)
课程设计 校园导游程序一、课程目标知识目标:1. 学生能理解校园导游程序的基本概念和原理,掌握程序设计的基本步骤。
2. 学生能运用所学知识,结合校园实际情况,设计出功能完善、操作简便的校园导游程序。
技能目标:1. 学生能运用编程软件,编写并调试校园导游程序,具备基本的程序调试能力。
2. 学生能通过小组合作,提高沟通与协作能力,共同完成校园导游程序的编写。
情感态度价值观目标:1. 学生能对程序设计产生兴趣,培养主动学习和探究的精神。
2. 学生在校园导游程序的设计过程中,能关注用户体验,培养良好的服务意识。
3. 学生通过解决实际校园问题,增强自信心,培养勇于克服困难的品质。
课程性质:本课程为信息技术学科,结合校园实际情况,以提高学生编程兴趣和实际操作能力为主。
学生特点:六年级学生对计算机操作已有一定基础,具备基本的编程知识,好奇心强,喜欢探索新事物。
教学要求:教师需关注学生个体差异,鼓励学生动手实践,注重培养学生的团队合作意识和解决问题的能力。
在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。
二、教学内容1. 校园导游程序基本概念:介绍程序设计的基本原理,引导学生了解校园导游程序的功能和作用。
- 教材章节:第二章第二节“程序设计的基本原理”2. 编程语言基础:回顾并巩固Python编程语言的基本语法和结构。
- 教材章节:第一章“Python编程基础”3. 界面设计:学习设计简洁、直观的图形用户界面,提高用户体验。
- 教材章节:第三章第一节“图形用户界面设计”4. 数据处理:运用列表、字典等数据结构,实现校园景点信息的存储与展示。
- 教材章节:第四章“数据结构与数据处理”5. 程序调试与优化:学习使用调试工具,找出并修复程序中的错误,提高程序质量。
- 教材章节:第六章第三节“程序调试与优化”6. 小组合作与项目实践:分组进行校园导游程序的设计与实现,提高团队协作能力。
- 教材章节:第五章“项目实践与团队协作”教学进度安排:1. 第1-2周:学习校园导游程序基本概念,回顾Python编程基础。
校园导游咨询程序
![校园导游咨询程序](https://img.taocdn.com/s3/m/e8a33abea76e58fafab003fe.png)
实验三:校园导游咨询一、设计方案简介设计一个校园导游程序,为来访的客人提供各种信息查询服务。
1)设计你所在学校的校园平面图,2)为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
二、设计题目实现:实际需求1)设计你所在学校的校园平面图,所含景点不少于10个。
以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息:以边表示路径,存放路径长度等相关信息。
2)为来访客人提供图中任意景点相关信息的查询。
3)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
2)概要设计1、校园全景一览图、显示出校园的平面图。
2、提供校园中任意景点问路查询,即求任意两个景点之间的所有路径。
3、提供校园图中多个景点的最佳访问路线查询,即求途径这过个景点的最佳(短)路径。
1.功能模块图;{printf("\t\t\t\t\t\t从%s到%s的最短路径是:\n\n\t\t\t\t\t",[sight1].name,[sight2].name);ame); ength<MAX&&path[a][b]) ame); n\n\t",D[a]);}}五.测试数据及运行结果系统主界面学校平面图学校景点图最短路径信息查询三、设计评述:设计者对本设计的评述及通过设计的收获体会1.改进方案系统还有部分漏洞未能修复、不够绝对的稳定、还需改进!求最短路径时可以采用比较简单的哈密尔顿算法。
本次课程设计仅完成了要求的基本功能、由于平时掌握的不够好以及时间关系未能完成选作功能、这是一大缺陷!另外通过本次课程设计也更好的掌握了平时所学的知识、通过实践学到了许多课本上没有的知识!以后要加强动手时间能力、多与同学交流算法精髓!在编写程序中尽量做到独立完成、对于自己想要完成的问题要主动编程完成、这样自己是一个很大的提升、也能学到很多的知识、熟练编程!报告最后有两部分附录附录一:参考资料1、C语言程序设计(谭浩强版)2、数据结构(C语言版)编著:严蔚敏、吴伟民清华大学出版社附录二:源程序(将所有的源程序附在最后的附录中)pp : Defines the entry point for the console application.umber=i;[1].name="太原理工大学正门";[1].info="学校正门位于学校的正南方向、是进入学校前的第一道亮丽\n\t\t的风景线!\n";[2].name="电机馆";[2].info="电机馆是数学系,电子信息系,自动化,通讯等学院的学院楼!\n";[3].name="科学楼";[3].info="科学楼是我校科研机构场所,也是山西省网关所在地!\n";[4].name="多学科楼";[4].info="科学楼是计算机科学与技术学院,软件学院,电子信息学院,\n\t\t土木,建筑的学院楼,也是我校最好的学院楼!\n";[5].name="图书馆";[5].info="太原理工图书馆经历了初创时期,发展时期,面向现代化的转型时期。
校园导游程序
![校园导游程序](https://img.taocdn.com/s3/m/443e213469dc5022abea004d.png)
洛阳理工学院课程设计报告课程名称数据结构课程设计题目校园导游程序课程设计任务书1、设计题目:校园导游程序2、设计内容与要求:[问题描述]用无向网表示你所在学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息。
要求能够回答有关景点介绍、游览路径等问题。
[基本要求](1)查询各景点的相关信息;(2)查询图中任意两个景点间的最短路径。
(3)查询图中任意两个景点间的所有路径。
(4)增加、删除、更新有关景点和道路的信息。
课程设计评语成绩:指导教师:_______________年月日3、流程图4、模块划分(1)主函数:void main( )(2)void CreateUDN(int v,int a); /* 造图函数*/(3)void narrate(); /*说明函数*/(4)void ShortestPath(int num); /*最短路径函数*/(5)void output(int sight1,int sight2); /*输出函数*/(6)char Menu(); /* 主菜单*/(7)void search(); /* 查询景点信息*/(8)char SearchMenu(); /* 查询子菜单*/(9)void HaMiTonian(int); /*图的遍历*/(10)void Searchpath1(MGraph g);/*查询两个景点间的所有路径*/(11)void disppath(MGraph g,int i,int j);(12)void path(MGraph g,int i,int j,int k);/*确定路径上第k+1个顶点的序号*/(13)void NextValue(int);(14)void display(); /* 显示遍历结果*/(15)int Addnewsight(int n); /*添加新的景点和路径*/(16)int Deletesight(int n); /*删除景点和路径*/5、数据结构类型定义typedef struct ArcCell{int adj; /* 相邻接的景点之间的路程*/}ArcCell; /* 定义边的类型*/typedef struct VertexType{int number; /* 景点编号*/char sight[100]; /* 景点名称*/char description[1000]; /* 景点描述*/}VertexType; /* 定义顶点的类型*/typedef struct{VertexType vex[20]; /* 图中的顶点,即为景点*/ArcCell arcs[20][20]; /* 图中的边,即为景点间的距离*/ int vexnum,arcnum; /* 顶点数,边数*/}MGraph; /* 定义图的类型*/6、测试结果1、查询景点信息2、查询两景点间最短路径3、查询两景点间所有路径4、添加新的景点和路径5、删除已有的景点和路径6、修改删除已有的景点和路径7、实验心得经过几天的课程设计,总的来说收获还是很大的!首先代码能力明显提高,有了想法基本都能顺利表达出来;再者就是数据结构的选择使用能力也有了很大的提高!虽说平时的实验课我们也有用各种数据做题,但那些都是很明确的知道该做什么操作,存什么,我们的发挥空间不大一般照做就行,然而这次实习我们却在自主的选择判断,这本身就是一个很大的提高!还有就是算法方面的学习有了初步进阶,如最短路径,这样比较简单的图论算法能比较熟练的写出来。
校园导游带团服务流程方案
![校园导游带团服务流程方案](https://img.taocdn.com/s3/m/b199ce4b8f9951e79b89680203d8ce2f01666579.png)
校园导游带团服务流程方案校园导游带团服务流程方案一、方案背景随着大学生活水平的提高,越来越多的学生和家长参观考察大学校园,了解学校的教育环境和设施等情况。
为了更好地引导和服务参观团队,学校决定推出校园导游带团服务。
二、服务目标1. 为参观团队提供全方位的校园导游和讲解服务,帮助他们更好地了解学校。
2. 提供个性化的参观路线和安排,满足不同参观团队的需求。
3. 在参观过程中,提供周到的服务和解答参观者的问题,提升参观体验。
三、服务流程1. 预约与安排(1)参观团队提前向学校导览中心预约校园导游带团服务,提供参观日期、时间和人数等基本信息。
(2)导览中心根据参观团队的需求和学校资源情况,确定合适的导游和参观路线。
(3)导览中心将参观路线和安排发送给参观团队,确认相关事项后双方达成一致。
2. 参观前准备(1)导览中心与导游沟通参观团队的背景和需求,以便为参观团队提供更加个性化的参观服务。
(2)导游提前了解学校的历史、建筑、校园文化等信息,熟悉参观路线并准备相关讲解资料和导览器材料。
3. 参观过程(1)导游准时到达集合地点,对参观团队进行迎接和签到。
(2)导游向参观团队介绍学校的基本情况,简单介绍参观路线和安排。
(3)带领参观团队依据预定路线参观校园,为参观者提供相关的讲解和解答问题。
(4)在参观过程中,及时根据参观团队的需求和兴趣,调整参观路线和安排,以满足参观者的期待。
(5)导游可根据需要,安排校园文化活动、示范课等额外的体验活动。
4. 参观后总结(1)导游带领参观团队完成参观后,进行总结和整理讲解资料。
(2)导览中心向参观团队进行满意度调查,收集反馈意见和建议,以便不断改进服务质量。
(3)参观团队表达感谢之后,解散并结束校园导游带团服务。
四、推广与宣传为了提高校园导游带团服务的知名度和受欢迎程度,学校可以采取以下推广与宣传措施:1. 在学校官方网站和微信公众号等渠道上发布校园导游服务的信息和推广宣传文章。
校园导游系统课程设计报告
![校园导游系统课程设计报告](https://img.taocdn.com/s3/m/1fba4ebbdc3383c4bb4cf7ec4afe04a1b071b0bf.png)
南京航空航天大学《数据结构》课程设计报告校园导游系统目录一、需求分析 (2)二、程序的主要功能 (2)三、程序运行平台 (2)四、数据结构 (2)五、算法设计思想及时间复杂度 (2)六、测试用例及结果 (5)七、存在的不足与对策及编程体会 (6)八、程序源代码 (6)一、需求分析南航学生家长及入学新生很需要一个导游程序,来引领他们参观和了解南航。
二、程序的主要功能1、查询各景点的相关信息2、查询任意两景点间的所有路径3、查询任意两景点间的最短路径 1、增加景点4、推荐参观路线 2、删除景点5、更新导游信息(操作需管理员密码) 3、更新道路信息6、对景点联通性的浏览(2阶矩阵表示)4、更新景点信息7、学校全景一览 5、修改管理员密码三、程序运行平台Microsoft Visual C++ 6.0四、数据结构图的邻接矩阵存储表示,栈的顺序存储表示五、算法设计思想及时间复杂度主要函数介绍:1、求两点间的所有路径:a)相关函数:void dfs(MGraph G,SqStack path,int *used,int u,int w);//深度优先遍历b)主要算法思想:栈的相关操作+深度优先搜索创建一个空栈保存路径,一个空数组保存已标记节点,首先让起点进栈,并标记为已访问,然后调用深度优先搜索,如果该顶点的相邻顶点(即与其有直接通路的顶点)未被访问过就标记为已访问,进栈,然后对它调用深度优先搜索,依次类推,直到获得所有到指定终点的路径。
c)时间复杂度:O(VE),其中V为图的顶点数目,E为图中边的数目。
2、求两点间的最短路径:a)相关函数:void ShortestPath(MGraph G,int v0,int P[][Nmax],int *D);//查询任意两景点间的最短路径void PrintShortest(MGraph G,int v1,int v2,int P[][Nmax],int *D); //输出最短路径b)主要算法思想:迪杰斯特拉算法假设起点为v0,S为已找到的从v0出发的最短路径的终点的集合,其初始状态为空集。
校园导游咨询的实现的程序设计
![校园导游咨询的实现的程序设计](https://img.taocdn.com/s3/m/b4671708866fb84ae45c8d37.png)
铜陵学院《数学与计算机科学系》课程设计设计题目:校园导游咨询系统的实现系别数学与计算机科学系班级10信管班学生姓名赵梦阳学号1006121048指导教师杨慧职称教师起止日期:2011年12 月19 日起——至2011 年12 月23日止铜陵学院《数据结构》课程设计任务书课程设计题目:校园导游咨询系统的实现系别数学与计算机科学系班级10信管班学生姓名赵梦阳学号1006121048指导教师杨慧职称教师课程设计进行地点:实验楼C406任务下达时间:2011年12月19日起止日期:2011 年12 月19 日起——至2011 年12月23日止一、课程设计的目的1.设计一个校园导游系统,为来客查询校园的各种信息2.熟练掌握图的知识、加深课堂所学用于实践二、课程设计要求1、设计你所在学校的校园平面图,所含景点不少于10个。
以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
2、为来访客人提供图中任意景点相关信息的查询。
3、为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
三、对课程设计说明书撰写内容、格式、字数的要求1.课程设计报告是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、实验器材、设计原理及内容、设计具体步骤、遇到的问题及解决方法、设计总结、参考文献等。
一般不应少于3000字。
2.在适当位置配合相应的实验原理图、实验数据表、问题分析流程图等图表进行说明。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计报告打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距20磅。
文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课题五:校园导游程序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]存储路径顶点。