📄 source.h
字号:
#include<iostream>
#include<fstream>
#include<cstring>
#include<conio.h>
using namespace std;
struct Time
{
int hour;
int minutes;
};
class Flight
{
public:
Flight();
void Ofile(ofstream &of);
void Infile(ifstream &f);
void Out();
void Set_Airline(char *airlinet,char *Startt,char *overt,Time starttimet,Time overtime2,int money,int discount,int certain);
char *GetAirline();
char *GetStart();
int GetAmount();
void SetAmount(int t);
char *GetOver();
int GetCertain();
Flight *Next;
protected:
char Airline[20];
char Start[20];
char Over[20];
Time StartTime;
Time OverTime;
int Money;
int Discount;
int Amount;
int Certain;
};
Flight::Flight():Next(0){}
char *Flight::GetAirline(){return Airline;}
char* Flight::GetStart(){return Start;}
char *Flight::GetOver(){return Over;}
int Flight::GetAmount(){return Amount;}
int Flight::GetCertain(){return Certain;}
void Flight::SetAmount(int t){ Amount=t;}
void Flight::Set_Airline(char *airlinet,char *startt,char *overt,Time starttimet,Time overtimet,int money,int discount,int certaint)
{
strcpy(Airline,airlinet);
strcpy(Start,startt);
strcpy(Over,overt);
StartTime=starttimet;
OverTime=overtimet;
Money=money;
Discount=discount;
Certain=certaint;
Amount=0;
}
void Flight::Infile(ifstream &f)
{
f>>Airline>>Start>>Over>>StartTime.hour>>StartTime.minutes>>OverTime.hour>>OverTime.minutes>>Money>>Discount>>Amount>>Certain; //将数据输入到文件
}
void Flight::Ofile(ofstream &of)
{
of<<" "<<Airline<<" "<<Start<<" "<<Over<<" "<<StartTime.hour<<" "<<StartTime.minutes<<" "<<OverTime.hour<<" "<<OverTime.minutes<<" "<<Money<<" "<<Discount<<" "<<Amount<<" "<<Certain; //从文件中提取数据
}
void Flight::Out()
{
cout<<Airline<<"\t"<<Start<<"\t"<<Over<<"\t"<<StartTime.hour<<":"<<StartTime.minutes<<"\t "<<OverTime.hour<<":"<<OverTime.minutes<<"\t\t"<<Money<<"\t"<<Discount;
}
class Passenger
{
public:
Passenger();
void Ofile(ofstream &of);
void Infile(ifstream &f);
void Out();
void SetPassenger(char *namet,char *idt,int amountt,char *airlinet,int numbert);
char *GetName();
char *GetId();
int GetAmount();
void SetAmount(int t);
char *GetAirline();
int GetNumber();
Passenger *Next;
protected:
char Name[20];
char Id[20];
int Amount;
char Airline[20];
int Number;
};
Passenger::Passenger():Next(NULL){}
char *Passenger::GetName(){return Name;}
char* Passenger::GetId(){return Id;}
char* Passenger::GetAirline(){return Airline;}
int Passenger::GetAmount(){return Amount;}
int Passenger::GetNumber(){return Number;}
void Passenger::SetAmount(int t){Amount=Amount-t;}
void Passenger::SetPassenger(char *namet,char *idt,int amountt,char *airlinet,int numbert)
{
strcpy(Name,namet);
strcpy(Id,idt);
Amount=amountt;
strcpy(Airline,airlinet);
Number=numbert;
}
void Passenger::Infile(ifstream &f)
{
f>>Name>>Id>>Number>>Airline>>Amount;
}
void Passenger::Ofile(ofstream &of)
{
of<<" "<<Name<<" "<<Id<<" "<<Number<<" "<<Airline<<" "<<Amount;
}
void Passenger::Out()
{
cout<<Name<<"\t"<<Id<<"\t"<<Airline<<"\t"<<Number<<"\t"<<Amount;
}
class Function //功能类
{
public:
Function(); //构造函数
~Function(); //析构函数
void Menu(); //菜单函数
void Add_Airline(); //录入航班函数
void Book(); //订票函数
void Search_Flight(); //查询航班函数
void Bounce(); //退票函数
void Modify(); //修改函数
void Show_Flight();
void Show_Passenger();
private:
Flight *Flight_First;
Passenger *Passenger_First;
void Read_Flight(); //读取航班函数
void Read_Passenger(); //读取客户信息函数
void Save_Airline(); //保存航班信息函数
void Save_Passenger(); //保存客户信息函数
};
Function::Function()
{
Flight_First=new Flight;
Passenger_First=new Passenger;
Read_Flight();
Read_Passenger();
}
Function::~Function()
{
delete Flight_First;
delete Passenger_First;
}
void Function::Add_Airline() //添加航班信息函数
{
char airline[20];
char start[20];
char over[20];
Time starttime;
Time overtime;
int money,discount,certain;
char choose;
Flight *f1,*p,*f2;
system("cls");
f1=Flight_First;
f2=Flight_First->Next;
while(f1->Next)
f1=f1->Next;
do
{
p=new Flight;
cout<<"请输入您要添加的航班信息:"<<endl;
cout<<"请输入航班:";
cin>>airline;
while(f2)
{
if(strcmp(f2->GetAirline(),airline)==0)
{
cout<<"该航班已存在,请确定航班!\n\n";
cout<<"请输入航班:";
cin>>airline;
break;
}
f2=f2->Next;
}
cout<<"请输入起飞地:";
cin>>start;
cout<<"请输入抵达地:";
cin>>over;
cout<<"请输入起飞时间(小时):";
cin>>starttime.hour;
cout<<"分钟:";
cin>>starttime.minutes;
cout<<"请输入抵达时间(小时):";
cin>>overtime.hour;
cout<<"分钟:";
cin>>overtime.minutes;
cout<<"请输入票价:";
cin>>money;
cout<<"请输入折扣(%):";
cin>>discount;
cout<<"请输入载客量:";
cin>>certain;
p->Set_Airline(airline,start,over,starttime,overtime,money,discount,certain);
f1->Next=p;
p->Next=NULL;
f1=f1->Next;
cout<<"是否继续输入信息?(Y\\N) "<<endl;
cin>>choose;
}while(choose=='y'||choose=='Y');
Save_Airline();
cout<<"1.返回主菜单"<<endl;
cin>>choose;
while(choose!='1')
{
cout<<"1.返回主菜单"<<endl;
cin>>choose;
}
Menu();
}
void Function::Book() //定票函数
{
char choose;
int flag;
char airline[20],name[20],id[20];
int amount;
Passenger *temp=Passenger_First,*p;
Flight *f1=Flight_First->Next;
Flight *f2=Flight_First->Next;
Flight *f3=Flight_First->Next;
system("cls");
while(temp->Next)
temp=temp->Next;
do
{
cout<<"输入航班号:";
cin>>airline;
flag=0;
while(f1)
{
if(strcmp(f1->GetAirline(),airline)==0)
{
flag=1;
break;
}
f1=f1->Next;
}
if(flag==0)
{
cout<<"无该航班,请确认您的输入!\n";
break;
}
else if(f1->GetAmount()<f1->GetCertain())
{
cout<<"航班\t起飞地\t抵达地\t起飞时间 抵达时间\t票价\t折扣\t剩余票数\n";
f1->Out();
cout<<"\t"<<f1->GetCertain()-f1->GetAmount()<<endl;
p=new Passenger;
cout<<"请输入客户姓名:";
cin>>name;
cout<<"请输入客户省份证号:";
cin>>id;
cout<<"请输入订票数量:";
cin>>amount;
p->SetPassenger(name,id,amount,airline,f1->GetAmount());
f1->SetAmount(f1->GetAmount()+amount);
temp->Next=p;
p->Next=NULL;
temp=temp->Next;
cout<<"订票成功!\n";
}
else if(f1->GetAmount()==f1->GetCertain())
{
cout<<"航班\t起飞地\t抵达地\t起飞时间 抵达时间\t票价\t折扣\t剩余票数\n";
f1->Out();
cout<<"\t"<<f1->GetCertain()-f1->GetAmount()<<endl;
cout<<"对不起,没有票了!"<<endl;
cout<<"\n有以下航班可供选择"<<endl;
cout<<"起始站\t航班\t中转站\t航班\t终点站\n";
while(f2)
{
if(strcmp(f2->GetStart(),f1->GetStart())==0&&strcmp(f1->GetOver(),f2->GetOver())==0&&strcmp(f1->GetAirline(),f2->GetAirline())==1)
cout<<f2->GetStart()<<"\t"<<f2->GetAirline()<<"\t无\t无\t"<<f2->GetOver()<<endl;
f2=f2->Next;
}
f2=Flight_First->Next;
while(f2)
{
if(strcmp(f2->GetStart(),f1->GetStart())==0)
{
f3=Flight_First->Next;
while(f3)
{
if(strcmp(f3->GetStart(),f2->GetOver())==0&&strcmp(f3->GetOver(),f1->GetOver())==0)
{
cout<<f2->GetStart()<<"\t"<<f2->GetAirline()<<"\t"<<f2->GetOver()<<"\t";
cout<<f3->GetAirline()<<"\t"<<f3->GetOver()<<endl;
}
f3=f3->Next;
}
}
f2=f2->Next;
}
}
cout<<"是否继续订票?(Y\\N) "<<endl;
cin>>choose;
}while(choose=='y'||choose=='Y');
Save_Passenger();
Save_Airline();
cout<<"1.返回主菜单"<<endl;
cin>>choose;
while(choose!='1')
{
cout<<"1.返回主菜单"<<endl;
cin>>choose;
}
Menu();
}
void Function::Bounce() //退票函数
{
char airline[20];
int number;
char choose;
Passenger *temp,*p;
system("cls");
Flight *f=Flight_First->Next;
temp=Passenger_First->Next;
p=Passenger_First->Next;
cout<<"请输入航班:";
cin>>airline;
cout<<"输入座位号:";
cin>>number;
while(temp)
{
if(strcmp(temp->GetAirline(),airline)==0&&temp->GetNumber()==number) //判断订单编号是否相同
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -