• 大小: 91KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-08
  • 语言: 其他
  • 标签:

资源简介

数据结构课程设计大作业,交通咨询模拟。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

评论

共有 条评论