一直报错,求解决
#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>
#include<string>
换成
#include<string.h>
试一下是否可以啊?