📄 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<<" |"<<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 + -