12306 1.0

#include<bits/stdc++.h>
using namespace std;
class Time
{
    int hour;
    int minute;
public:
    Time(int v,int m ):hour(v),minute(m) {}
    Time()
    {
        hour=0;
        minute=0;
    }
    int getHour()
    {
        return hour;
    };
    int getMinute()
    {
        return minute;
    };
    bool operator<(const Time&d)const
    {
        return hour!=d.hour?hour<d.hour:minute<d.minute;
    }
    friend ostream&operator<<(ostream &os, const Time &d);
    friend istream&operator>>(istream &in, Time &d);
};
ostream&operator<<(ostream &os,const Time &d)
{
    os<<d.hour<<" "<<d.minute;
    return os;
}
istream&operator>>(istream &in,Time &d)
{
    in>>d.hour;
    in>>d.minute;
    return in;
}
class Train_information
{
    string Train_number;
    string Station;
    Time from;
    Time to;
public:
    friend ostream&operator<<(ostream &os,Train_information &T);
    friend istream&operator>>(istream &in,Train_information &T);
};
istream&operator>>(istream &in,Train_information &T)
{
    in>>T.Train_number;
    in>>T.Station;
    in>>T.from;
    in>>T.to;
    return in;
}
ostream&operator<<(ostream &os,Train_information &T)
{
    os<<T.Train_number<<" ";
    os<<T.Station<<" ";
    os<<T.from<<" ";
    os<<T.to<<" ";
    return os;
}
class Station
{
    string name;
    int num;//数目
    vector<Train_information>T;
public:
    Station()
    {
        num=0;
    }
    friend ostream&operator<<(ostream &os,Station &s);
    friend istream&operator>>(istream &in,Station &s);
    void deleteInformation(){T.clear();};
    string getName(){return name;};
};
istream&operator>>(istream &in,Station &s)
{
    in>>s.name;
    in>>s.num;//这个站点被哪些车次经过
    for(int i=0; i<s.num; i++)
    {
        Train_information TT;
        in>>TT;
        s.T.push_back(TT);
    }
    return in;
}
ostream&operator<<(ostream &os,Station &s)
{
    os<<s.name<<" ";
    os<<s.num;
    os<<endl;
    for(int i=0; i<s.num; i++)
    {
        os<<s.T[i];
        os<<endl;
    }
    return os;
}
class Train_number//车次
{
    string number;
    string from;
    string to;
    int num;//站点数量
    vector<Train_information>T;
public:
    Train_number()
    {
        num=0;
    }
    friend ostream&operator<<(ostream &os,Train_number &t);
    friend istream&operator>>(istream &in,Train_number &t);
    void deleteInformation(){T.clear();};
    string getNumber(){return number;};
};
istream&operator>>(istream &in,Train_number &t)
{
    in>>t.number;
    in>>t.from;
    in>>t.to;
    in>>t.num;
    for(int i=0; i<t.num; i++)
    {
        Train_information TT;
        in>>TT;
        t.T.push_back(TT);
    }
    return in;
}
ostream&operator<<(ostream &os,Train_number &t)
{
    os<<t.number<<" ";
    os<<t.from<<" ";
    os<<t.to<<" ";
    os<<t.num;
    os<<endl;
    for(int i=0; i<t.num; i++)
    {
        os<<t.T[i];
        os<<endl;
    }
    return os;
}
class AdminOp
{
    vector<Station>s;
    vector<Train_number>t;
public:
    void searchStation();
    void searchTrain_number();
};
class ClientOp
{
    vector<Station>s;
    vector<Station>::iterator it1;
    multimap<string,int>m1;
    multimap<string,int>::iterator m1p;
    vector<Train_number>t;
    vector<Train_number>::iterator it2 ;
    multimap<string,int>m2;
    multimap<string,int>::iterator m2p;
public:
    ClientOp()
    {
        load1();
        load2();
    }
    ~ClientOp()
    {
        save1();
        save2();
    }
    void load1();
    void load2();
    void save1();
    void save2();
    void searchBase();
    void searchTime();
    void searchStation();
    void searchTrain_number();
    int  searchS(string where);
    int  searchT(string number);
    void display();
};
int ClientOp::searchS(string where)
{
    m1p=m1.find(where);
    if(m1p!=m1.end())
    {
        int i=m1p->second;
        return i;
    }
    else return -1;
}
int ClientOp::searchT(string number)
{
    m2p=m2.find(number);
    if(m2p!=m2.end())
    {
        int i=m2p->second;
        return i;
    }
    else return -1;
}
void ClientOp::searchStation()
{
    cout<<"您想查询的站点为\n";
    string where;
    cin>>where;
    cout<<s[searchS(where)];
}
void ClientOp::searchTrain_number()
{
    cout<<"您想查询的车次为\n";
    string number;
    cin>>number;
    if(searchS(number)==-1)
    cout<<"没找到\n";
    else
    {
        cout<<t[searchS(number)];
    }
}
void ClientOp::display()
{
    for(it2=t.begin(); it2!=t.end(); it2++)
    {
        cout<<*it2;
    }
}
void ClientOp::load1()
{
    int i;
    Train_number tt;
    ifstream infile("e:\\train.txt",ios::in);
    if(!infile)
        return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        cout<<tt;
        m2.insert(make_pair(tt.getNumber(),i));
        i++;
        tt.deleteInformation();
    }
    infile.close();
}
void ClientOp::load2()
{
    int i;
    Station ss;
    ifstream infile("e:\\station.txt",ios::in);
    if(!infile)
        return;
    s.clear();
    i=0;
    while(infile>>ss)
    {
        s.push_back(ss);
        cout<<ss;
        m1.insert(make_pair(ss.getName(),i));
        i++;
        ss.deleteInformation();
    }
    infile.close();
}
void ClientOp::save1()
{
    ofstream outfile("e:\\train.txt",ios::out);
    if(!outfile)
        return;
    for(it2=t.begin(); it2!=t.end(); it2++)
    {
        outfile<<*it2;
    }
    outfile.close();
}
void ClientOp::save2()
{
    ofstream outfile("e:\\station.txt",ios::out);
    if(!outfile)
        return;
    for(it1=s.begin(); it1!=s.end(); it1++)
    {
        outfile<<*it1;
    }
    outfile.close();
}
int main()
{
    ClientOp c;
    c.searchStation();
}


#include<bits/stdc++.h>
using namespace std;
class Time
{
    int hour;
    int minute;
public:
    Time(int v,int m ):hour(v),minute(m) {}
    Time()
    {
        hour=0;
        minute=0;
    }
    int getHour()
    {
        return hour;
    };
    int getMinute()
    {
        return minute;
    };
    bool operator<(const Time&d)const
    {
        return hour!=d.hour?hour<d.hour:minute<d.minute;
    }
    friend ostream&operator<<(ostream &os, const Time &d);
    friend istream&operator>>(istream &in, Time &d);
};
ostream&operator<<(ostream &os,const Time &d)
{
    os<<d.hour<<" "<<d.minute;
    return os;
}
istream&operator>>(istream &in,Time &d)
{
    in>>d.hour;
    in>>d.minute;
    return in;
}
class Train_information
{
    string Train_number;
    string Station;
    Time from;
    Time to;
public:
    friend ostream&operator<<(ostream &os,Train_information &T);
    friend istream&operator>>(istream &in,Train_information &T);
};
istream&operator>>(istream &in,Train_information &T)
{
    in>>T.Train_number;
    in>>T.Station;
    in>>T.from;
    in>>T.to;
    return in;
}
ostream&operator<<(ostream &os,Train_information &T)
{
    os<<T.Train_number<<" ";
    os<<T.Station<<" ";
    os<<T.from<<" ";
    os<<T.to<<" ";
    return os;
}
class Station
{
    string name;
    int num;//数目
    vector<Train_information>T;
public:
    Station()
    {
        num=0;
    }
    friend ostream&operator<<(ostream &os,Station &s);
    friend istream&operator>>(istream &in,Station &s);
    void deleteInformation(){T.clear();}
};
istream&operator>>(istream &in,Station &s)
{
    in>>s.name;
    in>>s.num;//这个站点被哪些车次经过
    for(int i=0; i<s.num; i++)
    {
        Train_information TT;
        in>>TT;
        s.T.push_back(TT);
    }
    return in;
}
ostream&operator<<(ostream &os,Station &s)
{
    os<<s.name<<" ";
    os<<s.num;
    os<<endl;
    for(int i=0; i<s.num; i++)
    {
        os<<s.T[i];
        os<<endl;
    }
    return os;
}
class Train_number//车次
{
    string number;
    string from;
    string to;
    int num;//站点数量
    vector<Train_information>T;
public:
    Train_number()
    {
        num=0;
    }
    friend ostream&operator<<(ostream &os,Train_number &t);
    friend istream&operator>>(istream &in,Train_number &t);
    void deleteInformation(){T.clear();}
};
istream&operator>>(istream &in,Train_number &t)
{
    in>>t.number;
    in>>t.from;
    in>>t.to;
    in>>t.num;
    for(int i=0; i<t.num; i++)
    {
        Train_information TT;
        in>>TT;
        t.T.push_back(TT);
    }
    return in;
}
ostream&operator<<(ostream &os,Train_number &t)
{
    os<<t.number<<" ";
    os<<t.from<<" ";
    os<<t.to<<" ";
    os<<t.num;
    os<<endl;
    for(int i=0; i<t.num; i++)
    {
        os<<t.T[i];
        os<<endl;
    }
    return os;
}
class AdminOp
{
    vector<Station>s;
    vector<Train_number>t;
public:
    void searchStation();
    void searchTrain_number();
};
class ClientOp
{
    vector<Station>s;
    vector<Station>::iterator it1;
    multimap<string,int>m1;
    multimap<string,int>::iterator m1p;
    vector<Train_number>t;
    vector<Train_number>::iterator it2 ;
    multimap<string,int>m2;
    multimap<string,int>::iterator m2p;
public:
    ClientOp()
    {
        load1();
        load2();
    }
    ~ClientOp()
    {
        save1();
        save2();
    }
    void load1();
    void load2();
    void save1();
    void save2();
    void searchBase();
    void searchTime();
    void searchStation();
    void searchTrain_number();
    int  searchS(string where);
    int  searchT(string number);
    void display();
};
int ClientOp::searchS(string where)
{
    m1p=m1.find(where);
    if(m1p!=m1.end())
    {
        int i=m1p->second;
        return i;
    }
    else return -1;
}
void searchT()
{
}
void ClientOp::searchStation()
{
    cout<<"您想查询的站点为\n";
    string where;
    cin>>where;
}
void ClientOp::display()
{
    for(it2=t.begin(); it2!=t.end(); it2++)
    {
        cout<<*it2;
    }
}
void ClientOp::load1()
{
    int i;
    Train_number tt;
    ifstream infile("e:\\train.txt",ios::in);
    if(!infile)
        return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        cout<<tt;
        // t1.insert(make_pair(tt.getNo(),i));
        i++;
        //tt.deleteS();
    }
    infile.close();
}
void ClientOp::load2()
{
    int i;
    Station ss;
    ifstream infile("e:\\station.txt",ios::in);
    if(!infile)
        return;
    s.clear();
    i=0;
    while(infile>>ss)
    {
        s.push_back(ss);
        cout<<ss;
        m1.insert(make_pair(ss.getNo(),i));
        i++;
        ss.deleteInformation();
    }
    infile.close();
}
void ClientOp::save1()
{
    ofstream outfile("e:\\train.txt",ios::out);
    if(!outfile)
        return;
    for(it2=t.begin(); it2!=t.end(); it2++)
    {
        outfile<<*it2;
    }
    outfile.close();
}
void ClientOp::save2()
{
    ofstream outfile("e:\\station.txt",ios::out);
    if(!outfile)
        return;
    for(it1=s.begin(); it1!=s.end(); it1++)
    {
        outfile<<*it1;
    }
    outfile.close();
}
int main()
{
    ClientOp c;
}

#include<bits/stdc++.h>
using namespace std;
class Time
{
    int month;
    int day;
    int hour;
    int minute;
public:
    Time(int y,int z,int v,int m ):month(y),day(z),hour(v),minute(m){}
    Time()
    {
        month=0;
        day=0;
        hour=0;
        minute=0;
    }
    int getMonth(){return month;};
    int getDay(){return day;};
    int getHour(){return hour;};
    int getMinute(){return minute;};
    bool operator<(const Time&d)const
    {
        return month!=d.month?month<d.month:day!=d.day?day<d.day:hour!=d.hour?hour<d.hour:minute<d.minute;
    }
    bool operator==(const Time&d)const
    {
        return month==d.month&&day==d.day;
    }
    friend ostream&operator<<(ostream &os, const Time &d);
    friend istream&operator>>(istream &in, Time &d);
};
ostream&operator<<(ostream &os,const Time &d)
{
    os<<d.month<<" "<<d.day<<" "<<d.hour<<" "<<d.minute;
    return os;
}
istream&operator>>(istream &in,Time &d)
{
    in>>d.month;
    in>>d.day;
    in>>d.hour;
    in>>d.minute;
    return in;
}
class Station//站点信息
{
    string here;
    string ends1;
    Time ends;
    string begins1;
    Time begins;
public:
    Station(string here,string ends1,Time ends,string begins1,Time begins)
    {
        this->here=here;
        this->ends1=ends1;
        this->ends=ends;
        this->begins=begins;
        this->begins=begins;
    }
    Station(string here,string ends1,Time ends,string begins1)//缺省构造函数,为最后一步做准备
    {
        this->here=here;
        this->ends1=ends1;
        this->ends=ends;
        this->begins1=begins1;
    }
    Station(){}
    friend istream&operator>>(istream&in,Station&s);
    friend ostream&operator<<(ostream&os,const Station&s);
    string getHere(){return here;}
};
istream&operator>>(istream&in,Station&s)
{
    in>>s.here;
    if(s.here=="E")return in;
    in>>s.ends1>>s.ends>>s.begins1;
    /*
    当最后一个站点时,没有发出时间不必输入
    */
    in>>s.begins;
    return in;
}
ostream&operator<<(ostream&os,const Station&s)
{
   os<<s.here<<" "<<s.ends1<<" "<<s.ends<<" "<<s.begins1<<" "<<s.begins;
   return os;
}
class Train//车次信息,包含站点信息
{
    string no;
    string from;
    string to;
    string type;
    int num;//途经站点数目
    Time begins;
    Time ends;
    vector<Station>s;//途经哪些站点+站点信息;要及时清空一下动态数组
    vector<Station>::iterator it;
    multimap<string,int>m;
    multimap<string,int>::iterator m1;
public:
    Train(string no1,string from1,string to1,string type1,Time t1,Time t2):no(no1),from(from1),to(to1),type(type1),begins(t1),ends(t2)
    {
        num=0;
        int i=0;
        for(it=s.begin();it!=s.end();it++)
        {
            m.insert(make_pair((*it).getHere(),i));
            i++;
        }
    }
    Train(){num=0;}
    ~Train(){s.clear();m.clear();}
    friend ostream&operator<<(ostream &os,Train&c);
    friend istream&operator>>(istream &in,Train&c);
    string getNo(){return no;}
    void deleteStation();
    void addStation();
    void deleteS(){s.clear();}
    Time getBegins(){return begins;};//出发时间
    Time getEnds(){return ends;};//到达时间
};
void Train::deleteStation()
{
    cout<<"您想删除的站点名称及位置为,输入地点为E终止\n";
    string where;
    while(cin>>where)
    {
        if(where=="E")break;
        m1=m.find(where);
        s.erase(m1->second+s.begin());
    }
}
void Train::addStation()
{
    cout<<"您想增加的站点名称及位置为,输入地点为E终止\n";
    Station where;//站点
    int i;//站点信息;
    cin>>i>>where;
    //在s内的某位置插入某站点,并设定时间及此站点后的时间信息
    s.insert(i+s.begin(),where);/////////
    cout<<"成功添加\n";
}
istream&operator>>(istream &in,Train&c)
{
     in>>c.no;
     if(c.no=="E")return in;
     in>>c.from>>c.to>>c.begins>>c.ends>>c.type;
     in>>c.num;
     for(int i=0;i<c.num;i++)
     {
         Station ss;
         in>>ss;
         c.s.push_back(ss);
     }
     return in;
}
ostream&operator<<(ostream &os,Train&c)
{
     os<<c.no<<" "<<c.from<<" "<<c.to<<" "<<c.begins<<" "<<c.ends<<" "<<c.type<<endl;
     os<<c.num<<endl;
     for(int i=0;i<c.num;i++)
     {
         os<<c.s[i]<<endl;
     }
     c.s.clear();
     return os;
}
class Adm
{
    vector<Train>t;
    vector<Train>::iterator it,it1;
    multimap<string,int>t1;
    multimap<string,int>::iterator t1p;
public:
    Adm()
    {
        load1();
        //load2();
    }
    ~Adm()
    {
        save1();
        //save2();
    }
    void load1();
    void load2();
    void save1();
    void save2();
    int searchNo(string no);
    void addTrain();//增加车次
    void deleteTrain();//删除车次
    void addStation();//增加站点
    void deleteStation();//删除站点


};
int Adm::searchNo(string no)
{
    t1p=t1.find(no);
    if(t1p!=t1.end())
    {
        int i=t1p->second;
        return i;
    }
    else return -1;
}
void Adm::load1()
{
    int i;
    Train tt;
    ifstream infile("e:\\Train.txt",ios::in);
    if(!infile)
    return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        cout<<tt;
        t1.insert(make_pair(tt.getNo(),i));
        i++;
        tt.deleteS();
    }
    infile.close();
}
void Adm::save1()
{
    t1.clear();
    ofstream outfile("e:\\Train.txt",ios::out);
    if(!outfile)
    return;
    for(it=t.begin();it!=t.end();it++)
    {
        outfile<<*it;
    }
    outfile.close();


}
void Adm::addStation()
{
    cout<<"您想在哪个车次增加及增加的站点信息为,输入车次为E终止\n";
    string n;
    while(1)
    {
        cin>>n;
        if(n=="E")break;
        int i=searchNo(n);//先找到这个车次
        t[i].addStation();
    }


}
void Adm::deleteStation()
{
    cout<<"您想在哪个车次删除及删除的站点名称为,输入地点为E终止\n";




}
void Adm::addTrain()
{
    cout<<"你想增加的车次信息为,输入车次序号为E终止\n";
    Train tt;
    while(1)
    {
        cin>>tt;
        if(tt.getNo()=="E")break;
        t.push_back(tt);
    }
}
void Adm::deleteTrain()
{
    cout<<"你想删除的车次信息为,输入车次序号为E终止\n";
    string no;
    while(1)
    {
        cin>>no;
        if(no=="E")break;
        int i=searchNo(no);
        it1=t.begin()+i;
        t.erase(it1);
    }
}
class Client//按时间站点查询
{
    vector<Train>t;//Train中包含了时间段
    vector<Train>::iterator it;
public:
    Client();
    void display();
    void searchTime();
    void searchStation();
};
/*
找寻此要发出天的车次
*/
void Client::searchTime()
{
    cout<<"您想查询的时间为\n";
    int month;
    int day;
    cin>>month>>day;
    Time tt(month,day,0,0);
    for(it=t.begin();it!=t.end();it++)
    {
        if((*it).getEnds()==tt)
        {
            cout<<*it;
        }
    }//初级遍历法,需要提高效率;
}
void Client::searchStation()
{
    cout<<"您想查询的站点为\n";
    string where;
    cin>>where;


}
void Client::display()
{
    cout<<"There is all information\n";
    for(it=t.begin();it!=t.end();it++)
    {
        cout<<*it;
    }
}
Client::Client()
{
    int i;
    Train tt;
    ifstream infile("e:\\Train.txt",ios::in);
    if(!infile)
    return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        cout<<tt;
        //u1.insert(make_pair(uu.getId(),i));
        //u2.insert(make_pair(uu.getName(),i));
        i++;
    }
    infile.close();
}
int main()
{
    /*Time t(1,2,3,4);
    cout<<t<<endl;
    cin>>t;
    cout<<t;
    Station s;
    cin>>s;
    cout<<s;
    Train tt;
    cin>>tt;
    cout<<tt;*/
    Client c;
     //c.display();
     c.searchTime();


     //Adm a;
     //a.addTrain();
     //a.deleteTrain();
     //a.addStation();
}

#include<bits/stdc++.h>
using namespace std;
class Time
{
    int month;
    int day;
    int hour;
    int minute;
public:
    Time(int y,int z,int v,int m ):month(y),day(z),hour(v),minute(m){}
    Time()
    {
        month=0;
        day=0;
        hour=0;
        minute=0;
    }
    int getMonth(){return month;};
    int getDay(){return day;};
    int getHour(){return hour;};
    int getMinute(){return minute;};
    bool operator<(const Time&d)const
    {
        return month!=d.month?month<d.month:day!=d.day?day<d.day:hour!=d.hour?hour<d.hour:minute<d.minute;
    }
    bool operator==(const Time&d)const
    {
        return month==d.month&&day==d.day;
    }
    friend ostream&operator<<(ostream &os, const Time &d);
    friend istream&operator>>(istream &in, Time &d);
};
ostream&operator<<(ostream &os,const Time &d)
{
    os<<d.month<<" "<<d.day<<" "<<d.hour<<" "<<d.minute;
    return os;
}
istream&operator>>(istream &in,Time &d)
{
    in>>d.month;
    in>>d.day;
    in>>d.hour;
    in>>d.minute;
    return in;
}
class Station//站点信息
{
    string here;
    string ends1;
    Time ends;
    string begins1;
    Time begins;
public:
    Station(string here,string ends1,Time ends,string begins1,Time begins)
    {
        this->here=here;
        this->ends1=ends1;
        this->ends=ends;
        this->begins=begins;
        this->begins=begins;
    }
    Station(string here,string ends1,Time ends,string begins1)//缺省构造函数,为最后一步做准备
    {
        this->here=here;
        this->ends1=ends1;
        this->ends=ends;
        this->begins1=begins1;
    }
    Station(){}
    friend istream&operator>>(istream&in,Station&s);
    friend ostream&operator<<(ostream&os,const Station&s);
    string getHere(){return here;}
};
istream&operator>>(istream&in,Station&s)
{
    in>>s.here;
    if(s.here=="E")return in;
    in>>s.ends1>>s.ends>>s.begins1;
    /*
    当最后一个站点时,没有发出时间不必输入
    */
    in>>s.begins;
    return in;
}
ostream&operator<<(ostream&os,const Station&s)
{
   os<<s.here<<" "<<s.ends1<<" "<<s.ends<<" "<<s.begins1<<" "<<s.begins;
   return os;
}
class Train//车次信息,包含站点信息
{
    string no;
    string from;
    string to;
    string type;
    int num;//途经站点数目
    Time begins;
    Time ends;
    vector<Station>s;//途经哪些站点+站点信息;要及时清空一下动态数组
    vector<Station>::iterator it;
    multimap<string,int>m;
    multimap<string,int>::iterator m1;
public:
    Train(string no1,string from1,string to1,string type1,Time t1,Time t2):no(no1),from(from1),to(to1),type(type1),begins(t1),ends(t2)
    {
        num=0;
        int i=0;
        for(it=s.begin();it!=s.end();it++)
        {
            m.insert(make_pair((*it).getHere(),i));
            i++;
        }
    }
    Train(){num=0;}
    ~Train(){s.clear();m.clear();}
    friend ostream&operator<<(ostream &os,Train&c);
    friend istream&operator>>(istream &in,Train&c);
    string getNo(){return no;}
    void deleteStation();
    void addStation();
    void deleteS(){s.clear();}
    Time getBegins(){return begins;};//出发时间
    Time getEnds(){return ends;};//到达时间
};
void Train::deleteStation()
{
    cout<<"您想删除的站点名称及位置为,输入地点为E终止\n";
    string where;
    while(cin>>where)
    {
        if(where=="E")break;
        m1=m.find(where);
        s.erase(m1->second+s.begin());
    }
}
void Train::addStation()
{
    cout<<"您想增加的站点名称及位置为,输入地点为E终止\n";
    Station where;//站点
    int i;//站点信息;
    cin>>i>>where;
    //在s内的某位置插入某站点,并设定时间及此站点后的时间信息
    s.insert(i+s.begin(),where);/////////
    cout<<"成功添加\n";
}
istream&operator>>(istream &in,Train&c)
{
     in>>c.no;
     if(c.no=="E")return in;
     in>>c.from>>c.to>>c.begins>>c.ends>>c.type;
     in>>c.num;
     for(int i=0;i<c.num;i++)
     {
         Station ss;
         in>>ss;
         c.s.push_back(ss);
     }
     return in;
}
ostream&operator<<(ostream &os,Train&c)
{
     os<<c.no<<" "<<c.from<<" "<<c.to<<" "<<c.begins<<" "<<c.ends<<" "<<c.type<<endl;
     os<<c.num<<endl;
     for(int i=0;i<c.num;i++)
     {
         os<<c.s[i]<<endl;
     }
     c.s.clear();
     return os;
}
class Adm
{
    vector<Train>t;
    vector<Train>::iterator it,it1;
    multimap<string,int>t1;
    multimap<string,int>::iterator t1p;
public:
    Adm()
    {
        load1();
        //load2();
    }
    ~Adm()
    {
        save1();
        //save2();
    }
    void load1();
    void load2();
    void save1();
    void save2();
    int searchNo(string no);
    void addTrain();//增加车次
    void deleteTrain();//删除车次
    void addStation();//增加站点
    void deleteStation();//删除站点


};
int Adm::searchNo(string no)
{
    t1p=t1.find(no);
    if(t1p!=t1.end())
    {
        int i=t1p->second;
        return i;
    }
    else return -1;
}
void Adm::load1()
{
    int i;
    Train tt;
    ifstream infile("e:\\Train.txt",ios::in);
    if(!infile)
    return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        cout<<tt;
        t1.insert(make_pair(tt.getNo(),i));
        i++;
        tt.deleteS();
    }
    infile.close();
}
void Adm::save1()
{
    t1.clear();
    ofstream outfile("e:\\Train.txt",ios::out);
    if(!outfile)
    return;
    for(it=t.begin();it!=t.end();it++)
    {
        outfile<<*it;
    }
    outfile.close();


}
void Adm::addStation()
{
    cout<<"您想在哪个车次增加及增加的站点信息为,输入车次为E终止\n";
    string n;
    while(1)
    {
        cin>>n;
        if(n=="E")break;
        int i=searchNo(n);//先找到这个车次
        t[i].addStation();
    }


}
void Adm::deleteStation()
{
    cout<<"您想在哪个车次删除及删除的站点名称为,输入地点为E终止\n";




}
void Adm::addTrain()
{
    cout<<"你想增加的车次信息为,输入车次序号为E终止\n";
    Train tt;
    while(1)
    {
        cin>>tt;
        if(tt.getNo()=="E")break;
        t.push_back(tt);
    }
}
void Adm::deleteTrain()
{
    cout<<"你想删除的车次信息为,输入车次序号为E终止\n";
    string no;
    while(1)
    {
        cin>>no;
        if(no=="E")break;
        int i=searchNo(no);
        it1=t.begin()+i;
        t.erase(it1);
    }
}
class Client//按时间站点查询
{
    vector<Train>t;//Train中包含了时间段
    vector<Train>::iterator it;
public:
    Client();
    void display();
    void searchTime();
    void searchStation();
};
/*
找寻此要发出天的车次
*/
void Client::searchTime()
{
    cout<<"您想查询的时间为\n";
    int month;
    int day;
    cin>>month>>day;
    Time tt(month,day,0,0);
    for(it=t.begin();it!=t.end();it++)
    {
        if((*it).getEnds()==tt)
        {
            cout<<*it;
        }
    }//初级遍历法,需要提高效率;
}
void Client::searchStation()
{
    cout<<"您想查询的站点为\n";
    string where;
    cin>>where;


}
void Client::display()
{
    cout<<"There is all information\n";
    for(it=t.begin();it!=t.end();it++)
    {
        cout<<*it;
    }
}
Client::Client()
{
    int i;
    Train tt;
    ifstream infile("e:\\Train.txt",ios::in);
    if(!infile)
    return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        cout<<tt;
        //u1.insert(make_pair(uu.getId(),i));
        //u2.insert(make_pair(uu.getName(),i));
        i++;
    }
    infile.close();
}
int main()
{
    /*Time t(1,2,3,4);
    cout<<t<<endl;
    cin>>t;
    cout<<t;
    Station s;
    cin>>s;
    cout<<s;
    Train tt;
    cin>>tt;
    cout<<tt;*/
    Client c;
     //c.display();
     c.searchTime();


     //Adm a;
     //a.addTrain();
     //a.deleteTrain();
     //a.addStation();
}

#include<bits/stdc++.h>
using namespace std;
class Time
{
    int month;
    int day;
    int hour;
    int minute;
public:
    Time(int y,int z,int v,int m ):month(y),day(z),hour(v),minute(m){}
    Time(){}
    int getMonth(){return month;};
    int getDay(){return day;};
    int getHour(){return hour;};
    int getMinute(){return minute;};
    bool operator<(const Time&d)const
    {
        return month!=d.month?month<d.month:day!=d.day?day<d.day:hour!=d.hour?hour<d.hour:minute<d.minute;
    }
    friend ostream&operator<<(ostream &os, const Time &d);
    friend istream&operator>>(istream &in, Time &d);
};
ostream&operator<<(ostream &os,const Time &d)
{
    os<<d.month<<" "<<d.day<<" "<<d.hour<<" "<<d.minute;
    return os;
}
istream&operator>>(istream &in,Time &d)
{
    in>>d.month;
    in>>d.day;
    in>>d.hour;
    in>>d.minute;
    return in;
}
class Station//站点信息
{
    Time ends;
    Time begins;
    string ends1;
    string begins1;
    string here;
public:
    Station(Time ends1,Time begins1,string here1):ends(ends1),begins(begins1),here(here1){}
    Station(){}
    friend istream&operator>>(istream&in,Station&s);
    friend ostream&operator<<(ostream&os,const Station&s);
    string getHere(){return here;}
};
istream&operator>>(istream&in,Station&s)
{
    in>>s.here;
    if(s.here=="E")return in;
    in>>s.ends1>>s.ends>>s.begins1>>s.begins;
    return in;
}
ostream&operator<<(ostream&os,const Station&s)
{
   os<<s.here<<" "<<s.ends1<<" "<<s.ends<<" "<<s.begins1<<" "<<s.begins;
   return os;
}
class Train//车次信息
{
    string no;
    string from;
    string to;
    string type;
    int num;//途经站点数目
    Time begins;
    Time ends;
    vector<Station>s;//途经哪些站点+站点信息;
    vector<Station>::iterator it;
    multimap<string,int>m;
    multimap<string,int>::iterator m1;
public:
    Train(string no1,string from1,string to1,string type1,Time t1,Time t2):no(no1),from(from1),to(to1),type(type1),begins(t1),ends(t2)
    {
        num=0;
        int i=0;
        for(it=s.begin();it!=s.end();it++)
        {
            m.insert(make_pair((*it).getHere(),i));
            i++;
        }


    }
    Train(){num=0;}
    ~Train(){s.clear();}
    friend ostream&operator<<(ostream &os,Train&c);
    friend istream&operator>>(istream &in,Train&c);
    string getNo(){return no;}
    void deleteStation();
    void addStation();
};
void Train::deleteStation()
{
    cout<<"您想删除的站点名称及位置为,输入地点为E终止\n";
    string where;
    while(cin>>where)
    {
        if(where=="E")break;
        m1=m.find(where);
        s.erase(m1->second+s.begin());
    }
}
void Train::addStation()
{
    cout<<"您想增加的站点名称及位置为,输入地点为E终止\n";
    string where;
    
}
istream&operator>>(istream &in,Train&c)
{
     in>>c.no;
     if(c.no=="E")return in;
     in>>c.from>>c.to>>c.begins>>c.ends>>c.type;
     in>>c.num;
     for(int i=0;i<c.num;i++)
     {
         Station ss;
         in>>ss;
         c.s.push_back(ss);
     }
     return in;
}
ostream&operator<<(ostream &os,Train&c)
{
     os<<c.no<<" "<<c.from<<" "<<c.to<<" "<<c.begins<<" "<<c.ends<<" "<<c.type<<endl;
     os<<c.num<<endl;
     for(int i=0;i<c.num;i++)
     {
         os<<c.s[i]<<endl;
     }
     c.s.clear();
     return os;
}
class Adm
{
    vector<Train>t;
    vector<Train>::iterator it,it1;
    multimap<string,int>t1;
    multimap<string,int>::iterator t1p;
public:
    Adm()
    {
        load1();
        //load2();
    }
    ~Adm()
    {
        save1();
        //save2();
    }
    void load1();
    void load2();
    void save1();
    void save2();
    int searchNo(string no);
    void addTrain();//增加车次
    void deleteTrain();//删除车次
    void addStation();//增加站点
    void deleteStation();//删除站点


};
int Adm::searchNo(string no)
{
    t1p=t1.find(no);
    if(t1p!=t1.end())
    {
        int i=t1p->second;
        return i;
    }
    else return -1;
}
void Adm::load1()
{
    int i;
    Train tt;
    ifstream infile("e:\\Train.txt",ios::in);
    if(!infile)
    return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        t1.insert(make_pair(tt.getNo(),i));
        i++;
    }
    infile.close();
}
void Adm::save1()
{
    t1.clear();
    ofstream outfile("e:\\Train.txt",ios::out);
    if(!outfile)
    return;
    for(it=t.begin();it!=t.end();it++)
    {
        outfile<<*it;
    }
    outfile.close();
}
void Adm::addStation()
{
    cout<<"您想在哪个车次增加及增加的站点名称为,输入地点为E终止\n";


    Station s;
    while(1)
    {
        cin>>s;
        if(s.getHere()=="E")break;
    }


}
void Adm::deleteStation()
{
    cout<<"您想在哪个车次删除及删除的站点名称为,输入地点为E终止\n";




}
void Adm::addTrain()
{
    cout<<"你想增加的车次信息为,输入车次序号为E终止\n";
    Train tt;
    while(1)
    {
        cin>>tt;
        if(tt.getNo()=="E")break;
        t.push_back(tt);
    }
}
void Adm::deleteTrain()
{
    cout<<"你想删除的车次信息为,输入车次序号为E终止\n";
    string no;
    while(1)
    {
        cin>>no;
        if(no=="E")break;
        int i=searchNo(no);
        it1=t.begin()+i;
        t.erase(it1);
    }
}
class Client
{
    vector<Train>t;
    vector<Train>::iterator it;
public:
    Client();
    void display();


};
void Client::display()
{
    cout<<"There is all information\n";
    for(it=t.begin();it!=t.end();it++)
    {
        cout<<*it;
    }
}
Client::Client()
{
    int i;
    Train tt;
    ifstream infile("e:\\Train.txt",ios::in);
    if(!infile)
    return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        //u1.insert(make_pair(uu.getId(),i));
        //u2.insert(make_pair(uu.getName(),i));
        i++;
    }
    infile.close();
}
int main()
{
    /*Time t(1,2,3,4);
    cout<<t<<endl;
    cin>>t;
    cout<<t;
    Station s;
    cin>>s;
    cout<<s;
    Train tt;
    cin>>tt;
    cout<<tt;
     Client c;
     c.display();
     */
     Adm a;
     //a.addTrain();
     a.deleteTrain();
}



#include<bits/stdc++.h>

using namespace std;
class Time
{
    int month;
    int day;
    int hour;
    int minute;
public:
    Time(int y,int z,int v,int m ):month(y),day(z),hour(v),minute(m){}
    Time(){}
    int getMonth(){return month;};
    int getDay(){return day;};
    int getHour(){return hour;};
    int getMinute(){return minute;};
    bool operator<(const Time&d)const
    {
        return month!=d.month?month<d.month:day!=d.day?day<d.day:hour!=d.hour?hour<d.hour:minute<d.minute;
    }
    friend ostream&operator<<(ostream &os, const Time &d);
    friend istream&operator>>(istream &in, Time &d);
};
ostream&operator<<(ostream &os,const Time &d)
{
    os<<d.month<<" "<<d.day<<" "<<d.hour<<" "<<d.minute;
    return os;
}
istream&operator>>(istream &in,Time &d)
{
    in>>d.month;
    in>>d.day;
    in>>d.hour;
    in>>d.minute;
    return in;
}
class Station//站点信息
{
    Time ends;
    Time begins;
    string ends1;
    string begins1;
    string here;
public:
    Station(Time ends1,Time begins1,string here1):ends(ends1),begins(begins1),here(here1){}
    Station(){}
    friend istream&operator>>(istream&in,Station&s);
    friend ostream&operator<<(ostream&os,const Station&s);
    string getW(){return here;}
};
istream&operator>>(istream&in,Station&s)
{
    in>>s.here>>s.ends1>>s.ends>>s.begins1>>s.begins;
    return in;
}
ostream&operator<<(ostream&os,const Station&s)
{
   os<<s.here<<" "<<s.ends1<<" "<<s.ends<<" "<<s.begins1<<" "<<s.begins;
   return os;
}
class Train//车次信息
{
    string no;
    string from;
    string to;
    string type;
    int num;//途经站点数目
    Time begins;
    Time ends;
    vector<Station>s;//途经哪些站点+站点信息;
public:
    Train(string no1,string from1,string to1,string type1,Time t1,Time t2):no(no1),from(from1),to(to1),type(type1),begins(t1),ends(t2){num=0;}
    Train(){num=0;}
    ~Train(){s.clear();}
    friend ostream&operator<<(ostream &os,Train&c);
    friend istream&operator>>(istream &in,Train&c);
    string getNo(){return no;}
    void deleteStation();
};
void Train::deleteStation()
{
    cout<<"您想增加的站点名称及位置为,输入地点为E终止\n";
    Station where;
    int i;
    while(cin>>where)
    {
        cin>>i;
        if(where.getW()=="E")break;
        s.insert(i,where);
    }
}
istream&operator>>(istream &in,Train&c)
{
     in>>c.no;
     if(c.no=="E")return in;
     in>>c.from>>c.to>>c.begins>>c.ends>>c.type;
     in>>c.num;
     for(int i=0;i<c.num;i++)
     {
         Station ss;
         in>>ss;
         c.s.push_back(ss);
     }
     return in;
}
ostream&operator<<(ostream &os,Train&c)
{
     os<<c.no<<" "<<c.from<<" "<<c.to<<" "<<c.begins<<" "<<c.ends<<" "<<c.type<<endl;
     os<<c.num<<endl;
     for(int i=0;i<c.num;i++)
     {
         os<<c.s[i]<<endl;
     }
     c.s.clear();
     return os;
}
class Adm
{
    vector<Train>t;
    vector<Train>::iterator it,it1;
    multimap<string,int>t1;
    multimap<string,int>::iterator t1p;
public:
    Adm()
    {
        load1();
        //load2();
    }
    ~Adm()
    {
        save1();
        //save2();
    }
    void load1();
    void load2();
    void save1();
    void save2();
    int searchNo(string no);
    void addTrain();//增加车次
    void deleteTrain();//删除车次
    void addStation();//增加站点
    void deleteStation();//删除站点

};
int Adm::searchNo(string no)
{
    t1p=t1.find(no);
    if(t1p!=t1.end())
    {
        int i=t1p->second;
        return i;
    }
    else return -1;
}
void Adm::load1()
{
    int i;
    Train tt;
    ifstream infile("e:\\Train.txt",ios::in);
    if(!infile)
    return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        t1.insert(make_pair(tt.getNo(),i));
        i++;
    }
    infile.close();
}
void Adm::save1()
{
    t1.clear();
    ofstream outfile("e:\\Train.txt",ios::out);
    if(!outfile)
    return;
    for(it=t.begin();it!=t.end();it++)
    {
        outfile<<*it;
    }
    outfile.close();
}
void Adm::addStation()
{
    cout<<"您想增加的站点名称为,输入地点为E终止\n";

}
void Adm::deleteStation()
{
    cout<<"您想删除的站点名称为,输入地点为E终止\n";

}
void Adm::addTrain()
{
    cout<<"你想增加的车次信息为,输入车次序号为E终止\n";
    Train tt;
    while(1)
    {
        cin>>tt;
        if(tt.getNo()=="E")break;
        t.push_back(tt);
    }
}
void Adm::deleteTrain()
{
    cout<<"你想删除的车次信息为,输入车次序号为E终止\n";
    string no;
    while(1)
    {
        cin>>no;
        if(no=="E")break;
        int i=searchNo(no);
        it1=t.begin()+i;
        t.erase(it1);
    }
}
class Client
{
    vector<Train>t;
    vector<Train>::iterator it;
public:
    Client();
    void display();

};
void Client::display()
{
    cout<<"There is all information\n";
    for(it=t.begin();it!=t.end();it++)
    {
        cout<<*it;
    }
}
Client::Client()
{
    int i;
    Train tt;
    ifstream infile("e:\\Train.txt",ios::in);
    if(!infile)
    return;
    t.clear();
    i=0;
    while(infile>>tt)
    {
        t.push_back(tt);
        //u1.insert(make_pair(uu.getId(),i));
        //u2.insert(make_pair(uu.getName(),i));
        i++;
    }
    infile.close();
}
int main()
{
    /*Time t(1,2,3,4);
    cout<<t<<endl;
    cin>>t;
    cout<<t;
    Station s;
    cin>>s;
    cout<<s;
    Train tt;
    cin>>tt;
    cout<<tt;
     Client c;
     c.display();
     */
     Adm a;
     //a.addTrain();
     a.deleteTrain();
}




猜你喜欢

转载自blog.csdn.net/lanshan1111/article/details/80762141
今日推荐