校园导游咨询系统源代码
校园导游系统程序--课程设计-报告【范本模板】
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。
java校园导游咨询课程设计
java校园导游咨询课程设计一、课程目标知识目标:1. 理解Java语言面向对象编程的基本概念,掌握类的定义、属性和方法的声明及使用。
2. 学习使用Java异常处理机制,提高程序的健壮性。
3. 了解Java事件处理机制,掌握事件监听器和事件处理方法的使用。
4. 掌握Java图形用户界面(GUI)设计,熟练运用Swing组件构建应用程序界面。
技能目标:1. 能够运用面向对象思想,设计并实现一个校园导游咨询系统的核心功能模块。
2. 能够使用Java异常处理机制,对程序中可能出现的错误进行有效捕获和处理。
3. 能够利用事件处理机制,实现导游咨询系统的用户交互功能。
4. 能够运用Swing组件,设计美观、易用的校园导游咨询系统界面。
情感态度价值观目标:1. 培养学生团队协作能力,提高沟通与表达能力,增强解决实际问题的信心。
2. 激发学生对计算机编程的兴趣,培养自主学习、持续探究的精神。
3. 引导学生关注校园环境,提高环保意识,培养学生热爱校园的情感。
课程性质:本课程为实践性较强的Java编程课程,通过设计校园导游咨询系统,使学生将所学知识应用于实际项目中,提高编程能力和解决实际问题的能力。
学生特点:学生已经掌握了Java编程基础,具有一定的编程能力,但面向对象编程和事件处理等方面尚需加强。
教学要求:注重理论与实践相结合,引导学生通过自主探究、团队协作的方式完成课程任务,提高学生的编程技能和综合素养。
同时,关注学生的情感态度价值观培养,使学生在学习过程中得到全面发展。
二、教学内容1. 面向对象编程基础:- 类与对象的概念及关系- 成员变量和局部变量的区别与使用- 方法的定义、调用及重载- 构造方法的作用及定义2. Java异常处理:- 异常的概念及分类- try-catch语句的使用- 异常的抛出和自定义异常3. Java事件处理:- 事件监听器接口及事件类的概念- 常用事件监听器及事件适配器- 事件处理方法的设计与实现4. Java图形用户界面设计:- Swing组件的概述及使用- 布局管理器的选择与运用- 菜单、对话框及工具栏的设计与实现5. 校园导游咨询系统设计与实现:- 系统需求分析- 功能模块划分- 数据存储与操作- 界面设计与实现教学内容安排与进度:第一周:面向对象编程基础,完成类的定义、对象创建及方法调用第二周:Java异常处理,实现对可能出现的错误进行捕获和处理第三周:Java事件处理,实现导游咨询系统的用户交互功能第四周:Java图形用户界面设计,设计并实现系统界面第五周:整合前面所学知识,完成校园导游咨询系统的设计与实现教材章节关联:《Java程序设计》第3章:面向对象编程基础《Java程序设计》第5章:异常处理《Java程序设计》第6章:事件处理与图形用户界面设计教学内容确保科学性和系统性,结合课程目标,以实践为导向,使学生能够将所学知识应用于实际项目中,提高编程能力和解决实际问题的能力。
数据结构(C语言版)实验报告 (校园导游咨询)
《数据结构与算法》实验报告一、需求分析【问题描述】设计一个校园导游程序,为来访的客人提供各种信息查询服务。
【基本要求】(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>,有些类中或者函数中涉及函数类模块的调用,但忘记标注会导致编译错误。
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语言校园导游系统课程设计一、课程目标知识目标: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语言课程设计题目校园导游咨询系统学生姓名专业班级计算机(Z) 13-1 指导教师职称助教所在单位信息科学系计算机教研室教学部主任完成日期 2014年12月13日课程设计成绩考核表综合评定:(优、良、中、及格、不及格)指导教师签字:2014年12月13 日课程设计任务书1.设计(研究)内容和要求研究内容:设计并编写一个完善的C语言程序,并要求达到以下几点:(1)系统功能要求:系统功能完善,具有简洁的操作流程。
(2)以软件工程理论为指导,按照进度计划,完成系统需求分析、系统的概要设计与系统的详细设计等。
要求能够对系统进行全面测试和调试,及时更正错误,直至系统运行稳定可靠,要求报告中具有系统测试内容。
(3)完成课程设计报告的编辑工作,报告要求在3000字以上,包括综述、系统总体设计、系统实现、运行调试、结论等,参考文献数量至少2篇,论文书写格式按学校规定来写。
(4)工作量要饱满,具备两周课程设计的基本要求,代码行达到300行左右。
原始依据:对学过的C语言程序设计课程进行巩固和加深印象。
了解C语言的基础知识,有一定的语言编程基础,能够熟练运用C语言进行程序设计。
通过用C语言完成的题目的编写与设计,以提高用C语言解决实际问题的能力。
2.系统环境硬件环境:CPU的主频在500MHZ以上,内存在128MB以上软件环境:编程语言及工具:C语言;操作系统:Windows 操作系统3.参考文献[1] 李瑞. 徐克圣. 刘月凡. 戚海英. C程序设计基础[M]. 北京:清华大学出版社.2009.7[2] 布鲁志著.吴丹等译.面向对象的软件工程—构建复杂且多变的系统.清华大学出版社.2002.10[3] 霍顿(美).杨杰(译). 北京:清华大学出版社. 2008[4] 薛圆圆.C语言开发手册. 北京:电子工业出版社. 2011.4[5] 肯奈斯.艾.瑞克(美).徐波(译).C和指针.北京:人民邮电出版社[6] 宋旭.黄明.C语言课程设计.北京:电子工业出版社[7] 宋丽芳.C语言程序设计.北京:现代教育出版社目录1 需求分析 (1)1.1 系统概述 (1)1.2 系统运行环境 (1)1.3 功能需求描述 (1)2 总体设计 (1)2.1 开发与设计的总体思想 (1)2.2 系统模块结构 (2)2.3 模块设计 (2)2.4 系统流程描述 (3)2.5 界面设计 (3)3 详细设计 (6)3.1 应用部署图 (6)3.2 查询功能模块 (7)3.3 删除功能模块 (9)3.4 系统维护模块 (12)4 系统测试 (16)总结 (16)参考文献 (17)1 需求分析1.1 系统概述随着现代社会生活节奏的加快,人们外出旅行以寻求放松的时间越来越多。
c语言校园导游课程设计
c语言校园导游课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中数组、函数、指针等基本概念及其在程序设计中的应用。
2. 学生能够运用C语言编写具有实际意义的程序,如校园导游系统,实现对校园景点信息的存储、查询和展示。
3. 学生了解结构体和文件操作在C语言中的应用,能够实现对校园导游系统中数据的组织、存储和读取。
技能目标:1. 学生掌握C语言编程的基本技巧,具备分析问题、设计算法和编写程序的能力。
2. 学生能够运用所学知识,独立设计并实现一个简单的校园导游系统,提高实际编程能力。
3. 学生通过课程学习,培养解决实际问题的能力,提高逻辑思维和团队协作能力。
情感态度价值观目标:1. 学生对C语言编程产生兴趣,树立学习信心,形成积极的学习态度。
2. 学生在学习过程中,培养良好的编程习惯,注重程序的可读性和可维护性。
3. 学生通过课程学习,认识到编程在解决实际问题中的重要性,激发对计算机科学技术的热爱。
课程性质:本课程为C语言程序设计实践课程,结合实际应用场景,培养学生的编程能力和解决实际问题的能力。
学生特点:学生具备一定的C语言基础,对编程感兴趣,但实际编程经验不足。
教学要求:教师应注重理论与实践相结合,引导学生运用所学知识解决实际问题,关注学生的个体差异,提高学生的编程能力和综合素质。
教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 数组与函数:回顾数组的使用,强调其在存储大量数据时的优势;讲解函数的定义、调用和参数传递,强调模块化编程的重要性。
- 教材章节:数组、函数- 内容列举:一维数组、二维数组、函数定义、函数调用、局部变量、全局变量2. 指针与结构体:介绍指针的概念,讲解指针的使用方法;引入结构体,展示如何利用结构体组织相关数据。
- 教材章节:指针、结构体与联合- 内容列举:指针变量、指针运算、结构体定义、结构体变量、结构体数组3. 文件操作:讲解文件的基本概念,介绍文件读写操作,为校园导游系统数据存储提供支持。
校园导航系统的两个代码
#1 数据结构实验之校园导游咨询#include<>#include<>#include<>#include<>#include<>#include ""#define null 0#define num 20#define maxdist 10000typedef struct{char data[num];int edges[num][num];}graph;void dijkstra(graph g,int n,int i,int d[num],int p[num]) {int s[num];int mindist,dist;int j,k,u;for(j=0;j<n;j++){d[j]=[i][j];s[j]=0;if((d[j]<maxdist)&&(d[j]!=0))p[j]=i;elsep[j]=-1;}s[i]=1;for(j=0;j<n-1;j++){mindist=maxdist;u=i;for(k=0;k<n;k++)if((s[k]==0)&&(d[k]<mindist)){u=k;mindist=d[k];}s[u]=1;for(k=0;k<n;k++)if(s[k]==0){dist=d[u]+[u][k];if(dist<d[k]){d[k]=dist;p[k]=u;}}}void opdijk(int v0,int n,int d[],int p[]){int i,pre;for(i=0;i<n;i++)if(i!=v0){printf("\n%d",i);pre=p[i];while(pre!=-1){printf("<--%d",pre);/****************************/ pre=p[pre];}if(d[i]==maxdist)printf("<--%d",v0);printf("\tshortestway:%d",d[i]);}}void floyd(graph g,int n,int d[][num],int p[][num]){int i,j,k;for(i=0;i<n;i++)for(j=0;j<n;j++){d[i][j]=[i][j];if((d[i][j]<maxdist)&&(d[i][j]!=0))p[i][j]=j;elsep[i][j]=-1;}for(i=0;i<n;i++)d[i][i]=0;for(k=0;k<n;k++)for(i=0;i<n;i++)for(j=0;j<n;j++)if(d[i][j]>d[i][k]+d[k][j]){d[i][j]=d[i][k]+d[k][j] ;p[i][j]=p[i][k];}}void opfloy(int n,int d[][num],int path[][num]){int i,j,next;for(i=0;i<n;i++){printf("\n\nyuandian is v%d:",i);for(j=0;j<n;j++){printf("\nthe shortest way from%dto%dis:\n",i,j);printf("%d",i);next=path[i][j];while(next!=-1){printf("->%d",next);next=path[next][j];}if(d[i][j]==maxdist)printf("<-%d",j);/***************************/printf("\t%d",d[i][j]);}}}void main(){graph g;int i,j,k,n;int d[num],p[num],sd[num][num],sp[num][num];点信息查询………请按s键\n");printf("2.景点最短路径查询…请按b键\n");printf("3.退出系统……………请按e键\n");printf("校园平面图如下:\n");printf(" 5------9-----7----8 \n");printf(" | \\ | / \n");printf(" | 4 | / \n");printf(" | \\ | / \n");printf(" 6 \n");printf(" | / \n");printf(" | / \n");printf(" 10 \n\n");printf("请选择服务:");scanf("\n%c",&k);switch(k){case 's':printf("进入景点信息查询:\n");introduce();break;case 'b': printf("进入最短路径查询:\n");shortestdistance();break; case 'e':exit(0);default:printf("Error Input\n请输入字母s或b或e.\n\n");break; }}}。
数据结构-校园导游程序(附源码)
数据结构-校园导游程序(附源码)简介本文档旨在介绍一个校园导游程序的设计与实现。
该程序使用数据结构来管理校园地点信息,并提供导游功能,供用户查找并导航到目标地点。
文档将依次介绍相关的背景知识、程序设计原理、算法实现以及使用方法。
目录1.背景知识1.校园导游需求2.数据结构概述2.程序设计原理1.数据结构设计2.地点信息管理3.导航算法设计3.算法实现1.数据结构定义2.地点信息管理算法3.导航算法4.使用方法1.程序安装2.数据录入3.导游功能使用5.附录1.附件1:源码文件2.附件2:数据样例1.背景知识1.1 校园导游需求校园导游程序是为了帮助使用者在校园中快速找到目标地点,并提供导航功能,方便出行和参观。
该程序需要管理校园地点的信息,包括名称、位置和介绍等。
使用者可以通过程序查找地点、导航到目标地点。
1.2 数据结构概述数据结构是计算机中用来组织和存储数据的方式。
在校园导游程序中,我们需要选择适合的数据结构来存储和管理地点信息。
常用的数据结构有数组、链表、树、图等。
根据需求分析,我们可以使用图这一数据结构来表示校园地点之间的关系,方便进行导航。
2.程序设计原理2.1 数据结构设计在校园导游程序中,我们使用图这一数据结构来表示校园地点之间的关系。
每个地点可以看作图的一个节点,节点之间的边表示地点之间的连接关系。
通过构建图数据结构,我们可以方便地管理地点信息并进行导航。
2.2 地点信息管理地点信息管理是校园导游程序的核心功能之一。
我们需要设计适合的数据结构来存储地点的信息,包括名称、位置和介绍等。
通过合理的数据结构设计,可以快速地查找和修改地点信息。
2.3 导航算法设计导航算法是实现导游功能的关键。
我们需要设计算法来计算出从起点到目标地点的最短路径,并提供导航指引。
常用的导航算法有Dijkstra算法、A算法等,我们根据需求选择合适的算法进行实现。
3.算法实现3.1 数据结构定义我们使用图这一数据结构来表示校园地点之间的连接关系。
(完整word版)数据结构校园导游系统课程设计
滨江学院《数据结构》课程设计题目校园导游咨询程序设计学号学生姓名院系专业指导教师二O一二年月日1、题目的内容及要求设计一个校园导游程序,为来访的客人提供各种信息查询服务。
2、需求分析(1)设计你的学校的校园平面图,所含景点不少于10个.以图中顶点表示学校各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2)为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。
(3)为来访客人提供图中任意景点相关信息的查询。
3、概要设计1.功能模块图;void CreateUDN();//创建无向网void Search();//查询景点信息void Shortestpath(int i);//计算最短路径void Output(int sight1,int sight2);//输出函数2.各个模块详细的功能描述。
CreateUDN();//创建无向网、主要用来保存各景点信息Search();//查询景点信息、景点的名称及介绍Shortestpath(int i);//计算两景点间最短路径Output(int sight1,int sight2);//输出两景点最短路径及信息3。
模块图4、详细设计一、图的储存结构#define Max 30000#define NUM 10typedef struct ArcCell{int adj; /*相邻接的景点之间的路程*/ }ArcCell; /* 定义边的类型*/ typedef struct VertexType{int number;/*景点编号*/char *sight; /*景点名称*/char *description;/*景点描述 */}VertexType; /*定义顶点的类型 */typedef struct{VertexType vex[NUM]; /*图中的顶点,即为景点*/ ArcCell arcs[NUM][NUM];/* 图中的边,即为景点间的距离 */ int vexnum,arcnum;/* 顶点数,边数*/}MGraph; /* 定义图的类型二、算法1.主程序void main(){int v0,v1;char ck;CreateUDN(NUM,11);do{ck=Menu();switch(ck){case ’1’:system("cls”);// narrate();printf("\n\n\t\t\t请选择起点景点(0~9):”);scanf(”%d",&v0);printf(”\t\t\t请选择终点景点(0~9):”);scanf(”%d",&v1);ShortestPath(v0); /*计算两个景点之间的最短路径*/ output(v0,v1); /*计算两个景点之间的最短路径 */ printf("\n\n\t\t\t\t请按任意键继续。
C语言课设(校园导游)
校园导游目录摘要 ......................................................................................... 错误!未指定书签。
1绪论 .......................................................................................... 错误!未指定书签。
2系统分析 .................................................................................. 错误!未指定书签。
2.1功能需求 ........................................................................... 错误!未指定书签。
2.2数据需求............................................................................ 错误!未指定书签。
2.3性能需求 ........................................................................... 错误!未指定书签。
3总体设计 .................................................................................. 错误!未指定书签。
3.1系统设计方案.................................................................... 错误!未指定书签。
3.2功能模块设计.................................................................... 错误!未指定书签。
校园导游咨询讲解
MGr.legs[9][10]=MGr.legs[10][9]=50;
、弗洛伊德算法folyd()函数
用弗洛伊德算法求两节点之间最短的路径,具体算法为:在两节点之间
如->num=1;
strcpy(p->,"南大门");
strcpy(p->date.number,"1");
strcpy(p->date.introduce,"学校的大门,很有特色的拱桥型的大门,十分的霸
");
p->next=q->next;
MGr.legs[1][3]=MGr.legs[3][1]=15;
MGr.legs[1][4]=MGr.legs[4][1]=20;
MGr.legs[2][8]=MGr.legs[8][2]=80;
MGr.legs[3][5]=MGr.legs[5][3]=20;
MGr.legs[3][6]=MGr.legs[6][3]=15;
q->next=p;
q=p;
p=(Place *)malloc(sizeof(Place));
p->num=2;
strcpy(p->,"李子湖");
strcpy(p->date.number,"2");
strcpy(p->date.introduce,"学校最有风景的地方,是情侣晚上最喜欢去的地方!
q->next=p;
q=p;
p=(Place *)malloc(sizeof(Place));
校园导游咨询系统源代码
typedef struct//用来定义一个图 {
infotype vexs[10]; Ad arcs; int vexnum,arcnum; }MGraph; MGraph b;
MGraph InitGraph()//初始化图形 {
MGraph G;
int i;
int j;
G.vexnum=10; G.arcnum=10;
printf(" \n"); printf( 车结束):"
}
4.查看各景点信息 5.退出系统
"诚心为你服务-请选择(输入编号.回 );
//查看各 v;
printf("\n");
printf("编号.景点名称.简介 \n");
#include<stdlib.h>//standard library 标准库头文件
#include<stdio.h>//标注输入输出函数头文件
#include<string.h>//字符函数头文件
#define MAX 10000 //定义路程最远距离符号常量无穷大
#define MAX_VERTEX_NUM 10//定义的景点/顶点数量符号常量 最大顶点数 10 个
for(i=0;i<G.vexnum;i++) for(j=0;j<G.vexnum;j++) G.arcs[j][i].adj=G.arcs[i][j].adj; return G; }
//菜单
void Menu()
{ printf("\n *************************** **************************\n");
校园导游实验报告——数据结构
校园导游实验报告——数据结构
校园导游实验报告——数据结构
1.引言
- 简要介绍实验的目的和背景
- 阐述校园导游系统的重要性和应用价值
2.需求分析
- 分析校园导游系统的功能需求和性能要求
- 确定系统的基本模块,如地图显示、导航功能等
3.系统设计
3.1 数据结构设计
- 介绍选择的数据结构,如图、树、队列等的原因和优劣势
- 描述数据结构的组织方式和关键操作
3.2 界面设计
- 展示校园导游系统的用户界面设计
- 解释界面设计的考虑因素,如易用性、用户体验等
4.算法设计与实现
4.1 寻路算法设计
- 探讨常见的寻路算法,如Dijkstra算法、A算法等 - 选择适合校园导游系统的寻路算法,并解释原因
4.2 数据存储与交互
- 描述数据的存储方式,如数据库、文件等
- 分析数据的交互方式,如文件读写、网络传输等5.实验结果与分析
- 展示校园导游系统的功能演示和性能测试结果
- 对实验结果进行详细分析和解释
6.总结与展望
- 总结实验的目标是否达到,解决了哪些问题
- 展望校园导游系统的未来发展方向和改进空间
附件:
附件1:校园导游系统源代码
附件2:校园地图数据文件
附件3:实验中使用的测试数据集
法律名词及注释:
1.版权:指对作品享有的法律保护,包括复制权、发行权等。
2.私下使用:指在非商业、非公开场合下个人使用作品。
3.公共领域:指没有版权保护的作品,可供任何人使用。
4.许可证:指被授权人可以在指定条件下使用作品的文件或证明。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include<stdlib.h>//standard library标准库头文件#include<stdio.h>//标注输入输出函数头文件#include<string.h>//字符函数头文件#define MAX 10000 //定义路程最远距离符号常量无穷大#define MAX_VERTEX_NUM 10//定义的景点/顶点数量符号常量最大顶点数10个typedef struct //定义一个结构体用于表示路径{int adj; //路径长度权值}Ar,Ad[10][10];//起点和终点变量名typedef struct //定义一个结构体用于存放景点信息{char name[30];//景点名int num;//景点编号char introduction[100];//景点介绍景点信息变量名}infotype;//typedef struct//用来定义一个图{infotype vexs[10];Ad arcs;int vexnum,arcnum;}MGraph;MGraph b;MGraph InitGraph()//初始化图形{MGraph G;int i;int j;G.vexnum=10;G.arcnum=10;for(i=0;i<G.vexnum;i++)G.vexs[i].num=i;//用字符串复制把各个景点的信息传递给指针瑳捲祰?瘮硥孳崰渮浡?老校区宿舍);瑳捲祰?瘮硥孳崰椮瑮潲畤瑣潩?这里有夺命坡,冬天来这里一定要小心脚下);瑳捲祰?瘮硥孳崱渮浡?二教);瑳捲祰?瘮硥孳崱椮瑮潲畤瑣潩?同学们日常上课大多数都在这);瑳捲祰?瘮硥孳崲渮浡?石头楼);瑳捲祰?瘮硥孳崲椮瑮潲畤瑣潩?石头楼是我国著名建筑大师梁思成在美国宾西法尼亚大学建筑系毕业回国之后设计的第一件作品);瑳捲祰?瘮硥孳崳渮浡?主教);瑳捲祰?瘮硥孳崳椮瑮潲畤瑣潩?一座集实验教学于一体的教学楼,但是我没在里面上过课);瑳捲祰?瘮硥孳崴渮浡?媒体楼);瑳捲祰?瘮硥孳崴椮瑮潲畤瑣潩?信息院有一部分的上机课是在这里上的,在这里你还有可能艳遇到媒体系的美女呦);瑳捲祰?瘮硥孳崵渮浡?图书馆);瑳捲祰?瘮硥孳崵椮瑮潲畤瑣潩?自从新校区图书馆建成后这里就变成了纯粹的自习室,不过这里冬天真的很暖);瑳捲祰?瘮硥孳崶渮浡?专家招待所);瑳捲祰?瘮硥孳崶椮瑮潲畤瑣潩?这里是招待一些贵宾的地方,有些留学生也住在这儿);瑳捲祰?瘮硥孳崷渮浡?学术交流中心);瑳捲祰?瘮硥孳崷椮瑮潲畤瑣潩?这里经常会开很多高大上的会议,还会有外国友人出现在这);瑳捲祰?瘮硥孳崸渮浡?东街教学楼);瑳捲祰?瘮硥孳崸椮瑮潲畤瑣潩?这里也是一个日常上课比较多的地方,没课的时候来这里上自习也是不错的选择););校医院瑳捲祰?瘮硥孳崹渮浡?瑳捲祰?瘮硥孳崹椮瑮潲畤瑣潩?新生的体检,打疫苗都在这,而且来这里买药真的很便宜);//运用双重循环给每条边赋权值for(i=0;i<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[i][j].adj=MAX;G.arcs[0][1].adj=600;G.arcs[0][2].adj=600;G.arcs[0][3].adj=700;G.arcs[1][2].adj=50;G.arcs[1][4].adj=100;G.arcs[2][5].adj=150;G.arcs[2][3].adj=50;G.arcs[3][5].adj=250;G.arcs[4][5].adj=100;G.arcs[4][8].adj=450;G.arcs[5][6].adj=150;G.arcs[5][8].adj=200;G.arcs[6][7].adj=50;G.arcs[6][8].adj=100;G.arcs[6][9].adj=250;G.arcs[7][8].adj=100;G.arcs[7][9].adj=80;G.arcs[8][9].adj=50;for(i=0;i<G.vexnum;i++)for(j=0;j<G.vexnum;j++)G.arcs[j][i].adj=G.arcs[i][j].adj; return G;}菜单//void Menu(){欢迎来到东北电力大学printf(\*****************************************************\n); printf(\n);祝你:旅途愉快printf(\n);printf(\n);printf( 1.浏览校园全景\n);查看所有游览路线2.printf(\n);选择出发点和目的地3.printf(\n);printf( 查看各景点信息4.\n);退出系统5.printf(\n);printf(\n);printf( 回.输入编号(请选择-诚心为你服务);车结束):}查看各景点信息函数//void Browser(MGraph *G){int v;printf(\);\n);牰湩晴尨景点名称.编号.简介for(v=0;v<G->vexnum;v++) {printf(%-4d%-16s%-56s\n,G->vexs[v].num,G->vexs[v].name,G->vexs[v].introduction);}printf(\);printf(§·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽§\n);printf(§——>东\n); §printf(§\n);§————4.——————printf(§ 1.二教—————媒体楼\n); §————————┃┃┃printf(§\n); ┃§┃┃┃printf(§┃\n); §printf(§0.老校区宿舍———2.石头楼————5.图书馆————————————┃§\n);┃┃┃printf(§\n);§┃┃┃————6.专家printf(§┃\n);东街§8.招待所—————————3.主教———————┃printf(§\n);—__________/┃§┃printf(§\n);—┃§/printf(§7.学术交流\n);§校医院9.————中心.printf(§§\n);printf(§·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·∽·§\n);牰湩晴尨请按任意键继续!);printf(\);getch();}//查看所有浏览路线void ShortestPath_DIJ(MGraph * G){int v,w,i,min,t=0,x,flag=1,v0;int final[20], D[20], p[20][20];while(flag){0-9:);请输入一个起始景点编号牰湩晴尨scanf(%d,&v0);if(v0<0||v0>G->vexnum){牰湩晴尨景点编号不存在!请重新输入景点编号0-9:); scanf(%d,&v0);}if(v0>=0&&v0<G->vexnum)flag=0;}for(v=0;v<G->vexnum;v++){final[v]=0;D[v]=G->arcs[v0][v].adj;for(w=0;w<G->vexnum;w++)p[v][w]=0;if(D[v]<MAX){p[v][v0]=1;p[v][v]=1;}}D[v0]=0;final[v0]=1;for(i=1;i<G->vexnum;i++){min=MAX;for(w=0;w<G->vexnum;w++)if(!final[w])if(D[w]<min){v=w;min=D[w];}final[v]=1;for(w=0;w<G->vexnum;w++)if(!final[w]&&(min+G->arcs[v][w].adj<D[w])){D[w]=min+G->arcs[v][w].adj;for(x=0;x<G->vexnum;x++)p[w][x]=p[v][x];p[w][w]=1;}}for(v=0;v<G->vexnum;v++){if(v0!=v) printf(%s,G->vexs[v0].name);for(w=0;w<G->vexnum;w++){if(p[v][w]&&w!=v0)printf(-->%s,G->vexs[w].name); t++;}晩琨??敶湸浵??ぶ??牰湩晴尨总路线长%dm\n\n,D[v]); }}//弗洛伊德算法用于求最短路void Floyd(MGraph *G){int v,u,i,w,k,j,flag=1,p[10][10],D[10][10];for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++){D[v][w]=G->arcs[v][w].adj;for(u=0;u<G->vexnum;u++)p[v][w]=0;if(D[v][w]<MAX){p[v][w]=1;p[v][w]=1;}for(u=0;u<G->vexnum;u++)for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++)if(D[v][u]+D[u][w]<D[v][w]){D[v][w]=D[v][u]+D[u][w];for(i=0;i<G->vexnum;i++)p[v][w]=p[v][u]||p[u][w];}while(flag){牰湩晴尨请输入出发点和目的地的编号0-9如(* *):);scanf(%d%d,&k,&j);if(k<0||k>G->vexnum||j<0||j>G->vexnum){牰湩晴尨景点编号不存在!请重新输入出发点和目的地的编号:); scanf(%d%d,&k,&j);}if(k>=0&&k<G->vexnum&&j>=0&&j<G->vexnum)flag=0;printf(%s,G->vexs[k].name);for(u=0;u<G->vexnum;u++)if(p[k][j]&&k!=u&&j!=u)printf(-->%s,G->vexs[u].name);printf(-->%s,G->vexs[j].name);牰湩晴尨总路线长%dm\n,D[k][j]);}//查询单个景点信息void Search(MGraph *G){int k,flag=1;while(flag){牰湩晴尨请输入要查询的景点编号0-9:);scanf(%d,&k);if(k<0||k>G->vexnum){牰湩晴尨景点编号不存在!请重新输入景点编号0-9:); scanf(%d,&k);}if(k>=0&&k<G->vexnum)flag=0;}printf(\);牰湩晴尨编号.景点名称.简介\n);printf(%-4d%-16s%-56s\n,G->vexs[k].num,G->vexs[k].name,G->vexs[k].introduction);printf(\);}int LocateVex(MGraph *G,char* v)/*初始条件:图G存在,v和G中顶点有相同特征*//*操作结果:若G中存在顶点v,则返回该顶点在图中位置;否则返回-1 */ {int c=-1,i;for(i=0;i<G->vexnum;i++)if(strcmp(v,G->vexs[i].name)==0){c=i;}return c;}void print(MGraph *G)//输出景点间距离{int v,w,t=0;for(v=0;v<G->vexnum;v++)for(w=0;w<G->vexnum;w++){if(G->arcs[v][w].adj==MAX)printf(∞);//没有路输出无穷else printf(%-7d,G->arcs[v][w].adj);//有路输出权值和t++;if(t%G->vexnum==0)printf(\);}}//主函数void main(){ int i;b=InitGraph();//调用初始化地图函数Menu();//调用菜单函数scanf(%d,&i);while(i!=5){switch(i){case 1:system(cls);Browser(&b);Menu();break;case 2:system(cls);ShortestPath_DIJ(&b);Menu();break; case 3:system(cls);Floyd(&b);Menu();break;case 4:system(cls);Search(&b);Menu();break; default:exit(1);}scanf(%d,&i);}}。