www.pudn.com > Flight_Book.rar > Flight.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<<"  |"<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<<"|"<stationName<<"| "<arrive.tm_hour<<" : "<arrive.tm_min; 
		cout<<"| "<start.tm_hour; 
		cout<<" : "<start.tm_min<<"|  "<stay.tm_hour<<" : "<stay.tm_min<<"|\n"; 
		p = p->nextStation; 
	} 
	cout<<"╚-------------------------------------------------------------╝\n"; 
	cout<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; 
}