航空售票处的服务系统_航空客运售票服务系统
航空售票处的服务系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“航空客运售票服务系统”。
#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);} //...................................................}