6月26日

打了一天=-=比较累,加入了功能,display可以用了并且有了高大上的名字:车站信息管理。时间调度功能也分为了三个功能,给指定车次加车站,给指定车次安排时间,给指定车次减车站。加了几个search函数。大概还差增加整列列车和换乘查询。。换乘查询并没有 思路。。。几个错误检查还是比较好的。。

存在bug:emmm暂未发现,读入数据的bug好像解决了。。。。

#include<bits/stdc++.h>
using namespace std;
//
class Time
{
private:int hour,minute;
public:Time(){};friend ostream& operator<<(ostream &os,Time &t);friend istream& operator>>(istream &is,Time &t);friend Time& operator+(Time &t,int n);friend int operator-(Time &t,Time &t2);bool operator<(const Time &t2)const;void displayTime();
};
bool Time::operator<(const Time &t2)const
{return hour!=t2.hour?hour<t2.hour:minute<t2.minute;
}
int operator-(Time &t,Time &t2)
{int i;i=t.minute-t2.minute;return i;
}
Time& operator+(Time &t,int n)
{t.minute=t.minute+n;if(t.minute>60){t.minute=t.minute-60;t.hour++;return t;}elsereturn  t;
}
void Time::displayTime()
{if(hour<10)cout<<"0"<<hour;elseif(hour>24)cout<<hour-24<<"+1";elsecout<<hour;cout<<":";if(minute<10)cout<<"0"<<minute;elsecout<<minute;
}
istream& operator>>(istream &is,Time &t)
{is>>t.hour>>t.minute;return is;
}
ostream& operator<<(ostream &os,Time &t)
{os<<t.hour<<" "<<t.minute;return os;
}
//
class Time2
{
private:int month,day;
public:Time2(){};friend ostream& operator<<(ostream &os,Time2 &t);friend istream& operator>>(istream &is,Time2 &t);bool operator<(const Time2 &t2)const;void displayTime();
};
ostream& operator<<(ostream &os,Time2 &t)
{os<<t.month<<" "<<t.day;return os;
}
istream& operator>>(istream &is,Time2 &t)
{is>>t.month>>t.day;return is;
}
bool Time2::operator<(const Time2 &t2)const
{return month!=t2.month?month<t2.month:day<t2.day;
}
void Time2::displayTime()
{cout<<month<<"月"<<day<<"日";
}
//
class Info
{
private:string train_number;string station;Time arrival_time,departure_time;int p;
public:Info(){}Info(string num,string sta,Time t1,Time t2);void T_Info_display();void S_Info_display();void setP(int n){p=n;}void setArrival_time(Time t1){arrival_time=t1;}void setDeparture_time(Time t2){departure_time=t2;}string getTrain_number(){return train_number;}string getStation(){return station;}Time getArrival_time(){return arrival_time;}Time getDeparture_time(){return departure_time;}friend ostream& operator<<(ostream &os,Info &info);friend istream& operator>>(istream &is,Info &info);
};
Info::Info(string num,string sta,Time t1,Time t2)
{train_number=num;station=sta;arrival_time=t1;departure_time=t2;p=t2-t1;
}
void Info::S_Info_display()
{cout<<train_number<<" ";arrival_time.displayTime();cout<<" ";departure_time.displayTime();cout<<" "<<"停留"<<p<<"分钟"<<endl;
}
void Info::T_Info_display()
{cout<<station<<" ";arrival_time.displayTime();cout<<" ";departure_time.displayTime();cout<<" "<<"停留"<<p<<"分钟"<<endl;
}
ostream& operator<<(ostream &os,Info &info)
{os<<info.train_number<<" "<<info.station<<" "<<info.arrival_time<<" "<<info.departure_time<<" "<<info.p<<endl;return os;
}
istream& operator>>(istream &is,Info &info)
{is>>info.train_number>>info.station>>info.arrival_time>>info.departure_time>>info.p;return is;
}
//
class Site
{
private:string name;int n;vector<Info> information;
public:Site():n(0){information.clear();}Site(string name):n(0){information.clear();this->name=name;}string getName(){return name;}int getN(){return n;}vector<Info>& getInfo(){return information;}void setN(int n){this->n=this->n+n;}int Site_searchTrain(string no);void Site_Display();void Site_Displays();void Site_addTrain(Info);friend ostream& operator<<(ostream &os,Site &s);friend istream& operator>>(istream &is,Site &s);
};
int Site::Site_searchTrain(string no)
{int i=0;vector<Info>::iterator i_it;for(i_it=information.begin();i_it!=information.end();i_it++,i++){if(i_it->getTrain_number()==no){return i;}}return -1;
}
void Site::Site_Displays()
{cout<<name<<endl;
}
void Site::Site_addTrain(Info temp)
{n++;information.push_back(temp);
}
void Site::Site_Display()
{cout<<"站点名称:"<<name<<endl;cout<<"共"<<n<<"班车次在此停靠"<<endl;for(int i=0;i<n;i++){information[i].S_Info_display();}
}
ostream& operator<<(ostream &os,Site &s)
{os<<s.name<<" "<<s.n<<" "<<endl;for(int i=0;i<s.n;i++)os<<s.information[i];return os;
}
istream& operator>>(istream &is,Site &s)
{s.information.clear();is>>s.name;if(s.name=="end")return is;is>>s.n;for(int i=0;i<s.n;i++){Info info;is>>info;s.information.push_back(info);}return is;
}
//
class Train
{
private:string no;vector<Info> information;string start,end;int n;
public:Train():n(0){information.clear();}string getNo(){return no;}int getN(){return n;}void setN(int n){this->n=this->n+n;}vector<Info>& getInfo(){return information;}
//  bool Site_Search(string);
//  bool Date_Search(Time2,Time2);
//  void add();int Train_searchSite(string name);void Train_addSite(Info);void Train_Display();void Train_DisplayAll();void Train_Displays();friend ostream& operator<<(ostream &os,Train &train);friend istream& operator>>(istream &is,Train &train);
};
//void Train::add()
//{
//    n=0;
//    cout<<"请输入车次:";
//    cin>>no;
//    if(no=="-1")
//  return;
//    cout<<"请输入本次列车运行时间(月/日):";
//    cin>>t2;
//    cout<<"请输入途经站点以及抵达时间(时/分)停留时间(站点输入-1结束)"<<endl;
//    while(1)
//    {
//    string s;
//    cin>>s;
//    if(s=="-1")break;
//    Site si(s);
//    site.push_back(si);
//    n++;
//    }
//}
int Train::Train_searchSite(string name)
{vector<Info>::iterator i_it;int i=0;for(i_it=information.begin();i_it!=information.end();i++,i_it++){if(i_it->getStation()==name)return i;}return -1;
}
void Train::Train_Displays()
{cout<<"车次:"<<no<<endl;cout<<"始发站:"<<start<<" ";cout<<"终点站:"<<end<<endl;
}
void Train::Train_addSite(Info temp)
{vector<Info>::iterator i_it;for(i_it=information.begin();i_it!=information.end();i_it++){if(temp.getArrival_time()<i_it->getArrival_time()){information.insert(i_it,temp);n++;break;}}
}
void Train::Train_DisplayAll()
{cout<<"车次:"<<no<<endl;cout<<"始发站:"<<start<<" ";cout<<"终点站:"<<end<<endl;cout<<"途经站点"<<endl;for(int i=0;i<n;i++){cout<<i+1<<" ";information[i].T_Info_display();}
}
void Train::Train_Display()
{cout<<"车次:"<<no<<endl;cout<<"始发站:"<<start<<" ";cout<<"终点站:"<<end<<endl;cout<<"是否要查看详细信息(1是0否)";bool flag;cin>>flag;if(flag){cout<<"车次:"<<no<<endl;cout<<"始发站:"<<start<<" ";cout<<"终点站:"<<end<<endl;cout<<"途经站点"<<endl;for(int i=0;i<n;i++){cout<<i+1<<" ";information[i].T_Info_display();}}elsereturn;
}
//bool Train::Date_Search(Time2 date1,Time2 date2)
//{
//    if(date1<date2)
//    {
//        Time2 temp;
//        temp=date1;
//        date1=date2;
//        date2=temp;
//    }
//    if(t2<date1&&date2<t2)
//    return 1;
//    else
//    return 0;
//}
//bool Train::Site_Search(string s)
//{
//  for(int i=0;i<n;i++)
//  {
//      if(site[i].getName()==s)
//      {
//          return 1;
//      }
//  }
//  return 0;
//}
ostream& operator<<(ostream &os,Train &train)
{os<<train.no<<" "<<train.start<<" "<<train.end<<" "<<train.n<<endl;for(int i=0;i<train.n;i++){os<<train.information[i];}return os;
}
istream& operator>>(istream &is,Train &train)                                                      //注意:每次Cin的时候会刷一下
{train.information.clear();is>>train.no;if(train.no=="end")return is;is>>train.start>>train.end>>train.n;for(int i=0;i<train.n;i++){Info info;is>>info;train.information.push_back(info);}return is;
}
//
class Admin
{
private:vector<Train> t;vector<Site> s;
public:Admin(){load();}~Admin(){save();}int Site_search(string name);void Site_add();void Site_del();void Dispatch();void load();void save();void Train_display();void Train_displays();void Site_display();void Site_displays();void Train_displayAll();};
void Admin::Site_displays()
{cout<<"共有"<<s.size()<<"个站点"<<endl;for(int i=0;i<s.size();i++){cout<<i+1<<" ";s[i].Site_Displays();}
}
int Admin::Site_search(string name)
{int i=0;vector<Site>::iterator s_it;for(s_it=s.begin();s_it!=s.end();s_it++,i++){if(s_it->getName()==name)return i;}return -1;
}
void Admin::Site_del()
{string name;vector<string> temp;vector<Site>::iterator s_it;int i=0,j=0,k=0;bool bo1=1,bo2=1;cout<<"请输入欲删除站点名称:"<<endl;cin>>name;for(i=0;i<s.size();i++){if(s[i].getName()==name){bo2=0;s_it=s.begin()+i;if(s[i].getN()!=0)bo1=0;s.erase(s_it);break;}}if(bo2==0){for(j=0;j<t.size();j++){for(k=0;k<t[j].getN();k++){if(t[j].getInfo()[k].getStation()==name){vector<Info>::iterator i_it;i_it=t[j].getInfo().begin()+k;t[j].setN(-1);temp.push_back(t[j].getNo());t[j].getInfo().erase(i_it);cout<<*i_it;}}}cout<<"站点"<<name<<"删除成功"<<endl;if(bo1)cout<<"无关联车次"<<endl;else{cout<<"关联车次"<<endl;for(int s=0;s<temp.size();s++)cout<<temp[s]<<" ";cout<<endl;}}if(bo2)cout<<"未找到该站点"<<endl;
}
void Admin::Site_add()                                //并没有重复检查
{string name;cout<<"请输入欲添加站点名称:(-1结束)"<<endl;cin>>name;while(1){if(name!="-1"){Site ts(name);s.push_back(ts);cout<<"站点"<<name<<"添加成功"<<endl;cout<<"请输入欲添加站点名称:(-1结束)"<<endl;cin>>name;}elsebreak;}
}
void Admin::Dispatch()
{string train_num;int i;bool flag1=1;Train_displays();cout<<"请输入欲调度车次"<<endl;cin>>train_num;for(i=0;i<t.size();i++){if(t[i].getNo()==train_num){flag1=0;break;}}if(flag1){cout<<"无该车次,调度结束"<<endl;return;}else{system("cls");t[i].Train_DisplayAll();int n;cout<<"选择调度功能:1加站点2减站点3修改时间"<<endl;cin>>n;if(n==1){Site_displays();string name;Time t1,t2;int n;cout<<"输入加入站点名"<<endl;cin>>name;cout<<"输入到站时间"<<endl;cin>>t1;cout<<"输入出发时间"<<endl;cin>>t2;n=Site_search(name);if(n!=-1){Info temp(train_num,name,t1,t2);t[i].Train_addSite(temp);s[n].Site_addTrain(temp);cout<<"添加成功"<<endl;}else{cout<<"此站不存在,请添加此站点后再进行此操作"<<endl;}}if(n==2){string name;int n;cout<<"输入欲删站点名"<<endl;cin>>name;n=t[i].Train_searchSite(name);if(n!=-1){vector<Info>::iterator i_it1=t[i].getInfo().begin()+n;t[i].getInfo().erase(i_it1);t[i].setN(-1);int n2=Site_search(name);int n3=s[n2].Site_searchTrain(train_num);vector<Info>::iterator i_it2=s[n2].getInfo().begin()+n3;s[n2].getInfo().erase(i_it2);s[n2].setN(-1);cout<<"删除成功"<<endl;}elsecout<<"该车次无此站点"<<endl;}if(n==3){string name;Time t1,t2;cout<<"请输入欲更时间的站点:";cin>>name;cout<<"请输入到站时间:";cin>>t1;cout<<"请输入离站时间:";cin>>t2;int n1,n2,n3;n1=t[i].Train_searchSite(name);t[i].getInfo()[n1].setArrival_time(t1);t[i].getInfo()[n1].setDeparture_time(t2);t[i].getInfo()[n1].setP(t2-t1);n2=Site_search(name);n3=s[n2].Site_searchTrain(train_num);s[n2].getInfo()[n3].setArrival_time(t1);s[n2].getInfo()[n3].setDeparture_time(t2);s[n2].getInfo()[n3].setP(t2-t1);}}
}
void Admin::Site_display()
{cout<<"共有"<<s.size()<<"个站点"<<endl<<endl;for(int i=0;i<s.size();i++){cout<<"第"<<i+1<<"个站点"<<endl;s[i].Site_Display();cout<<endl;}
}
void Admin::Train_displays()
{cout<<"共有"<<t.size()<<"班车次"<<endl<<endl;for(int i=0;i<t.size();i++){cout<<"第"<<i+1<<"班车次"<<endl;t[i].Train_Displays();cout<<endl;}
}
void Admin::Train_displayAll()
{cout<<"共有"<<t.size()<<"班车次"<<endl<<endl;for(int i=0;i<t.size();i++){cout<<"第"<<i+1<<"班车次"<<endl;t[i].Train_DisplayAll();cout<<endl;}
}
void Admin::Train_display()
{cout<<"共有"<<t.size()<<"班车次"<<endl<<endl;for(int i=0;i<t.size();i++){cout<<"第"<<i+1<<"班车次"<<endl;t[i].Train_Display();cout<<endl;}
}
void Admin::save()
{ofstream t_outfile("train.txt",ios::out);if(!t_outfile)return;vector<Train>::iterator it;for(it=t.begin();it!=t.end();it++){t_outfile<<*it;}t_outfile<<"end";t_outfile.close();ofstream s_outfile("station.txt",ios::out);if(!s_outfile)return;vector<Site>::iterator s_it;for(s_it=s.begin();s_it!=s.end();s_it++){s_outfile<<*s_it;}s_outfile<<"end";s_outfile.close();}
void Admin::load()
{Train tr;ifstream t_infile("train.txt",ios::in);if(!t_infile)return;t.clear();while(t_infile>>tr&&tr.getNo()!="end"){t.push_back(tr);}Site si;ifstream s_infile("station.txt",ios::in);if(!s_infile)return;s.clear();while(s_infile>>si&&si.getName()!="end"){s.push_back(si);}s_infile.close();t_infile.close();
//  vector<Train>::iterator train_it;                       //输出查错
//  vector<Site>::iterator site_it;
//  for(train_it=t.begin();train_it!=t.end();train_it++)
//  {
//      cout<<*train_it;
//  }
//  for(site_it=s.begin();site_it!=s.end();site_it++)
//  {
//      cout<<*site_it;
//  }
}
//
class Userop
{
private:vector<Train> t;vector<Site> s;
public:Userop(){load();}~Userop(){save();}void load();void save();void station_search();void train_search();
};
void Userop::train_search()
{string no;vector<Train>::iterator t_it=t.end(),it;cout<<"输入车次吧!骚年!"<<endl;cin>>no;while(1){for(it=t.begin();it!=t.end();it++){if(it->getNo()==no)t_it=it;}if(t_it!=t.end())break;else{cout<<"老哥,并没有这车,请重新输入:";cin>>no;}}t_it->Train_DisplayAll();}
void Userop::station_search()
{string start,end;                                                          //缺少错误检查的=-=vector<Site>::iterator start_it=s.end(),end_it=s.end(),it;cout<<"哇的一下输入上车站点:";cin>>start;while(1){for(it=s.begin();it!=s.end();it++){if(it->getName()==start)start_it=it;}if(start_it!=s.end())break;else{cout<<"老哥,并没有这站,请重新输入:";cin>>start;}}cout<<"唔的一下输入下车站点:";cin>>end;while(1){for(it=s.begin();it!=s.end();it++){if(it->getName()==end)end_it=it;}if(end_it!=s.end())break;else{cout<<"老哥,并没有这站,请重新输入:";cin>>end;}}int n,m,t=0;vector<Info> tempInfo;bool b=1;n=start_it->getN();m=end_it->getN();for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(start_it->getInfo()[i].getTrain_number()==end_it->getInfo()[j].getTrain_number()){t++;tempInfo.push_back(start_it->getInfo()[i]);b=0;}}}if(!b){cout<<"共找到"<<t<<"班车"<<endl;for(int i=0;i<tempInfo.size();i++){cout<<"车次:"<<tempInfo[i].getTrain_number()<<"到站时间:";tempInfo[i].getArrival_time().displayTime();cout<<endl;}}if(b){cout<<"没找到的说"<<endl;}
}
void Userop::save()
{ofstream t_outfile("train.txt",ios::out);if(!t_outfile)return;vector<Train>::iterator it;for(it=t.begin();it!=t.end();it++){t_outfile<<*it;}t_outfile<<"end";t_outfile.close();ofstream s_outfile("station.txt",ios::out);if(!s_outfile)return;vector<Site>::iterator s_it;for(s_it=s.begin();s_it!=s.end();s_it++){s_outfile<<*s_it;}s_outfile<<"end";s_outfile.close();}
void Userop::load()
{Train tr;ifstream t_infile("train.txt",ios::in);if(!t_infile)return;t.clear();while(t_infile>>tr&&tr.getNo()!="end"){t.push_back(tr);}t_infile.close();Site si;ifstream s_infile("station.txt",ios::in);if(!s_infile)return;s.clear();while(s_infile>>si&&si.getName()!="end"){s.push_back(si);}s_infile.close();
//  vector<Train>::iterator train_it;                                   //输出检测
//  vector<Site>::iterator site_it;
//  for(train_it=t.begin();train_it!=t.end();train_it++)
//  {
//      cout<<*train_it;
//  }
//  for(site_it=s.begin();site_it!=s.end();site_it++)
//  {
//      cout<<*site_it;
//  }
}
//
int main()
{Userop uop;uop.train_search();
//    Admin admin;
//    admin.Dispatch();
//    admin.Site_add();
//    admin.Site_del();
//    admin.Train_displayAll();
//    admin.Site_display();system("pause");system("pause");return 0;
}

6月25日

按照老师的数据结构改了一下代码,取消了加车功能,加入了用户的查询功能(但是我并不觉得老师的数据结构科学=-=),数据文件分为了train与station,display并不能用了。

存在bug:不同天的同样的车并不能区分出来,读入数据的时候,有时候会让数据文件消失(这个问题并不知道是为啥。。有的时候会发生)

#include<bits/stdc++.h>
using namespace std;
//
class Time
{
private:int hour,minute;
public:Time(){};friend ostream& operator<<(ostream &os,Time &t);friend istream& operator>>(istream &is,Time &t);friend Time& operator+(Time &t,int n);bool operator<(const Time &t2)const;void displayTime();
};
bool Time::operator<(const Time &t2)const
{return hour!=t2.hour?hour<t2.hour:minute<t2.minute;
}
Time& operator+(Time &t,int n)
{t.minute=t.minute+n;if(t.minute>60){t.minute=t.minute-60;t.hour++;return t;}elsereturn  t;
}
void Time::displayTime()
{if(hour<10)cout<<"0"<<hour;elseif(hour>24)cout<<hour-24<<"+1";elsecout<<hour;cout<<":";if(minute<10)cout<<"0"<<minute;elsecout<<minute;
}
istream& operator>>(istream &is,Time &t)
{is>>t.hour>>t.minute;return is;
}
ostream& operator<<(ostream &os,Time &t)
{os<<t.hour<<" "<<t.minute;return os;
}
//
class Time2
{
private:int month,day;
public:Time2(){};friend ostream& operator<<(ostream &os,Time2 &t);friend istream& operator>>(istream &is,Time2 &t);bool operator<(const Time2 &t2)const;void displayTime();
};
ostream& operator<<(ostream &os,Time2 &t)
{os<<t.month<<" "<<t.day;return os;
}
istream& operator>>(istream &is,Time2 &t)
{is>>t.month>>t.day;return is;
}
bool Time2::operator<(const Time2 &t2)const
{return month!=t2.month?month<t2.month:day<t2.day;
}
void Time2::displayTime()
{cout<<month<<"月"<<day<<"日";
}
//
class Info
{
private:string train_number;string station;Time arrival_time,departure_time;int p;
public:Info(){}void Info_display();string getTrain_number(){return train_number;}string getStation(){return station;}Time getArrival_time(){return arrival_time;}Time getDeparture_time(){return departure_time;}friend ostream& operator<<(ostream &os,Info &info);friend istream& operator>>(istream &is,Info &info);
};
ostream& operator<<(ostream &os,Info &info)
{os<<info.train_number<<" "<<info.station<<" "<<info.arrival_time<<" "<<info.departure_time<<" "<<info.p<<endl;return os;
}
istream& operator>>(istream &is,Info &info)
{is>>info.train_number>>info.station>>info.arrival_time>>info.departure_time>>info.p;return is;
}
//
class Site
{
private:string name;int n;vector<Info> information;
public:Site():n(0){information.clear();}string getName(){return name;}int getN(){return n;}vector<Info> getInfo(){return information;}//void Site_Display();friend ostream& operator<<(ostream &os,Site &s);friend istream& operator>>(istream &is,Site &s);
};
//void Site::Site_Display()
//{
//    cout<<name<<" ";arrival_time.displayTime();cout<<" ";departure_time.displayTime();cout<<" "<<"经停 "<<p<<"分钟"<<endl;
//}
ostream& operator<<(ostream &os,Site &s)
{os<<s.name<<" "<<s.n<<" "<<endl;for(int i=0;i<s.n;i++)os<<s.information[i];return os;
}
istream& operator>>(istream &is,Site &s)
{s.information.clear();is>>s.name;if(s.name=="end")return is;is>>s.n;for(int i=0;i<s.n;i++){Info info;is>>info;s.information.push_back(info);}return is;
}
//
class Train
{
private:string no;vector<Info> information;string start,end;int n;
public:Train():n(0){information.clear();}string getNo(){return no;}
//  bool Site_Search(string);
//  bool Date_Search(Time2,Time2);
//  void add();
//  void Train_Display();friend ostream& operator<<(ostream &os,Train &train);friend istream& operator>>(istream &is,Train &train);
};
//void Train::add()
//{
//    n=0;
//    cout<<"请输入车次:";
//    cin>>no;
//    if(no=="-1")
//  return;
//    cout<<"请输入本次列车运行时间(月/日):";
//    cin>>t2;
//    cout<<"请输入途经站点以及抵达时间(时/分)停留时间(站点输入-1结束)"<<endl;
//    while(1)
//    {
//    string s;
//    cin>>s;
//    if(s=="-1")break;
//    Site si(s);
//    site.push_back(si);
//    n++;
//    }
//}
//void Train::Train_Display()
//{
//    cout<<"车次:"<<no<<" "<<"时间:";
//    t2.displayTime();
//    cout<<endl;
//    vector<Site>::iterator it;
//    cout<<"途经站点信息"<<endl;
//    for(it=site.begin();it!=site.end();it++)
//    {
//        it->Site_Display();
//    }
//}
//bool Train::Date_Search(Time2 date1,Time2 date2)
//{
//    if(date1<date2)
//    {
//        Time2 temp;
//        temp=date1;
//        date1=date2;
//        date2=temp;
//    }
//    if(t2<date1&&date2<t2)
//    return 1;
//    else
//    return 0;
//}
//bool Train::Site_Search(string s)
//{
//  for(int i=0;i<n;i++)
//  {
//      if(site[i].getName()==s)
//      {
//          return 1;
//      }
//  }
//  return 0;
//}
ostream& operator<<(ostream &os,Train &train)
{os<<train.no<<" "<<train.start<<" "<<train.end<<" "<<train.n<<endl;for(int i=0;i<train.n;i++){os<<train.information[i];}return os;
}
istream& operator>>(istream &is,Train &train)                                                      //注意:每次Cin的时候会刷一下
{train.information.clear();is>>train.no;if(train.no=="end")return is;is>>train.start>>train.end>>train.n;for(int i=0;i<train.n;i++){Info info;is>>info;train.information.push_back(info);}return is;
}
//
class Admin
{
private:vector<Train> t;vector<Site> s;
public:Admin(){load();}~Admin(){save();}//void add();void Dispatch();void load();void save();
//  void traindisplay();};
//void Admin::add()
//{
//    while(1)
//    {
//    Train tr;
//    tr.add();
//    if(tr.getNo()=="-1")break;
//    t.push_back(tr);
//    }
//}
//void Admin::traindisplay()
//{
//  vector<Train>::iterator it;
//  for(it=t.begin();it!=t.end();it++)
//  it->Train_Display();
//}
void Admin::save()
{ofstream t_outfile("train.txt",ios::out);if(!t_outfile)return;vector<Train>::iterator it;for(it=t.begin();it!=t.end();it++){t_outfile<<*it;}t_outfile<<"end";t_outfile.close();ofstream s_outfile("station.txt",ios::out);if(!s_outfile)return;vector<Site>::iterator s_it;for(s_it=s.begin();s_it!=s.end();s_it++){s_outfile<<*s_it;}s_outfile<<"end";s_outfile.close();}
void Admin::load()
{Train tr;ifstream t_infile("train.txt",ios::in);if(!t_infile)return;t.clear();while(t_infile>>tr&&tr.getNo()!="end"){t.push_back(tr);}t_infile.close();Site si;ifstream s_infile("station.txt",ios::in);if(!s_infile)return;s.clear();while(s_infile>>si&&si.getName()!="end"){s.push_back(si);}s_infile.close();vector<Train>::iterator train_it;vector<Site>::iterator site_it;for(train_it=t.begin();train_it!=t.end();train_it++){cout<<*train_it;}for(site_it=s.begin();site_it!=s.end();site_it++){cout<<*site_it;}
}
//
class Userop
{
private:vector<Train> t;vector<Site> s;
public:Userop(){load();}~Userop(){save();}void load();void save();void station_search();
};
void Userop::station_search()
{string start,end;                                                          //缺少错误检查的=-=vector<Site>::iterator start_it=s.end(),end_it=s.end(),it;cout<<"哇的一下输入上车站点:";cin>>start;while(1){for(it=s.begin();it!=s.end();it++){if(it->getName()==start)start_it=it;}if(start_it!=s.end())break;else{cout<<"老哥,并没有这站,请重新输入:";cin>>start;}}cout<<"唔的一下输入下车站点:";cin>>end;while(1){for(it=s.begin();it!=s.end();it++){if(it->getName()==end)end_it=it;}if(end_it!=s.end())break;else{cout<<"老哥,并没有这站,请重新输入:";cin>>end;}}int n,m,t=0;vector<Info> tempInfo;bool b=1;n=start_it->getN();m=end_it->getN();for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(start_it->getInfo()[i].getTrain_number()==end_it->getInfo()[j].getTrain_number()){t++;tempInfo.push_back(start_it->getInfo()[i]);b=0;}}}if(!b){cout<<"共找到"<<t<<"班车"<<endl;for(int i=0;i<tempInfo.size();i++){cout<<"车次:"<<tempInfo[i].getTrain_number()<<"到站时间:";tempInfo[i].getArrival_time().displayTime();cout<<endl;}}if(b){cout<<"没找到的说"<<endl;}
}
void Userop::save()
{ofstream t_outfile("train.txt",ios::out);if(!t_outfile)return;vector<Train>::iterator it;for(it=t.begin();it!=t.end();it++){t_outfile<<*it;}t_outfile<<"end";t_outfile.close();ofstream s_outfile("station.txt",ios::out);if(!s_outfile)return;vector<Site>::iterator s_it;for(s_it=s.begin();s_it!=s.end();s_it++){s_outfile<<*s_it;}s_outfile<<"end";s_outfile.close();}
void Userop::load()
{Train tr;ifstream t_infile("train.txt",ios::in);if(!t_infile)return;t.clear();while(t_infile>>tr&&tr.getNo()!="end"){t.push_back(tr);}t_infile.close();Site si;ifstream s_infile("station.txt",ios::in);if(!s_infile)return;s.clear();while(s_infile>>si&&si.getName()!="end"){s.push_back(si);}s_infile.close();vector<Train>::iterator train_it;vector<Site>::iterator site_it;for(train_it=t.begin();train_it!=t.end();train_it++){cout<<*train_it;}for(site_it=s.begin();site_it!=s.end();site_it++){cout<<*site_it;}
}
//
int main()
{Userop uop;uop.station_search();system("pause");return 0;
}

6月21日

正常从文件读入,加入了列车日期,加入了到达站点的日期,加入了增加列车功能,display功能

#include<bits/stdc++.h>
using namespace std;
//
class Time
{
private:int hour,minute;
public:Time(){};friend ostream& operator<<(ostream &os,Time &t);friend istream& operator>>(istream &is,Time &t);friend Time& operator+(Time &t,int n);bool operator<(const Time &t2)const;void displayTime();
};
bool Time::operator<(const Time &t2)const
{return hour!=t2.hour?hour<t2.hour:minute<t2.minute;
}
Time& operator+(Time &t,int n)
{t.minute=t.minute+n;if(t.minute>60){t.minute=t.minute-60;t.hour++;return t;}elsereturn  t;
}
void Time::displayTime()
{if(hour<10)cout<<"0"<<hour;elseif(hour>24)cout<<hour-24<<"+1";elsecout<<hour;cout<<":";if(minute<10)cout<<"0"<<minute;elsecout<<minute;
}
istream& operator>>(istream &is,Time &t)
{is>>t.hour>>t.minute;return is;
}
ostream& operator<<(ostream &os,Time &t)
{os<<t.hour<<" "<<t.minute;return os;
}
//
class Time2
{
private:int month,day;
public:Time2(){};friend ostream& operator<<(ostream &os,Time2 &t);friend istream& operator>>(istream &is,Time2 &t);bool operator<(const Time2 &t2)const;void displayTime();
};
ostream& operator<<(ostream &os,Time2 &t)
{os<<t.month<<" "<<t.day;return os;
}
istream& operator>>(istream &is,Time2 &t)
{is>>t.month>>t.day;return is;
}
bool Time2::operator<(const Time2 &t2)const
{return month!=t2.month?month<t2.month:day<t2.day;
}
void Time2::displayTime()
{cout<<month<<"月"<<day<<"日";
}
//
class Site
{
private:string name;Time arrival_time,departure_time;int p;
public:Site(){};Site(string);string getName(){return name;}void Site_Display();friend ostream& operator<<(ostream &os,Site &s);friend istream& operator>>(istream &is,Site &s);
};
Site::Site(string s)
{name=s;cin>>arrival_time>>p;departure_time=arrival_time+p;
}
void Site::Site_Display()
{cout<<name<<" ";arrival_time.displayTime();cout<<" ";departure_time.displayTime();cout<<" "<<"经停 "<<p<<"分钟"<<endl;
}
ostream& operator<<(ostream &os,Site &s)
{os<<s.name<<" "<<s.arrival_time<<" "<<s.departure_time<<" "<<s.p<<endl;return os;
}
istream& operator>>(istream &is,Site &s)
{is>>s.name>>s.arrival_time>>s.departure_time>>s.p;return is;
}
//
class Train
{
private:string no;vector<Site> site;Time2 t2;int n;
public:Train():n(0){};string getNo(){return no;}bool Site_Search(string);bool Date_Search(Time2,Time2);void add();void Train_Display();friend ostream& operator<<(ostream &os,Train &train);friend istream& operator>>(istream &is,Train &train);
};
void Train::add()
{n=0;cout<<"请输入车次:";cin>>no;cout<<"请输入途经站点以及抵达时间停留时间(站点输入-1结束)"<<endl;while(1){string s;cin>>s;if(s=="-1")break;Site si(s);site.push_back(si);n++;}
}
void Train::Train_Display()
{cout<<"车次:"<<no<<" "<<"时间:";t2.displayTime();cout<<endl;vector<Site>::iterator it;cout<<"途经站点信息"<<endl;for(it=site.begin();it!=site.end();it++){it->Site_Display();}
}
bool Train::Date_Search(Time2 date1,Time2 date2)
{if(date1<date2){Time2 temp;temp=date1;date1=date2;date2=temp;}if(t2<date1&&date2<t2)return 1;elsereturn 0;
}
bool Train::Site_Search(string s)
{for(int i=0;i<n;i++){if(site[i].getName()==s){return 1;}}return 0;
}
ostream& operator<<(ostream &os,Train &train)
{os<<train.no<<" "<<train.t2<<" "<<train.n<<endl;for(int i=0;i<train.n;i++){os<<train.site[i];}return os;
}
istream& operator>>(istream &is,Train &train)
{is>>train.no;if(train.no=="end")return is;is>>train.t2>>train.n;for(int i=0;i<train.n;i++){Site s;is>>s;train.site.push_back(s);}return is;
}
//
class Admin
{
private:vector<Train> t;//vector<Site> site;
public:Admin(){load();}~Admin(){save();}void add();void load();void save();void traindisplay();};
void Admin::add()
{while(1){Train tr;tr.add();if(tr.getNo()=="-1")break;t.push_back(tr);}
}
void Admin::traindisplay()
{vector<Train>::iterator it;for(it=t.begin();it!=t.end();it++)it->Train_Display();
}
void Admin::save()
{ofstream t_outfile("train.txt",ios::out);if(!t_outfile)return;vector<Train>::iterator it;for(it=t.begin();it!=t.end();it++){t_outfile<<*it;}t_outfile<<"end";
}
void Admin::load()
{Train tr;ifstream t_infile("train.txt",ios::in);if(!t_infile)return;t.clear();while(t_infile>>tr&&tr.getNo()!="end"){t.push_back(tr);}t_infile.close();
}
//
class Userop
{
private:vector<Train> tr;multimap<string,string[]> si;};
//
int main()
{Admin admin;//admin.add();admin.traindisplay();return 0;
}

C++列车时刻查询开发进度记录相关推荐

  1. 最新全国火车列车时刻查询数据库20090309下载

    附件为最新全国火车列车时刻查询数据库表,可以导入到SQL. 原本也是从网上下载下来的,后来发现有很多重复的,错站的,我在本地做了大量手动插入修改等,花了我很长时间哦.深感网上很难找,所以拿出来和大家分 ...

  2. 列车时刻查询系统Java-Eclipse(GUI编程)

    ​ 列车时刻查询系统,就是利用Java和数据库编程实现,具有列车信息的录入.查询.删除.修改.输出.还有系统界面的设计等等.列车时刻查询系统主要功能是:通过列车时刻查询系统,管理人员可以对车站设置.列 ...

  3. 由列车时刻查询系统想到的...

    由于C#结课,项目设计<列车时刻查询>,看似简单,实际上他的设计是个大热点! 我想火车站的售票系统也是基于这个问题上的 ,当然依照我的能力,设计查询也是部分城市的功能,不可能像全国这么大的 ...

  4. 4.8地铁查询开发进度

    今天周一,一天满课,开发进度没涨太多,实现了一二号线路的换乘. 转载于:https://www.cnblogs.com/0518liu/p/11069185.html

  5. 4.7地铁查询开发进度

    昨天实现了一二号线不换乘查询,于是今天我们把其他的四条线路都加了进来,我们根据前面的方法实现了所有线路不换乘的查询. 转载于:https://www.cnblogs.com/0518liu/p/110 ...

  6. 个人开发—进度记录(一)

    时间:2018/2/6 计划:手绘网页整体布局,功能要点 进行:搜集素材,模仿思路 完成: 问题:页面框架布局(待学习) 转载于:https://www.cnblogs.com/1605-3QYL/p ...

  7. 个人开发—进度记录(十五)

    时间:2018/2/25 计划:滚动图的设计 进行:分类标签的编写 完成:分类的汇总,分类右侧总括 问题:具体的内容不知道有什么样的 转载于:https://www.cnblogs.com/1605- ...

  8. 个人开发—进度记录(二)

    时间:2018/2/7 计划:首页的顶部标题部分,登录,注册,订单,客服,定位,页面跳转 进行:手绘网页整体布局与概括设计要点 完成:搜索素材 问题:概括设计要点时没有清晰的思路,主要原因是具体的问题 ...

  9. JQM---列车时刻查询

    <!DOCTYPE html> <html lang="zh-cn"> <head><meta charset="UTF-8&q ...

最新文章

  1. My First Blog on cnblogs (现代程序设计 Homework-01)
  2. Android中的日期控件DatePicker和DatePickerDialog
  3. key value vue 输出_vue注意事项总结(一)
  4. php 取oracle图片,在PHP中将图片存放ORACLE中_php
  5. 使用组策略禁止域用户运行特定软件名称的程序
  6. 背景半透明(HTML、CSS)
  7. powerdesigner中生成数据库脚本时出现长度限制问题的解决方法
  8. linux服务器下安装phpstudy 如何命令行进入mysql
  9. 尚硅谷-宋红康-JVM上中下篇完整笔记
  10. hive hql 交差并集 练习
  11. 游戏设计的艺术:一本透镜的书——第十九章 世界包含着各种空间
  12. 对校招生培养工作的建议_贵单位对我校学生培养工作有何建议
  13. 记第一次挖洞交洞历程
  14. PMBOK(第六版) PMP笔记——《十三》第十三章(项目干系人管理)
  15. window.name属性详解(Javascript)
  16. html语言中的双冒号,css单冒号和双冒号用法和区别
  17. 用python提取文字中省份与城市
  18. Python笔记 · 鸭子类型 / Duck Typing
  19. 开源项目怎么找?最新的优质开源项目来了
  20. 向 iOS 越狱彻底说再见!

热门文章

  1. 科学道德与学术诚信 计算机,科学道德与学术诚信论文.pdf
  2. Bilibili直播弹幕抓取(1):WebSocket
  3. Vue 动态路由,使用 addRoute 添加(分享)
  4. 频率学派和贝叶斯学派的一些区别
  5. 【C程序设计语言第二版】atoi和atof函数的实现
  6. 在可能的领域定位自我
  7. 【开源项目分享】用于机器人崎岖地形导航的高程图创建及Gazebo仿真
  8. 营销型单页企业网站的力量
  9. 软件测试职业发展规划,带你摆脱年龄的困扰!不能不看
  10. iPhone 6及以前型号,unity部分相机无法渲染的问题