c++课程实践火车票管理系统.docx
c+课程实践火车票管理系统#include<iostream> #include<fstream> #include<string> #include<iomanip> #include <stdio.h> using namespace std; class Bus_infor int No; static int Bus_No; char start20; char end20; int Bus_order; int all_tickted; int tickted; int Hour_start,Minute_start,Hour_end,Minute_end; int Hour; int Minute; public: Bus_infor *next; Bus_infor; Bus_infor; int Get_no; int Get_all_tickted; int Get_tickted; int Get_bus_order; char *Get_start; char *Get_end; void addr; void Order_tickt(int n); void Unorder_tickt(int n); void GetTime_start; void GetTime_end; void ShowTime; void GetTime; void Show_infor; void input cout<<"ttt按提示输入:"<<endl; cout<<"tt输入车次: " cin>>Bus_order; cout<<"请输入车的额定载量: " cin>>all_tickted; GetTime_start; GetTime_end; addr; char a; cout<<"是否清空售票(y/n)?"<<endl; cin>>a; if(a='y') tickted=0; void input(ifstream & is) is>>Bus_order>>start>>end>>all_tickted>>tickted>>Hour_start>>Minute_start>>Hour_end>>Minute_end; is.get; void output cout<<"客车基本信息如下:"<<endl; cout<<"车次:"<<Bus_order <<" 发车时间:"<<Hour_start<<":"<< Minute_start <<" 起点站:"<<start <<" 终点站:"<<end <<"行车时间"<<Hour_end<<":"<< Minute_end <<"额定载量"<<all_tickted<<"已订票人数"<<tickted<<":"<< Minute_end<<endl<<endl; void output(ofstream & os) os<<setw(6)<<Bus_order <<setw(15)<<start <<setw(6)<<end <<setw(15)<<all_tickted <<setw(15)<<tickted <<setw(15)<<Hour_start <<setw(15)<<Minute_start <<setw(15)<<Hour_end <<setw(15)<<Minute_end <<endl; ; int Bus_infor:Bus_No=1; void Bus_infor:GetTime_start int NewH=0,NewM=0; cout<<"请输入发车时间:"<<endl; cin>>NewH>>NewM; Hour_start=NewH; Minute_start=NewM; void Bus_infor:GetTime_end int NewH=0,NewM=0; cout<<"请输入行车时间:"<<endl; cin>>NewH>>NewM; Hour_end=NewH; Minute_end=NewM; void Bus_infor:GetTime if(Minute_end>=Minute_start)Minute=(Minute_end-Minute_start); Hour=(Hour_end-Hour_start); else Minute=(Minute_end-Minute_start+60); Hour=(Hour_end-Hour_start-1); void Bus_infor:ShowTime cout<<Hour_start<<":"<<Minute_start<<" " cout<<Hour_end<<":"<<Minute_end<<" " cout<<Hour<<":"<<Minute<<endl; Bus_infor:Bus_infor No=Bus_No+; tickted=0; Bus_infor:Bus_infor Bus_No-; void Bus_infor:addr cout<<"请输入起点站与终点站:"<<endl; char a20;char b20; cin>>a;cin>>b; strcpy(start,a);strcpy(end,b); char *Bus_infor:Get_start return start; char *Bus_infor:Get_end return end; int Bus_infor:Get_no return No; int Bus_infor:Get_all_tickted return all_tickted; int Bus_infor:Get_tickted return tickted; int Bus_infor:Get_bus_order return Bus_order; void Bus_infor:Order_tickt(int n) tickted=tickted+n; void Bus_infor:Unorder_tickt(int n) tickted=tickted-n; ; class Bus_link public: Bus_linkhead=new Bus_infor;head->next=NULL;key=0; void input; void mend; void del; int find(Bus_infor *p,int num,char *pn); int find1(Bus_infor *p,int num,char *pn); void found; void show; void Order; void Unorder; void save; void begin; void clear; char mainmenu; int getkey return key; void setkey(int k) key=k; private: Bus_infor *head; int key; ; void Bus_link:input Bus_infor *p,*p2=NULL; p=head; int n; while(p->next) p=p->next; while(n) p2=new Bus_infor; p2->input; p->next=p2; p2->next=NULL; p=p->next; Bus_link:setkey(1); cout<<"ttt按1继续,按0返回 : " cin>>n; void Bus_link:Order Bus_infor *p; cout<<"确定购票(y/n)?"<<endl; char X;cin>>X; if(X='y') int num; cout<<"ttt输入车次号: " cin>>num; if( !find1(&p,num,"") ) cout<<"tt找不到你要定票的车辆的内容!"<<endl; return; cout<<"输入要定的票数 " int n;cin>>n; p=p->next; if(p->Get_tickted+n)<=p->Get_all_tickted) p->Order_tickt(n); cout<<"谢谢使用"<<endl; else cout<<"对不起,没有足够的票数。"<<endl; else if(X='n') cout<<"谢谢使用"<<endl; else cout<<"输入字符不确定"<<endl; Bus_link:setkey(1); void Bus_link:Unorder Bus_infor *p; cout<<"确定退票(y/n)?"<<endl; char X;cin>>X; if(X='y') int num; cout<<"ttt输入车次号: " cin>>num; if( !find1(&p,num,"") ) cout<<"tt找不到你要定票的车辆的内容!"<<endl; return; cout<<"输入要退的票数 " int n;cin>>n; p=p->next; if(p->Get_tickted-n)>=0) p->Unorder_tickt(n); else cout<<"对不起,数据出错!。"<<endl; else if(X='n') cout<<"谢谢使用"<<endl; else cout<<"输入字符不确定"<<endl; Bus_link:setkey(1); void Bus_link:found Bus_infor *p; int num=-1,n=9; char name20="" do cout<<"tt1:按车次查找,2:按终点站查找: " cin>>n; while(n<1|n>2); if(n=1) cout<<"ttt输入车次: " cin>>num; if(n=2) cout<<"ttt输入终点站: " cin>>name; if(!find(&p,num,name) cout<<"tt找不到你要查找的内容!"<<endl; return; int Bus_link:find(Bus_infor *p1,int num,char *pn) Bus_infor *p; p=head; int t=0; while(p->next) (*p1)=p; if( (p->next)->Get_bus_order=num|!strcmp( (p->next)->Get_end,pn ) ) (p->next)->output; t=1; break; p=p->next; return t; int Bus_link:find1(Bus_infor *p1,int num,char *pn) Bus_infor *p; p=head; int t=0; while(p->next) (*p1)=p; if( (p->next)->Get_bus_order=num|!strcmp( (p->next)->Get_end,pn ) ) return 1; p=p->next; return 0; void Bus_link:del Bus_infor *p,*p2; int num; cout<<"ttt输入车次号: " cin>>num; if( !find(&p,num,"") ) cout<<"tt找不到你要删除的内容!"<<endl; return; p2=p->next; p->next=p2->next; delete p2; Bus_link:setkey(1); void Bus_link:show Bus_infor *p; p=head; while(p->next) (p->next)->output; p=p->next; void Bus_link:mend Bus_infor *p; int num=-1; char name20="" cout<<"ttt输入车次号: " cin>>num; if( !find1(&p,num,name) ) cout<<"tt找不到你要修改的内容!"<<endl; return; (p->next)->output; (p->next)->input; Bus_link:setkey(1); void Bus_link:save Bus_infor *p; p=head; ofstream os("bus.txt",ios:out); if (Bus_link:getkey=1) while(p->next) (p->next)->output(os); p=p->next; cout<<"ttt文件已保存! "<<endl; Bus_link:setkey(0); void Bus_link:begin Bus_infor *p,*p2; p=head; clear; long t; ifstream is("bus.txt",ios:in); if(!is) ofstream os("bus.txt",ios:out); os.close; return ; int num=-1; while(1) num=-1; t=is.tellg; is>>num; is.seekg(t); if(num<0) is.close; return; p2=new Bus_infor; p2->input(is); p->next=p2; p2->next=NULL; p=p->next; void Bus_link:clear Bus_infor *p,*p2; p=head->next; while( p ) p2=p; p=p->next; delete p2; char Bus_link:mainmenu char n6; cout<<"nn -欢迎使用车票管理系统-"<<endl<<endl; cout<<" 制作人 刘强 "<<endl<<endl <<" 物理学院 "<<endl <<" "<<endl <<" 1. 录入车票信息 2. 浏览车票信息 <<" 3. 查询车票信息 4. 删除车票信息 <<" 5. 修改车票信息 6. 定购车票信息 <<" 7. 退还车票信息 8. 保存车票信息 <<" 0: 退出系统 <<"-"<<endl <<"-"<<endl <<" 请选择功能按钮: " cin>>n; return n0; int main Bus_link pp; int k=1; char n; pp.begin; while(k=1) n=pp.mainmenu; switch(n) case '1':pp.input; break; case '2':pp.show; break; case '3':pp.found; break; "<<endl "<<endl "<<endl "<<endl "<<endl case '4':pp.del; break; case '5':pp.mend; break; case '6':pp.Order; break; case '7':pp.Unorder; break; case '8':pp.save; break; case '0': if(pp.getkey=1) cout<<"ttt是否保存? 1 : 保存 0:不保存 : " cin>>k; if(k=1) pp.save; pp.clear; k=0; break; return 0;