数据结构课程设计-航空订票系统

合集下载

数据结构课程设计(航空客运订票系统)

数据结构课程设计(航空客运订票系统)

(贵州大学计算机科学与信息学院贡献)#include <iostream.h>#include <process.h>#include <string.h>#include <conio.h>#include <stdio.h>#include <iomanip.h>#define MAX 60#define NULL 0typedef struct Customer /*乘客信息*/{char Name[8]; /*姓名*/int Amount; /*定票数*/char Rank; /*舱位等级*/int IDinfor; /*个人信息*/struct Customer *Next; /*指向下一乘客结点*/}Customer;typedef struct Flight /*航线信息*/{char Des_Name[10]; /*终点站名*/char Flight_No[6]; /*航班号*/char Plane_No[6]; /*飞机号*/int Week_Day; /*飞行周日*/int Customer_Amount; /*乘员定额*/int Free_Amount; /*剩余票数*/int Price[3]; /*舱位等级的价格*/Customer *CustName; /*该航班的已定票乘客名单*/ Customer *ReplName; /*该航班的候补乘客名单*/ struct Flight *Next; /*指示下一航线结点*/}Flight,*PFlight;int Customer_Count=0; /*所有航线的定票乘客总数*/ Flight *Head; /*航线头指针*/Flight *p2; /*航线结点指针*/Customer *Custp1[MAX]; /*各条航线乘客结点指针*/Customer *Replp1[MAX]; /*各条航线候补结点指针*/int IsEmpty=1; /*是否有定票乘客*/int IsReplace=1; /*是否有候补乘客*/Customer *prior; /*满足要求的定票乘客的前结点,以作删除操作*/ int shouldsave=0;/*-------------询问是否继续的函数-------------*/char Continue(){char answer;while(1){printf("\n\t 您是否想继续(Y/N)?");scanf("%s",&answer);system("cls");if(answer=='y'||answer=='Y')return 'y';else if(answer=='n'||answer=='N')return 'n';elseprintf("\n\t输入有误,请重新输入!");}}/*---------------操作出错函数---------------*/void ErrorMess(){printf("\n\t对不起,您的操作有误!");getch();}/*--------------系统退出函数---------------*/int ExitSystem(){char answer;printf("\n\t 您是否想要退出系统(Y/N)?");scanf("%s",&answer);if(answer=='y'||answer=='Y')return 1;elsereturn 0;/*--------------航线查找函数-------------*//*Find_Line()为重载函数*/int Find_Line(PFlight L,char *key)/*核对航线是否唯一*/{int flag=0; /*该标志位0表示未找到相关信息,反之即找到,以下标志位同理*/ Flight *p1;p1=L; /*赋航线首地址*/if(p1==p2) /*首航线不作比较*/return flag;while(p1!=p2&&p1!=NULL) /*本航班号不纳入比较范围,否则会一直提示航线不唯一*/{if(strcmp(p1->Flight_No,key)==0){flag=1;break;}p1=p1->Next;/*指向下一航班结点*/}return flag;}int Find_Line(PFlight L,char *key,PFlight &p2,int &Flight_No)/*航线查找函数*/{int flag=0; /*该标志位0表示未找到相关信息,反之即找到*/Flight *p1;p1=L; /*赋航线首结点*/while(p1!=NULL){if(strcmp(p1->Flight_No,key)==0)/*不包括当前航线*/{flag=1;p2=p1;break;}p1=p1->Next; /*指向下一航班结点*/if(p1!=NULL) /*遇结束符不作统计范围*/Flight_No++;}return flag;}/*---------------航班查找函数---------------*/void Line_search(){Flight *p1;p1=Head;char Desname[50];//查询终点站航班关键字if(Head==NULL){printf("\n\t没有到达您想要的终点站的航班!");getch();return;}printf("\n\t请输入终点站名:");scanf("%s",Desname);printf("\n\t您所查询的航班的信息:\n");printf("\n_______________________________________________________________________ ______\n");while(p1!=NULL){if(strcmp(p1->Des_Name,Desname)==0){printf("Des_Name Flight_No Plane_No Week_Day Cust_Num Free_Num 1_Price 2_Price 3_Price\n");printf("\n%-9s%-10s%-9s%-9d%-9d%-9d%-8d%-8d%-8d",p1->Des_Name,p1->Flight_No,p1->P lane_No,p1->Week_Day,p1->Customer_Amount,p1->Free_Amount,p1->Price[0],p1->Price[1],p1->Price[2]);}p1=p1->Next;}printf("\n_______________________________________________________________________ _______\n");Continue();}/*-----------------航线添加函数-------------*/void Line_Add()Flight *p1; /*建立临时航线结点*/while(1){if(Head==NULL)/*航线为空*/{p1=p2=new Flight; /*建立首个航线*/Head=p2;}else{p1=new Flight; /*建立航线结点*/p2->Next=p1; /*前一航线结点指向当前航班结点*/p2=p1; /*保留当前航班结点地址*/}printf("\n\t添加新的航线!\n");printf("\n\t请输入终点站名:");scanf("%s",&p2->Des_Name);while(1) /*数据合法性检验*/{printf("\n\t请输入唯一的航班号:");scanf("%s",&p2->Flight_No);if(Find_Line(Head,p2->Flight_No)) /*存在航班号*/printf("\n\t航班号已经存在!\n");elsebreak;}printf("\n\t请输入飞机号:");scanf("%s",&p2->Plane_No);while(1){printf("\n\t请输入航班日期(请输入1—7):");scanf("%d",&p2->Week_Day);if(p2->Week_Day<1||p2->Week_Day>7)printf("\n\t输入日期有误,请重新输入!\n");elsebreak;}printf("\n\t请输入座位数量:");scanf("%d",&p2->Customer_Amount);printf("\n\t请输入头等舱的价钱:");scanf("%d",&p2->Price[0]);printf("\n\t请输入二等舱的价钱:");scanf("%d",&p2->Price[1]);printf("\n\t请输入三等舱的价钱:");scanf("%d",&p2->Price[2]);p2->Free_Amount=p2->Customer_Amount; /*剩余票数与乘员定额相同*/p2->CustName=NULL; /*该航线定票乘客头指针为空*/p2->ReplName=NULL; /*初始候补名单为空*/shouldsave=1;if(Continue()=='n'){p2->Next=NULL; /*航线的下一结点为空*/return;}}}/*------------航线是否为空函数-------------*/int Empty_Flight(){if(Head==NULL){system("cls");printf("\n\t对不起,航线不存在,按任意键返回!");getch();return 1;}elsereturn 0;}/*------------航线查看函数-----------------*/void Line_See(){system("cls");Flight *p1;p1=Head;if(Empty_Flight()) /*航班线为空*/return;printf("\n\n\t航班信息:\n");printf("\n_______________________________________________________________________ _____\n");printf("Des_Name Flight_No Plane_No Week_Day Cust_Num Free_Num 1_Price 2_Price3_Price\n");while(p1!=NULL){printf("\n%-9s%-10s%-9s%-9d%-9d%-9d%-8d%-8d%-8d",p1->Des_Name,p1->Flight_No,p1->P lane_No,p1->Week_Day,p1->Customer_Amount,p1->Free_Amount,p1->Price[0],p1->Price[1],p1->Price[2]);p1=p1->Next;}printf("\n_______________________________________________________________________ ______\n");printf("\n\t按任意键返回!\n");getch();}/*-------------航线管理菜单------------*/void LinemanageMenu(){char c;system("cls");while(1){printf("\n\t\t航线管理菜单:");printf("\n_______________________________________________________________________ ______\n\n");printf("\t1.添加新的航线\n");printf("\t2.查询航线\n");printf("\t3.查看航线\n");printf("\t4.返回主菜单\n");printf("\n_______________________________________________________________________ _______\n");printf("\t请选择您想要的服务:");scanf("%s",&c);switch(c){case '1':Line_Add();break;case '2':Line_search();break;case '3':Line_See();break;case '4':return;}}}/*---------------订票办理函数---------------*/void bookingMenu(){int Ticket_Count,IDinfor,i,flag=0;int Flight_No=0; /*记录满足条件的航线的定票结点*/Flight *p1; /*记下满足条件的航线结点地址*/Customer *p2; /*临时性定票乘员结点*/Customer *p3; /*临时性候补乘员结点*/char answer[7]; /*用户输入的航班数据*/char temp;char c;int tag=0; /*候补乘客标志位*/int IsRepl=0; /*是否执行候补操作标志位*/if(Empty_Flight()) /*航班线为空*/return;while(1){printf("\n\t现在您可以订票!");flag=0; /*标志位清零以重新作出判断*/Flight_No=0;tag=0;printf("\n\t请输入航线号:");scanf("%s",&answer);if(Find_Line(Head,answer,p1,Flight_No)) /*调用航线查找函数,若存在则进行以下操作*/{while(1) /*数据合法性检验*/{printf("\n\t请输入您想要订购的票的数量:");scanf("%d",&Ticket_Count);if(Ticket_Count==0){printf("\n\t请再次输入飞机号:\n");getch();}elsebreak;}if(p1->Free_Amount>=Ticket_Count){Customer_Count++; /*定票乘客总数增1*/flag=1; /*表明进入了订票实际操作*/IsRepl=1; /*定票量满足,无需进入候补操作*/if(p1->CustName==NULL) /*首个定票乘客,并记录相关属性*/ {Custp1[Flight_No]=p2=new Customer; /*建立该航线的首位乘客结点*/ p1->CustName=Custp1[Flight_No];}else /*建立该航线的后续乘客结点*/{p2=new Customer;Custp1[Flight_No]->Next=p2;Custp1[Flight_No]=p2;}IsEmpty=0; /*定票乘员不为空*/Custp1[Flight_No]->Amount=Ticket_Count; /*订票数*/IDinfor=p1->Customer_Amount-p1->Free_Amount+1; /*算出座位号*/Custp1[Flight_No]->IDinfor=IDinfor; /*赋座位号*/p1->Free_Amount-=Ticket_Count; /*减去定票数*/printf("\n\t请输入您的姓名:");scanf("%s",&Custp1[Flight_No]->Name);while(1) /*数据合法性检验*/{printf("\n\t请输入舱位等级:");scanf("%s",&Custp1[Flight_No]->Rank);if(!(Custp1[Flight_No]->Rank>='1'&&Custp1[Flight_No]->Rank<='3')){printf("\n\t输入有误,请重新输入!");getch();}elsebreak;}printf("\n\t请输入您的ID信息:");scanf("%d",&Custp1[Flight_No]->IDinfor);if(Ticket_Count<10) /*为显示规整,作相应处理*/printf("\n\t");elseprintf("\n\t");printf("\n\t恭喜您订票成功!\n");for(i=1;i<=Ticket_Count;i++) /*打印座位号*/{printf("\n\t您所预定的座位号是%d",IDinfor++);if(i%10==0)printf("\n\t");}printf("\n");}/*满足定票数*/else if(p1->Free_Amount==0){printf("\n\t对不起,票已售完!\n");IsRepl=0;}else{printf("\n\t对不起,当前没有多余的票!\n");IsRepl=0;}if(!IsRepl){printf("\n\t您是否想成为候补乘客(Y/N)?");scanf("%s",&temp);if(temp=='y'||temp=='Y')/*以下为候补操作*/{if(p1->ReplName==NULL){Replp1[Flight_No]=p3=new Customer; /*建立该航线的首位候补乘客结点*/p1->ReplName=Replp1[Flight_No];}else{p3=new Customer;Replp1[Flight_No]->Next=p3;Replp1[Flight_No]=p3;}IsReplace=0; /*候补乘客不为空*/tag=1; /*已选择列入候补乘客名单*/Replp1[Flight_No]->Amount=Ticket_Count;printf("\n\t请输入您的姓名:");scanf("%s",&Replp1[Flight_No]->Name);Replp1[Flight_No]->IDinfor=IDinfor; /*候补乘客的座位*/Replp1[Flight_No]->Amount=Ticket_Count; /*候补乘客的订票数*/while(1) /*数据合法性检验*/{printf("\n\t请输入舱位等级:");scanf("%s",&Replp1[Flight_No]->Rank);printf("\n\t请输入您的ID信息:");scanf("%d",&Replp1[Flight_No]->IDinfor);if(!(Replp1[Flight_No]->Rank>='1'&&Replp1[Flight_No]->Rank<='3')){printf("\n\t输入有误,请重新输入.");getch();}elsebreak;}printf("\n\t没有剩余座位!\n");/*候补乘客无座提示*/shouldsave=1;}/*进入候补名单*/}/*票数满足*/}/*航线存在*/elseprintf("\n\t对不起,航线不存在!\n");/*航线不存在*/if(flag) /*此处不作处理,则会地址溢出*/Custp1[Flight_No]->Next=NULL;/*末位定票乘客的指针置空*/ if(tag){Replp1[Flight_No]->Next=NULL;/*末位候补乘客的指针置空*/printf("\n\t您已经成功排入候补订票队列中!\n");}printf("\n\t是否退出菜单?:(y/n)");scanf("%s",&c);if(c=='y')return;}/*while*/}/*-----------------订票乘客信息-----------------*/void Display_Reserve(){system("cls");Flight *p1;Customer *p2;p1=Head;if(Empty_Flight())return;printf("\n\t订票乘客信息");if(IsEmpty){printf("\n\t对不起,没有订票乘客信息!\n");getch();return;}printf("\n_______________________________________________________________________ ______\n");printf("Name Flight_No Plane_No Tic_Amount Des_Name Rank_No ID\n");while(p1!=NULL){if(p1->CustName!=NULL){p2=p1->CustName;while(p2!=NULL){printf("\n%-8s%-10s%-9s%-11d%-9s%-9c%-9d",p2->Name,p1->Flight_No,p1->Plane_No,p2->A mount,p1->Des_Name,p2->Rank,p2->IDinfor);if(p1->Free_Amount>=1)printf("\n\n\t还有多余的票!\n");elseprintf("\n\n\t票已售完!\n");p2=p2->Next;}}p1=p1->Next;printf("\n\n______________________________________________________________________ _______\n");}printf("\n\t按任意键返回!");getch();return;}/*-----------------候补乘客信息-----------------*/void Display_Replace(){system("cls");Flight *p1;Customer *p2;p1=Head;if(Empty_Flight())return;printf("\n\t候补乘客信息!");if(IsReplace){printf("\n\t对不起,没有候补乘客!\n");getch();return;}printf("\n_______________________________________________________________________ ______\n");printf("Name Flight_No Plane_No Tic_Amount Des_Name Rank_No ID\n");while(p1!=NULL){if(p1->ReplName!=NULL){p2=p1->ReplName;while(p2!=NULL){printf("\n%-8s%-10s%-9s%-11d%-9s%-9c%-9d",p2->Name,p1->Flight_No,p1->Plane_No,p2->A mount,p1->Des_Name,p2->Rank,p2->IDinfor);if( p1->Free_Amount>=1)printf("\n\t还有多余的票!\n");elseprintf("\n\t票已售完!\n");p2=p2->Next;}}p1=p1->Next;}printf("\n\n______________________________________________________________________ _______\n");printf("\n\t按任意键返回!");getch();return;}/*-----------------退票办理函数-----------------*/void RefundticketMenu(){int Flight_No=0,flag=0; /*记录满足条件的航线的定票结点*/Flight *p1; /*记下满足条件的航线结点地址*/Customer *p2,*p4; /*临时性定票乘员结点*/Customer *p3,*p5; /*临时性候补乘员结点*/char answer[7],name[7]; /*用户输入的航班数据*/int tag=0; /*若第二乘客满足条件,则它的首地址会发生冲突,注意此处*/ int IDinfor; /*记录座位号*/if(Empty_Flight()) /*航班线为空*/return;printf("\n\t现在开始进行退票手续");if(IsEmpty){printf("\n\t对不起,乘客不存在!");getch();return;}while(1){flag=0;tag=0;Flight_No=0;printf("\n\t请输入航线:");scanf("%s",&answer);if(Find_Line(Head,answer,p1,Flight_No)) /*航线存在*/{p2=p1->CustName; /*指向该航线的乘客名单的首地址*/printf("\n\t请输入您的姓名:");scanf("%s",&name);if(p2==NULL) /*该航线无定票乘客*/{printf("\n\t对不起,乘客不存在!.");if(Continue()=='n')/*是否继续操作*/return;}elsewhile(p2!=NULL)/*查找有无此乘客名*/{if(strcmp(p2->Name,name)==0)/*此外括号不能省略,否则功能会转变*/{if(p2==p1->CustName) /*若为首位乘客满足*/{prior=p1->CustName; /*记录指针*/IDinfor=p2->IDinfor;flag=1;break;}}else if(p2->Next!=NULL)/*记录满足航线的的前结点地址*/{if(strcmp(p2->Next->Name,name)==0){tag=1; /*特别注意此处*/prior=p2; /*记录满足定乘客的前一地址,以作删除操作*/IDinfor=p2->Next->IDinfor;flag=1;break;}}p2=p2->Next; /*指向下一乘客结点*/shouldsave=1;}/*while */if(!flag)printf("\n\t对不起,乘客不存在!\n");}/*存在该航线*/elseprintf("\n\t对不起,航线不存在!\n");if(flag){if(prior==p1->CustName&&!tag) /*首结点满足条件且一个乘客,则该航线定票乘客置空*/{if(prior->Next==NULL) /*仅一乘客,头指针置空*/{p1->Free_Amount+=prior->Amount;p1->CustName=NULL;}else{p1->Free_Amount+=prior->Next->Amount;p1->CustName=prior->Next; /*指向下一乘客结点*/}}else{p1->Free_Amount+=prior->Next->Amount;prior->Next=prior->Next->Next; /*删除操作*/}Customer_Count--;if(Customer_Count==0)IsEmpty=1;shouldsave=1;}if(flag)/*存在退票操作*/{p3=p1->ReplName;while(p3!=NULL){if(p3->Amount<=p1->Free_Amount)/*候补乘客的定票数小于或等于剩余票数*/ {printf("\n\t候补乘客已经存在!\n");p4=Custp1[Flight_No]->Next=new Customer;p4->Next=NULL;IsEmpty=0;if(p1->CustName==NULL)p1->CustName=p4;strcpy(p4->Name,p3->Name);p4->Rank=p3->Rank;p4->Amount=p3->Amount;p4->IDinfor=IDinfor;p1->Free_Amount-=p3->Amount; /*减去相应的票数*/Customer_Count++;if(p3->Next==NULL) /*无候补乘客*/IsReplace=1;if(p1->ReplName==p3){if(p1->ReplName->Next==NULL)p1->ReplName=NULL;/*删除*/elsep1->ReplName=p3->Next;}elsep5->Next=p3->Next->Next;}if(p3->Next!=NULL)if(p3->Next->Amount<=p1->Free_Amount)p5=p3;p3=p3->Next; /*指向下一候补乘客结点*/shouldsave=1;}printf("\n\t退票成功!");getch();return;}/*存在此乘客*/shouldsave=1;if(Continue()=='n')return;}/*while*/}/*---------------乘客管理子菜单函数-----------------*/void CustomermagMenu(){char c;system("cls");while(1){printf("\n\t\t乘客管理菜单:\n");printf("\n_______________________________________________________________________ ______\n\n");printf("\t1.乘客信息\n");printf("\t2.候补乘客信息\n");printf("\t3.返回主菜单\n");printf("\n_______________________________________________________________________ ______\n");printf("\t请选择您想要的服务:");scanf("%s",&c);switch(c){case '1':Display_Reserve();break;case '2':Display_Replace();break;default:ErrorMess();}}}/*-------下面为主程序画面函数----------*/void main(){system("color 1f"); //屏幕颜色设定system("mode con: cols=78 lines=35");Flight *p1;p1=Head;char c;do{system("cls");printf("\n\t\t 航空客运订票系统主菜单\n");printf("\n*********************************************************************** *******\n");printf("\t 1.航线管理菜单\n");printf("\t 2.订票办理菜单\n");printf("\t 3.退票办理菜单\n");printf("\t 4.乘客管理菜单\n");printf("\t 5.退出系统\n");printf("\n************************* 谢谢使用航空客运订票系统!*************************\n");printf("请选择您想要的服务:");scanf("%s",&c);switch(c){case '1':LinemanageMenu();break; /*航线管理*/case '2':bookingMenu();break; /*订票办理*/case '3':RefundticketMenu();break; /*退票办理*/case '4':CustomermagMenu();break; /*乘客管理*/case '5':exit(0);default:break;}}while(c!='5');}。

数据结构课程设计 航空订票系统(C++)

数据结构课程设计 航空订票系统(C++)
int remainber;//余票
struct booknode
{
public:
char name[10];//乘客姓名
int ticketnum;//票数
int rate;//舱位等级
}b[40];
struct sparenode
{
public:
char name[10];//乘客姓名
int ticketnum;//票数
char flightname[10];//航班名
int flightnum;//航班号
int day;//飞行日期
int limitednum;//乘员限额
int remainber;//余票
struct booknode
{
public:
char name[10];//乘客姓名
int ticketnum;//票数
class transportNode//航线类节点
{
friend class transport;
private:
char finish[10];//目的地
char flightname[10];//航班名
int flightnum;//航班号
int day;//飞行日期
int limitednum;//乘员限额
上海电力学院
数据结构C++课程设计
题 目:航空客运订票系统
学生姓名:范晓宁
学 号:20103285
院 系:计算机与信息工程学院
专业年级:信息安全2010级
2012 年 6 月 29 日
一、设计题目
航空客运订票的业务活动包括;查询航线、客票预订和办理退票等。试设计一个航空客 运订票系统,以使上述业务可以借助计算机来完成。

(完整版)数据结构课程设计-航空客运订票系统

(完整版)数据结构课程设计-航空客运订票系统

嘉应学院计算机学院实验报告课程名称:数据结构课程设计开课学期:2017-2018学年第2学期班级:1503指导老师:***实验题目:航空客运订票系统学号:姓名:上机时间:1.需求分析(1)航空管理。

每条航班所涉及的信息有:终点站名、航班号、飞机型号、飞行周日(星期几)、乘员定额、余票量。

(2)客户管理。

有关订票的客户信息(包括姓名、订票量、航位等级(1,2和3))以及等候替补的客户名单(包括姓名、所需票量)。

(3)系统实现的主要操作和功能。

系统实现的主要操作和功能如下:①查询航班。

根据旅客提出的终点站名输入下列信息:航班号、飞机型号、飞机日期、余票额。

②承办订票业务。

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队后补。

③承办退票业务。

根据客户提供的情况(日期、航班),为客户办理退票手续,然后查询该航班是否有人排队候补,首先查询排在第一的客户,若所退票额能满足该客户的要求,则为其办理订票手续,否则询问其他排队候补的客户。

2.概要设计1)本系统设计了一个含有多个菜单项的主控菜单,系统主控菜单运行界面2)存储结构设计本系统主要采用链表结构类型存储航班信息和订票的乘客信息。

航班信息链表结点由10个分量构成,乘客信息链表由5个分量构成。

3)系统功能设计本系统分为以下5个功能模块。

(1)航班管理。

航班管理子模块可完成添加新的航班,按终点站点名查询航班,浏览所有航班。

(2)订票办理。

在添加了航班的基础上可办理订票业务。

乘客根据所需航班输入终点站名和订票量订票。

如果订票量超过余票量,则会提示是否成为候补乘客;如果订票成功,则会要求输入订票乘客的姓名及所订票的舱位等级。

(3)退票办理。

已办理订票业务的乘客可根据所订票的航班和乘客姓名办理退票业务。

、(4)乘客管理。

可以查看已经订票的乘客信息和候补乘客的信息。

数据结构课程设计---航空订票系统

数据结构课程设计---航空订票系统

数据结构课程设计报告1.航空订票系统1.需求分析试设计一个航空订票系统,基本要求如下:每条航班所涉及的信息有:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,乘员定额,余票量,订定票的客户名单(包括姓名,订票量,舱位等级(头等舱、公务舱、经济仓)以及等候替补的客户名单(包括姓名、所需数量)。

采用链式存储结构。

系统能实现的操作和功能如下:(1)航班信息管理。

(2)查询航线,按以下几种方式查询:①按航班号查询;②按起点站查询;③按终点站查询;④按日期查询;每种查询方式中,查询后输出如下信息:航班号,航班机型,起飞机场,降落机场,日期(星期几),起飞时间,降落时间,飞行时长,价格,余票量。

(3)承办订票业务:根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满员或余票少于订票额,则需重新询问客户要求。

若需要,可登记排队候补。

(4)承办退票业务:根据客户提出的情况(日期,航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其它排队候补的客户。

2.设计2.1 设计思想(1)数据结构设计typedefstruct keHu//客¨户信息{char nameofKeHu[20];//客户名字int numofPiao;//客¨户需要票的数量int type;//仓位等级1:头等Ì舱2:公务舱3:经济舱struct keHu* next;/下个客户};typedefstruct hangBan{int numofHangBan;//航班号char typeofHB[20];//航班机型¨char startFly[20];//起飞¦机场char endFly[20];//降¦落机场char DataofHB[20];//日期格式为(20120312星期¨一)char startTime[20];//起飞¦时间char endTime[20];//到达时À间float flyTime;//飞行时长float prise;//价格int largeNum;//成员定额int leaveNum;//余票数量keHu *custemer;//乘客信息名单keHu *orderofKeHu;//替补客户};typedefstruct Node{hangBan *exam;//航班信?息¡éint numofN;//航班数量struct Node *next;};(2)算法设计总体设计:在Fly.h文件中设计舱位的信息处理以及订票退票和对舱位信息的管理方面的功能然后在main,h中设计用户界面功能部分。

数据结构课程设计-航空客运订票系统

数据结构课程设计-航空客运订票系统

2.作为示意系统,全部数据可以只存放在内存中;
3.系统能实现的操作功能如下:
a)查询航线:
根据旅客提出的终点站名输出下列信息:航班号,飞机号,星期几飞行,最近一天航班的日期和余票额;
b.) 承办订票业务:
根据客户提出的要求(航班号,订票数额)查询该航班票额情况,若尚余票则为客户办理订票手续,输出
座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要可登记排队候补;
退出系统:直接退出。
三 详细设计 航空客运订票系统:
主函数: int menu_select() /*菜单界面*/ { int c;
char s[20]; printf("\n"); printf("\t\t\t 航空客运订票系统\n"); printf("\t\t--------------------------------------\n"); printf("\t\t--------------------------------------\n");
6、课程设计实践作为培养学生动手能力的一种手段,单独考核。
3.课程设计说明书
一 需求分析
文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.
1.每条航线所设计的信息有:终点站名,航班号,飞机号,飞行周日(星期几),乘员定额,余票量,已订票
的客户名单(包括姓名,订票量,舱位等级 1,2 或 3)以及等候替补的客户名单(包括姓名,所需票量);
***5.退 票 办 理***\n");
printf("
f("
***7.退 出 系 统***\n");
printf("\t\t--------------------------------------\n");

数据结构航空订票系统课程设计报告

数据结构航空订票系统课程设计报告

摘要飞机在现代的生活中扮演者非常重要的角色。

它能够快速的把人们送到自己想要去的地方,既快速,又方便。

所以现在坐飞机时很普遍的。

但是都到机场去买票浪费时间,因此,航空订票系统应运而生。

有了航空订票系统,用户可以在该系统进行飞机票的查询,订票,退票等操作。

方便了大家关键词航空订票系统、查询、订票、退票目录摘要 (I)1 需求分析 (2)1.1 需求概述 (2)1.2 需求环境 (3)1.3 功能描述 (3)2 概要设计 (4)2.1 程序功能模块 (4)2.2 程序流程图 (4)2.3 课程设计的思想 (5)3 详细设计 (6)3.1 程序初始化 (6)3.1.1代码功能 (6)3.1.2 功能实现代码 (6)3.2 查询航班信息 (9)3.2.1代码功能 (9)3.2.3 功能实现代码 (11)3.3 订票模块 (12)3.3.1 代码功能 (12)3.3.2 功能实现代码 (12)4 测试与运行 (21)5结束语 (16)6 参考文献 (17)7附录 (18)1 需求分析1.1 需求概述航线管理。

每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量客户管理。

有关订票的客房信息(包括XX、订票量、舱位等级(1,2和3)以及等替补的客房(包括XX、所需标量)。

系统实现主要操作操作和功能。

系统实现的主要操作规程和功能如下:①查询航线。

根据旅客提出的终点站名输出下列信息:航班号、飞机号、飞行日期、余标额。

②承办订票业务。

根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补③承办退票业务。

根据客户提供的情况(日期、航班),为客户输退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额满足该客户的要求,则为其订票手续,否则依次询问其他排队候补的客户。

数据结构大作业-航空公司订票系统

数据结构大作业-航空公司订票系统

数据结构大作业-航空公司订票系统一、需求分析航空公司订票系统是一个需要进行高效管理和数据存储的系统。

在这个系统中,我们需要实现以下功能:1.用户登录和注册:用户可以注册并登录到系统中进行机票订购和查询。

2.机票查询:用户可以查询所有的航班信息,包括机票的价格、日期、起点和终点等信息。

3.机票购买:用户可以根据自己的需求,在航班信息中选择合适的机票,并进行购买。

4.支付功能:用户可以在系统中完成支付,并获得机票的二维码。

为了实现上述的功能,我们将采取以下的数据结构来设计和实现航空公司订票系统。

二、数据结构设计1. 航班信息表我们需要在系统中存储所有航班的信息,包括航班编号、起飞时间、起点、终点、票价等属性,因此我们可以使用以下数据结构来进行存储和管理航班信息。

typedef struct {char id[MAX_ID_LENGTH]; // 航班编号char departure[MAX_LOCATION_LENGTH]; // 起点char destination[MAX_LOCATION_LENGTH]; // 终点char date[MAX_DATE_LENGTH]; // 起飞日期char time[MAX_TIME_LENGTH]; // 起飞时间int price; // 票价} Flight;使用以上数据类型存储航班信息,我们可以建立一个包含所有航班的线性表来存储和管理所有的航班信息。

2. 用户信息表我们需要在系统中存储所有用户的信息,包括用户的账号、密码、姓名、身份证号码等属性,因此我们可以使用以下数据结构来进行存储和管理用户信息。

typedef struct {char username[MAX_USERNAME_LENGTH]; // 用户名char password[MAX_PASSWORD_LENGTH]; // 密码char name[MAX_NAME_LENGTH]; // 姓名char id[MAX_ID_LENGTH]; // 身份证号码} User;使用以上数据类型存储用户信息,我们可以建立一个包含所有用户的线性表来存储和管理所有的用户信息。

数据结构课程设计之飞机订票系统

数据结构课程设计之飞机订票系统

青岛理工大学数据结构课程设计报告题目:飞机订票系统院(系):学生姓名:班级:学号:起迄日期:指导教师:2010—2011年度第 2 学期一、需求分析1.问题描述:设计一个模拟飞机订票系统,通过此系统可以录入、查询、修改航班情况,完成用户订票和退票功能,并且可以保存客户和航班的资料。

2.基本功能1,录入航班信息。

没个航班的信息包括:航班号,起飞、抵达城市,座位总数,剩余座位数。

数据由使用者输入。

数据存储在txt文件中,采用线性表的链式结构。

2,加载航班和客户信息。

可以自动加载保存在txt文件中的航班和客户的信息。

3,查询航班。

可以通过输入航班号,查询该航班的所有信息。

可以通过输入起飞抵达的城市,查询航班的信息。

4,订票。

客户的信息包括:姓名,证件号,所订票的航班号,座号。

用户输入要订票的航班号,如果该航班未满,则订票成功,并记录客户的信息。

如果该航班已满,则订票失败,输出所有未满的航班信息,供用户选择。

5,退票。

删除退票用户的订票信息,相应的航班的剩余票数增加1。

6,修改航班信息。

用户输入要修改的航班号,和要修改的内容,修改该航班的相应信息。

7,保存操作。

把当前的航班信息,和用户信息分别保存在txt文件中。

8,输出所有客户信息。

按一定的格式输出用户的姓名,证件号码,航班号,座号。

9,输出所有航班信息。

按一定的格式输出所有的航班的航班号,起飞抵达城市,座位总数,剩余座位数。

0,退出系统。

3.输入输出在控制台下,根据提示输入要完成功能的标号,然后在提示下选择性的输入航班号、起飞抵达地、证件号码,或者姓名等。

系统会根据用户的输入输出相应的航班信息或者用户信息。

二、概要设计1.设计思路:对于航班和用户,分别定义不同的数据结构,并且采用线性表的链式结构进行存储。

然后根据要完成的功能,分模块用函数实现。

所用到的算法主要有:链表的创建,增加,遍历,插入,删除。

2.数据结构设计:采用的逻辑结构是线性结构。

存储结构是链式结构。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构课程设计报告设计题目:航空客运订票系统院系年级学生学号指导教师2015年11月26日目录一、课程设计目的 3二、需求分析 3三、概要设计1.设计步骤 42.系统整体结构图 53.功能模块及调用关系说明 5四、详细设计和源代码1.实现概要设计中定义数据的存储结构 62.查询航线信息功能的算法设计73.订票功能的算法设计94.退票功能的算法设计125.录入功能的算法设计 146.总航线预览功能的程序源代码15五、调试分析1.各功能的具体实例分析162.实验过程中出现的问题及解决方法 20六、课程设计总结20七、参考资料21一、课程设计目的(1) 熟练使用 C 语言编写程序,解决实际问题;(2) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;(3) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;(4) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;航空订票系统:(1)熟练掌握链表存储结构及其建立过程和常用操作;(2)熟练掌握队列的建立过程和常用操作;(3)学会自己调试程序的方法并掌握一定的技巧。

二、需求分析问题描述:航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。

试设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

设计任务:通过此系统可以实现如下功能:录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;订票:(订票情况可以存在一个数据文件中,结构自己设定)根据客户提出的要求(日期、航班号、订票数额)查询该航班票额情况,若尚有余额,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需要重新询问客户要求。

若需要,可预约登记排队等候。

如果该航班已经无票,可以提供相关可选择航班;退票:根据客户提供的情况(日期、航班、退票数额),为客户办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一的客户,若所退票额能满足他的要求,则为他办理订票手续,否则依次询问其他排队预约的客户……退票成功后修改相关数据文件。

客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

修改航班信息:当航班信息改变可以修改航班数据文件要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能。

测试数据:由学生任意指定,但报告上要求写出多批数据测试结果。

实现提示:每条航线应包含的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票额、已订票的客户名单(包括姓名、订票额、座位号)和预约登记的客户名单(包括日期、姓名、所需票额)。

这最后两项显然是一个线性表和一个队列。

为查找方便、已订票客户的线性表应按客户姓名有序,并且,为插入和删除方便,应以链表作存储结构。

由于预约人数无法预料,队列也应以链表作存储结构。

整个系统需汇总各条航线的情况登录在一张线性表上,由于航线基本不变,可采用顺序存储结构,并按航班有序或按终点站名有序。

每条航线是这张表上的一个记录,包含上述八个域,其中乘员名单域为指向乘员名单链表的头指针,预约登记客户名单域为分别指向队头和队尾的指针。

选做内容:当客户订票要求不能满足时,系统可向客户提供到达同一目的地的其它航线情况。

三、概要设计1.设计步骤1)分析问题,给出数学模型,设计相应的数据结构。

提示:(1)己订票的客户名单可以用线性表来实现。

为查找方便,线性表应按照客户姓名有序,并且为了插入和删除的方便,应以链表作为存储结构。

(2)等候替补的客户名单可以用队列来实现。

由于预约人数无法预计,所以队列也应以链表作为存储结构。

(3)需将输入的航班情况登录到一张线性表上(用顺序存储结构或链表存储结构)。

为了查询的方便,可以将航班情况按照航班有序或按照终点站名有序建立线性表。

每条航线是这张线性表的一个记录,包含上述8个域,其中已订票的客户名单域是指向己订票的客户名单链表的头指针,等候替补的客户名单域是指向队头和队尾的指针。

2)算法设计在已经选择好数据结构的前提下,为解决问题设计算法。

(1)确定所需模块对于稍复杂的程序设计,要充分利用模块化程序设计方法,自顶向下,逐步细化,在整体思路确定的情况下,考虑所需模块数,各模块完成功能以及模块之间的数据联系和调用关系。

(2)各子模块功能描述给出主要模块的算法描述,用流程图或伪代码表示。

(3)模块之间的调用关系3)源程序清单为了提高工作效率,充分利用上机调试程序的时间,要求学生在上机之前给出源程序清单。

4)用测试数据去验证算法及程序的正确性5)算法分析经过上机调试,源程序运行正确,并且实现算法要求的功能,解决课程设计题目中给出的问题后,分析算法的时间复杂度和空间复杂度。

2.系统整体结构图(功能模块图)图 1.系统整体结构图3.功能模块及调用关系说明(1)总航线信息预览:通过调用display()预览已经建立的全部航线的相关信息(航班号、飞机号、终点站、飞行日期、定额、余票数、排队等候人数),预览完返回主菜单。

(2)查询单条航线信息:根据乘客提出的终点站名或航班号调用Search()函数来查询并输出此条航线的相关信息(航班号、飞机号、终点站、飞行日期、定额、余票数、已订票乘客名单、排队等候乘客名单)。

并且查询完后询问乘客是否订票,是就调用订票Book()函数来为乘客进行订票,否就返回主菜单。

(3)办理订票业务:客户先输入的终点站名、订票数、姓名信息再来调用订票Book()函数,Book()函数根据客户提供的终点站名查询到该航线信息,若客户订票额末超过余票量,订票成功并登记信息,在订票乘员名单链表中添加乘客的信息;如果暂时余票数不足是,询问客户是否要排队等侯,如果是,则在排队等候的队列中增加该乘客的订票信息。

(4)办理退票业务:调用tuipiao()查询函数,根据客户提供的航线进行搜索根据客户提供的姓名到订票客户名单域进行查询。

退票成功后,重新将航线名单域指向订票单链表的头指针。

根据队列中从出的客户信息判断是否满足要求,如果满足,则将该客户的信息插入到乘客信息链表中。

(5)录入航班信息:调用CreatPlane()函数,根据输入的航班的相关的信息(航班号、飞机号、终点站、飞行日期、定额、余票数),将此航班加入到原来的航班组中。

(6)退出系统四、详细设计和源代码1.实现概要设计中定义数据的存储结构(1)已订票乘客信息(单链表)typedef struct Cust //已订票乘客信息{char Name[15]; //乘客姓名char number[10]; //乘客所乘飞机航班号char end[15]; //乘客终点站(2)排队等候的乘客信息typedef struct waitNode //排队等候客户信息{char name[15]; //乘客姓名int ticket; //乘客的订票数struct waitNode *next;}waitNode,*waitlink;typedef struct{waitlink front;waitlink rear;}waitQueue;(3)航班信息typedef struct Plane //航班信息{char number[10]; //航班号int planenum; //飞机号char end[15]; //终点站char date[10]; //飞行日期int dinge; //成员定额int tick; //剩余票数int k; //排队等候的人数Customer *first; //链接已订票客户waitQueue Q; //链接候补客户}PlaneLink;2.查询单条航线信息功能的算法设计(Search( )函数功能实现的源代码)int Search(PlaneLink *p,int N){int i=0,Q;cout<<"===========================================\n";cout<<" 1.按终点站名查询\n";cout<<" 2.按航班号查询\n";cout<<"___________________________________________\n";cout<<">>>>>>\n";cout<<" 请选择查询方式(1/2):"; cin>>Q;if(Q==1){char end[10];cout<<" 请您输入要查询的航班的终点站名: "; //按站点名查询航班信息cin>>end;while(i<N){if(strcmp(p[i].end,end)==0) //先查看是否存在到该站点的航班{cout<<"\n*****************您所查询的航班信息如下******************\n";cout<<"_________________________________________________________\n";cout<<" 航班号飞机号终点站飞行日期余票数\n";cout<<""<<p[i].number<<setw(7)<<p[i].planenum<<setw(12)<<p[i].end<<setw(10)<<p[i].date<<setw(10)<<p[ i].tick<<endl;cout<<"\n=========================================================\n";break;}i++;}}else if(Q==2){char num[10];cout<<" 请您输入要查询的航班的航班号: "; //按站点名查询航班信息cin>>num;while(i<N){if(strcmp(p[i].number,num)==0) //查看是否存在该航班号的航班{cout<<"\n*****************您所查询的航班信息如下:****************\n";cout<<"_________________________________________________________\n";cout<<" 航班号终点飞行日期余票数\n";cout<<""<<p[i].number<<setw(12)<<p[i].end<<setw(12)<<p[i].date<<setw(12)<<p[i].tick<<endl;cout<<"\n=========================================================\n";break;}i++;}}display_s(p, i, N); //调用display_s()函数输出该航班的已订票乘客和排队等候乘客的名单信息if(i<N) //如果存在该航班,询问客户是否要预定该航班的机票{int j;cout<<" 是否需要预定该航班的票(1/0):"; cin>>j;if(j==1){char name[10]; int ticket;cout<<" 请输入订票数目、姓名:";cin>>ticket>>name;Book(p,p[i].end,ticket, name, N);}}else { cout<<" 很抱歉,没有您查询的航班信息!\n"; }return 0;}3.订票功能的算法设计(Book( )函数功能实现源代码)int Book(PlaneLink *p,char end[],int ticket,char name[],int N){int i;for(i=0;i<N;i++){ if(strcmp(p[i].end,end)==0) //先找出是否存在要订票的航班{if(p[i].tick>=ticket) //查看余票数是否>= 订票客户订票数{p[i].tick-=ticket;Customer *t=(Customer *)malloc(sizeof(Customer));t->ticket=ticket;strcpy(t->Name,name);strcpy(t->number,p[i].number);strcpy(t->end,p[i].end);t->next=p[i].first; p[i].first=t; // 此使用的是头插法将订票乘客的信息放入到链表中/cout<<" 您订票成功!\n";cout<<" 您的航班信息如下:\n";cout<<"__________________________________________________\n";cout<<" 航班号飞机号终点站飞行日期定额\n";cout<<"__________________________________________________\n";cout<<""<<setw(9)<<p[i].number<<setw(6)<<p[i].planenum<<setw(12)<<p[i].end<<setw(12)<<p[i].date<<set w(10)<<p[i].dinge<<endl;cout<<"==================================================\n\n";break;}else if(p[i].dinge<ticket) //订票数超出航班的定额时,不能订票,也不能无法排队等候了{ cout<<" 您预订的票数超过了航班定额,无法为您订票!\n"; break; }else // 余票数不足时,询问乘客是否排队等候{char z;cout<<" 该航班剩余票数为:"<<p[i].tick<<endl;cout<<" 很抱歉,剩余的票数不够!\n";cout<<" 您是否需要排队等候(Y(y)/N(n)): "; cin>>z;if(z=='Y'||z=='y') { Queue(p,end,ticket , name, N,i); } //调用入队列函数,将乘客信息插入排队等候的人后面break;}}}if(i>=N) {cout<<" 很抱歉,没有您所需要的航班!\n"; }return 0;}int display_s(PlaneLink *p,int i,int N) //输出已定票及排队乘客的名单信息{if(p[i].first!=NULL) //p[i].first!=NULL说明已订票链表不为空,输出已订票乘客的名单信息{cout<<"****该航班的已订票乘客名单如下:****\n";cout<<"____________________________________\n";cout<<" 姓名订票量\n";Customer *t=p[i].first;while(t){cout<<setw(10)<<t->Name<<" "<<setw(7)<<t->ticket<<endl;t=t->next;}}if(i<N&&p[i].Q.front!=NULL) //p[i].Q.front!=NULL,输出正在排队等候乘客的名单信息{cout<<"****该航班等候订票的乘客名单如下: ****\n";cout<<" 姓名订票量\n";waitlink S=p[i].Q.front;while(S!=NULL){cout<<setw(10)<<S->name<<" "<<setw(7)<<S->ticket<<endl;S=S->next;}cout<<"=====================================\n";}return 0;}附:入队函数Queue( )的源代码int Queue(PlaneLink *p,char end[],int ticket,char name[],int N ,int i) //入队函数,将等候排队的乘客放入原来的队列中{system("cls");system("color 2e");waitlink q=(waitlink)malloc(sizeof(waitNode)); //将要的入队的结点,存储将要入队乘客的信息strcpy(q->name,name);q->ticket=ticket;q->next=NULL;if(p[i].Q.front==NULL){p[i].Q.front=p[i].Q.rear=q; p[i].k++; //p[i].k用来记录排队人数}else{p[i].Q.rear->next=q;p[i].Q.rear=q; p[i].k++;}cout<<"已为您登记,请耐心等候!\n";return 0;}4.退票功能的算法设计(tuipiao( )函数实现的源代码)int tuipiao(PlaneLink *p,int N){int i;Customer *R,*S;char number[10],Name[15];cout<<">>>>>>\n";cout<<" 请输入您的航班号与姓名:";cin>>number>>Name;for(i=0;i<N;i++){if(strcmp(p[i].number,number)==0&&p[i].first!=NULL){if(strcmp(p[i].first->Name,Name)==0){p[i].tick=p[i].tick+p[i].first->ticket;p[i].first=p[i].first->next;cout<<" 您已成功退票!\n\n";}else{R=p[i].first; S=p[i].first->next;while(S!=NULL){if(strcmp(S->Name,Name)==0){p[i].tick=p[i].tick+S->ticket;R->next=S->next;cout<<" 您已经成功退票!\n\n"; break;}R=R->next; S=S->next;}if(S==NULL) cout<<" 很抱歉,在该航班上没有找到您的姓名,请核实信息!\n\n";}if(p[i].Q.front!=NULL){waitlink Q=p[i].Q.front , q;while(Q!=NULL){if(p[i].tick>=Q->ticket){if(Q==p[i].Q.front){cout<<" 正在为等候的乘客"<<Q->name<<"办理订票!\n";Book(p,p[i].end,Q->ticket,Q->name,N);if(p[i].Q.front==p[i].Q.rear){p[i].Q.front=p[i].Q.rear=NULL;Q=Q->next;}else{ p[i].Q.front=p[i].Q.front->next;Q=Q->next;}}else{cout<<" 正在为等候的乘客"<<Q->name<<"办理订票!\n";Book(p,p[i].end,Q->ticket,Q->name,N);q->next=Q->next; Q=Q->next;}}else { q=Q; Q=Q->next; }}}break;}if(strcmp(p[i].number,number)==0&&p[i].first==NULL){cout<<" 很抱歉,该航班目前没有已订票的乘客,无法为你退票,请核实信息!\n\n"; break;}}if(i>=N) cout<<" 很抱歉,没有该航班信息,无法为你退票,请核实信息!\n\n";return 0;}5.录入功能的算法设计(CreatPlane( )函数的源代码)void CreatPlane(PlaneLink *p,int n,int N){int i,j;for(i=N;i<N+n;i++){p[i].first=NULL; // 带头结点的单链表为空时的条件p[i].Q.front=p[i].Q.rear=NULL; //队列为空时的条件cout<<">>>>>>\n";cout<<" 请输入航班号: "; cin>>p[i].number;cout<<" 输入终点站名: "; cin>>p[i].end;for( j=0;j<N;j++){if(strcmp(p[i].number,p[j].number)==0) //查看该航班号是否已经存在{cout<<" 已经存在该航班号!\n "; break;}if(strcmp(p[i].end,p[j].end)==0) // 查看是否存在到改站点的航班{cout<<" 已经有到该站点的航班!\n "; break;}}if(j==N){cout<<" 飞机号、飞行日期、成员定额:\n";cin>>p[i].planenum>>p[i].date>>p[i].dinge;p[i].tick=p[i].dinge; p[i].k=0;cout<<" 录入完成!\n";}}}6.总航线预览功能的算法设计(display( )函数的源代码)int display(PlaneLink *p,int N) //N为当前的航班数{cout<<"================================================================= =============\n";cout<<" 航班号飞机号终点站飞行日期定额余票数排队等候人数\n";cout<<"_________________________________________________________________________ _____\n";for(int i=0;i<N;i++){cout<<setw(9)<<p[i].number<<setw(6)<<p[i].planenum<<setw(12)<<p[i].end<<setw(12)<<p[i].da te<<setw(10)<<p[i].dinge<<setw(10)<<p[i].tick<<setw(10)<<p[i].k<<endl;}cout<<"================================================================= =============\n";return 0;}五、调试分析1)各功能的具体实例分析为了调试分析方便,在程序中已经初始放入了三个航班信息,如下:1.系统主菜单界面2.总航线预览功能界面3.查询单条航线功能图1.按终点站名查询图2.按航班号查询图3.错误查询输出结果4.订票功能1.当订票的航班存在且航班的余票数≥乘客订票数时②当订票的航班存在但余票数≤订票数≤航班的定额时③当航班存在但订票数大于航班定额时乘客将无法排队等候了4.当预定的航班不存在时5.退票功能①.当退票后余票数能够满足排队乘客的需要时②.当航班号或姓名输入错误时,系统会输出显示以下的三种界面图1图2图36.录入功能2)实验过程中出现的问题及解决方法:1、一开始错误很多,包括大量的语法错误和逻辑错误。

相关文档
最新文档