校园导游系统代码
校园导游系统程序--课程设计-报告【范本模板】
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。
数据结构(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>,有些类中或者函数中涉及函数类模块的调用,但忘记标注会导致编译错误。
校园导游系统课程设计报告
目录1、需求分析错误!未指定书签。
2、总体设计错误!未指定书签。
2.1抽象数据类型图的定义................................................. 错误!未指定书签。
4、总结报告错误!未指定书签。
参考文献错误!未指定书签。
1、需求分析设计一个校园导游系统程序,为来访的客人提供各种服务的信息查询。
(1).设计潍坊学院校园平面图,所含的景点不少于10个。
以图中顶点表示校内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。
(2).为来访客人提供图中任意景点相关信息的查询。
(2)查询模块景点信息查询:voidintroduce()/*景点介绍*/最短路径查询:intshortestdistance()/*要查找的两景点的最短距离*/voidfloyed()/*用floyed算法求两个景点的最短路径*/(3)打印模块打印最短路径:voiddisplay(inti,intj)/*打印两个景点的路径及最短距离*/2.1.3模块间的调用关系intpath[n][n];/*经过的景点*/ /*自定义函数说明*/ voidintroduce(); intshortestdistance(); voidfloyed();voiddisplay(inti,intj);voidmain(){inti,j;chark;for(i=0;i<=n;i++)for(j=0;j<=n;j++)cost[6][6]=cost[7][7]=cost[8][8]=cost[9][9]=cost[10][10]=0;while(1){printf("‖〓〓〓〓〓〓〓★欢迎使用潍坊学院导游系统!★〓〓〓〓〓〓〓‖"); printf("‖‖");printf("‖1.景点信息查询———————请按〖introduc〗键‖");printf("‖‖");printf("‖2.景点最短路径查询—————请按s〖shortestdistance〗键‖");printf("‖‖");printf("‖3.退出系统—————————请按e〖exit〗键‖");printf("‖‖"); printf("‖学校景点列表:‖");printf("‖‖");printf("‖1:学校南门2:操场3:体育馆4:行政楼5:一号宿舍‖");printf("‖‖");printf("‖6:二号餐厅7:天一教学楼8:洪德湖9:图书馆10:一号餐厅‖printf("输入信息错误!\n请输入字母i或s或e.\n");break;}}}voidintroduce()/*景点介绍*/{inta;printf("请输入您想查询的景点的编号:");scanf("%d",&a);getchar();printf("\n");switch(a)printf("7:天一教学楼\n学校主要教学楼之一。
校园导游程序c课程设计
校园导游程序c课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中数组、函数、指针等基本概念及其应用;2. 学生能运用结构体、文件操作等知识模块,实现校园导游程序的基本功能;3. 学生了解并掌握程序设计中模块化、结构化的基本方法。
技能目标:1. 学生能运用C语言编写具有实用价值的程序,具备一定的编程能力;2. 学生通过校园导游程序的设计,培养解决实际问题的能力;3. 学生能够进行程序调试与优化,提高程序性能。
情感态度价值观目标:1. 学生在课程学习中,培养对编程的兴趣和热情,树立自信心;2. 学生通过团队合作,培养沟通、协作能力,增强团队意识;3. 学生能够关注校园文化,将课程与实际生活相结合,提高社会责任感。
课程性质分析:本课程为C语言编程实践课,旨在让学生通过实际项目的开发,巩固所学知识,提高编程能力。
学生特点分析:学生已具备C语言基础,具有一定的编程能力,但实际应用经验不足。
教学要求:结合学生特点,课程注重实践操作,引导学生运用所学知识解决实际问题,提高学生的编程素养。
将目标分解为具体的学习成果,以便后续的教学设计和评估。
1. C语言基础知识回顾:数组、函数、指针、结构体、文件操作等;2. 程序设计方法:模块化、结构化编程;3. 校园导游程序功能需求分析:地图展示、路径规划、景点介绍等;4. 校园导游程序设计与实现:- 数据结构设计:景点结构体定义、路径数组等;- 功能模块实现:地图展示、路径规划算法、景点信息查询等;- 界面设计:命令行界面设计、功能菜单编写等;5. 程序调试与优化:调试技巧、性能优化方法;6. 团队合作与项目展示:分组合作、项目汇报与评价。
教学大纲安排:1. 第一周:C语言基础知识回顾,理解并掌握基本概念;2. 第二周:程序设计方法学习,分析校园导游程序需求;3. 第三周:校园导游程序数据结构设计,功能模块划分;4. 第四周:实现各功能模块,编写界面代码;5. 第五周:进行程序调试与优化,确保程序稳定运行;6. 第六周:团队合作,完成项目展示与评价。
c语言校园导游课程设计
c语言校园导游课程设计一、教学目标本课程旨在通过C语言编程,使学生掌握基本的编程技能,并应用于校园导游系统的开发。
具体目标如下: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语言校园导游课程设计一、课程目标知识目标: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语言程序设计实现校园导游咨询系统,学生能够了解并掌握数据结构的基本概念、算法和编程技术,培养学生的编程能力和解决实际问题的能力。
二、系统需求分析(1)用户管理系统需要实现学生、教师、管理员三种用户的管理,分别具有不同的权限等级。
要实现用户注册、登录、退出等基本功能。
(2)地图导航系统需要实现校内地图的导航功能,包括校门、教学楼、图书馆、宿舍等位置的标注,提供校园内部的导航和查找服务。
(3)建筑信息系统需要提供校内建筑的信息查询功能,包括建筑名称、位置、使用情况等,方便师生查询。
(4)在线咨询系统需要提供在线咨询功能,方便学生、教师等用户在线咨询学校相关事宜,并实现客服人员的消息处理。
三、数据结构设计(1)用户信息表采用哈希表作为用户信息表的数据结构,将用户信息存储在表中,方便用户登录和信息的管理。
哈希表的键值是用户名,值是用户信息(包括用户名、密码、权限等级等)。
(2)建筑信息采用结构体数组作为建筑信息的数据结构,将建筑信息存储在数组中,方便查询和展示。
结构体包含建筑名称、位置、使用情况等信息。
(3)校内地图为方便地图导航,采用邻接矩阵作为校内地图的数据结构,将校内各个建筑之间的距离存储在矩阵中。
矩阵的行和列分别表示建筑的编号,矩阵元素表示建筑之间的距离。
(4)消息队列为实现在线咨询功能,采用队列作为消息队列的数据结构,将用户发送的消息存储在队列中。
消息队列的队首指针和队尾指针分别表示最早和最晚的消息,方便客服人员的处理。
四、代码实现(1)用户管理用户管理实现了注册、登录和退出等功能。
用户密码使用MD5加密,保证用户信息的安全性。
管理员可以添加、删除学生和教师用户。
(2)地图导航地图导航实现了最短路径算法和深度优先搜索算法,方便用户查询和展示校内地图。
用户可以查找建筑的详细信息,包括位置、使用情况等。
校园导游系统42884
课程设计说明书课程名称:数据结构与算法设计题目:校园导游系统院系:计算机科学与信息工程学院学生姓名:学号:专业班级:计算机科学与技术信息技术方向11-1指导教师:2013年6月21日课程设计任务书校园导游系统摘要:随着社会经济的发展,人们接近自然的机会就越多,因此外出旅游现在被越来越多的都市人所看中,所以如何快速方便的找到我们想要的旅游景点的信息和最短路径,如何简单的修改相关的信息,就成了很重要的问题。
本设计基于图的结构,用数组表示法创建一个无向图,针对游客的实际需求,将安阳工学院的景点编号、名称、介绍等信息放入到图的顶点当中,将路径长度的信息存放在弧当中。
利用弗洛伊德算法求出两个景点之间的最短路径,利用迪杰斯特拉算法来求从一个景点到其他剩余的所有景点的最短距离;用相应的函数来查找景点,并显示出它的编号,信息,简介。
并进行一定的界面美化,更贴近用户,相应的提示使用户操作起来更容易。
关键词:最短路径、查找景点信息、无向图目录1. 设计背景 (5)1.1程序设计内容 (5)1.2程序设计要求 (5)2.设计方案 (6)2.1 景点抽象图 (6)校园景点抽象图比较直观的反应的校园景点的总体布局。
图中顶点代表校园景点,顶点之间的边代表景点之间的路径,权值代表景点间的距离,两个顶点间没有边,表明两个景点不能直接到达。
(6)景点抽象图如图1所示: (7)2.2 程序模块图 (7)2.3 主函数设计简要 (8)2.4 各函数模块的功能 (9)3. 方案实施 (9)3.1 程序执行流程图 (9)3.2 主函数设计思想 (10)4. 结果测试 (12)4.1 主函数功能模块测试 (13)4.2主函数功能测试 (13)4.3 各功能所执行的操作 (17)5. 结论 (18)6. 收获与致谢 (19)7. 参考文献 (19)8. 附件 (19)1. 设计背景1.1程序设计内容根据设计要求,利用无向图将学校的景点作为图的顶点,顶点的边作为景点之间的距离进行存储,根据游客的需求,查找各个景点的信息,找出两个景点的最短路径,实现校园的导游目的。
数据结构-校园导游程序(附源码)
数据结构-校园导游程序(附源码)简介本文档旨在介绍一个校园导游程序的设计与实现。
该程序使用数据结构来管理校园地点信息,并提供导游功能,供用户查找并导航到目标地点。
文档将依次介绍相关的背景知识、程序设计原理、算法实现以及使用方法。
目录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功能模块设计.................................................................... 错误!未指定书签。
师范生管理系统 地区代码
师范生管理系统地区代码北京市110000111,北京市市辖区1101001,北京市东城区1101011直辖市1,北京市西城区1101021直辖市1,北京市崇文区1101031直辖市1,北京市宣武区1101041直辖市1,北京市朝阳区1101051直辖市1,北京市丰台区1101061直辖市1,北京市石景山区1101071直辖市1,北京市海淀区1101081直辖市1,北京市门头沟区1101091直辖市1,北京市房山区1101111直辖市1,北京市通州区1101121直辖市1,北京市顺义区1101131直辖市1,北京市昌平区1101141直辖市1,北京市大兴区1101151直辖市1,北京市怀柔区1101161直辖市1,北京市平谷区1101171直辖市1,北京市县1102001北京市密云县1102286县1,北京市延庆县1102296县1,天津市1200001,天津市市辖区1201001,天津市和平区1201011直辖市1,天津市河东区1201021直辖市1,天津市河西区1201031直辖市1,天津市南开区1201041直辖市1,天津市河北区1201051直辖市1,天津市红桥区1201061直辖市1,天津市塘沽区1201071直辖市1,天津市汉沽区1201081直辖市1,天津市大港区1201091直辖市1,天津市东丽区1201101直辖市1,天津市西青区1201111直辖市1,天津市津南区1201121直辖市1,天津市北辰区1201131直辖市1,天津市武清区1201141直辖市1,天津市宝坻区1201151直辖市1,天津市县1202001,天津市宁河县1202216县1,天津市静海县1202236县1,天津市蓟县1202256县1,河北省1300001,河北省石家庄市1301001,河北省石家庄市市辖区1301011,河北省石家庄市长安区1301022省会城市1,河北省石家庄市桥东区1301032省会城市1,河北省石家庄市桥西区1301042省会城市1,河北省石家庄市新华区1301052省会城市1,河北省石家庄市井陉矿区1301072省会城市1,河北省石家庄市裕华区1301082省会城市1,河北省井陉县1301216县1,河北省正定县1301236县1,河北省栾城县1301246县1。
Java实现的具有GUI的校园导航系统
Java实现的具有GUI的校园导航系统0.写在前⾯2020-5-18 更新这个东西已经是两年前的了,现在问我具体细节我也不是很清楚了,⽽且现在review两年前的代码感觉写的好烂。
请⼤家有问题下⾯留⾔,不要加我的企鹅了,正在准备考研,⽐较忙。
⼀点建议:1.当时会的⽐较少,对象实例化对于单纯的数据查询来说效率极低⽽且很蠢,我现在更建议使⽤数据库,或者简单点⽤xml or json都可以,建议想写的好⼀点的同学把⾥⾯的数据读写逻辑改⼀改,⽤数据库不⾹吗2.这个是分客户端服务端的,服务端相当于⽤底层⼿撸了⼀个相当简单的tomcat,所有的界⾯都是要从Client进去的。
先开server再开Client,在注册时以邀请码判断是否为管理员。
以管理员⾝份进⼊client之后再去添加信息。
3.如果注册时报access is denied 在Flie的路径下加⼀层⽂件夹,如下⼩⼀个⽉没更新博客了,主要是临近期末,各科的⼤作业都下来了,今天把⾃⼰奋⽃了⼀个礼拜的校园导航系统贴在上⾯,也算满⾜下⾃⼰的⼩成就感('ᴗ' )و实验要求如下:以我校为例,设计⼀个校园导航系统,主要为来访的客⼈提供信息查询。
系统有两类登陆账号,⼀类是游客,使⽤该系统⽅便校内路线查询;⼀类是管理员,可以使⽤该系统查询校内路线,可对校园景点路线可编辑。
说简单点,就是给定⼀个地图数据,然后地图上有好⼏个点,每个点间有距离,这个程序提供了查询两点间最短路径的功能。
当然,你可以为他增加很多细节,⽐如查看景点信息啊,后台的管理啊等等,这些都是加分项。
⽼师推荐使⽤C,其实题⽬也是这么要求的。
但是使⽤C有⼏个⽐较⿇烦的问题:第⼀,要是只实现基本的功能⽤C的话肯定是没什么问题,但是要是想添枝加叶的话,C的代码就没法看了,写起来⿇烦读起来也难受。
第⼆,地图是有地图数据的,要是⽤C的话⼀般⼈都会直接printf N多⾏的地图吧,这也是⼀个⽐较⿇烦的事⼉。
校园导游咨询系统源代码
typedef struct//用来定义一个图 {
infotype vexs[10]; Ad arcs; int vexnum,arcnum; }MGraph; MGraph b;
MGraph InitGraph()//初始化图形 {
MGraph G;
int i;
int j;
G.vexnum=10; G.arcnum=10;
printf(" \n"); printf( 车结束):"
}
4.查看各景点信息 5.退出系统
"诚心为你服务-请选择(输入编号.回 );
//查看各 v;
printf("\n");
printf("编号.景点名称.简介 \n");
#include<stdlib.h>//standard library 标准库头文件
#include<stdio.h>//标注输入输出函数头文件
#include<string.h>//字符函数头文件
#define MAX 10000 //定义路程最远距离符号常量无穷大
#define MAX_VERTEX_NUM 10//定义的景点/顶点数量符号常量 最大顶点数 10 个
for(i=0;i<G.vexnum;i++) for(j=0;j<G.vexnum;j++) G.arcs[j][i].adj=G.arcs[i][j].adj; return G; }
//菜单
void Menu()
{ printf("\n *************************** **************************\n");
旅游信息管理系统程序代码
旅游信息管理程序代码(1)用户信息表:users(2)旅游线路表:lines(3)员工信息表:workers(4)团队信息表:teamsuse travelscreate table users(uno varchar(10) not null,umi varchar(10) not null)create table lines(lno varchar(10) not null,lname varchar(30),lmode varchar(10),lprice int)create table workers(wno varchar(10) not null,wname varchar(10) not null,wsex varchar(2),wmoney int,wtype varchar(10),wyears smalldatetime)create table Teams(tno varchar(10) not null,tname varchar(10) not null,tline varchar(10),tprice int,tday int)insert into users values('09302208','09302208')insert into users values('09302207','09302208')insert into users values('09302223','09302223')insert into users values('09302225','09302225')insert into lines values('0001','沈阳-海口','火车','316')insert into lines values('0002','沈阳-北京','火车','220')insert into lines values('0003','沈阳-哈尔滨','火车','159')insert into lines values('0004','沈阳-拉萨','火车','560')insert into lines values('0005','沈阳-杭州','飞机','640')insert into lines values('0006','沈阳-上海','飞机','299')insert into workers values('0001','李雷','男','5000','全导','6')insert into workers values('0002','韩梅梅','女','5500','地导','6')insert into workers values('0003','林涛','男','4200','地导','5')insert into workers values('0004','李丽','女','4800','全导','4')insert into workers values('0005','王博','男','4600','地导','2')insert into workers values('0006','张明明','男','3800','地导','1')insert into Teams values('0001','星光旅行社','海南五日游','3500','5')insert into Teams values('0002','北方旅行社','北京三日游','2200','3')insert into Teams values('0003','南方旅行社','哈尔滨三日游','1800','3')insert into Teams values('0004','白鹭旅行社','西藏七日游','7400','7')insert into Teams values('0005','时光旅行社','杭州七日游','4000','7')insert into Teams values('0006','北方旅行社','上海五日游','5000','5')用户登陆界面代码Private Sub Command1_Click()Adodc1.RecordSource = "select * from users where uno ='" & Text1.Text & "'" Adodc1.RefreshIf Adodc1.Recordset.EOF ThenMsgBox "没有这个用户,请重新输入正确的用户名", , "错误提示"ElseIf Text2.Text = Adodc1.Recordset.Fields("umi") ThenMsgBox "登录成功!", , "错误提示"Form1.HideForm2.ShowElseMsgBox "你的密码错误,请输入正确的用户密码!", , "错误提示"End IfEnd IfEnd Sub(1)公共模块代码(Public recs As Integer '用于保存线路记录个数Public flag As Integer '用于保存操作方式')(2)旅游线路管理代码Private Sub Form_Activate()DataGrid1.SetFocus '焦点移向DataGrid1控件Call encomm '调用本窗体自定义的encomm过程End SubPrivate Sub Command3_Click() '添加教师记录flag = 1 'flag=1表示添加操作Form4.Show vbModal '调用edt1窗体End SubPrivate Sub Command4_Click() '修改教师记录flag = 2 'flag=2表示修改操作Form4.Show vbModal '调用edt1窗体修改当前教师记录End SubPrivate Sub command6_Click()Form3.HideForm2.ShowEnd SubPrivate Sub Command1_Click()condstr = "" '条件表达式,以下代码根据设置条件框架建立condstr If Trim(Text1.Text) <> "" ThenIf condstr = "" Thencondstr = "lno like '" + Trim(Text1.Text) + "%'"End IfEnd IfIf Trim(Text2.Text) <> "" ThenIf condstr = "" Thencondstr = "lname like '" + Trim(Text2.Text) + "%'"Elsecondstr = condstr + "and lname like '" + Trim(Text2.Text) + "%'"End IfEnd IfIf Trim(Text3.Text) <> "" ThenIf condstr = "" Thencondstr = "lmode like '" + Trim(Text3.Text) + "%'"Elsecondstr = condstr + "and lmode like '" + Trim(Text3.Text) + "%'"End IfEnd IfIf Trim(Text4.Text) <> "" ThenIf condstr = "" Thencondstr = "lprice like '" + Trim(Text4.Text) + "%'"Elsecondstr = condstr + "and lprice like '" + Trim(Text4.Text) + "%'"End IfEnd IfIf condstr <> "" Then '有条件,根据condstr返回相应的记录集Adodc1.RecordSource = "select * from lines where " + condstrAdodc1.RefreshElseAdodc1.RecordSource = "select * from lines"Adodc1.RefreshEnd Ifrecs = Adodc1.Recordset.RecordCountText5.Text = recsIf recs = 0 ThenMsgBox "没有任何满足条件的记录", obokonly, "信息提示"End IfCall encomm '调用本窗体自定义的encomm过程End SubPrivate Sub Command2_Click() '重置,将设置条件框架中的所有输入清空Text1.Text = "": Text2.Text = ""Text3.Text = "": Text4.Text = ""End SubPrivate Sub encomm()'自定义子过程:判断Adodc1中是否存在记录,使相应命令按钮无效或有效If recs = 0 ThenCommand4.Enabled = False: Command5.Enabled = FalseElseCommand4.Enabled = True: Command5.Enabled = TrueEnd IfEnd SubPrivate Sub Command5_Click()If MsgBox("确认要删除吗?", vbOKCancel + vbQuestion, "信息提示") = vbOK Then Adodc1.Recordset.DeleteIf Adodc1.Recordset.EOF ThenAdodc1.Recordset.MoveLastEnd IfEnd IfEnd Sub添加操作代码Private Sub Form_Activate()If flag = 2 Then '修改操作Text1.Text = Trim(Form3.Adodc1.Recordset.Fields("lno")) & ""Text2.Text = Trim(Form3.Adodc1.Recordset.Fields("lname")) & ""Text3.Text = Trim(Form3.Adodc1.Recordset.Fields("lmode")) & ""Text4.Text = Trim(Form3.Adodc1.Recordset.Fields("lprice")) & ""ElseText1 = "": Text2 = "": Text3 = "": Text4 = ""End IfEnd SubPrivate Sub Command2_Click() '取消操作Form4.HideForm2.ShowEnd SubPrivate Sub Command1_Click()If Trim(Text1.Text) = "" ThenMsgBox "加*数据项不能为空,请重新设置", vbOKOnly, "信息提示"Text1.SetFocusExit SubEnd If' If Trim(Text3.Text) <> "" Then' If Not IsDate(Trim(Text3.Text)) Then' MsgBox "交通工具输入不正确,重新输入", vbOKOnly, "信息提示"' Text3.SetFocus' Exit Sub'End IfIf flag = 1 Then '添加操作recs = recs + 1Form3.Adodc1.Recordset.AddNew '添加一个记录End IfForm3.Adodc1.Recordset.Fields("lno") = Trim(Text1.Text)Form3.Adodc1.Recordset.Fields("lname") = Trim(Text2.Text)Form3.Adodc1.Recordset.Fields("lmode") = Trim(Text3.Text)'If Trim((Text3).Text)<> "" Then'Form1.Adodc1.Recordset.Fields("lmode") = Format(Trim(Text3.Text), "飞机")'End IfForm3.Adodc1.Recordset.Fields("lprice") = Trim(Text4.Text)Form3.Adodc1.Recordset.Update '保存记录Unload Me' End If '释放窗体End Sub员工信息代码Private Sub Command1_Click()Adodc2.RecordSource = "select wno as '工号',wname as '名字',wsex as '性别',wtype as '类型',wyears as '年份' from workers where wno='" + DataCombo1.Text + "'"Adodc2.RefreshSet DataGrid1.DataSource = Adodc2DataGrid1.RefreshEnd SubPrivate Sub Command2_Click()If MsgBox("确认要删除吗?", vbOKCancel + vbQuestion, "信息提示") = vbOK ThenAdodc2.Recordset.DeleteIf Adodc2.Recordset.EOF ThenAdodc2.Recordset.MoveLastEnd IfEnd IfEnd Sub团队添加代码Private Sub Command1_Click()Adodc2.RecordSource = "select tno as '序号',tname as '团队名',tline as '线路',tprice as '价格',tday as '时间' from teams where tno='" + DataCombo1.Text + "'"Adodc2.RefreshSet DataGrid1.DataSource = Adodc2DataGrid1.RefreshEnd SubPrivate Sub Command2_Click()If MsgBox("确认要删除吗?", vbOKCancel + vbQuestion, "信息提示") = vbOK ThenAdodc2.Recordset.DeleteIf Adodc2.Recordset.EOF ThenAdodc2.Recordset.MoveLastEnd IfEnd IfEnd SubPrivate Sub Command5_Click()Form6.HideForm2.ShowEnd SubPrivate Sub Form_Load()recs1 = Adodc1.Recordset.RecordCount '求出当前记录数,recs是模块变量Text1.Text = recs1If recs > 0 Then '已有教师时Adodc1.Recordset.MoveLast '移到最后一个记录Adodc1.Recordset.MoveFirst '移到开头记录End IfEnd Sub用户注册界面代码Private Sub Command1_Click()'判断新添加的用户名是否为空If Text1.Text = "" ThenMsgBox "请输入用户名!"Text1.SetFocusExit SubEnd If'查询在用户信息表中是否存在出入的用户mandType = adCmdTextAdodc1.RecordSource = "select*from users where uno ='" & Trim(Text1.Text) & "'" Adodc1.Refresh'如果存在,则返回If Adodc1.Recordset.EOF = False ThenMsgBox "已经存在此用户名,请您重新输入!"Text1.SetFocusText1.Text = ""Exit Sub'判断输入的密码是否为空ElseIf Text2.Text = "" ThenMsgBox "请输入密码!"Text2.SetFocusExit SubEnd IfEnd If'判断输入的确认密码是否为空If Text3.Text = "" ThenMsgBox "请输入确认密码!"Text3.SetFocusExit SubEnd If'判断密码与确认密码是否一致If Text2.Text = Text3.Text Then'向数据表中添加新用户Adodc1.Recordset.AddNewAdodc1.Recordset.Fields("uno") = Trim(Text1.Text)Adodc1.Recordset.Fields("umi") = Trim(Text2.Text)Adodc1.Recordset.Fields("umi") = Trim(Text3.Text)Adodc1.Recordset.UpdateAdodc1.RefreshMsgBox "恭喜,您已经注册成功!"Text2.SetFocusText3.SetFocusElseMsgBox "对不起,您的密码和确认密码不一致,请重新输入!"Text3.Text = ""Text3.SetFocusExit SubEnd IfEnd SubPrivate Sub Command2_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""End Sub用户修改界面代码Private Sub Command1_Click()'判断新添加的用户名是否为空If Text1.Text = "" ThenMsgBox "请输入用户名!"Text1.SetFocusExit SubEnd If'查询在用户信息表中是否存在出入的用户mandType = adCmdTextAdodc1.RecordSource = "select*from users where uno ='" & Trim(Text1.Text) & "'" Adodc1.Refresh'如果存在,则返回If Adodc1.Recordset.EOF = False ThenMsgBox "已经存在此用户名,请您重新输入!"Text1.SetFocusText1.Text = ""Exit SubEnd IfIf Text2.Text = "" ThenMsgBox "请输入旧密码!"Text2.SetFocusExit SubEnd If'判断输入旧密码是否为空If Text3.Text = "" ThenMsgBox "请输入新确认密码!"Text3.SetFocusExit SubEnd If'判断新密码是否为空If Text4.Text = "" ThenMsgBox "请输入确认密码!"Text4.SetFocusExit SubEnd If'判断新密码与确认密码是否一致If Text3.Text = Text4.Text Then'向数据表中添加新用户Adodc1.Recordset.AddNewAdodc1.Recordset.Fields("uno") = Trim(Text1.Text)Adodc1.Recordset.Fields("umi") = Trim(Text2.Text)Adodc1.Recordset.Fields("umi") = Trim(Text3.Text)Adodc1.Recordset.Fields("umi") = Trim(Text4.Text)Adodc1.Recordset.UpdateAdodc1.RefreshMsgBox "恭喜您,您已经修改成功!"Text2.SetFocusText3.SetFocusForm9.HideForm1.ShowElseMsgBox "对不起,您的新密码和确认密码不一致,请重新输入!" Text4.Text = ""Text4.SetFocusExit SubEnd IfEnd SubPrivate Sub Command2_Click()Text1.Text = ""Text2.Text = ""Text3.Text = ""Text4.Text = ""End Sub。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
p->adjvex=j;
p->nextarc=G->adjlist[i].firstarc;
G->adjlist[i].firstarc=p;
fclose(fp);
}
//将邻接矩阵改为邻接表
void MatToList(MGraph g,ALGraph *&G)
{
int i,j;
ArcNode *p;
G=(ALGraph *)malloc(sizeof(ALGraph));
for(i=0; i<g.n; i++)
}
}
G->n=g.n;
G->e=g.e;
}
//查找相应景点的介绍
void FindIntroduction(MGraph &g)
{
int d;
int x;
while(1)
{
printf("请输入要查询的景点的编号:");
}
while(1);
if(u==v)
{
printf("\n您输入的起点与终点相同!\n\n");
}
else if(strcmp(g.vex[u].name,"无")==0||strcmp(g.vex[v].name,"无")==0)
{
printf("error open!");
exit(0);
}
for(i=0; i<M; i++)
{
for(j=0; j<M; j++)
{
fscanf(fp,"%d",&g.edges[i][j]);
printf("该景点不存在!\n请重新输入!\n");
scanf("%d",&u);
}
}
while(1);
printf("请输入你要去景点的编号:");
scanf("%d",&v);
do
{
int i,j,k,s,u,v;
printf("请输入你所在景点的编号:");
scanf("%d",&u);
do
{
if(u>=0&&u<=N-1)
break;
else
{
{
printf("\n 从%s到%s距离最短的路径为:",g.vex[i].name,g.vex[j].name);
}
if(choose==1)
while(1)
{
if(d==0||d==1)
break;
else
{
printf("输入的数据不合理,请重新输入:")
{
if(v>=0&&v<=N-1)
break;
else
{
printf("该景点不存在!\n请重新输入!\n");
scanf("%d",&v);
}
char introduction[500];
} VertexType;
//图结构信息
typedef struct
{
int edges[100][100];
int n,e;
VertexType vex[100];
} MGraph;
//
typedef struct ANode
printf("%s\n\n",g.vex[x].introduction);
printf("是否继续查询?\n");
printf("0.确定 1.取消\n");
scanf("%d",&d);
}
}
printf("\n\n");
fclose(fp);
}
void ReadData(MGraph &g)
{
FILE *fp;
int i = 0;
if ((fp=fopen("data.txt", "r"))==NULL)
scanf("%d",&x);
if(x>=0&&x<N)
{
ReadData(g);
printf("\n景点的名称:%s\n",g.vex[x].name);
printf("景点的简介:");
G->adjlist[i].firstarc=NULL;
for(i=0; i<g.n; i++)
for(j=g.n-1; j>=0; j--)
{
if(g.edges[i][j]!=INF)
{
exit(0);
}
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
//printf("%d ",g.edges[i][j]);
fprintf(fp,"%d ",g.edges[i][j]);
{
printf("\n 从%s到%s时间最少的路径为:",g.vex[i].name,g.vex[j].name);
}
if(choose==2)
}
else
{
printf("此景点不存在!\n请重新输入\n");
}
}
}
//输出两个顶点间的最短路径
void Dispath(MGraph &g,int A[][100],int path[][100])
{
printf("废弃景点!\n");
}
else if(u>=0&&u<N&&v>=0&&v<N)
{
int choose;
printf("请选择您的需求:\n");
printf("0.距离最短\n");
{
printf("\n 从%s到%s换乘最少的路径为:",g.vex[i].name,g.vex[j].name);
}
k=path[i][j];
scanf("%d",&d);
}
}
if(d==0)
continue;
else
break;
i++;
}
N = i;
fclose(fp);
return;
}
void WriteData(MGraph &g)
{
FILE *fp;
int i=0;
if ((fp=fopen("data.txt", "w"))==NULL)
{
printf("error open!");
exit(0);
}
while(fscanf(fp,"%d %s %s",&g.vex[i].num,g.vex[i].name,g.vex[i].introduction)!= EOF)
{
FILE *fp;
char na[100];
char str1[100],str3[100];
int N,M;
int a[100][100];
using namespace std;
//景点信息
typedef struct
{
int num;
char name[100];
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
#define INF 32767
int visited[100],password; //password为后台管理的登录密码
for(j=0; j<g.n; j++)
{
if(A[i][j]!=INF&&i!=j&&u==i&&v==j)
{
if(choose==0)
{
AdjList adjlist;
int n,e;
} ALGraph;
MGraph g;
//将文本文件打开并输出文件中的内容
void ReadData1(MGraph &g)
{
M=N;
FILE *fp;
int i = 0,j;
if ((fp=fopen("path.txt", "r"))==NULL)