⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flightlist.cpp

📁 使用c++编写的民航管理系统
💻 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 + -