⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 (1) 提供对城市信息进行编辑(添加或删除)的功能.(2) 城市之间有两种交通工具:火车和飞机.提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能.(3) 提供两种最优策略:最快到达或最省钱到达.
💻 CPP
字号:
#include "Traffic.h"



void MainInitialization()
{
	cout<<"============计算机02(7)班==姓名:赵嘉莉== 学号:200209124174================="<<endl;
	cout<<"=                                                                             ="<<endl;
	cout<<"=                        全国交通咨询模拟系统                                 ="<<endl;
	cout<<"=                                                                             ="<<endl;
	cout<<"=                                                                             ="<<endl;
	cout<<"=                                                                             ="<<endl;
	cout<<"=   请选择操作:1.显示城市  2.信息修改  3道路咨询  4.修改保存  5.退出         ="<<endl;
	cout<<"=   (注意~~~城市名请使用汉字输入)                                           ="<<endl;
	cout<<"==============================================================================="<<endl;
}

void ModifyInitialization()
{
	system("cls");
	cout<<"=============================================================================="<<endl;
	cout<<"=                             信息修改                                       ="<<endl;
	cout<<"=                                                                            ="<<endl;
	cout<<"=                                                                            ="<<endl;
	cout<<"=                                                                            ="<<endl;
	cout<<"=                                                                            ="<<endl;
	cout<<"=        请选择操作:1.新增城市   2.删除城市    3.确认是否修改               ="<<endl;
	cout<<"=============================================================================="<<endl;
}

void ModifyMap(ALGraph& graph)
{
    void MainInitialization();
	char cmd[5],choice;
	ModifyInitialization();
	do 
	{
		ReadCommand(cmd,3);

		switch(cmd[0])
		{
		case '1':
			graph.InsertVex();
			break;
		case '2':
			graph.DeleteVex();
			break;
		case '3':
   			system("cls");//清屏
		    ModifyInitialization();
			break;
		default:
			cout<<"错误的选择"<<endl;
		}

		cout<<"继续修改?(y/n)"<<endl;
		cin>>choice;
	} while(choice=='y' || choice=='Y');
}

void BestPath(ALGraph& graph)
{
	int spos,dpos;
	char source[50],destination[50],cmd1[5],cmd2[5];
	MGraph m(graph);

	do
	{
		cout<<"请输入出发站:"<<endl;
		cin>>source;
		spos=graph.LocateVex(source);

		if(spos>=0) break;
		else
			cout<<"错误的出发站"<<endl;
	} while(1);

	do
	{
		cout<<"请输入终点站:"<<endl;
		cin>>destination;
		dpos=graph.LocateVex(destination);
		
		if(dpos>=0) break;
		else
			cout<<"错误终点站"<<endl;
	} while(1);

	cout<<"请选择最优原则:1.最短时间  2.最少花费"<<endl;
	ReadCommand(cmd1,3);

	cout<<"请选择交通工具:1.火车   2.飞机"<<endl;
	ReadCommand(cmd2,2);


	if(cmd1[0]=='1' && cmd2[0]=='1')
	{
		cout<<"最短时间路径如下:(火车)"<<endl
			<<"================================================================================"<<endl;
        m.ShortestTime_T(spos,dpos);	
	}
	else if(cmd1[0]=='1' && cmd2[0]=='2')
	{
		cout<<"最短时间路径如下:(飞机)"<<endl
			<<"================================================================================"<<endl;
        m.ShortestTime_A(spos,dpos);	
	}
	else if(cmd1[0]=='2' && cmd2[0]=='1')
	{
		cout<<"最少花费路径如下:(火车)"<<endl
			<<"================================================================================"<<endl;
        m.ShortestCost_T(spos,dpos);	
	}
	else if(cmd1[0]=='2' && cmd2[0]=='2')
	{
		cout<<"最少花费路径如下:(飞机)"<<endl
			<<"================================================================================"<<endl;
        m.ShortestCost_A(spos,dpos);	
	}
}

void ReadCommand(char* cmd,int n)
{
	int flag;
	do 
	{
		flag=1;
		cout<<"请输入您的选择:"<<endl;
		cin>>cmd;
		if(strlen(cmd)==1 && (cmd[0]>='1' && cmd[0]<=('0'+n)))
			flag=0;
		else
			cout<<"错误的选择:"<<endl;
	} while(flag==1);
}

void Interpret(char cmd,ALGraph& graph)
{
	switch(cmd)
	{
	case '1':
		graph.ShowGraph();
		break;
	case '2':
		ModifyMap(graph);
		break;
	case '3':
		BestPath(graph);
		break;
	case '4':
		graph.SaveToFile();
		break;
	case '5':
		cout<<endl<<"按任意键退出……"<<endl;
		getch();
		break;
	default:
		cout<<"错误的选择"<<endl;
	}
}

void main()
{
	char cmd[20];
	ALGraph graph;
	graph.BakeUp();

	do 
	{
		MainInitialization();//生成界面
		ReadCommand(cmd,5);//读取命令
		Interpret(cmd[0],graph);//解释命令
		if(cmd[0]!='5')
		{
			cout<<"请按任何键继续."<<endl;
		    _getch();
		    system("cls");//清屏
		}
	} while(cmd[0]!='5');//循环执行
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -