数据结构与算法综合课程设计——校园导航系统

2023-05-16

1、设计目的 

应用所学的数据结构与算法知识完成一个具有一定实际意义的应用程序的设计、编码与调试,锻炼实践动手能力,提高编程水平。

2、设计内容 

课题名称:校园导航系统

问题描述:校园导航系统用无向网表示你所在学校的校园景点平面图,至少包括15个以上的场所,图中顶点表示主要景点,存放景点的名称、简介等信息,图中的边表示景点间的道路,存放路径长度等信息,提供有关景点介绍、游览路径等功能。

功能要求:

(1)查询各景点的相关信息;

(2)查询图中任意两个景点间的最短路径;

(3)建立菜单与用户进行交互。

(4)其它扩展系统功能。

3、综合课程设计报告内容要求

1.  绪论:系统开发的意义和开发环境。

2. 系统设计: 

(1)系统概要设计:系统所采用的数据结构,功能模块介绍等。

(2)系统详细设计:各功能模块的实现方法描述(可以采用文字和图的形式描述,描述过程中可以穿插少量关键代码,但不要贴大段的代码)。

3. 系统实现: 展示各种功能的运行情况(采用运行截图+文字描述的形式)。

4、开发意义

大学校园通常具有面积大、开放性强、建筑布局分散、各类设施复杂等特点。校园地理信息相对来说比较复杂,各类校园信息越来越难在纸质地图上进行详细的表示。各高校每年都会招收一批新生,而且随着校园的扩建以及对外交流的增多,越来越多的校外人员来到高校校园内参观。这些人对校园不是很熟悉,他们需要花时间去熟悉校园内部构造。随着互联网技术的发展,网络资源利用率得到大幅提升,GPS导航系统的使用也越发广泛。像百度地图、高德地图,打破了传统纸质地图的限制,存储的信息量比传统的纸地图要大得多,查询起来更快速直观,而且也符合时代的发展趋势。所以,开发校园导航系统已经成为必然,其能够降低工作量,大大提高查询效率,有助于高校学生及来访人员快速、完整、形象地了解校园地理布局及主要信息。

5、系统概要设计

5.1系统所采用的数据结构

该系统采用迪杰斯特拉求单源最短路算法,设计出重庆电子工程职业学院的校园导航,该导航系统,遍历所有景点及查询两景点间的最短路径都是通过迪杰斯特拉求单源最短路算法来实现,将各景点间的权值存入二维数组map[ ]中,通过迪杰斯特拉算法,每次找距离开始点最近的点,在通过这个点去更新别的边权值,同时将更新的点存储,放入栈中输出即为到终点所走路径,最后求出学校一个景点到另一个景点的最短距离和路线。

5.2学校地图

 

5.3邻接矩阵

邻接矩阵的逻辑结构分为两部分:V和E集合。把重庆电子工程职业学院的各给个景点用一个一维数组存放图中所有顶点数据;用一个二维数组存放顶点间关系的数据。 

5.4邻接表

邻接表是一种数组与链表相结合的存储方式,把重庆电子工程职业学院的所有景点存放在邻接表中方便查询。 

6、功能模块介绍

1.学校简介

在此菜单下,用户可以查看学校的简介。

2.查询所有路径

在此菜单下,用户输入当前位置的景点编号或者景点名称,该系统就会返回当前位置到其余所有景点的路径和距离。

3.查询景点信息

在此菜单下,用户输入想了解的景点编号或者景点名称,就可以查看到对应景点的详细信息。

4.查询最短路径

在此菜单下,用户输入景点开始位置的编号和景点终点位置的编号或者用户输入景点开始位置的名称和景点终点位置的名称就可以查看,两个景点之间的路径和距离。

5.退出

当用户输入 4就可以退出校园导航系统。

7、源码

1.创建NavigateGraph.cpp文件

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#define inf 99999999
using namespace std;
void SystemMenu();//系统菜单
void BeginMenu();//开始菜单 
int map[900][900],book[900],dis[900];
struct A		//定义结构体存储景点信息 
{
	char name[100];
	char DetailMeg[800];
}q[100];
void cuntu()		 
{
	int i,j;
	strcpy(q[1].name,"南门");strcpy(q[1].DetailMeg,"学校南门附近有个公交站,可以乘坐公交车去熙街、u城天街玩,还可以去大学城轻轨站。南门附近有很多的大学,从南门出发可以去重庆师范大学、重庆医科大学。");
	strcpy(q[2].name,"博远厅");strcpy(q[2].DetailMeg,"博远厅教室大,有超大的LED显示屏、装饰品和各种设备,是一个开展活动很好的选择场所,所以学校的各种活动、各种讲座和会议都在博远厅举办。");
	strcpy(q[3].name,"西门");strcpy(q[3].DetailMeg,"西门附近有很多景区,可以去木鱼石公园、濯清园, 中和园、百草园、崖香坡、素问园、成德广场、CCAT美术馆、重庆市人类生命与健康博物馆玩。"); 
	strcpy(q[4].name,"12-15栋教学楼");strcpy(q[4].DetailMeg,"12-15栋教学楼各种教学设备齐全,环境优美。主要是人工智能与大数据学院和电子与物联网学院学生上课的场所,老师办公的场所。");
	strcpy(q[5].name,"7栋教学楼");strcpy(q[5].DetailMeg,"7栋教学楼各种教学设备齐全,教室宽大明亮,所以学校的各种考试都会在7栋进行,并且团日活动和各种学生会的活动也会在这里举办。"); 
	strcpy(q[6].name,"学子广场");strcpy(q[6].DetailMeg,"学校的大型活动通知一般都会帖在学子广场,每天晚上都会有帅哥美女在这里唱歌跳舞,也可以在这里给对象表白,还可以卖鲜花。");
	strcpy(q[7].name,"篮球场");strcpy(q[7].DetailMeg,"篮球场非常的宽大,同学们不仅可以在这里打篮球,而且学校的大型活动也会在这里举办,比如校园歌手大赛、开学典礼等活动。");
	strcpy(q[8].name,"足球场");strcpy(q[8].DetailMeg,"足球场非常宽敞、宏伟、各种体育设备齐全,同学们不仅可以在这里踢足球,而且还可以在这里锻炼身体,每天晚上,会有很多人在这里跑步。");
	strcpy(q[9].name,"南区宿舍");strcpy(q[9].DetailMeg,"南区宿舍包含1栋宿舍楼到8栋宿舍楼和19栋宿舍楼,宿舍里面坏境优美、舒适,宿舍里的各种生活用品齐全,是一个休息的好地方。");
	strcpy(q[10].name,"南区食堂");strcpy(q[10].DetailMeg,"食堂包含三层楼,每一层楼都有二十几家店,里面菜品丰富、美味可口、价格便宜、环境舒适,还有各种各样的小吃和水果店、蛋糕店。");
	strcpy(q[11].name,"医务室");strcpy(q[11].DetailMeg,"学校医务室宽大,医生的医术水平高,价格便宜,学生生病了就可以去医务室看病,有了医务室学生看病就更加的方便。");
	strcpy(q[12].name,"北区食堂");strcpy(q[12].DetailMeg,"食堂外观大气,宏伟,包含三层楼,每一层楼都有十几家店,里面菜品丰富、美味可口、价格便宜、环境舒适,还有各种各样的小吃和水果店。");
	strcpy(q[13].name,"8-11栋教学楼");strcpy(q[13].DetailMeg,"8-11栋教学楼是一个四合院,里面各种教学设备齐全,主要是健康管理学院和经济管理学校学生上课的地方和辅导员办公的地方。");
	strcpy(q[14].name,"图书馆");strcpy(q[14].DetailMeg,"学校的图书馆里面有各种各样的书,里面有桌椅、空调、绿色植物等。总之图书馆坏境优美、舒适是一个看书的好地方。");
	strcpy(q[15].name,"东门");strcpy(q[15].DetailMeg,"东门外面有一条好吃街,街上有各种各样的小吃,还有理发店,学生都会选择去东门理发,购物,还有重庆建筑工程职业学院也在东门对边。");
	for(i=1;i<=15;i++)
		for(j=1;j<=15;j++)
		{
			if(i==j)
				map[i][j]=0;
			else
				map[i][j]=inf;
		}
//**************存储图各边信息***************
	map[1][2]=200;map[1][3]=400;map[1][4]=200;map[1][7]=400;
	map[2][1]=200;map[2][3]=200;;map[2][4]=100; 
	map[3][1]=400;map[3][2]=200;map[3][4]=600;map[3][6]=700;
	map[4][1]=200;map[4][2]=100;map[4][4]=600;map[4][6]=700;
	map[5][4]=100;map[5][6]=100;
	map[6][3]=700;map[6][4]=100;map[6][5]=100;map[6][8]=300;map[6][9]=200;map[6][10]=100;map[6][11]=300;
	map[7][1]=400;map[7][8]=200;
	map[8][6]=300;map[8][9]=100;map[8][10]=200;map[8][12]=1100;
	map[9][8]=100;map[9][10]=100;map[9][11]=200;map[9][12]=700;
	map[10][6]=100;map[10][8]=200;
	map[11][6]=300;map[11][9]=200;map[11][10]=100;map[11][12]=900;map[11][15]=1600;
	map[12][8]=1100;map[12][9]=700;map[12][100]=900;map[12][12]=900;map[12][15]=600;
	map[13][12]=100;map[13][14]=100;map[13][15]=600;
	map[14][13]=100;
	map[15][11]=160;map[15][12]=600;map[15][13]=600;
	for(i=1;i<=15;i++)
		for(j=1;j<=15;j++)
			map[j][i]=map[i][j];
}

 2.创建NavigateSystem.cpp文件

#include "NavigateGraph.cpp"
//**********景点列表************** 
void PlaceList()			 
{
	system("cls");//清屏 
	printf("\n\n\n");
	printf("\t\t\t\t\t * * * * * * * * * * * * * * ** * * * * * * * * * * * * * *\n");
	printf("\t\t\t\t\t * *                     *景点列表*                     * *\n");
	printf("\t\t\t\t\t * ****************************************************** *\n");
	printf("\t\t\t\t\t * *                                                    * *\n");
	printf("\t\t\t\t\t * *  <1>南门          <2>博远厅          <3>西门       * *\n");
	printf("\t\t\t\t\t * *                                                    * *\n");
	printf("\t\t\t\t\t * * <4>12-15栋教学楼  <5>7栋教学楼      <6>学子广场    * *\n");
	printf("\t\t\t\t\t * *                                                    * *\n");
	printf("\t\t\t\t\t * * <7>篮球场         <8>足球场          <9>南区宿舍   * *\n");
	printf("\t\t\t\t\t * *                                                    * *\n");
	printf("\t\t\t\t\t * * <10>南区食堂      <11>医务室         <12>北区食堂  * *\n");
	printf("\t\t\t\t\t * *                                                    * *\n");
	printf("\t\t\t\t\t * * <13>8-11栋教学楼  <14>图书馆         <15>东门      * *\n");
	printf("\t\t\t\t\t * *                                                    * *\n");
	printf("\t\t\t\t\t * ****************************************************** *\n");
	printf("\t\t\t\t\t * * * * * * * * * * * * * * ** * * * * * * * * * * * * * *\n");
	printf("\n\n\n"); 
}
//***********查询方式************* 
int FindMethods(int x)
{
	int i;
	system("cls");//清屏 
	printf("\n");
	printf("\t\t\t\t\t* * * * * * * * * * * * * * ** * * * * * * * * * * * * * *\n");
	printf("\t\t\t\t\t* *                       查询方式                     * *\n");
	printf("\t\t\t\t\t* * * * * * * * * * * * * * ** * * * * * * * * * * * * * *\n");
	printf("\t\t\t\t\t* * * * * * * * * * * * * * ** * * * * * * * * * * * * * *\n");
	printf("\t\t\t\t\t* *                  1、按景点编号查询                 * *\n");
	printf("\t\t\t\t\t* *                  2、按景点名称查询                 * *\n");
	printf("\t\t\t\t\t* *                  0、返回                           * *\n");
	printf("\t\t\t\t\t* * * * * * * * * * * * * * ** * * * * * * * * * * * * * *\n");
	printf("请输入您的选择:");
	scanf("%d",&i);
	return i;
} 
 
//*************查询景点编号 ***************8 
int ByFindNumber(char s[])
{
	int f=0,i;
	for(i=1;i<=15;i++)
	{
		if(strcmp(q[i].name,s)==0)
			return i;
	}
	return -1;
}
//*************迪杰斯特拉求最短路径,并输出路线*********  
void Dijkstra(int v0,int s)		
{
	int min,i,j,u,v; 
	int p[110],l[110];
	memset(p,-1,sizeof(p));
	memset(l,0,sizeof(l));
	memset(book,0,sizeof(book));
	for(i=1;i<=15;i++)
	{
		dis[i]=map[v0][i];
		if(dis[i]<inf)//v0能直接到达,即上一站点为v0 
			p[i]=v0;
	}	
	book[v0]=1;
	for(i=1;i<15;i++)
	{
		min=inf;
		for(j=1;j<=15;j++)//每次找出距离v0最近点 
		{
			if(book[j]==0&&dis[j]<min)
			{
				min=dis[j];
				u=j;
			}
		}
		book[u]=1;//标记该点 
		for(v=1;v<=15;v++)
		{
			if(book[v]==0&&dis[v]>dis[u]+map[u][v])//通过最近点更新其他边 
			{
				p[v]=u;	//存储更新的边,即为路线 
				dis[v]=dis[u]+map[u][v];
			}
		}
	}
	v=s;
	i=1;
	while(p[v]!=v0)	//将路线存入栈中,正序输出 
	{
		l[i++]=p[v];
		v=p[v];
	}
	printf("\n");
	u=i-1;
	printf("路线为:\n");
	printf("%s--->",q[v0].name);
	for(i=u;i>=1;i--)
		printf("%s--->",q[l[i]].name); 
	printf("%s\n",q[s].name);
	printf("最短路径长度为:%d 米\n",dis[s]);
}
//**********系统菜单 ****************** 
void SystemMenu()
{
	int x,m,n,u,v,i,j;
	char c[100];
	system("cls");			//清屏 
	printf("\n\n\n");
	printf("\t\t\t\t\t **********************************************************\n");
	printf("\t\t\t\t\t **                                                      **\n");
	printf("\t\t\t\t\t **              重庆电子工程职业学院导航系统            **\n");
	printf("\t\t\t\t\t **                                                      **\n");
	printf("\t\t\t\t\t **********************************************************\n");
	printf("\t\t\t\t\t **********************************************************\n");
	printf("\t\t\t\t\t *****************************菜单*************************\n");
    printf("\t\t\t\t\t **             1、查询所有路径  2、查询景点信息         **\n");
	printf("\t\t\t\t\t **             3、查询最短路径  4、返回                 **\n");
	printf("\t\t\t\t\t **********************************************************\n");
	printf("\n\n\n");
    printf("请输入您选择服务菜单的编号:");
	while(1)//实现输入错误可重新输入 
	{
		scanf("%d",&x);
		//**查询所有路径** 
		if(x==1) 
		{
			v=FindMethods(x);//调用查询方式的方法 
			while(1)
			{
				if(v==1)//按编号查询 
				{
					PlaceList();//调用景点列表方法 
					printf("请输入当前所在景点编号:\n"); 
					scanf("%d",&n);
					while(1)
					{
						if(n>=1&&n<=15)
						{
							for(i=1;i<=15;i++)
							{
								if(i!=n)
									Dijkstra(n,i);
							}
							printf("\n\n按回车键返回至导航系统界面\n\n");
							getchar();getchar();
							SystemMenu();//调用系统菜单方法 
							break;
						}
						else
						{
							printf("\n该景点不存在!请重新输入景点编号:\n");
							scanf("%d",&n);
						}
					}
					break;
				}
				else if(v==2)//按名称查询 
				{
					PlaceList();//调用景点列表方法 
					printf("请输入当前所在景点名称:\n");
					scanf("%s",c);
					n=ByFindNumber(c);
					while(1)
					{
						if(n>=1&&n<=15)
						{
							for(i=1;i<=15;i++)
							{
								if(i!=n)
									Dijkstra(n,i);
							}
							printf("\n\n按回车键返回至导航系统界面\n\n");
							getchar();getchar();
							SystemMenu();//调用系统菜单方法 
							break;
						}
						else
						{
							printf("\n该景点不存在!请重新输入景点名称:\n");
							scanf("%s",c);
							n=ByFindNumber(c);
						}
					}
					break;
				}
				else if(v==0)//返回 
				{
					SystemMenu();//调用系统菜单方法 
					break;
				}
				else
				{
					printf("\n\n输入错误请重新输入!\n\n");
					scanf("%d",&v);
				}
			}
			break;
		}
		//**查询景点信息** 
		else if(x==2)
		{
			v=FindMethods(x);//调用查询方式的方法 
			while(1)
			{
				if(v==1)//按编号查询 
				{
					PlaceList();//调用景点列表方法 
					printf("请输入景点编号:\n"); 
					scanf("%d",&n);
					while(1)
					{
						if(n>=1&&n<=15)
						{
							printf("\n\n%s\n\n%s\n\n",q[n].name,q[n].DetailMeg);
							printf("按回车键返回至导航系统界面\n\n");
							getchar();getchar();
							SystemMenu();//调用系统菜单方法 
							break;
						}
						else
						{
							printf("\n该景点不存在!请重新输入景点编号:\n");
							scanf("%d",&n);
						}
					}
					break;
				}
				else if(v==2)//按名称查询 
				{
					PlaceList();//调用景点列表方法 
					printf("请输入景点名称:\n");
					scanf("%s",c);
					n=ByFindNumber(c);
					while(1)
					{
						if(n>=1&&n<=15)
						{
							printf("\n\n%s\n\n%s\n\n",q[n].name,q[n].DetailMeg);
							printf("按回车键返回至导航系统界面\n\n");
							getchar();getchar();
							SystemMenu();//调用系统菜单方法 
							break;
						}
						else
						{
							printf("\n该景点不存在!请重新输入景点名称:\n");
							scanf("%s",c);
							n=ByFindNumber(c);
						}
					}
					break;
				}
				else if(v==0)//返回 
				{
					SystemMenu();//调用系统菜单方法 
					break;
				}
				else
				{
					printf("\n\n输入错误请重新输入!\n\n");
					scanf("%d",&v);
				}
			}
			break;
		}
		//**查询最短路径** 
		else if(x==3)//查询最短路径
		{
			v=FindMethods(x);//调用查询方式的方法 
			while(1)
			{
				if(v==1)//按编号查询 
				{
					PlaceList();//调用景点列表方法 
					printf("请输入起点景点编号:\n");
					scanf("%d",&n);
					printf("\n请输入终点景点编号:\n");
					scanf("%d",&m);
					while(1)
					{
						if(n>=1&&n<=15&&m>=1&&m<=15&&n!=m)
						{
							Dijkstra(n,m);
							printf("\n\n按回车键返回至导航系统界面\n\n");
							getchar();getchar();
							SystemMenu();//调用系统菜单方法 
							break;
						}
						else
						{
							printf("\n输入不合法!请重新输入!\n\n");
							printf("请输入起点景点编号:\n");
							scanf("%d",&n);
							printf("\n请输入终点景点编号:\n");
							scanf("%d",&m);
						}
					}
					break;
				}
				else if(v==2)//按名称查询 
				{
					PlaceList();//调用景点列表方法 
					printf("请输入起点景点名称:\n");
					scanf("%s",c);
					n=ByFindNumber(c);
					printf("\n请输入终点景点名称:\n");
					scanf("%s",c);
					m=ByFindNumber(c);
					while(1)
					{
						if(n>=1&&n<=15&&m>=1&&m<=15&&n!=m)
						{
							Dijkstra(n,m);
							printf("\n\n按回车键返回至导航系统界面\n\n");
							getchar();getchar();
							SystemMenu();//调用系统菜单方法 
							break;
						}
						else
						{
							printf("\n输入不合法!请重新输入!\n\n");
							printf("请输入起点景点名称:\n");
							scanf("%s",c);
							n=ByFindNumber(c);
							printf("\n请输入终点景点名称:\n");
							scanf("%s",c);
							m=ByFindNumber(c);
						}
					}
					break;
				}
				else if(v==0)//返回 
				{
					SystemMenu();//调用系统菜单方法 
					break;
				}
				else
				{
					printf("\n\n输入错误请重新输入!\n\n");
					scanf("%d",&v);
				}
			}
			break;
		}
		else if(x==4)//返回 
		{
			BeginMenu();//调用开始菜单方法 
			break;
		}
		else
		{
			printf("\n\n输入错误!请重新输入!\n");
		}
	}
	
}
//**************开始菜单************ 
void BeginMenu()
{
	system("cls");		//清屏 
	int m;
	printf("\n\n\n\n\n");
	printf("\t\t\t    ******************************************************\n");
	printf("\t\t\t    *---------------------Welcome!-----------------------*\n");
	printf("\t\t\t    *----------------------------------------------------*\n");
	printf("\t\t\t    *-------------重庆电子工程职业学院导航系统-----------*\n");
	printf("\t\t\t    *----------------------------------------------------*\n");
	printf("\t\t\t    *--------------------1、进入导航系统-----------------*\n");
	printf("\t\t\t    *----------------------------------------------------*\n");
	printf("\t\t\t    *--------------------2、学校简介---------------------*\n");
	printf("\t\t\t    *----------------------------------------------------*\n");
	printf("\t\t\t    *--------------------3、退出系统---------------------*\n");
	printf("\t\t\t    *----------------------------------------------------*\n");
	printf("\t\t\t    ******************************************************\n");
    printf("请输入您选择服务的编号:");
	scanf("%d",&m);
	while(1)
	{
		if(m==1)// 进入导航系统
		{
			SystemMenu();//调用系统菜单方法 
			break;
		}
		else if(m==2)//学校简介 
		{
			system("cls");
			printf("\n\n\n\n\n");
			printf("\t\t\t\t\t    ***********************************************************\n");
			printf("\t\t\t\t\t    **************************学校简介*************************\n");
			printf("\t\t\t\t\t    ***********************************************************\n");
			printf("\t\t\t\t\t    ***********************************************************\n");
			printf("\t\t\t\t\t    *                                                         *\n");
			printf("\t\t\t\t\t    * 重庆电子工程职业学院,建于1965年,占地2606亩,位于      *\n");
			printf("\t\t\t\t\t    *                                                         *\n");
			printf("\t\t\t\t\t    * 重庆市沙坪坝区大学城,重庆电子工程职业学院简称“重电”,*\n");
			printf("\t\t\t\t\t    *                                                         *\n");
			printf("\t\t\t\t\t    * 由重庆市教育委员会和重庆市经济和信息化委员会共建高校,  *\n");
			printf("\t\t\t\t\t    *                                                         *\n");
			printf("\t\t\t\t\t    * 是国家示范性高等职业院校、教育部现代学徒制试点高校。    *\n");
			printf("\t\t\t\t\t    *                                                         *\n");
			printf("\t\t\t\t\t    ***********************************************************\n");
			printf("\n\n\n\n\n");
			printf("按回车键返回\n");
			getchar();getchar();
			SystemMenu();//调用系统菜单方法 
			break;
		}
		else if(m==3)//退出系统 
		{
			system("cls");
			printf("\n\n\n\n\n");
			printf("\t\t\t\t\t∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴\n");
			printf("\t\t\t\t\t∴∵                      ∴∵\n");
			printf("\t\t\t\t\t∴∵      欢 迎 使 用     ∴∵\n");
			printf("\t\t\t\t\t∴∵                      ∴∵\n");
			printf("\t\t\t\t\t∴∵∴∵∴∵∴∵∴∵∴∵∴∵∴\n");
			printf("\n\n\n"); 
			break;
		}
		else//输入错误 
		{
			printf("\n\n\n\t\t输入错误请重新输入!\n\n\n\n");
			scanf("%d",&m); 
		}
	}	
}
int main(void)
{
	system("mode con cols=150 lines=200");//改变运行窗口大小 
	cuntu(); 
	BeginMenu();//调用开始菜单方法 
	return 0;
}

8、运行效果

9、实验总结

    通过数据结构与算法课程,我学会了如何写一个精简、健壮的程序。一个好的程序应该是一个所占空间小、运行时间短的程序。要做出一个好的程序则应该通过对算法与数据结构的时间复杂度和空间复杂度进行实现。本次实训培养了我独立思考的能力,提高了我的动手操作水平。在具体设计操作中,我巩固了本学期所学的数据结构与算法的理论知识,进一步提高了自己的编程能力。同时我意识到自己在今后的学习生活中,一定要勤于思考,扎实掌握理论知识,灵活运用课上所学的东西。总之,通过本次实训,让我学会了很多知识。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据结构与算法综合课程设计——校园导航系统 的相关文章

  • 【python3】简易双因子Radius认证服务器,带UI界面

    需要将dictionary rfc2865放在运行的同级目录下 coding utf 8 from tkinter import from tkinter ttk import from tkinter import scrolledtex
  • 信而泰测试方案,助力客户打造网络安全防护“金钟罩”

    一 网络安全行业面临的挑战 据 Cybercrime Magazine 在最近一份报告中称 xff0c 仅2021年 xff0c 黑客攻击和各种网络犯罪就给全球经济造成了超过6万亿美元的损失 xff0c 预计到2025年 xff0c 此类犯
  • BGP BFD测试案例

    一 BFD原理 1 1 BFD技术简介 一种全网统一 检测迅速 监控网络中链路或者IP路由的双向转发连通状况 xff0c 并未上层应用提供服务的技术 1 2 BFD会话建立方式和监测机制 BFD的标识符 xff1a xff08 1 xff0
  • 数据中心典型测试场景浅析

    数据中心概述 数据中心泛指拥有众多服务器的大型机房 xff0c 通过利用通信运营商已有的互联网通信线路 带宽资源 xff0c 建立标准化的数据中心机房环境 xff0c 具有运行速度快 存储量大 安全性高等特点 数据中心东西向流量的占比更大
  • Vxlan协议原理及基本配置——网络测试仪实操手册

    一 Vxlan协议原理 1 Vxlan协议相关术语 一 缩略语 OSI中的概念 NVE Network Virtualization Edge 网络虚拟边缘节点 VTEP VXLAN Tunnel Endpoints xff0c VXLAN
  • 如何模拟VTEP下大量VM主机ARP消息——网络测试仪实操

    模拟VTEP下大量VM主机ARP消息 xff0c 按照下面的步骤 xff1a 1 打开 Renix 软件 xff0c 连接机框并预约测试端口 xff1b 2 创建一条RAW流量 xff08 Binding流量也可以 xff0c 这里用RAW
  • 信而泰自动化OSPFv2测试小技巧

    OSPFv2协议简介 OSPFv2 xff08 开放式最短路径优先版本2 xff09 是互联网协议 xff08 IP xff09 网络的路由协议 它使用链路状态路由 xff08 LSR xff09 算法 xff0c 并且属于在单个自治系统
  • OpenFlow协议原理及基本配置-网络测试仪实操

    一 OpenFlow协议原理 1 OpenFlow技术背景 转发和控制分离是SDN网络的本质特点之一 在SDN网络架构中 xff0c 控制平面与转发平面分离 xff0c 网络的管理和状态在逻辑上集中到一起 xff0c 底层的网络基础从应用中
  • 如何使用向导创建Openflow 流表-网络测试仪实操

    使用向导创建Openflow中的FlowTable xff0c 按照下面的步骤 xff1a 1 打开Renix软件 xff0c 连接机框并预约测试端口 xff1b 2 配置一个IPv4接口 3 配置一个OpenFlowController绑
  • 信而泰OLT使用介绍-网络测试仪实操

    一 OLT产品介绍 1 概述 PON作为FTTX网络发展的核心技术 xff0c 局端设备OLT尤其重要 本文档中主要介绍OLT的功能特性 业务配置 2 基本功能特性 2 1大容量和高集成度 ZXA10 C300集光接入 数据交换 路由处理于
  • 信而泰耦合测试-网络测试仪实操

    一 耦合测试原理 1 产生背景 常用测试无线设备过程中 xff0c 将无线设备置于屏蔽箱中 xff0c 通过无线网卡连接并运行iperf等类似软件的方式检测所述无线设备的吞吐量 相关技术中将所述无线设备置于所述屏蔽箱中的检测方法 xff0c
  • 【python】程序绑定PC和时间戳做定期授权码

    取磁盘编码或者网卡编码 43 时间戳16位格式 关于时间戳 xff0c 当前简单的实现是年月日转成对应的16位 xff0c 比如 23 03 28 gt 173E xff08 日先直接整除2 xff0c 每月不会超过31天 xff0c 整除
  • 信而泰ALPS 用户管理——网络测试仪实操

    本文介绍了如何在ALPS平台上Step By Step进行用户管理 用户管理介绍 设备在出厂时 xff0c 提供了一个默认管理员账号 xff0c 该账号为admin admin 管理员账号除了可用于测试之外 xff0c 还具有用户管理权限
  • 信而泰RENIX 802.1ag功能介绍-网络测试仪实操

    一 EOAM概述 1 以太网 1 1以太网优点 简单易用 价格低廉 高拓展性 大势所趋 xff0c 一统天下 1 2以太网缺点 可管理性差 定位故障手段少 定位故障速度慢 维护成本高 2 以太网OAM EOAM 为运营商服务 提高以太网可靠
  • 信而泰BGP Flow Spec防攻击测试解决方案

    随着互联网行业的迅猛发展 xff0c 越来越多的业务都从线下走到了线上 互联网在给大家生活带来便利的同时也面临着防护自身安全的各种挑战 DoS DDoS攻击是对网络安全的重大威胁 xff0c 攻击者通过多个控制端控制成千上万的攻击设备对同一
  • 信而泰X1多速率板卡写入SN号和ID——网络测试仪实操

    一 X1多速率板卡SN号和ID说明 速率的License文件需要根据板卡SN号和ID来制作 3 1 6正式版本 xff0c DarYu L2 7高性能 网络测试仪 支持用户通过Renix查看板卡SN号号 但是有的板卡可能存在没有SN号和ID
  • renix如何查看时延和抖动和丢包——网络测试仪实操

    目录 查看时延和抖动 一 预约测试资源 二 新建流 三 查看时延和抖动 查看丢包 一 预约端口 二 创建Raw流 三 如何查看流量的实时丢包个数和丢包比例 查看时延和抖动 一 预约测试资源 打开Renix软件 xff0c 连接机箱 预约端口
  • IP 网络主动监测系统 Renix Active

    一 IT网络运维面临的挑战 1 网络性能可视化 与公有云和SaaS平台连接的可靠性 广域网线路性能 互联网专线性能 2 诊断工具 现场无IT工程师覆盖 诊断的人力费用 网络与应用系统的纠结 3 用户体验 Web应用的访问质量 语音语音视频的
  • FEC原理与操作及BigTao机框装机说明

    一 FEC原理与操作 1 FEC 原理简介 前向纠错 xff08 英语 xff1a forward error correction xff0c 缩写FEC xff09 或信道编码 xff08 英语 xff1a channel coding

随机推荐