📄 flightlist.cpp
字号:
#include <string.h>
#include <fstream>
#include <stdlib.h>
#include <conio.h>
#include <iomanip>
#include "FlightList.h"
FlightList::FlightList()
{
head=new Flight;
tail=new Flight;
head->next=tail;
tail->previous=head;
head->previous=tail->next=NULL;
}
void FlightList::add() //添加函数
{
Flight *p;
p=new Flight;
tail->previous->next=p;
p->previous=tail->previous;
p->next=tail;
tail->previous=p;
cin>>*p;
cout<<"您输入的信息是:"<<endl;
display(p);
// display(head->next);
}
void FlightList::remove() //删除函数
{
Flight *p=head->next;
int sign=0;
char number[7];
cout<<"请输入您要删除的航班号"<<endl;
cin>>number;
p->previous=head;
while(p!=tail)
{
if(!strcmp(p->getFlightNumber(),number))
{
p->previous->next=p->next;
delete p;
cout<<"航班"<<number<<"已成功删除"<<endl;
++sign;
break;
}
else
{
p->previous=p;
p=p->next;
}
}
if(sign==0)
{
cout<<"您要删除的信息不存在"<<endl;
}
}
void FlightList::display(Flight *result) //显示函数
{
cout<<setw(10)<<"出发地点"<<setw(10)<<"目的地点"<<setw(10)<<"起飞时间"<<setw(10)<<"到达时间"<<setw(8)<<"航班号"<<setw(6)<<"机型"<<setw(5)<<"全价"<<setw(10)<<"座位总数"<<setw(10)<<"剩余票数"<<endl;
cout<<*result<<endl;
}
int FlightList::findByFlight() //查找函数(按航程)
{
int sign=0;
Flight *p=head->next;
char s[30],d[30];
cout<<"请输入起始地点"<<endl;
cin>>s;
cout<<"请输入目的地点"<<endl;
cin>>d;
while(p!=tail)
{
if(!strcmp(p->getstart(),s))
{
if(!strcmp(p->getDestination(),d))
{
display(p);
++sign;
}
}
p=p->next;
}
return sign;
}
void FlightList::bespeak() //订购机票
{
Flight *p=head->next;
char f[7];
int n;
cout<<"请输入您要订购的航班号"<<endl;
cin>>f;
cout<<"请输入您要订购的机票数量"<<endl;
cin>>n;
while(p!=tail)
{
if(!strcmp(p->getFlightNumber(),f))
{
break;
}
p=p->next;
}
if(p==tail)
{
cout<<"您要订购的航班不存在,请查询其他合适的航班"<<endl;
}
else if(p->getTicketLeft()==0)
{
cout<<"您要订购的航班票已售完,请查询其他合适的航班"<<endl;
}
else if(p->getTicketLeft()-n<0)
{
cout<<"剩余票数不能满足您的要求,请重新操作"<<endl;
}
else
{
cout<<"订票成功!"<<endl;
p->setTicketLeft(p->getTicketLeft()-n);
}
}
int FlightList::findByFlightNumber() //查找函数(按航班号)
{
int sign=0;
Flight *p=head->next;
char f[7];
cout<<"请输入您要查找的航班号"<<endl;
cin>>f;
while(p!=tail)
{
if(!strcmp(p->getFlightNumber(),f))
{
display(p);
++sign;
}
p=p->next;
}
return sign;
}
void FlightList::displayAll() //显示全部函数
{
Flight *p;
p=head->next;
cout<<"全部航班信息"<<endl;
cout<<setw(10)<<"出发地点"<<setw(10)<<"目的地点"<<setw(10)<<"起飞时间"<<setw(10)<<"到达时间"<<setw(8)<<"航班号"<<setw(6)<<"机型"<<setw(5)<<"全价"<<setw(10)<<"座位总数"<<setw(10)<<"剩余票数"<<endl;
while(p!=tail)
{
cout<<*p;
p=p->next;
}
cout<<"按任意键返回菜单"<<endl;
getch();
}
void FlightList::save() //写入文件
{
ofstream outputFile;
Flight *p=head->next;
outputFile.open("Flight.dat",ios::binary);
if(!outputFile)
{
cout<<"文件打开失败!"<<endl;
exit(0);
}
while(p!=tail)
{
outputFile.write((char *)p,sizeof(*p));
p=p->next;
}
cout<<"保存文件成功"<<endl;
outputFile.close();
}
void FlightList::load() //读进内存
{
ifstream inputFile;
Flight *p;
inputFile.open("Flight.dat",ios::binary);
if(!inputFile)
{
cout<<"文件打开失败!"<<endl;
exit(0);
}
p=new Flight;
inputFile.read((char *)p,sizeof(*p));
while(!inputFile.eof())
{
tail->previous->next=p;
p->previous=tail->previous;
p->next=tail;
tail->previous=p;
p=new Flight;
inputFile.read((char *)p,sizeof(*p));
}
inputFile.close();
}
void FlightList::destroy() //删除链表
{
Flight *p=head->next,*q=p->next;
while(p!=tail)
{
delete p;
p=q;q=p->next;
}
}
FlightList::~FlightList() //析构函数
{
delete head;
delete tail;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -