航空客运系统程序清单加报告.docx
- 文档编号:9588005
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:26
- 大小:313.37KB
航空客运系统程序清单加报告.docx
《航空客运系统程序清单加报告.docx》由会员分享,可在线阅读,更多相关《航空客运系统程序清单加报告.docx(26页珍藏版)》请在冰豆网上搜索。
航空客运系统程序清单加报告
课程设计
一、题目分析
从课程设计的题目要求可以知道,我们需要建立的是具有能对数据的插入,删除,检索功能的软件。
由于乘客的数量较大且不固定,因此选择用链表来保存乘客的基本信息:
终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量等等,由于预约人数无法预计,队列也应以链表作存储结构。
所以我们建立一个可以插入和删除节点的链表,并能检索这个链表,在必要的时候将链表的内容保存到文件中。
系统主要实现的操作和功能是:
查询航线、订票功能、退票功能。
要实现这些功能,首先要使程序能实现查找功能,在查找出到有效信息的前提之下,通过链表的赋值,更新信息和删除退票人信息,满足客户的要求。
二、设计过程
(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<<"航班号: "< cout<<"飞机号: "< cout<<"目的地: "< cout<<"飞行周日: "< cout<<"成员定额: "< cout<<"剩余票数: "< cout<<"候补乘客数: "< cout<<"头等舱价格: "< cout<<"普通舱价格: "< cout<<"经济舱价格: "< } 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<<"乘客"< cout<<"座位号为: "; for(inti=1;i<=(rep->Amount);i++) {cout< 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< 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空客运系统程序清单 加报告 航空 客运 系统 程序 清单 报告