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;
}