车票管理程序,但是一直报错,不会改

一直报错,求解决


#include<iostream> 
#include<fstream> 
#include<string> 
#include<iomanip> 
#include <stdio.h> 
using namespace std; 
class Bus_infor 
{ 
int No; 
static int Bus_No; 
char start[20]; 
char end[20]; 
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<<"\t\t\t 按提示输入:"<<endl; 
cout<<"\t\t 输入车次: ";
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 a[20];char b[20]; 
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_link(){head=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<<"\t\t\t 按 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<<"\t\t\t 输入车次号: ";
cin>>num; 
if( !find1(&p,num,"^") ) 
{ 
cout<<"\t\t 找不到你要定票的车辆的内容!"<<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<<"\t\t\t 输入车次号: ";
cin>>num; 
if( !find1(&p,num,"^") ) 
{ 
cout<<"\t\t 找不到你要定票的车辆的内容!"<<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 name[20]="^"; 
do 
{ 
cout<<"\t\t1:按车次查找,2:按终点站查找: ";
cin>>n; 
}while(n<1||n>2); 
if(n==1) 
{ 
cout<<"\t\t\t 输入车次: ";
cin>>num; 
} 
if(n==2) 
{ 
cout<<"\t\t\t 输入终点站: ";
cin>>name; 
} 
if(!find(&p,num,name)) 
{ 
cout<<"\t\t 找不到你要查找的内容!"<<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<<"\t\t\t 输入车次号: ";
cin>>num; 
if( !find(&p,num,"^") ) 
{ 
cout<<"\t\t 找不到你要删除的内容!"<<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 name[20]="^"; 
cout<<"\t\t\t 输入车次号: ";
cin>>num; 
if( !find1(&p,num,name) ) 
{ 
cout<<"\t\t 找不到你要修改的内容!"<<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<<"\t\t\t 文件已保存! "<<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 n[6]; 
cout<<"\n\n ---欢迎使用车票管理系统---"<<endl<<endl; 
cout<<" "<<endl<<endl
<<" "<<endl <<" "<<endl 
<<" 1. 录 入 车 票 信 息 2. 浏 览 车 票 信 息"<<endl 
<<" 3. 查 询 车 票 信 息 4. 删 除 车 票 信 息"<<endl 
<<" 5. 修 改 车 票 信 息 6. 定 购 车 票 信 息"<<endl 
<<" 7. 退 还 车 票 信 息 8. 保 存 车 票 信 息"<<endl 
<<" 0: 退出系统 "<<endl
<<"---------------------------------------------------------"<<endl 
<<"---------------------------------------------------------"<<endl 
<<" 请选择功能按钮: ";
cin>>n; 
return n[0]; 
} 
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; 
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<<"\t\t\t 是否保存? 1 : 保存 0:不保存 : ";
cin>>k; 
if(k==1) 
pp.save(); 
} 
pp.clear(); 
k=0;
break; 
} 
} 
return 0; 
}

头部文件换一下。

#include<string>
换成:
#include<cstring>

img

#include<string> 
换成
#include<string.h> 

试一下是否可以啊?