📄 traffic.cpp
字号:
cout << "\n\t\t";
cout << "始发:";
cout << "\t" << p.edges[i].p.ivex <<" :" << GT.Adjlist[p.edges[i].p.ivex].cityName;
PrintTime(p.edges[i].p.StartTime);
cout << "\n\t\t";
cout << "到达:";
cout << "\t"<< p.edges[i].p.jvex << ":" << GT.Adjlist[p.edges[i].p.jvex].cityName;
PrintTime(p.edges[i].p.EndTime);
cout <<"票价:" << p.edges[i].p.Money << " 元 ";
if(p.edges[i].p.StartTime<now&&p.edges[i].p.EndTime>=now)
sum_Time+=(1440+TimeSub(p.edges[i].p.EndTime,now));
else
sum_Time+=TimeSub(p.edges[i].p.EndTime,now);
now=p.edges[i].p.EndTime;
cout << "\n\n";
}
hour=sum_Time/60;
minute=sum_Time%60;
cout << "共需" << hour << "小时" << minute <<"分" << "\n\n";
}
//最省钱咨询
void Inquire_Money(Graph GT,Graph GP)
{
Path p;
int n=5;
int st,nd;
while(1)
{
cout << "\t\t 1.查询飞机";
cout << "\t 2.查询火车";
cout << "\t 0.退出\n";
cout << "\t 请选择:";
cin >> n;
fflush(stdin);
cout << "\n";
if(n==1)
{
input_Money(GP,st, nd);
LeastMoneyPath (GP,st,nd,p); //最少钱数
print_Money(GP,p);
break;
}
else if(n==2)
{
input_Money(GT,st, nd);
LeastMoneyPath (GT,st,nd,p); //最少钱数
print_Money(GT,p);
break;
}
else if (n==0)
break;
else
cout << "输入有误,请重新输入!\n\n";
}
}
//最快到达咨询
void Inquire_Time(Graph GT,Graph GP)
{
Path p;
int n=5;
int st,nd;
int time;
while(1)
{
cout << "\t\t 1.查询飞机";
cout << "\t 2.查询火车";
cout << "\t 0.退出";
cout << "\t 请选择:";
cin >> n;
fflush(stdin);
cout << "\n";
if(n==1)
{
input_Time(GP,st,nd,time);
ShortestTimePath (GP,st,nd,time,p); //最短时间
print_Time(GP,p,time);
break;
}
else if(n==2)
{
input_Time(GT,st,nd,time);
ShortestTimePath(GT,st,nd,time,p); //最短时间
print_Time(GT,p,time);
break;
}
else if (n==0)
break;
else
cout << "输入有误,请重新输入!\n\n";
}
}
//咨询系统菜单
void Inquire_Menu(Graph GT,Graph GP)
{
while(1)
{
int choice=5;
cout << "\t********************************************************************"<<"\n";
cout << "\t* 咨询系统菜单 *"<<"\n";
cout << "\t* 1.最省钱咨询 *"<<"\n";
cout << "\t* 2.最快到达咨询 *"<<"\n";
cout << "\t* 0.退出系统 *"<<"\n";
cout << "\t********************************************************************"<<"\n";
cout << " 请选择: ";
cin >> choice;
fflush(stdin);
if(choice==0) break;
switch(choice)
{
case 1: Inquire_Money(GT,GP);break;
case 2: Inquire_Time(GT,GP);break;
default:
{
cout << " 输入错误选项,请重试。\n\n";
}
}
}
}
//城市编辑
void City_Edit(Graph >,Graph &GP)
{
int n,i;
char name[10];
while(1)
{
cout << "\n";
cout << "\t 1.添加城市 ";
cout << "\t 2.删除城市 ";
cout << "\t 0.退出 ";
cout << "\t\t\t\t 请选择:";
cin >> n;
fflush(stdin);
if(n==1)
{
cout << "\n请输入添加城市的名称:";
cin >> name;
fflush(stdin);
InsertVex(GT,name);
InsertVex(GP,name);
cout << "\n添加成功!"<<"\n";
break;
}
else if(n==2)
{
cout << "\n请输入删除城市的名称:";
if(input_Vex(GT,i)==true)
{
DeleteVex(GT,i);
DeleteVex(GP,i);
cout << "删除成功!\n";
}
break;
}
else if(n==0)
{
cout << "\n";
break;
}
else
cout << "输入有误,请重新输入!";
}
}
//列车时刻表编辑
void Train_Edit(Graph >,Graph GP)
{
int n,st,sn;
int hour,minute;
char number[10];
EdgeInfo q;
while(1)
{
cout << "\n";
cout << "\t 1.添加列车 ";
cout << "\t 2.删除列车 ";
cout << "\t 0.退出 ";
cout << "\t\t\t 请选择:";
cin>>n;
fflush(stdin);
if(n==1)
{
while(1)
{
cout << "\n请输入起始城市的名称:";
if(input_Vex(GT,st)==true)
break;
}
while(1)
{
cout << "\n请输入终点城市的名称:";
if(input_Vex(GT,sn)==true)
break;
}
cout << "\n请输入车次:";
cin >> number ;
fflush(stdin);
q.ivex=st;
q.jvex=sn;
strcpy(q.Number,number);
cout << "\n请输入票价:";
cin >> q.Money;
fflush(stdin);
cout << "\n请输入起始时间:";
cout << "\n几点: ";
cin >> hour;
fflush(stdin);
cout << "几分: ";
cin >> minute;
fflush(stdin);
q.StartTime=TimeChange(hour,minute);
cout << "\n请输入到站时间:";
cout << "\n几点: ";
cin >> hour;
fflush(stdin);
cout << "几分: ";
cin >> minute;
fflush(stdin);
q.EndTime=TimeChange(hour,minute);
q.Time=TimeSub(q.EndTime,q.StartTime);
cout << "\n行车时间:" << q.Time/60 << "小时 " << q.Time%60 << "分钟";
InsertEdge(GT,q);
cout << "\n添加成功!"<< "\n";
break;
}
else if(n==2)
{
while(1)
{
cout << "\n请输入起始城市的名称:";
if(input_Vex(GT,st)==true)
break;
}
while(1)
{
cout << "\n请输入终点城市的名称:";
if(input_Vex(GT,sn)==true)
break;
}
cout << "\n请输入车次:";
if(input_Number(GT,st,sn,number))
{
q.ivex=st;
q.jvex=sn;
strcpy(q.Number,number);
DeleteEdge(GT,q);
cout << "删除成功!\n";
break;
}
}
else if(n==0)
{
cout << ("\n");
break;
}
else
cout << "输入有误,请重新输入!";
}
}
//航班时刻表编辑
void Plane_Edit(Graph GT,Graph &GP)
{
int n,st,sn;
int hour,minute;
char number[10];
EdgeInfo q;
while(1)
{
cout << ("\n");
cout << "\t 1.添加航班 ";
cout << "\t 2.删除航班 ";
cout << "\t 0.退出 ";
cout << "\t\t\t 请选择:";
cin >> n;
fflush(stdin);
if(n==1)
{
while(1)
{
cout << "\n请输入起始城市的名称:";
if(input_Vex(GP,st)==true)
break;
}
while(1)
{
cout << "\n请输入终点城市的名称:";
if(input_Vex(GP,sn)==true)
break;
}
cout << "\n请输入航班号:";
cin >> number;
fflush(stdin);
q.ivex=st;
q.jvex=sn;
strcpy(q.Number,number);
cout << "\n请输入票价:";
cin >> q.Money;
fflush(stdin);
cout << "\n请输入起始时间:" <<"\n";
cout << "\n几点: ";
cin >> hour;
fflush(stdin);
cout << "几分: ";
cin >> minute;
fflush(stdin);
q.StartTime=TimeChange(hour,minute);
cout << "\n请输入到达时间:";
cout << "\n几点: ";
cin >> hour;
fflush(stdin);
cout << "几分: ";
cin >> minute;
fflush(stdin);
q.EndTime=TimeChange(hour,minute);
q.Time=TimeSub(q.EndTime,q.StartTime);
//cout << "\n行车时间:" << q.Time << "分钟";
cout << "\n行车时间:" << q.Time/60 << "小时 " << q.Time%60 << "分钟";
InsertEdge(GP,q);
cout << "\n添加成功!"<< "\n";
break;
}
else if(n==2)
{
while(1)
{
cout << "\n请输入起始城市的名称:";
if(input_Vex(GT,st)==true)
break;
}
while(1)
{
cout << "\n请输入终点城市的名称:";
if(input_Vex(GT,sn)==true)
break;
}
cout << "\n请输入航班号:";
if(input_Number(GP,st,sn,number))
{
q.ivex=st;
q.jvex=sn;
strcpy(q.Number,number);
DeleteEdge(GP,q);
cout << "删除成功!\n";
break;
}
}
else if(n==0)
{
cout << "\n";
break;
}
else
cout << "输入有误,请重新输入!";
}
}
void Manage_Menu(Graph >,Graph &GP)
{
while(1)
{
int choice=5;
cout << "\t********************************************************************"<< "\n";
cout << "\t* 管理系统菜单 *"<<"\n";
cout << "\t* 1.城市编辑 *"<<"\n";
cout << "\t* 2.列车时刻表编辑 *"<<"\n";
cout << "\t* 3.航班时刻表编辑 *"<<"\n";
cout << "\t* 0.退出系统 *"<<"\n";
cout << "\t********************************************************************"<< "\n";
cout << " 请选择: ";
cin >> choice;
fflush(stdin);
if(choice==0) break;
switch(choice)
{
case 1: City_Edit(GT,GP);break;
case 2: Train_Edit(GT,GP);break;
case 3: Plane_Edit(GT,GP);break;
default:{
cout << " 输入错误选项,请重试。\n\n";
}
}
}
}
int Main_Menu(Graph >,Graph &GP)
{
while(1)
{
int choicem=3;
cout << ("\n");
cout << "\t********************************************************************"<< "\n";
cout << "\t* 欢迎进入全国交通咨询系统主菜单 *"<<"\n";
cout << "\t* 1.咨询系统 *"<<"\n";
cout << "\t* 2.管理系统 *"<<"\n";
cout << "\t* 0.退出系统 *"<<"\n";
cout << "\t********************************************************************"<< "\n";
cout << "\t\t\t 请选择: ";
cin >> choicem;
cout << "\n";
fflush(stdin);//清除输入流
switch(choicem)
{
case 1: Inquire_Menu(GT,GP);break;
case 2: Manage_Menu(GT,GP);break;
case 0: return choicem;
default:
{
cout << " 输入有误,请重试。\n\n";
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -