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();
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;
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();
}
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();
}