资源简介
数据结构课程设计大作业,交通咨询模拟。1.出于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的旅客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。
2.基本要求
(1)提供对城市信息进行编辑(如:添加或删除)的功能。
(2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和飞机航班进行编辑(增设或删除)的功能。
(3)提供两种最优决策:最快到达或最省钱到达。全程只考虑一种交通工具。
(4)旅途中耗费的总时间应该包括中转站的等候时间。
(5)咨询以用户和计算机的对话方式进行。由用户输入起始站、终点站、最优决策原则和交通工具,输出信息:最快需要多长时间才能到达或者最少需要多少旅费才能到达,并详细说明依次于何时乘坐哪一躺列车或哪一次班机到何地。
代码片段和文件信息
#include
#include
using namespace std;
#define Maxn 500
class graph{
public:
mapid;
string place[Maxn];
int tot=0;
struct point{
int numdis;
int nowtime;
bool operator<(const point &b)const{
return this->dis bool operator>(const point &b)const{
return this->dis>b.dis;}
};
struct line{
string BeginEnd;
string number;
int sted;
int begintimeendtime;
int disprice;
int change(string s)
{
int res=((s[0]-‘0‘)*10+(s[1]-‘0‘))*60;
res+=((s[3]-‘0‘)*10+(s[4]-‘0‘));
return res;
}
line()
{
Begin=““;End=““;number=““;
st=ed=begintime=endtime=price=0;
}
line(string numstring astring bstring cstring dint sint tint p)
{
number=num;Begin=a;End=b;
begintime=change(c);endtime=change(d);
st=s;ed=t;
price=p;
}
void showtime(int t)
{
printf(“%02d:%02d“t/60t%60);
}
void print()
{
cout< showtime(begintime);cout<<“ “;showtime(endtime);cout<<“ “;
cout< }
};//边的各种信息,构造函数
vectorair[Maxn];
vectortrain[Maxn];
graph()
{
tot=0;
id.clear();
for(int i=0;i for(int i=0;i }//初始化
int passtime(int xint ybool f)
{
if(f)return 0;
x=x%1440;
y=y%1440;
return (y-x+1440)%1440;
}
int length(line kint typepoint intempint stint dis)
{
if(type==1)//求时间最短
{
return passtime(k.begintimek.endtime0)+passtime(disk.begintimest==intemp.num);
}
if(type==2)//求花费最短
{
return k.price;
}
if(type==3)//求中转最短
{
return 1;
}
}
void printpath(int stint vline path[])
{
if(v==st)return ;
printpath(stpath[v].stpath);
path[v].print();
}//打印路径
void showshow(int Time)
{
int h=Time/60m=Time%60;
printf(“%d小时%d分“hm);
}//修改时间格式
void shortpath(int stint edvector edge[]int type)
{
bool mark[Maxn];
int dis[Maxn];
line path[Maxn];
const int inf=2000000;
int iv;
point intemp{st00}newtemp;
for(i=1;i<=tot;i++)
{
mark[i]=false;
dis[i]=inf;
}
dis[st]=0;
priority_queuegreater >Q;
Q.push(intemp);
mark[st]=true;
while(!Q.empty())
{
intemp=Q.top();
Q.pop();
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11791 2016-12-30 01:29 main.cpp
文件 13235 2016-12-22 19:35 shuju.txt
文件 85618 2017-11-10 12:10 全国交通咨询模拟.docx
- 上一篇:采集软件 .net 采集插件
- 下一篇:计算机网络课程设计实验报告
评论
共有 条评论