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

📄 flight.cpp

📁 近日做C++课程设计时写的一个民航订票系统
💻 CPP
字号:
#include "iostream.h"
#include "string.h"
#include "Flight.h"
#include "DataType.h"
#include "iomanip.h"

CFlight::CFlight()
{
	/*
	PASS *p, *q;
	p = new PASS;
	q = new PASS;
	strcpy(p->stationName,from);
	p->start = p->arrive = start;
	p->stay.tm_hour = 0;
	p->stay.tm_min = 0;
	strcpy(q->stationName,to);
	q->start = q->arrive = arrive;
	q->stay.tm_hour = 0;
	q->stay.tm_min = 0;
	paStation.nextStation = p;
	p->nextStation = q;
	q->nextStation = NULL;
	*/
	paStation.nextStation = NULL;
	count = 0;
	psCount = 0;
	
}

void CFlight::InitPass()
{
		PASS *p, *q;
		p = new PASS;
		q = new PASS;
		strcpy(p->stationName,from);
		p->start = p->arrive = start;
		p->stay.tm_hour = 0;
		p->stay.tm_min = 0;
		strcpy(q->stationName,to);
		q->start = q->arrive = arrive;
		q->stay.tm_hour = 0;
		q->stay.tm_min = 0;
		paStation.nextStation = p;
		p->nextStation = q;
		q->nextStation = NULL;
}

CFlight::~CFlight()
{
	PASS *p1, *p2;
	p1 = p2 =paStation.nextStation;
	while(p2)
	{
		p1 = p2;
		p2 = p2->nextStation;
		delete p1;
	}
	psCount = 0;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	+-----------------------------+
	|以下这些函数很简单,不用注释 |
	+-----------------------------+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
char * CFlight::GetFltNo()
{
	return fltNo;
}
char * CFlight::GetFrom()
{
	return from;
}
PASS  CFlight::GetPass()
{
	return paStation;
}
char * CFlight::GetTo()
{
	return to;
}
tm CFlight::GetStart()
{
	return start;
}
tm CFlight::GetArrive()
{
	return arrive;
}
tm CFlight::GetFly()
{
	return fly;
}
int CFlight::GetPeopleNum()
{
	return peopleNum;
}

int & CFlight::GetCount()
{
	return count;
}

int & CFlight::GetPsCount()
{
	return psCount;
}
void CFlight::SetFltNo(char *flt)
{
	strcpy(fltNo, flt);
}
void CFlight::SetFrom(char *fr)
{
	strcpy(from, fr);
	PASS *p = paStation.nextStation;
	strcpy(p->stationName, fr);
}

void CFlight::SetTo(char *t)
{
	strcpy(to, t);
	PASS *p = paStation.nextStation;
	while(p->nextStation)	//找到最后结点
		p = p->nextStation;
	strcpy(p->stationName, t);
}

void CFlight::SetStart(tm st)
{
	start = st;
	PASS *p = paStation.nextStation;
	p->start = p->arrive = st;
	fly.tm_hour = arrive.tm_hour - start.tm_hour;
	fly.tm_min = arrive.tm_min - start.tm_min;
}

void CFlight::SetArrive(tm ar)
{
	arrive = ar;
	PASS *p = paStation.nextStation;
	while(p->nextStation)	//找到最后结点
		p = p->nextStation;
	p->start = p->arrive = ar;
	fly.tm_hour = arrive.tm_hour - start.tm_hour;
	fly.tm_min = arrive.tm_min - start.tm_min;
}
void CFlight::SetPeopleNo(int num)
{
	peopleNum = num;
}
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	+---------------------------------------+
	|此函数添加途径港,要求输入前一港, 如果|
	|前一港输入错误,则返回false, 即添加失败|
	+---------------------------------------+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
bool CFlight::SetPass()
{
	PASS *ps, *p;
	ps = new PASS;
	char name[20];
	cout<<"请输入前一个航空港:";
	cin>>name;
	p = paStation.nextStation;
	while(p->nextStation)
	{
		//找到目标结点
		if(strcmp(p->stationName, name) == 0)
			break;
		p = p->nextStation;
	}
	if(p->nextStation)	//如果输入的站名不是最后的终到站
	{
		cout<<"请输入要添加的航空港:";
		cin>>ps->stationName;
		cout<<"输入飞机到达时间(hh,mm):";
		cin>>ps->arrive.tm_hour;
		cin>>ps->arrive.tm_min;
		cout<<"输入飞机起飞时间(hh,mm):";
		cin>>ps->start.tm_hour;
		cin>>ps->start.tm_min;
		ps->stay.tm_hour = ps->start.tm_hour - ps->arrive.tm_hour;
		ps->stay.tm_min = ps->start.tm_min - ps->arrive.tm_min;
		//插入途径港
		ps->nextStation = p->nextStation;
		p->nextStation = ps;
		psCount++;	//途径港的数目加一
		return true;
	}
	else
		return false;

}

void CFlight::SetCount()
{
	count++;
}

void CFlight::Show()
{
	
	cout<<"╔--------------------------------------------------------------------╗\n";
	cout<<"  |"<<setw(8)<<"航班号"<<"|"<<setw(6)<<"起飞港"<<"|"<<setw(8)<<"起飞时间"<<"|"<<setw(6)<<"到达港"<<"|";
	cout<<setw(8)<<"到达时间"<<"|"<<setw(8)<<"飞行时长"<<"|"<<setw(2)<<"乘客限额|"<<endl;
	cout<<"  |"<<setw(8)<<fltNo<<'|'<<setw(6)<<from<<"|"<<setw(2)<<start.tm_hour<<" : "<<setw(2)<<start.tm_min<<" |";
	cout<<setw(6)<<to<<"|"<<setw(2)<<arrive.tm_hour<<" : "<<setw(2)<<arrive.tm_min<<" |"<<setw(2)<<fly.tm_hour<<" : ";
	cout<<setw(2)<<fly.tm_min<<" |";
	cout<<setw(8)<<peopleNum<<"|"<<endl;
	cout<<"╚--------------------------------------------------------------------╝\n";
	cout<<flush;
}

bool CFlight::DelPass(char *station)
{
	PASS *p1, *p2;
	p1 = p2 = paStation.nextStation;
	p2 = p2->nextStation;

	while(p2->nextStation)
	{
		if(strcmp(p2->stationName, station) == 0)
		{
			p1->nextStation = p2->nextStation;
			delete p2;
			psCount--;
			return true;
		}
		p1 = p2;
		p2 = p2->nextStation;
	}
	return false;
}


void CFlight::ShowPass()
{
	PASS *p = paStation.nextStation;
	cout<<"╔-------------------------------------------------------------╗\n";
	cout<<"|航空港名|  到达时间|  起飞时间|  停留时间\n";
	while(p)
	{
		cout<<"|"<<setw(8)<<p->stationName<<"| "<<p->arrive.tm_hour<<" : "<<setw(2)<<p->arrive.tm_min;
		cout<<"| "<<setw(2)<<p->start.tm_hour;
		cout<<" : "<<setw(2)<<p->start.tm_min<<"|  "<<setw(2)<<p->stay.tm_hour<<" : "<<setw(2)<<p->stay.tm_min<<"|\n";
		p = p->nextStation;
	}
	cout<<"╚-------------------------------------------------------------╝\n";
	cout<<flush;
}

CFlight CFlight::operator=(const CFlight &right)
{
	strcpy(fltNo, right.fltNo);
	strcpy(from, right.from);
	strcpy(to, right.to);
	start = right.start;
	arrive = right.arrive;
	fly = right.fly;
	peopleNum = right.peopleNum;
	psCount = right.psCount;
	count = right.count;
	PASS *p = right.paStation.nextStation;
	PASS *q1, *q2;
	if(p)
	{
		q1 = new PASS;
		*q1 = *p;
		paStation.nextStation = q1;
		q1->nextStation = NULL;
		p = p->nextStation;
		q2 = q1;

		while(p)
		{
			q1 = new PASS;
			*q1 = *p;
			q1->nextStation = NULL;
			q2->nextStation = q1;
			q2 = q1;
			p = p->nextStation;
		}
	}
	return *this;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -