旅游景区管理系统(一 )旅游路线导航(MFC实现)

旅游景区管理系统

1.旅游景区导航
2.搜索最短路径
3.prim铺设电路
4.代码介绍和展示

旅游路线导航

本系列为武汉某大学课设,只是学习之用

功能要求:

算法解释:
使用了改进版的深度优先搜索算法,
改进点如下:
1.通过在搜索过程中判断是否已找到了全部景点来实现无回路的功能
2.因为在过程中进行搜索,通过不退出,来找到全部景点
扩展功能:
1.消息盒子提示
2.通过打印各个建议路线,实现美观

例子

在这里插入图片描述

代码块展示

//功能二:景点导航
int Vis;														//起点
int visited[M];
CString  Information1;
CString X("建议路线: "), Y("\r\n"), Z("  ----->  ");
int Route[M];													//要注意的是编号从0开始的,记录路线
int number;														//记录是否全部走完

void CMFCApplication2Dlg::dfs(int i)
{
	visited[i] = 1;
	Route[++number] = i;

	for (int j = 0; j < S.count; j++)				
	{
		if (visited[j] == 0 && S.mat.m[i][j])					//dfs搜索
		{
				dfs(j);
		}
		
	}
	if (number == S.count - 1 && Route[0] == Vis)					//打印可行解
	{
		Information1 += X;
		for (int j = 0; j < S.count - 1; j++)
		{
			Information1 += S.Pname[Route[j]] + Z;
		}
		Information1 += S.Pname[Route[S.count - 1]] + Y + Y;
		SetDlgItemText(SCREEN, Information1);
		visited[i] = 0;												//向前回溯
		Route[number] = -1;
		number--;

	}
	else
	{
		visited[i] = 0;												//向前回溯
		Route[number] = -1;
		number--;
	}
	

	}
void CMFCApplication2Dlg::OnBnClickedButton2()
{
	memset(visited, 0, sizeof(visited));
	memset(Route, -1 , sizeof(Route));							//-1表示无前驱节点,即无法被访问
	number = -1;
	Vis = GetDlgItemInt(IDC_EDIT8);
	dfs(Vis);
	MessageBox("路径已被加载");
	Information1.Empty();										//用来反复激活使用
	// TODO: 在此添加控件通知处理程序代码
}

结果展示:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_35307005/article/details/88064960
今日推荐