/* 航空客运订票系统
问题描述
航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。设计一个航空客运订票系统,以使上述业
务可以借助计算机完成。
要求
每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量、已订票的
客户名单(包括名字、订票量、舱位等级1、2、3)以及等候替补的客户名单;
系统实现的功能如下:
通过此系统可以实现如下功能:
录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)
查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确
定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;
订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关
可选择航班;
退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。
修改航班信息:当航班信息改变可以修改航班数据文件
*/
#include
#include
#include
#include
#include
class daytime
{
public:
int weekday;
int hour;
int minute;
daytime()
{
weekday=hour=minute=0;
}
~daytime()
{}
};
class samepart
{
public:
char begcity[20]; // 起点城市
char arrivecity[20]; // 终点城市
char hangbancode[10]; // 航班编号
int flycode; // 飞机号
daytime lefttime; // 起飞时间
daytime arrivetime; // 到达时间
samepart()
{
strcpy(begcity,"");
strcpy(arrivecity,"");
strcpy(hangbancode,"");
strcpy(hangbancode,"");
flycode=0;
}
~samepart()
{}
};
class seat
{
public:
int chars;
double price;
int leftseat;
int position; // 座位号
seat()
{
chars=leftseat=position=0;
price=0;
}
~seat()
{}
};
class guestmessage:public samepart
{
public:
int sum;
long ID; // 证件号
int linedata; // 订票编号
char name[20];
int total; // 订票总数
int dengji;
int seats[10];
guestmessage *next;
guestmessage()
{
for(int i=0;i<10;i++)
seats[i]=0;
ID=linedata=0;
strcpy(name,"");
};
~guestmessage()
{
};
};
class blackseat
{
public:
int counter;
char hangbancode[10];
int flycode;
int chars;
int position;
blackseat *next;
blackseat()
{
strcpy(hangbancode,"");
flycode=0;
chars=0;
position=0;
counter=0;
}
};
struct operater // 机场工作人员姓名与工作密码
{
char code[20];
char name[20];
};
class flymessage:public samepart
{
public:
int counter;
int maxseat; // 最大容量
double count; // 打折数
seat seats[4];
bool empty; // 是否满舱
int didbook; // 已经订票人数
flymessage *next;
flymessage()
{
maxseat=didbook=0;
empty=false;
count=0.0;
};
~flymessage()
{};
};
istream & operator>>(istream &in,flymessage &flymess) //重载运算符>>
{
in>>flymess.hangbancode;
in>>flymess.flycode;
in>>flymess.begcity;
in>>flymess.arrivecity;
in>>flymess.count;
in>>flymess.didbook;
in>>flymess.maxseat;
in>>flymess.lefttime.weekday;
in>>flymess.lefttime.hour;
in>>flymess.lefttime.minute;
in>>flymess.arrivetime.weekday;
in>>flymess.arrivetime.hour;
in>>flymess.arrivetime.minute;
for(int i=1;i<4;i++)
{
in>>flymess.seats[i].leftseat;
in>>flymess.seats[i].price;
}
return in;
}
ostream & operator <<(ostream &os,flymessage &flymess) //重载运算符<<
{
os<>(istream &in,guestmessage &guest) //重载运算符>>
{
in>>guest.hangbancode;
in>>guest.flycode;
in>>guest.begcity;
in>>guest.arrivecity;
in>>guest.lefttime.weekday;
in>>guest.lefttime.hour;
in>>guest.lefttime.minute;
in>>guest.arrivetime.weekday;
in>>guest.arrivetime.hour;
in>>guest.arrivetime.minute;
in>>guest.ID;
in>>guest.name;
in>>guest.linedata;
in>>guest.total;
in>>guest.dengji;
return in;
}
ostream & operator<<(ostream &os,guestmessage &guest) //重载运算符<<
{
os<>blackst.chars;
in>>blackst.hangbancode;
in>>blackst.flycode;
in>>blackst.position;
return in;
}
ostream & operator>>(ostream &os,blackseat &blackst)
{
os<
表
关于同志近三年现实表现材料 材料类招标技术评分表 图表与交易pdf 视力表打印pdf 用图表说话 pdf
文件的数据
{
fstream datafile1,datafile2,datafile3,datafile4;
datafile1.open("航班的基本信息数据.dat",ios::out);
if(!datafile1)
cout<<"航班的基本信息数据.dat文件不存在!"<next;
hangbanfile.open("航班的基本信息数据.dat",ios::out);
hangbanfile<counter<counter==1)
hangbanfile<<*hangban;
else
{
while(p!=NULL)
{
hangbanfile<<*p;
p=p->next;
}
}
hangbanfile.flush();
hangbanfile.close();
cout<<"以上信息数据已保存到磁盘中!"<next=NULL;
hangbanfile.open("航班的基本信息数据.dat",ios::in);
hangbanfile>>head->counter;
if(head->counter==0)
{
cout<<"文件中没有任何数据"<
counter;i++)
{
p=new flymessage;
p->next=NULL;
q->next=p;
q=p;
hangbanfile>>*p;
}
hangbanfile.flush();
hangbanfile.close();
return head;
}
//---------------------------------------------------------------------------------------
bool writemessage() // 录入信息,建立数据文件
{
flymessage *hangban,*p,*q,*s;
double ct;
char ach[20],bch[20],ch,hbd[10];
int fcd,mst;
seat st[4];
daytime lefttime,arrivetime;
cout<<"请输入航班起点城市名:";
cin>>bch;
cout<<"请输入航班到达城市名:";
cin>>ach;
cout<<"请输入航班号:";
cin>>hbd;
cout<<"请输入飞机号:";
cin>>fcd;
cout<<"请输入改航班的最大容量:";
cin>>mst;
cout<<"请输入该飞机"<>lefttime.weekday>>lefttime.hour>>lefttime.minute;
cout<<"请输入该飞机到达"<>arrivetime.weekday>>arrivetime.hour>>arrivetime.minute;
for(int i=1;i<4;i++)
{
st[i].chars=i;
cout<<"请输入"<>st[i].price;
cout<<"请输入"<>st[i].leftseat;
}
cout<<"请输入航线的打折情况:";
cin>>ct;
hangban=new flymessage;
hangban->didbook=0;
strcpy(hangban->begcity,bch);
strcpy(hangban->arrivecity,ach);
hangban->flycode=fcd;
strcpy(hangban->hangbancode,hbd);
hangban->maxseat=mst;
hangban->lefttime.weekday=lefttime.weekday;
hangban->lefttime.hour=lefttime.hour;
hangban->lefttime.minute=lefttime.minute;
hangban->arrivetime.weekday=arrivetime.weekday;
hangban->arrivetime.hour=arrivetime.hour;
hangban->arrivetime.minute=arrivetime.minute;
hangban->count=ct;
for( i=1;i<4;i++)
{
hangban->seats[i].chars=i;
hangban->seats[i].price=st[i].price;
hangban->seats[i].leftseat=st[i].leftseat;
}
hangban->empty=true;
s=p=new flymessage;
p=readalldata();
q=p->next;
if(p->next==NULL)
{
hangban->counter=1;
savealldata(hangban);
}
else
{
while(q!=NULL)
{
s->next=q;
s=q;
q=q->next;
}
s->next=hangban;
hangban->next=NULL;
p->counter++;
savealldata(p);
}
cout<<"是否继续录入y/n?"<>ch;
while(1)
{
if((ch=='y')||(ch=='Y'))
return true;
else if((ch=='n')||(ch=='N'))
return NULL;
else
{
cout<<"输入错误,请重新输入";
cin>>ch;
}
}
}
//----------------------------------------------------------------------------------
void changecode() // 管理人员修改密码
{
fstream change;
operater administ;
cout<<"请输入你的新用户名: ";
cin>>administ.name;
cout<<"请输入你的新密码: ";
cin>>administ.code;
change.open("管理员密码文件.dat",ios::in|ios::out|ios::binary);
if(!change)
{
cout<<"修改密码出错! 修改失败!"<next;
guestdata.open("客户信息库.dat",ios::out);
guestdata<sum<sum==1)
guestdata<<*guest;
else
{
while(p!=NULL)
{
guestdata<<*p;
p=p->next;
}
}
guestdata.flush();
guestdata.close();
cout<<"信息已经保存在了客户信息库了!"<next=NULL;
guestfile.open("客户信息库.dat",ios::in);
guestfile>>guest->sum;
if(guest->sum==0)
return guest;
else
for(int i=0;isum;i++)
{
p=new guestmessage;
p->next=NULL;
q->next=p;
q=p;
guestfile>>*p;
}
guestfile.flush();
guestfile.close();
return guest;
}
void showmessage(flymessage *p)
{
cout<<"航班号 : "<hangbancode<<" 飞机号: "<flycode<lefttime.weekday<<" "<lefttime.hour<<"点"<lefttime.minute<<"分,从 "<begcity<<" 起飞,到达 "<arrivecity<<" 的时间是 周"<arrivetime.weekday<<" "<arrivetime.hour<<"点"<arrivetime.minute<<"分"<count<<" 折. "<seats[1].leftseat<<" 一等舱票价为 "<seats[1].price<seats[2].leftseat<<" 二等舱票价为 "<seats[2].price<seats[3].leftseat<<" 三等舱票价为 "<seats[3].price<>a;
if(a==1)
{
char hangbancode[10];
int flycode;
cout<<"请你输入你要查询的航班号: ";
cin>>hangbancode;
cout<>flycode;
flymess=new flymessage;
flymess=readalldata();
p=flymess->next;
while(p!=NULL)
{
if((!strcmp(p->hangbancode,hangbancode))&&(p->flycode==flycode))
{
showmessage(p);
break;
}
else
p=p->next;
}
system("cls");
if(p==NULL)
cout<<"你所查询的信息不存在!"<>names;
cout<<"名为"<next;
while(q!=NULL)
{
if(!strcmp(q->name,names))
{
cout<name<<" 客户ID: "<ID<hangbancode<<" 飞机号: "<flycode<dengji<<" 预订票数: "<total<total;set++)
cout<seats[set]<<"号 ";
cout<lefttime.weekday<<"日"<lefttime.hour<<"时"<lefttime.minute<<"分, 从"<begcity<<" 飞往 "<arrivecity<<",到达时间为: 周"<arrivetime.weekday<<"日"<arrivetime.hour<<"时"<arrivetime.minute<<"分"<next;
}
if(i==0)
cout<<"你查找的姓名不存在与数据库中!"<>citybeg;
cout<<"请输入你想查询飞机抵达的城市: ";
cin>>cityarr;
cout<next;
while(p!=NULL)
{
if((!strcmp(p->arrivecity,cityarr))&&(!strcmp(p->begcity,citybeg)))
{
showmessage(p);
n++;
cout<next;
}
if(n==0)
cout<<"对不起,你查询的城市没有直达航班!"<next=NULL;
fin.open("退票的位子信息.txt",ios::out);
fin>>head->counter;
for(int i=0;i
counter;i++)
{
p=new blackseat;
p->next=NULL;
fin>>*p;
q->next=p;
q=p;
}
fin.close();
return head;
}
void setblack(blackseat * hblack)
{
fstream fout;
blackseat *p;
p=hblack->next;
fout.open("退票的位子信息.txt",ios::out);
fout<counter;
if(hblack->counter==1)
fout<<*hblack;
else
{
while(p!=NULL)
{
fout<<*p;
p=p->next;
}
}
fout.flush();
fout.close();
}
//------------------------------------------------------------------------------------
void bookticket() // 客户订票操作
{
flymessage *p,*lookup,*front;
fstream bookt,reflesh;
int choice;
int getcode2;
char city[20],getcode1[10];
fstream flashdata,flashdata2;
char nch[20];
int dj,id,tt;
B: cout<<"请输入你订票方式 1 为按航班号和飞机号订票,2 为按抵达城市订票"<>choice;
switch(choice)
{
case 1:
{
cout<<"请你输入你想预定航班的航班号: ";
cin>>getcode1;
cout<<"请输入飞机号: ";
cin>>getcode2;
break;
}
case 2:
{
cout<<"请你输入你想预定航班抵达的城市!"<>city;
lookup=readalldata();
p=lookup->next;
while(p!=NULL)
{
if(!strcmp(p->arrivecity,city))
showmessage(p);
p=p->next;
}
cout<<"请在以上的航班中选取你想预订的航班的航班号: ";
cin>>getcode1;
cout<<"输入飞机号: ";
cin>>getcode2;
break;
}
default :
{
cout<<"输入错误,请重新输入!"<next;
while(front!=NULL)
{
p->next=front;
p=front;
if((!strcmp(front->hangbancode,getcode1))&&(front->flycode==getcode2))
{
break;
}
front=front->next;
}
cout<<"请输入客户的姓名:";
cin>>nch;
cout<<"请输入客户的ID号:";
cin>>id;
sb: cout<<"请输入客户要求的机舱等级,1 为一等舱,2为二等舱,3为三等舱 :";
cin>>dj;
if((dj<0)||(dj>4))
{
cout<<"请重新输入!";
goto sb;
}
bool full=true;
while(full)
{
if(p->seats[dj].leftseat>0)
full=false;
else
{
cout<>tt;
guest->dengji=dj;
guest->linedata=p->didbook+1;
blackseat *bseat,*x;
bseat=new blackseat;
bseat->next=NULL;
bseat=getblack();
x=bseat->next;
int il;
cout<<"请付: "<seats[dj].price*tt<<" 元, 谢谢!"<next!=NULL)
{
int j=0;
while(x!=NULL)
{
if((!strcmp(getcode1,x->hangbancode))&&(getcode2==x->flycode)&&(jseats[j++]=x->position;
else
x=x->next;
}
if(--jseats[n]=++p->didbook;
}
}
else
{
int didbuy=p->didbook;
for(int i=0;imaxseat+1))
guest->seats[i]=++p->didbook;
else
{
cout<<"对不起,票已售空,只能售"<seats[1].leftseat-=il;
break;
}
case 2:
{
p->seats[2].leftseat-=il;
break;
}
case 3:
{
p->seats[3].leftseat-=il;
break;
}
default:
{
p->seats[3].leftseat-=il;
}
}
}
guest->total=tt;
strcpy(guest->name,nch);
guest->ID=id;
strcpy(guest->begcity,p->begcity);
strcpy(guest->arrivecity,p->arrivecity);
strcpy(guest->hangbancode,p->hangbancode);
guest->flycode=p->flycode;
guest->lefttime.weekday=p->lefttime.weekday;
guest->lefttime.hour=p->lefttime.hour;
guest->lefttime.minute=p->lefttime.minute;
guest->arrivetime.weekday=p->arrivetime.weekday;
guest->arrivetime.hour=p->arrivetime.hour;
guest->arrivetime.minute=p->arrivetime.minute;
guest->next=NULL;
pre=hguest=new guestmessage;
hguest=readguest();
s=hguest->next;
if(hguest->next==NULL)
{
guest->sum=1;
savealldatatoguest(guest);
}
else
{
while(s!=NULL)
{
pre->next=s;
pre=s;
s=s->next;
}
pre->next=guest;
hguest->sum++;
savealldatatoguest(hguest);
lookup->counter++;
}
savealldata(lookup);
system("cls");
cout<<"预订成功!"<name<<" ID: "<ID<<" 舱位: "<total;set++)
cout<seats[set]<<"号 ";
cout<<"所乘航班班次: "<hangbancode<<" 于"<lefttime.hour<<"时"<lefttime.minute<<"分"<<"从"<begcity<<"飞往"<arrivecity<<",到达时间为: "<arrivetime.hour<<"时"<arrivetime.minute<<"分."<>chioce;
if((chioce=='n')||(chioce=='N'))
return;
else
{
cout<<"请输入你的航班号: ";
cin>>hangbancode;
cout<<"请输入你的航班飞机号 ";
cin>>flycode;
cout<<"请输入你的名字"<>name;
cout<<"请输入你的ID号"<>ID;
guest=headguest=new guestmessage;
headguest=readguest();
pguest=headguest->next;
bseat=hblst=new blackseat;
hblst=getblack();
blst=hblst->next;
while(blst!=NULL)
{
bseat->next=blst;
blst=blst->next;
}
while(pguest!=NULL)
{
if((!strcmp(pguest->hangbancode,hangbancode))&&(pguest->flycode==flycode)&&(pguest->ID==ID)&&strcmp(pguest->name,name))
{
temp=pguest;
total=temp->total;
int i=0;
while(icounter=1;
strcpy(pblst->hangbancode,temp->hangbancode);
pblst->flycode=temp->flycode;
pblst->chars=temp->dengji;
pblst->position=temp->seats[i];
++(hblst->counter);
i++;
}
guest->next=pguest->next;
delete temp;
break;
}
else
{
guest->next=pguest;
guest=pguest;
pguest=pguest->next;
}
}
setblack(hblst);
savealldatatoguest(headguest);
cout<<"退票成功!"<>get1;
switch(get1)
{
case 1:
{
bookticket();
goto A;
}
case 2:
{
chaxun();
goto A;
}
case 3:
{
putbackticket();
goto A;
}
case 4:
{
char a[20],b[20];
operater adminis;
cout<<"请输入你的用户名 ......."<>a;
cout<<"请输入你的密码......."<>b;
adminis=getcode();
if(!strcmp(a, adminis.name)&&!strcmp(b,adminis.code))
{
system("cls");
H: cout<<"密码审核通过!"<>get2;
switch(get2)
{
case 1:
{
changecode();
goto A;
}
case 2:
{
changemessage();
goto A;
}
case 3:
{
char choice;
cout<<"请慎重考虑,执行该操作后,航班信息数据将全部丢失,是否销毁 y/n?"<>choice;
if(choice=='y'||choice=='Y')
{
inifiledata();
goto A;
}
else break;
}
default:
{
cout<<"输入错误,请重新输入!"<
本文档为【航空客运订票系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
你可能还喜欢
-
智能手环项目财务分析报告(参考范文)
-
不该丢失的自尊优秀作文700字
-
二年级上册数学解决问题50道及参考答案(名师推荐)
-
建模方法综合评价方法灰色关联度matlab源程序[1]
-
孤残儿童护理员 国家职业标准
-
小学音乐《卖报歌》说课稿
-
关于推荐广东省建设工程项目初步设计审查专家库专家的通知
-
单警装备入围企业及价格
-
出生证明委托书
-
用CAM350制作CAM资料的基本步骤
-
新疆若羌县柯可卡尔德钨锡矿床地质特征与流体包裹体研究
-
富液式、贫液式以及阀控式铅酸蓄电池浅析[精品]
-
《文从字顺》课件(新版
-
R20_优先数及优先数系
-
1-7台湾的明史研究1950-2011[1]
-
对金属工艺学课堂教学方法相关问题的论述
-
博爱医院历届总理联谊会
-
博爱医院历届总理联谊会
-
博爱医院历届总理联谊会
-
博爱医院历届总理联谊会
-
跨栏高手的阅读答案分析
-
中小企业融资问题研究——以某公司为例
-
对数函数基础解答题(含答案)
-
英语故事-Sinbad the Sailor and the Valley of the Diamonds
-
河道治理心得体会
-
重点车辆查验备案登记表
-
会计发展史第08章中国半殖民地半封建社会会计
-
[1165]《微生物免疫》名词解释
-
护照申请表模板
-
钢板许用应力查询
-
爱是教育的源泉——学困生转化案例
-
柳州城新歌(简谱)
-
春天来了说课稿
-
广西河池地区2021-2022学年五年级下学期期中考试道德与法治试题(1)
-
跨栏高手的阅读答案分析
-
中小企业融资问题研究——以某公司为例
-
对数函数基础解答题(含答案)
-
英语故事-Sinbad the Sailor and the Valley of the Diamonds
-
河道治理心得体会
-
重点车辆查验备案登记表
-
会计发展史第08章中国半殖民地半封建社会会计
-
[1165]《微生物免疫》名词解释
-
护照申请表模板
-
钢板许用应力查询
-
爱是教育的源泉——学困生转化案例
-
柳州城新歌(简谱)
-
春天来了说课稿
-
广西河池地区2021-2022学年五年级下学期期中考试道德与法治试题(1)
-
天然气入户工程施工方案(1)
-
小学四年级数学上册《升和毫升》专项练习,经典题型
-
工程结构荷载及可靠度设计原理
-
物业防盗应急预案
-
四年级叙事作文:放鞭炮_400字
-
09 新任最高法院首席大法官罗伯茨简历
-
医生查房登记表
-
VSD负压 引流不通畅的护理管理流程
-
关于cosplay的ppt
-
用章申请表
-
DLT52101 检验批记录表
-
小学唱的英语歌曲歌词
-
浙江省物价局关于进一步规范房产测绘等收费的通知
-
上海英语高考11选10词汇题练习含答案(2)
-
赖世雄中级美语教程word版71-80
-
厦门小吃攻略
-
渐进分数的妙用(1)
-
乡村规划建设服务中心工作职责
-
手术室专科护理质量评价指标
-
GBT 13912-2020 金属覆盖层 钢铁制件热浸锌层技术要求及试验方法
-
班级奖状(听写能手)
-
正确理解使用成语-文档分享
-
T 形管内油水两相流动规律及其应用
-
小学英语教学大纲中华人民共和国教育部
-
研发机构或项目组和研发人员情况表
-
2019年建筑基桩检测技术规范JGJ106-2003
-
基于CAXA电子图板零件图库的建立
-
OTS与PPAP
-
风险与机遇识别与应对措施
-
umicore 工艺资料
-
处方分析题与答案
-
一次性使用输尿管导引鞘产品技术要求莱凯医疗器械
-
电磁屏蔽技术
-
石油化工安全仪表设计规范GBT50770-2013
-
小学五年级下册综合综合实践活动教案全册
-
正确理解使用成语-文档分享
-
T 形管内油水两相流动规律及其应用
-
小学英语教学大纲中华人民共和国教育部
-
研发机构或项目组和研发人员情况表
-
2019年建筑基桩检测技术规范JGJ106-2003
-
基于CAXA电子图板零件图库的建立
-
OTS与PPAP
-
风险与机遇识别与应对措施
-
umicore 工艺资料
-
处方分析题与答案
-
一次性使用输尿管导引鞘产品技术要求莱凯医疗器械
-
电磁屏蔽技术
-
石油化工安全仪表设计规范GBT50770-2013
-
小学五年级下册综合综合实践活动教案全册