航空售票处的服务系统_航空客运售票服务系统

2020-02-28 其他范文 下载本文

航空售票处的服务系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“航空客运售票服务系统”。

#include #include #include #include using namespace std;

cla Buyer

//客户类 { public: string m_strID;

//客户ID号

string m_strName;//客户姓名

int

m_nWant;

//客户要订的票数 };

/////////////////////////////////////////////////////////// cla Airsysinfo//航班信息类 { string m_strNum;

//航班号

string m_strStart;

//航班起点站

string m_strEnd;

//航班终点站

string m_strTime;

//航班起飞时间日期

string m_strFlyTime;

//飞行时间

int m_nCount;

//航班票数

int m_nLeftCount;

//剩余票数

public: vector m_wPerson;//等待订票的顾客队列,其中m_wPerson.size()即为排队的客户数

vector m_haveBook;//已订票客户

Airsysinfo();void SetNum(string &n);

//设置航班号

void SetStart(string &start);

//设置航班起飞点

void SetEnd(string &end);

//设置航班终点地

void SetTime(string &time);

//设置航班起飞时间

void SetCount(int count);

//设置航班票数

void SetLeftCount(int left);

//设置航班剩余票数

void SetFlyTime(string &time);

//设置航班飞行总时间

void SetWait(Buyer &p);

//设置航班的等候订票队列,每次进一个人

void SetHavingBookBuyer(Buyer &p);//设置已订票的客户

string

GetFlyTime();

//获取航班飞行总时间

string

GetTime();

//获取航班起飞时间日期

int

GetWaitCount();

//获取等侯订票队列人数

int

GetLeftCount();

//航班剩余票数

string

GetStart();

//获取该航班起飞地

string

GetEnd();

//获取该航班终点地

string

GetNum();

//获取该航班号

int

GetCount();

//获取该航班总票数

void

PrintInfo();

//打印该航班的信息

~Airsysinfo(){}

//析构函数

};

源程序部分:

#include “air system cla define.h” //...............................函数实现部分......................................//.............................设置相关数据函数....................................void Airsysinfo::SetHavingBookBuyer(Buyer &p)//设置已订票的客户 { m_haveBook.push_back(p);//记录已订票的客户 } void Airsysinfo::SetCount(int count)//设置航班票数 { m_nCount=count;} void Airsysinfo::SetTime(string &time)//设置航班起飞时间 { m_strTime=time;} void Airsysinfo::SetEnd(string &end)//设计航班终点地 { m_strEnd=end;} void Airsysinfo::SetStart(string &start)//设置航班起飞点 {

m_strStart=start;} void Airsysinfo::SetNum(string &n)//设置航班号 {

m_strNum=n;} void Airsysinfo::SetWait(Buyer &p)//设置航班的等候订票队列,每次进入一个等侯订票的客户

{ m_wPerson.push_back(p);

//让客户排在队列后面插入一个新数据项 } void Airsysinfo::SetFlyTime(string &time)//设置航班飞行总时间 { m_strFlyTime=time;} void Airsysinfo::SetLeftCount(int left)//设置航班剩余票数 { m_nLeftCount=left;}

//.............................获取相关数据函数....................................int Airsysinfo::GetLeftCount()//航班剩余票数

{ return m_nLeftCount;} int Airsysinfo::GetWaitCount()//获取等侯订票队列人数 { return m_wPerson.size();} string Airsysinfo::GetTime()//获取航班起飞时间日期 { return m_strTime;} string Airsysinfo::GetFlyTime()//获取航班飞行总时间 { return m_strFlyTime;}

int Airsysinfo::GetCount()//获取该航班总票数 { return m_nCount;} string Airsysinfo::GetNum()//获取该航班号 { return m_strNum;

} string Airsysinfo::GetEnd()//获取该航班终点地 { return m_strEnd;} string Airsysinfo::GetStart()//获取该航班起飞地 { return m_strStart;}

//..................................打印航班信息函数部分..................................void Airsysinfo::PrintInfo()//打印本航班信息 { cout

if(m_haveBook.size()!=0){

cout

for(int i=0;i

{

cout

}

}

if(m_wPerson.size()!=0){

cout

for(int i=0;i

航班信息

{

cout

}

}

cout

//............................文件导入函数..................................void LoadData(vector *vec_Air)//从文件导入数据 { Airsysinfo* pA;

//航班信息指针

fstream dateFile;dateFile.open(“Airsysinfo.txt”,ios::in);//打开航班信息数据文件

string tem;

//临时变量

int wait=0;

//等待订票的客户数

int date=0;int havedBook=0;

//已订票和客户数

while(dateFile>>tem)//从文件里导入数据

{

//处理一条航班记录

{//动态创建

pA=new Airsysinfo();//在内存申请一块空间

pA->SetNum(tem);//设计航班编号

//正在对一条记录处理,不能跳到另外一条记录

}

//对字符串的处理

{

dateFile>>tem;

pA->SetStart(tem);

//起飞点站

dateFile>>tem;

pA->SetEnd(tem);

//终点站

dateFile>>tem;

pA->SetTime(tem);

//起飞时间(日期)

dateFile>>tem;

pA->SetFlyTime(tem);//飞行总时间

}

//对数字处理

{

dateFile>>tem;

date=atoi(tem.c_str());//把字符串转换成整形int

pA->SetCount(date);

//设计航班票数

dateFile>>tem;

date=atoi(tem.c_str());

pA->SetLeftCount(date);//设计航班剩余票数

//////对已订票的客户处理

dateFile>>tem;

havedBook=atoi(tem.c_str());

for(int j=0;j

{

Buyer havedPerson;

dateFile>>tem;

havedPerson.m_strID=tem;//客户ID

dateFile>>tem;

havedPerson.m_strName=tem;//客户名字

dateFile>>tem;

havedPerson.m_nWant=atoi(tem.c_str());//客户要订票的数目

pA->SetHavingBookBuyer(havedPerson);

}

///////对等候客户的数据导入

dateFile>>tem;

wait=atoi(tem.c_str());//本航班有wait个客户等候排队订票

for(int i=0;i

{

Buyer person;

dateFile>>tem;

person.m_strID=tem;//客户ID

dateFile>>tem;

person.m_strName=tem;//客户名字

dateFile>>tem;

person.m_nWant=atoi(tem.c_str());//客户要订票的数目

pA->SetWait(person);

}

}

vec_Air->push_back(pA);//把本航班的整条信息记录放入模板里(用作航班信息暂存器)

} dateFile.close();

//关闭文件 }

//..................添加航班信息函数...................void NewAirsysinfo(vector *vec_Air)//输入新的航班信息 { Airsysinfo* pA;char yes='n';cout>yes;if(yes=='n'||yes=='N')return;cout

cout

int count;/****************开始录入航班信息*****************/ cout>num;cout>start;cout>end;cout>time;

cout>flytime;cout>count;

录入子系统

cout

pA=new Airsysinfo();pA->SetNum(num);

//新航班编号

pA->SetStart(start);

//新航班起点站

pA->SetEnd(end);

//新航班终点站

pA->SetTime(time);

//新航班起飞日期

pA->SetFlyTime(flytime);//新航班总飞行时间(小时)

pA->SetCount(count);

//新航班总票数

pA->SetLeftCount(count);//新航班剩余票数

vec_Air->push_back(pA);

cout

//................................查询航班信息函数.....................................void FindAirsysinfo(vector vec_Air)//查询航班信息 {

system(“cls”);cout

while(choice!='y'){

system(“cls”);

cout

cout

cout

cin>>choice;

cout

switch(choice)

{

case '1'://按航班编号查询

{

string num;

cout

cin>>num;

for(int i=0;i

{

if(vec_Air[i]->GetNum()==num)//是否有相应的航班编号

{

vec_Air[i]->PrintInfo();//打印输出相应航班的所有信息

break;

}

}

if(i==vec_Air.size())

{//如果找到所有记录最后还没有找到要找的航班编号,则表示没有此航班

cout

}

cin.get();

cin.get();

break;

}

case '2'://按起点站查询

{

int flag=0;

string start;

cout

cin>>start;

for(int i=0;i

{

if(vec_Air[i]->GetStart()==start)

{

vec_Air[i]->PrintInfo();

flag=1;

//说明起码找到一条相应的记录

}

}

if(flag==0)//没有此航班记录

{

cout

}

cin.get();

cin.get();

break;

}

case '3'://按终点站查询

{

int flag=0;

string end;

cout

cin>>end;

for(int i=0;i

{

if(vec_Air[i]->GetEnd()==end)

{

vec_Air[i]->PrintInfo();//打印输出航班信息

flag=1;//说明起码找到一条相应的记录

}

}

if(flag==0)

{

cout

}

cin.get();

cin.get();

break;

}

case '4'://按起飞时间(日期)

{

int flag=0;

string time;

cout

cin>>time;

for(int i=0;i

{

if(vec_Air[i]->GetTime()==time)

{

vec_Air[i]->PrintInfo();

flag=1;

}

}

if(flag==0)

{

cout

cin.get();

cin.get();

break;

}

cin.get();

cin.get();

break;

}

case '5'://按飞行总时间查询

{

int flag=0;

string flytime;

cout

cin>>flytime;

for(int i=0;i

{

if(vec_Air[i]->GetFlyTime()==flytime)

{

vec_Air[i]->PrintInfo();

flag=1;

}

}

if(flag==0)

{

cout

}

cin.get();

cin.get();

break;

}

case '0'://返回

{

cout

cin>>choice;

break;

}

}

} }

//..........................订票函数部分........................................void BookAirsysinfo(vector *vec_Air)//订票 { vector::iterator v_Iter;//当作指针用

system(“cls”);//清屏

cout

string num;//航班号

cout>num;coutbegin();v_Iter!=vec_Air->end();v_Iter++){

if((*v_Iter)->GetNum()==num)//找到相应的航班号

{

(*v_Iter)->PrintInfo();//输出航班信息

break;

} } if(v_Iter==vec_Air->end())//如果找到记录最后还没有找到此航班的记录

{

cout

cin.get();

cin.get();

return;} if((*v_Iter)->m_wPerson.size()!=0)//是否有客户在等候订票

{

for(int i=0;im_wPerson.size();i++)

{

//如果第一个客户所订票数小于此航班所剩余的票数,则询问此客户是否要订票

if((*v_Iter)->m_wPerson[0].m_nWantGetLeftCount())

{

cout

//计算剩余票数

int left=(*v_Iter)->GetLeftCount()-(*v_Iter)->m_wPerson[0].m_nWant;

char meet;//满足要求

cout

cin>>meet;

if(meet=='y')//满足此客户的订票需求

{

vector::iterator Iter_person;//声明一个客户类型的指针

Iter_person=(*v_Iter)->m_wPerson.begin();//指向等候队列首地址

(*v_Iter)->SetLeftCount(left);

cout

Buyer Person;

Person.m_strID=(*v_Iter)->m_wPerson[0].m_strID;

Person.m_strName=(*v_Iter)->m_wPerson[0].m_strName;

Person.m_nWant=(*v_Iter)->m_wPerson[0].m_nWant;

//把已满足的客户放入已订得票的客户记录

(*v_Iter)->m_haveBook.push_back(Person);

//删除第一个已经满足订票的客户

(*v_Iter)->m_wPerson.erase(Iter_person);

//输出修改后的本航班所有信息

(*v_Iter)->PrintInfo();

i--;

}

}

} } if((*v_Iter)->m_wPerson.size()!=0)//还有客户等候本航班

{

char wait='n';

cout

cin>>wait;

if(wait=='y')

{

Buyer p;//声明一个要等候的客户对象

cout

cin>>p.m_strID;

cout

cin>>p.m_strName;

cout

cin>>p.m_nWant;

(*v_Iter)->m_wPerson.push_back(p);//进行排队等候

cout

} } else //新客户,本航班没有客户在等候排票

{

int count;

cout

cin>>count;

if((*v_Iter)->GetLeftCount()

{

cout

cout

cout

char ch;

cin>>ch;

if(ch=='y')

{

Buyer p;

cout

cout

cin>>p.m_strID;

cout

cout

cin>>p.m_strName;

p.m_nWant=count;

(*v_Iter)->m_wPerson.push_back(p);

cout

}

else

{

cout

cout

}

}

else//可以满足订票要求,把新客户放入已订得票的客户记录里

{

Buyer person;

cout

cout

cin>>person.m_strID;

cout

cout

cin>>person.m_strName;

person.m_nWant=count;

int left=(*v_Iter)->GetLeftCount()-count;//

(*v_Iter)->SetLeftCount(left);

//设计本航班剩余票数

(*v_Iter)->m_haveBook.push_back(person);//记录可订得票的客户

cout

cout

} } ///////////////////// cout

//...................................退票函数.......................................void CancelAirsysinfo(vector *vec_Air)//取消订票(航班){ vector::iterator v_Iter;//指针

system(“cls”);cout

cout

cout>num;for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter++)//begin()传回迭代器中的第一个数据地址

{

//end()指向迭代器中末端元素的下一个,指向一个不存在元素

if((*v_Iter)->GetNum()==num)//找到相应的航班号

{

(*v_Iter)->PrintInfo();//输出航班信息

break;

} } if(v_Iter==vec_Air->end())//如果找到最后还没找到相应的航班记录

{

cout

cin.get();

cin.get();

return;} char choice='n';cout>choice;if(choice=='y'&&(*v_Iter)->m_wPerson.size())//订票客户在等候订票的队列里

{

string strID;//客户ID

cout

cin>>strID;

for(int i=0;im_wPerson.size();i++)//查找队列是否有此ID的客户

{

if((*v_Iter)->m_wPerson[i].m_strID==strID)//找到有此ID的客户

{

cout

coutm_wPerson[i].m_strID

m_wPerson[i].m_strName

m_wPerson[i].m_nWant

cout

cin>>choice;

if(choice=='y')//取消订票

{

vector::iterator v;

v=(*v_Iter)->m_wPerson.begin()+i;

(*v_Iter)->m_wPerson.erase(v);//删除此客户所有信息

cout

cout

(*v_Iter)->PrintInfo();//输出取消订票业务后的此航班记录信息

}

break;

}

else if(i==(*v_Iter)->m_wPerson.size())

//没有找到有此ID的客户

{

cout

}

}

} else if(choice=='n'&&(*v_Iter)->m_haveBook.size())//订票的客户不在等候队列里(即已经得到票)

{

string strID;//客户ID

cout

cin>>strID;

for(int i=0;im_haveBook.size();i++)//查找队列是否有此ID的客户

{

if((*v_Iter)->m_haveBook[i].m_strID==strID)//找到有此ID的客户

{

cout

coutm_haveBook[i].m_strID

m_haveBook[i].m_strName

m_haveBook[i].m_nWant

cout

cin>>choice;

if(choice=='y')//取消订票

{

int left=(*v_Iter)->GetLeftCount()+(*v_Iter)->m_haveBook[i].m_nWant;

(*v_Iter)->SetLeftCount(left);//设计剩余票数

vector::iterator v;

v=(*v_Iter)->m_haveBook.begin()+i;

(*v_Iter)->m_haveBook.erase(v);//erase(beg,end)删除pos位置的数据,传回下一个数据的位置。即删除此客户所有信息

cout

cout

(*v_Iter)->PrintInfo();//输出取消订票业务后的此航班记录信息

}

break;

}

else if(i==(*v_Iter)->m_haveBook.size())

{

cout

}

} } else

{

cout

}

//....................修改航班信息函数..........................void ModifyAirsysinfo(vector *vec_Air)//修改航班信息 { vector::iterator v_Iter;//相当于遍历指针

system(“cls”);//清屏

cout

cout>num;for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter++){

if((*v_Iter)->GetNum()==num)//查到相应的航班(编号)

{

(*v_Iter)->PrintInfo();

break;

} } if(v_Iter==vec_Air->end())//找到最后没找到相应的航班

{

cout

cout

cin.get();

cin.get();

return;} char ch='n';cout>ch;if(ch=='n')return;//取消修改航班信息

char choice='p';while(choice!='y'){

cout

cout

cout

cout

cout

cout

cout

cin>>choice;

switch(choice)

{

case '1'://修改航班编号

{

string tem;

cout

cin>>tem;

(*v_Iter)->SetNum(tem);//设计航班编号

cout

cin.get();

cin.get();

break;

}

case '2'://修改航班起飞站

{

string tem;

cout

cin>>tem;

(*v_Iter)->SetStart(tem);//设计航班起飞站

cout

cin.get();

cin.get();

break;

}

case '3'://修改航班终点站

{

string tem;

cout

cin>>tem;

(*v_Iter)->SetEnd(tem);//设计航班终点站

cout

cin.get();

cin.get();

break;

}

case '4'://修改航班起飞时间(日期)

{

string tem;

cout

cin>>tem;

(*v_Iter)->SetTime(tem);//设计航班起飞时间

cout

cin.get();

cin.get();

break;

}

case '5'://修改航班总飞行时间(小时)

{

string tem;

cout

cin>>tem;

(*v_Iter)->SetFlyTime(tem);//设计航班飞行时间

cout

cin.get();

cin.get();

break;

}

case '6'://修改航班总票数

{

string tem;

cout

cin>>tem;

int count=atoi(tem.c_str());

(*v_Iter)->SetCount(count);//设计航班总票数

cout

cin.get();

cin.get();

break;

}

case '7'://修改航班剩余票数

{

int left;

cout

cin>>left;

(*v_Iter)->SetLeftCount(left);

cout

cin.get();

cin.get();

break;

}

case '8'://修改等候订本航班票的客户

{

string strID;//客户ID

cout

cin>>strID;

for(int i=0;im_wPerson.size();i++)

{

if((*v_Iter)->m_wPerson[i].m_strID==strID)//查找相应ID号的客户

{

cout

coutm_wPerson[i].m_strID

m_wPerson[i].m_strName

m_wPerson[i].m_nWant

char modify='n';

cout

cin>>modify;

if(modify=='y')//确定修改此客户的信息

{//重新输入此客户的所有信息

cout

cin>>(*v_Iter)->m_wPerson[i].m_strID;

cout

cin>>(*v_Iter)->m_wPerson[i].m_strName;

cout

cin>>(*v_Iter)->m_wPerson[i].m_nWant;

//★★★★这里需要设计一段程序用来计算修改订票客户后剩余票数

cout

cout

cin.get();

cin.get();

}

}

}

break;

}

case '9'://修改已订本航班票的客户

{

string strID;//客户ID

cout

cin>>strID;

for(int i=0;im_haveBook.size();i++)

{

if((*v_Iter)->m_haveBook[i].m_strID==strID)//查找相应ID号的客户

{

cout

coutm_haveBook[i].m_strID

m_haveBook[i].m_strName

m_haveBook[i].m_nWant

char modify='n';

cout

cin>>modify;

if(modify=='y')//确定修改此客户的信息

{//重新输入此客户的所有信息

cout

cin>>(*v_Iter)->m_haveBook[i].m_strID;

cout

cin>>(*v_Iter)->m_haveBook[i].m_strName;

cout

cin>>(*v_Iter)->m_haveBook[i].m_nWant;

//★★★★这里需要设计一段程序用来计算修改订票客户后剩余票数

cout

cout

cin.get();

cin.get();

}

}

}

break;

}

case '0'://返回主界面

{

cout

cin>>choice;

break;

}

default:break;

} } }

//......................删除航班信息函数..............................void DelAirsysinfo(vector *vec_Air)//删除航班信息 { vector::iterator v_Iter;

Airsysinfo* pA;system(“cls”);cout

cout>num;for(v_Iter=vec_Air->begin();v_Iter!=vec_Air->end();v_Iter++){

if((*v_Iter)->GetNum()==num)//相等说明找到要删除的航班编号

{

(*v_Iter)->PrintInfo();//输出此航班信息记录

flag=1;

cout

cin>>del;

if(del=='n'||del=='N')return;//取消删除

pA=*v_Iter;

delete pA;

vec_Air->erase(v_Iter);//删除此航班记录

cout

break;

} } if(flag==0){

cout

cout

cin.get();}

//....................浏览航班信息函数..................................void ScanAirsysinfo(vector vec_Air)//浏览总航班信息 { system(“cls”);//清屏

cout

{

vec_Air[i]->PrintInfo();} cout

//..........................信息存储函数..................................void SaveAirsysinfo(vector vec_Air)//所有航班信息记录存盘 { fstream out;//文件对象

out.open(“Airsysinfo.txt”,ios::out);//打开存盘文件

/*********保存航班信息到文件************/ for(int i=0;i

{

outGetNum()

outGetStart()GetEnd()GetTime()

outGetFlyTime()

outGetCount()

outGetLeftCount()

outm_haveBook.size()

for(int k=0;km_haveBook.size();k++)//有size个客户等候订本航班的票

{

outm_haveBook[k].m_strID

outm_haveBook[k].m_strName

outm_haveBook[k].m_nWant

}

outGetWaitCount()

for(int j=0;jm_wPerson.size();j++)//有size个客户等候订本航班的票

{

outm_wPerson[j].m_strID

outm_wPerson[j].m_strName

outm_wPerson[j].m_nWant

}

out

} /***************************************/ out.close();//关闭文件,保存完闭

cout

//..........................密码函数部分............................int SystemKey()//进入本系统的密码函数

{ string strKey=“123456”;//设置密码,为以后增加密码验证模块留下扩展接口

string key;

cout>key;

if(key==strKey){

cout

cin.get();

cin.get();

return 1;//密码正确

} else

{

cout

cin.get();

cin.get();

return 0;//密码错误

} }

//..................................初始化函数部分..................................Airsysinfo::Airsysinfo(){ //初始化为空

m_strNum=“”;

//航班号

m_strStart=“”;

//航班起点站

m_strEnd=“”;

//航班终点站

m_strTime=“”;

//航班起飞时间

m_strFlyTime=“”;

//飞行时间

m_nCount=0;

//航班票数

m_nLeftCount=0;

//剩余票数

}

//........................................主函数部分.........................................................void main(){ vector vec_Air;//用于对所有航班信息记当进行各种操作,相当于内存暂存器

vector::iterator v_Iter;//用于对vec_Air进行遍历的Airsysinfo类型的指针

Airsysinfo* pA;

if(SystemKey()==0)return;//检测密码

LoadData(&vec_Air);//导入数据

char choice='p';while(choice!='0'){

system(“cls”);//清屏

cout

cout

cout

cout

cout

cout

cout

cout

cin>>choice;

cout

switch(choice)

{

case '1'://输入航班信息

{

NewAirsysinfo(&vec_Air);

break;

}

case '2'://查询航班

{

FindAirsysinfo(vec_Air);

break;

}

case '3'://订票业务

{

BookAirsysinfo(&vec_Air);

break;

}

迷你航空订票系统

case '4'://退票业务

{

CancelAirsysinfo(&vec_Air);

break;

}

case '5'://修改航班信息

{

ModifyAirsysinfo(&vec_Air);

break;

}

case '6'://删除航班信息

{

DelAirsysinfo(&vec_Air);

break;

}

case '7'://浏览总航班信息

{

ScanAirsysinfo(vec_Air);//

break;

}

case '8'://所有航班记录存盘

{

SaveAirsysinfo(vec_Air);

break;

}

case '0':break;//退出本系统

}

}

//...................................................for(v_Iter=vec_Air.begin();v_Iter!=vec_Air.end();)//清空内存暂存器vec_Air {//删除所有元素

pA=*v_Iter;

delete pA;

vec_Air.erase(v_Iter);} //...................................................}

《航空售票处的服务系统.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
航空售票处的服务系统
点击下载文档
相关专题 航空客运售票服务系统 售票处 航空 系统 航空客运售票服务系统 售票处 航空 系统
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文