航空客运系统程序清单加报告.docx
《航空客运系统程序清单加报告.docx》由会员分享,可在线阅读,更多相关《航空客运系统程序清单加报告.docx(26页珍藏版)》请在冰豆网上搜索。
![航空客运系统程序清单加报告.docx](https://file1.bdocx.com/fileroot1/2023-2/4/56b7781c-cb6d-4e28-8198-b32de990490e/56b7781c-cb6d-4e28-8198-b32de990490e1.gif)
航空客运系统程序清单加报告
课程设计
一、题目分析
从课程设计的题目要求可以知道,我们需要建立的是具有能对数据的插入,删除,检索功能的软件。
由于乘客的数量较大且不固定,因此选择用链表来保存乘客的基本信息:
终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量等等,由于预约人数无法预计,队列也应以链表作存储结构。
所以我们建立一个可以插入和删除节点的链表,并能检索这个链表,在必要的时候将链表的内容保存到文件中。
系统主要实现的操作和功能是:
查询航线、订票功能、退票功能。
要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。
二、设计过程
(1)图1为程序总体流程图,首先直接调初始化函数,调用增加航班,查询航线,修改航线,删除航线,预定机票,退定机票,函数。
调用命令模式函数无实参,进行命令模式函数时,输入查找信息:
终点站,如果决定订票,则输入5进行订票,如果不订票则输入8退出;输入7清屏。
如果以上操作输入有误,系统则输出提示:
输入错误,请重新输入查询信息。
图1程序总体流程图
(2)图2为初始化函数流程图,主要是对链表中数据域置空,对链表初始化。
图2初始化函数流程图
(3)图3为增加航线函数流程图,主要功能是把新航班信息写入新建的链表中,然后把新链表与储存航班的链表合并,得到新的航班信息,实现对新航线的增加。
图3增加航线函数流程图
(4)图4为查询航班函数流程图,先输入查找信息,然后判断此查找信息是否存在,如
果存在,则输出查找信息,如果不存在,则退出。
图4查询航班流程图
(5)图5为修改,删除航线流程图,判断是否存在要删除或修改的航班,若有则查找
此航班进行修改或删除,若无则输出不存在此航班。
图5修改,删除航线流程图
(6)图6为订票函数流程图,先输入目的地,找到与它的位置,若找不到则提示不存在此目的地,再判断飞往目的地的航班是否有余票,若有余票输出座位信息,没余票输出剩余票数小于定票数,选择是否排队进入候补队列。
图6定票函数流程图
(7)图7为退票函数流程图,先通过对退票人的基本信息进行查找,判断是否存在此航班和是否存在此人订票信息,如果存在则进行退票。
图7退票函数
(8)图8为排队候补函数流程图,用链表输出操查找出候补人员信息,查找航班函数
图8排队候补函数流程图
(9)图9为命令函数流程图,实现订票、退票、排队候补和查找信息等功能的总体操作。
图9命令函数
二、调试过程及实验结果
1.调试过程
编成后出现错误经过调试检查发现switch语句中漏写了break语句,Switch语句作为选择语句,在此程序中,要实现其选择执行的功能,在每个选择条件后面必须有break语句跟随,否则程序将运行错误,经检查漏洞后加以改正。
2.实验结果
经过编译连接后运行得到实验结果
(1)图10为增加航线和查询航线实验结果
图10增加查询航线
(2)图11为订票(订票数小于剩余的票数和大于剩余的票数两种情况)实验结果
图11定票
(3)图12为退票实验结果
图12退票
(4)图13为修改航班和删除航线的实验结果
图13修改和删除航班
四、结论
此课程设计完成了对航线查询、承办订票业务、承办退票业务等功能的设计操作,并且为了插入和删除方便,运用链表做存储结构。
此课程设计还包含了清屏功能以及退出功能。
对程序在运行时输入错误操作的修改,提供了一定方便条件基本上能安全的运行,具备的功能符合题目的要求。
用了文件的操作,是此程序的最大优点。
程序写的还算简练,结构清晰,各个模块的分工和功能明确。
经过两周的课程设计,我认识到把课堂上老师讲的知识运用到实际操作中的重要性。
我这次课程设计的题目是航空订票系统,在开始阶段,根本无从下手,后来通过查阅一些相关资料和老师的耐心讲解,最终成功完成整个程序的设计。
通过这次课设我对C++语言中的结构体定义、链表等知识有了进一步的理解,对流程图的画法更加熟练,对程序的开发思路有了一定的理解,我想这在以后的学习和工作中都会有帮助的,更使我意识到了学习C++语言的重要性。
五、程序清单:
#include
#include
#include
#include
#include
#include
#defineMAX50
#defineNULL0
typedefstructCustomer
{
charName[10];
intAmount;
intRank;
intSeat_No;
charFlight_No[6];
structCustomer*next;
}Customer;
typedefstructReplace
{
charName[10];
intAmount;
intRank;
charFlight_No[6];
structReplace*next;
}Replace;
typedefstructFlight
{
charDes_Name[10];
charFlight_No[6];
charPlane_No[6];
charWeek_Day;
intCustomer_Amount;
intFree_Amount;
floatPrice[3];
intReplace_Amount;
Replace*ReplName;
Customer*CustName;
structFlight*next;
}Flight,*PFlight;
intCustomer_Amount=0;
Flight*head;
Flight*rear;
Customer*Cusrear;
Replace*Reprear;
voidmain()//主程序
{
Cusrear=newCustomer;
Reprear=newReplace;
head=rear=newFlight;
head->next=NULL;
voidFlightInsert();
voidFlightDelete();
voidFlightLookup();
voidFlightRework();
voidFlightBuyticket();
voidFlightCancelticket();
voidFlightclean();
chari='0';
while(i!
='8'){
cout<<"***********航空客运定票系统***********"<cout<<"1、增加航线5、预订机票"<cout<<"2、查询航线6、退订机票"<cout<<"3、修改航线7、清空系统"<cout<<"4、删除航线8、退出系统"<cout<<"******************************************"<cin>>i;
switch(i)
{case'1':
FlightInsert();break;
case'2':
FlightLookup();break;
case'3':
FlightRework();break;
case'4':
FlightDelete();break;
case'5':
FlightBuyticket();break;
case'6':
FlightCancelticket();break;
case'7':
Flightclean();break;
case'8':
;break;
default:
cout<<"error\n";break;
}
}
}
voidFlightInsert()
{
Flight*p;
p=newFlight;
cout<<"请输入终点站名:
"<cin>>p->Des_Name;
cout<<"请输入航班号:
"<cin>>p->Flight_No;
cout<<"请输入飞机号:
"<cin>>p->Plane_No;
cout<<"请输入飞行周日:
"<cin>>p->Week_Day;
cout<<"请输入乘员定额:
"<cin>>p->Customer_Amount;
p->Free_Amount=p->Customer_Amount;
cout<<"请输入舱位等级的价格:
"<cout<<"头等舱价格"<cin>>p->Price[0];
cout<<"普通舱价格"<cin>>p->Price[1];
cout<<"经济舱价格"<cin>>p->Price[2];
p->ReplName=newReplace;
p->CustName=newCustomer;
p->CustName->next=NULL;
p->ReplName->next=NULL;
p->Replace_Amount=0;
rear->next=p;
rear=p;
rear->next=NULL;
}
voidFlightDelete()
{
Flight*p,*q;
charFlight_No[6];
p=head;
inti=0;
while(i!
=1){
cout<<"请输入需要删除的航班号:
"<cin>>Flight_No;
while(p->next&&strcmp(p->next->Flight_No,Flight_No)){
p=p->next;
}
q=p->next;
if(q!
=NULL){
if(q->next==NULL){//当删除rear所指向的结点
rear=p;
}
p->next=p->next->next;
deleteq;
}
else{
cout<<"你所要删除的航班不存在"<}
cout<<"1、退出2、继续"<cin>>i;
}
}
voidFlightLookup()
{
Flight*p,*q;
charFlight_No[6];
p=head;
inti=0;
while(i!
=1){
cout<<"请输入需要查询的航班号:
"<cin>>Flight_No;
while(p->next&&strcmp(p->next->Flight_No,Flight_No)){
p=p->next;
}
q=p->next;
if(q==NULL){
cout<<"对不起不存在此航班"<}
else{
cout<<"航班号:
"<Flight_No<cout<<"飞机号:
"<Plane_No<cout<<"目的地:
"<Des_Name<cout<<"飞行周日:
"<Week_Day<cout<<"成员定额:
"<Customer_Amount<cout<<"剩余票数:
"<Free_Amount<cout<<"候补乘客数:
"<Replace_Amount<cout<<"头等舱价格:
"<Price[0]<cout<<"普通舱价格:
"<Price[1]<cout<<"经济舱价格:
"<Price[2]<}
cout<<"1、返回主菜单2、继续"<cin>>i;
}
}
voidFlightRework()
{
intCustomer_Number;
Flight*p,*q;
charFlight_No[6];
chari='0';
p=head;
cout<<"请输入需要修改的航班号:
"<cin>>Flight_No;
while(p->next&&strcmp(p->next->Flight_No,Flight_No)){
p=p->next;
}
q=p->next;
if(q==NULL){
cout<<"对不起不存在此航班"<}
else{
while(i!
='9'){
cout<<"*****请输入需要修改的数据*****"<cout<<"1、航班号2、飞机号"<cout<<"3、目的地4、飞行周日"<cout<<"5、成员定额6、头等舱价格"<cout<<"7、普通舱价格8、经济舱价格"<cout<<"9、退出"<cout<<"******************************"<cin>>i;
switch(i)
{case'1':
cout<<"请输入航班号:
"<cin>>q->Flight_No;break;
case'2':
cout<<"请输入飞机号:
"<cin>>q->Plane_No;break;
case'3':
cout<<"请输入目的地:
"<cin>>q->Des_Name;break;
case'4':
cout<<"请输入飞行周日:
"<cin>>q->Week_Day;break;
case'5':
cout<<"请输入乘员定额:
"<Customer_Number=q->Customer_Amount-q->Free_Amount;
cin>>q->Customer_Amount;q->Free_Amount=q->Customer_Amount-Customer_Number;break;
case'6':
cout<<"请输入头等舱价格:
"<cin>>q->Price[0];break;
case'7':
cout<<"请输入普通舱价格:
"<cin>>q->Price[1];break;
case'8':
cout<<"请输入经济舱价格:
"<cin>>q->Price[2];break;
case'9':
break;
default:
cout<<"error\n";break;
}
}
}
}
voidFlightBuyticket()
{
intTicket_Amount;
voidBuyticket(PFlight,int);
voidBuyreplace(PFlight,int,int);
Flight*p,*q;
charDes_Name[10];
inti=2;
while(i!
=1){
cout<<"请输入目的地:
"<cin>>Des_Name;
p=head;
while(p->next&&strcmp(p->next->Des_Name,Des_Name)){
p=p->next;
}
q=p->next;
if(q==NULL){
cout<<"对不起不存在此航班"<}
else{
while(i!
=1){
cout<<"输入需要够买的票数"<cin>>Ticket_Amount;
while(Ticket_Amount==0){
cout<<"请输入一个非零数:
"<cin>>Ticket_Amount;
}
if(Ticket_Amount<=q->Free_Amount){
Buyticket(q,Ticket_Amount);
}
else{
intn;
cout<<"剩余票数小于定票数,是否需要列入候补名单?
(1、是2、否)"<cin>>n;
Buyreplace(q,Ticket_Amount,n);
}
cout<<"1、返回主菜单2、继续"<cin>>i;}
}
}
}
voidFlightCancelticket()
{voidBuyticket(PFlight,int);
Flight*p,*q;
Customer*h,*j;
charFlight_No[6];
charCustomer_Name[10];
intReplace1_Amount;
inti;
while(i!
=1){
cout<<"请输入需要删除的航班号:
"<cin>>Flight_No;
p=head;
while(p->next&&strcmp(p->next->Flight_No,Flight_No)){
p=p->next;
}
q=p->next;
if(q==NULL)
{cout<<"对不起不存在此航班"<else{
while(i!
=2){
cout<<"请输入姓名:
"<cin>>Customer_Name;
h=q->CustName;
while(h->next&&strcmp(h->next->Name,Customer_Name)){
h=h->next;
}
j=h->next;
if(j==NULL){
cout<<"查无此人"<else{
if(j->next==NULL){
Cusrear=h;
}
h->next=h->next->next;
q->Free_Amount+=j->Amount;
deletej;
cout<<"删除成功!
"<if(q->ReplName->next!
=NULL){
Replace1_Amount=q->ReplName->next->Amount;
if(Replace1_Amount<=q->Free_Amount){
Replace*rep;
rep=q->ReplName->next;
Customer*Cus2;
Cus2=newCustomer;
Cus2->Seat_No=q->Customer_Amount-q->Free_Amount+1;
strcpy(Cus2->Flight_No,q->Flight_No);
strcpy(Cus2->Name,rep->Name);
Cus2->Amount=rep->Amount;
Cus2->Rank=rep->Rank;
cout<<"乘客"<Name<<"已经成功买票"<cout<<"座位号为:
";
for(inti=1;i<=(rep->Amount);i++)
{cout<Seat_No++<<"";}
cout<if(q->CustName->next==NULL){
Cusrear=q->CustName;
Cusrear->next=Cus2;
Cusrear=Cus2;
Cusrear->next=NULL;}
else{
Cusrear->next=Cus2;
Cusrear=Cus2;
Cusrear->next=NULL;}
q->Free_Amount-=rep->Amount;
q->ReplName->next=q->ReplName->next->next;
q->Replace_Amount--;
deleterep;}
}
}
cout<<"2、退出姓名录入"<cin>>i;}
}
cout<<"1、返回主菜单"<cin>>i;}
}
voidFlightclean()
{
head->next=rear->next;
cout<<"系统已经清空!
"<voidBuyticket(PFlightq,intTicket_Amount)
{
intn=Ticket_Amount;
Customer*Cus2;
Cus2=newCustomer;
Cus2->Seat_No=q->Customer_Amount-q->Free_Amount+1;
strcpy(Cus2->Flight_No,q->Flight_No);
Cus2->Amount=Ticket_Amount;
cout<<"请输入姓名:
"<cin>>Cus2->Name;
cout<<"请输入舱位等级:
"<cin>>Cus2->Rank;
cout<<"你的座位号为"<for(inti=1;i<=Ticket_Amount;i++)
{
cout<Seat_No++<<"";}
cout<if(q->CustName->next==NULL){
Cusrear=q->CustName;
Cusrear->next=Cus2;
Cusrear=Cus2;
Cusrear->next=NULL;}
else{
Cusrear->next=Cus2;
Cusrear=Cus2;
Cusrear->next=NULL;}
q->Free_Amount-=Ticket_Amount;}
voidBuyreplace(PFlightq,intTicket_Amount,intn)
{
Replace*Rep2;
Rep2=newReplace;
if(n==1){
q->Replace_Amount+=Ticket_Amount;
strcpy(Rep2->Flight_No,q->Flight_No);
Rep2->Amount=Ticket_Amount;
cout<<"请输入姓名:
"<cin>>Rep2->Name;
cout<<"请输入舱位等级(1-3):
"<cin>>Rep2