航空客运系统程序清单加报告.docx

上传人:b****8 文档编号:9588005 上传时间:2023-02-05 格式:DOCX 页数:26 大小:313.37KB
下载 相关 举报
航空客运系统程序清单加报告.docx_第1页
第1页 / 共26页
航空客运系统程序清单加报告.docx_第2页
第2页 / 共26页
航空客运系统程序清单加报告.docx_第3页
第3页 / 共26页
航空客运系统程序清单加报告.docx_第4页
第4页 / 共26页
航空客运系统程序清单加报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

航空客运系统程序清单加报告.docx

《航空客运系统程序清单加报告.docx》由会员分享,可在线阅读,更多相关《航空客运系统程序清单加报告.docx(26页珍藏版)》请在冰豆网上搜索。

航空客运系统程序清单加报告.docx

航空客运系统程序清单加报告

 

课程设计

一、题目分析

从课程设计的题目要求可以知道,我们需要建立的是具有能对数据的插入,删除,检索功能的软件。

由于乘客的数量较大且不固定,因此选择用链表来保存乘客的基本信息:

终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量等等,由于预约人数无法预计,队列也应以链表作存储结构。

所以我们建立一个可以插入和删除节点的链表,并能检索这个链表,在必要的时候将链表的内容保存到文件中。

系统主要实现的操作和功能是:

查询航线、订票功能、退票功能。

要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。

二、设计过程

(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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1