C++列车时刻查询开发进度记录
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++列车时刻查询开发进度记录相关推荐
- 最新全国火车列车时刻查询数据库20090309下载
附件为最新全国火车列车时刻查询数据库表,可以导入到SQL. 原本也是从网上下载下来的,后来发现有很多重复的,错站的,我在本地做了大量手动插入修改等,花了我很长时间哦.深感网上很难找,所以拿出来和大家分 ...
- 列车时刻查询系统Java-Eclipse(GUI编程)
列车时刻查询系统,就是利用Java和数据库编程实现,具有列车信息的录入.查询.删除.修改.输出.还有系统界面的设计等等.列车时刻查询系统主要功能是:通过列车时刻查询系统,管理人员可以对车站设置.列 ...
- 由列车时刻查询系统想到的...
由于C#结课,项目设计<列车时刻查询>,看似简单,实际上他的设计是个大热点! 我想火车站的售票系统也是基于这个问题上的 ,当然依照我的能力,设计查询也是部分城市的功能,不可能像全国这么大的 ...
- 4.8地铁查询开发进度
今天周一,一天满课,开发进度没涨太多,实现了一二号线路的换乘. 转载于:https://www.cnblogs.com/0518liu/p/11069185.html
- 4.7地铁查询开发进度
昨天实现了一二号线不换乘查询,于是今天我们把其他的四条线路都加了进来,我们根据前面的方法实现了所有线路不换乘的查询. 转载于:https://www.cnblogs.com/0518liu/p/110 ...
- 个人开发—进度记录(一)
时间:2018/2/6 计划:手绘网页整体布局,功能要点 进行:搜集素材,模仿思路 完成: 问题:页面框架布局(待学习) 转载于:https://www.cnblogs.com/1605-3QYL/p ...
- 个人开发—进度记录(十五)
时间:2018/2/25 计划:滚动图的设计 进行:分类标签的编写 完成:分类的汇总,分类右侧总括 问题:具体的内容不知道有什么样的 转载于:https://www.cnblogs.com/1605- ...
- 个人开发—进度记录(二)
时间:2018/2/7 计划:首页的顶部标题部分,登录,注册,订单,客服,定位,页面跳转 进行:手绘网页整体布局与概括设计要点 完成:搜索素材 问题:概括设计要点时没有清晰的思路,主要原因是具体的问题 ...
- JQM---列车时刻查询
<!DOCTYPE html> <html lang="zh-cn"> <head><meta charset="UTF-8&q ...
最新文章
- My First Blog on cnblogs (现代程序设计 Homework-01)
- Android中的日期控件DatePicker和DatePickerDialog
- key value vue 输出_vue注意事项总结(一)
- php 取oracle图片,在PHP中将图片存放ORACLE中_php
- 使用组策略禁止域用户运行特定软件名称的程序
- 背景半透明(HTML、CSS)
- powerdesigner中生成数据库脚本时出现长度限制问题的解决方法
- linux服务器下安装phpstudy 如何命令行进入mysql
- 尚硅谷-宋红康-JVM上中下篇完整笔记
- hive hql 交差并集 练习
- 游戏设计的艺术:一本透镜的书——第十九章 世界包含着各种空间
- 对校招生培养工作的建议_贵单位对我校学生培养工作有何建议
- 记第一次挖洞交洞历程
- PMBOK(第六版) PMP笔记——《十三》第十三章(项目干系人管理)
- window.name属性详解(Javascript)
- html语言中的双冒号,css单冒号和双冒号用法和区别
- 用python提取文字中省份与城市
- Python笔记 · 鸭子类型 / Duck Typing
- 开源项目怎么找?最新的优质开源项目来了
- 向 iOS 越狱彻底说再见!