您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构(C语言)实验报告-飞机订票系统
《数据结构》课程设计报告一、订票系统【需求分析】本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。具体分析如下:1、录入功能可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数,票价。2、查询功能可以查询航班的各项信息,如可以查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓,航班号。3、订票功能可以订票并且记录下乘客的相关信息如记录下乘客姓名,身份证号码,所订航班的航班号以及所订的票数。4、退票功能可以退票并且记录乘客的相关信息以及退票信息。5、修改功能可以根据需要由管理员对航班信息进行修改更正。【概要设计】1、算法设计:每个模块的算法设计说明如下:(1)录入模块:查找单链表的链尾,在链尾插入一个“航班信息”的新结点。(2)查询模块:提供两种查方式:按航号和按航线查询,1代表按航号查询,2代表按航线查询。0则表示退出查询。顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。(3)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。(4)退票模块:输入要退票的乘客姓名以及证件号码,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。(5)修改模块:输入密码,确认是否有权限对航班信息进行修改,有则在航班信息链表中查找要修改的结点,进行修改,否则不能修改。2.存储结构设计:(1)航班的信息:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项:航班号起飞时间达到时间目的地限座空座票价单链表如下:每个结点包括数据域和指针域:数据域指针域C语言描述如下:typedefstructflightnode{charair_num[10];/*航班号*/charstart_time[15];/*起飞时间*/charend_time[15];/*到达时间*/charend_place[30];/*目的地*/inttotal;/*限座*/intleft;/*空座*/intprice;/*票价*/structflightnode*next;/*指向个结点*/}flightnode;(2)旅客的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号码、航班号和座位号四个数据项:旅客姓名证件号码航班号座位号每个结点包括数据域和指针域:数据域指针域C语言描述如下:typedefstructpassengernode{/*定义乘客资料结点*/charname[20];charID_num[20];charair_num[20];intseat_num;structpassengernode*next;}passengernode;【详细设计】本系统源程序如下:#includestdio.h#includestdlib.h#defineOK1#defineERROR0hD1D2D3typedefstructflightnode{/*定义航班信息结点*/charair_num[10];charstart_time[15];charend_time[15];charend_place[30];inttotal;intleft;intprice;structflightnode*next;}flightnode;typedefstructpassengernode{/*定义乘客资料结点*/charname[20];charID_num[20];charair_num[20];intseat_num;structpassengernode*next;}passengernode;flightnode*head_flight();/*生成航班信息的头结点*/passengernode*head_passenger();/*生成乘客资料的头结点*/intCreatFlight(flightnode**l);/*生成航班信息链表*/intCreatPassenger(passengernode**l);/*生成乘客资料链表*/intInsertFlight(flightnode**p,char*air_num,char*start_time,char*end_place,inttotal,intleft,intprice);/*插入航班信息的结点*/intInsertPassenger(passengernode**p,char*name,char*ID_num,char*air_num,intseat_num);/*插入乘客资料的结点*/flightnode*modefy_airline(flightnode*l,char*air_num);/*修改航班信息的函数*/intBookTicket(flightnode*a,char*air_num,passengernode*c,char*name,char*ID_num);/*订票函数*/intCancelTicket(passengernode*c,flightnode*l,char*name,char*ID_num);/*退票函数*/intSearchFlight(flightnode*head);/*查询航班信息函数*/intSearchPassenger(passengernode*head);/*查询乘客信息函数*/voidmain()/*主函数*/{intp=2;/*p==1时进入主菜单,p==0时退出系统*/passengernode*cus=head_passenger();flightnode*air=head_flight();charname[20],air_num[20],ID_num[30],mima[20],ch;chart[20]=zhengjianze;/*管理员密码*/clrscr();CreatFlight(&air);CreatPassenger(&cus);while(p==2){printf(\nwelcometotheairlinesystem!\n\npleasechoosetheservesbelowandpressthenumber:\n\n);printf(================================================================\n\n);printf(1-BookTicket\n);printf(2-CancelTicket\n);printf(3-SearchInformation\n);printf(4-Exit\n\n);printf(================================================================\n);switch(ch=getch()){case'1':{printf(\n*-------------BookingTicket-------------*\n);/*进入订票功能*/printf(PleaseinputaairlinenumberandpressenterforOK:);scanf(%s,air_num);printf(PleaseinputyournameandpressenterforOK:);scanf(%s,name);printf(PleaseinputyourIDnumberandpressenterforOK:);scanf(%s,ID_num);BookTicket(air,air_num,cus,name,ID_num);getch();};break;case'2':{printf(*-----------------------CancelingTicket--------------------*\n);/*进入退票功能*/printf(Pleaseinputthecancelnameforbookingticket:);scanf(%s,name);printf(PleaseinputtheIDforbookingticket:);scanf(%s,ID_num);CancelTicket(cus,air,name,ID_num);};break;case'3':{printf(*---------------SearchInformation---------------------*\n);/*进入信息查询功能*/printf(1-flightinformation\n);printf(2-passengerinformation\n);printf(other-exit\n);printf(*------------------------------------------------------*\n);if((ch=getch())=='1')/*航班信息查询*/{printf(*------------------flightinformation-----------------*\n);SearchFlight(air);}elseif(ch=='2'){/*乘客资料查询*/printf(\npleaseinputthekey:);scanf(%s,mima);/*输入管理员密码*/if(strcmp(mima,t)==0){printf(\n*---------------passengerinformation---------------*\n\n);SearchPassenger(cus);}elseprintf(sorry,thekeyiswrong);getch();}}break;case'4':{getch();/*退出系统*/p=0;}break;}}}flightnode*head_flight(){flightnode*a;a=(flightnode*)malloc(sizeof(flightnode));if(a==NULL)a-next=NULL;returna;}passengernode*head_passenger(){passengernode*c;c=(passengernode*)malloc(sizeof(passengernode));if(c==NULL)c-next=NULL;returnc;}intCreatFlight(flightnode**l){flightnode*p=*l;inti=0;char*air_num[3]={flight01,flight02,flight03};char*start_time[3]={08:00,12:00,16:30};char*end_place[3]={Guangzhou,Shenzhen,Shantou};/*初始化航班信息*/inttotal[3]={100,100,100};intprice[3]={300,200,250};intleft[3]={23,54,76};for(i=0;i3;i++)InsertFlight(&p,air_num[i],start_time[i],end_place[i],total[i],left[i],price[i]);/*插入航班信息*/returnOK;}intCreatPassenger(passengernode**l){passengernode*p=*l;inti=0;char*name[3]={liming,Ximing,Chongliang};char*ID_num[3]={3105006052,3105006054,3105006051};/*初始化乘客资料*/char*air_num[3]={flight01,flight02,flight03};intseat_num[3]={12,5,8};f
本文标题:数据结构(C语言)实验报告-飞机订票系统
链接地址:https://www.777doc.com/doc-4700463 .html