数据结构C语言实验报告飞机订票系统_第1页
数据结构C语言实验报告飞机订票系统_第2页
数据结构C语言实验报告飞机订票系统_第3页
数据结构C语言实验报告飞机订票系统_第4页
数据结构C语言实验报告飞机订票系统_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据结构课程设计报告一、 订票系统【需求分析】本订票系统要能够实现航班情况的录入功能、航班的查询功能、订票功能、退票功能以及管理本系统的功能即能够修改航班信息。具体分析如下:1、录入功能可以录入航班信息,如录入航班号,到达城市,起飞时间,飞机票数,票价。2、查询功能可以查询航班的各项信息,如可以查询起降时间,起飞抵达城市,航班票价,确定航班是否满仓,航班号。3、订票功能可以订票并且记录下乘客的相关信息如记录下乘客姓名,身份证号码,所订航班的航班号以及所订的票数。4、退票功能可以退票并且记录乘客的相关信息以及退票信息。5、修改功能可以根据需要由管理员对航班信息进行修改更正。【概要设计】1、算法设

2、计:每个模块的算法设计说明如下:(1)录入模块: 查找单链表的链尾,在链尾插入一个“航班信息”的新结点。(2)查询模块:提供两种查方式:按航号和按航线查询,1代表按航号查询,2代表按航线查询。0则表示退出查询。顺着单链表查找,如果与航班号(航线)一致,输出相关信息,否则,查询不成功。(3)订票模块:查找乘客要订的航班号,判断此航班是否有空位,有则输入乘客有关信息,订票成功,否则失败。(4)退票模块:输入要退票的乘客姓名以及证件号码,查找乘客资料的链表中是否有这位乘客,有则删去此结点,并在空位加上1,无则退票失败。(5)修改模块: 输入密码,确认是否有权限对航班信息进行修改,有则在航班信息链表中

3、查找要修改的结点,进行修改,否则不能修改。2.存储结构设计:(1) 航班的信息:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表示一个航班的情况,包括航班号、起飞达到的时间、空座和目的的、票价以及限座七个数据项:航班号起飞时间达到时间目的地限座空座票价hD1D2D3单链表如下:每个结点包括数据域和指针域:数据域指针域C语言描述如下:typedef struct flightnode char air_num10; /*航班号*/char start_time15; /*起飞时间*/char end_time15; /*到达时间*/char end_place30; /*目的地*/i

4、nt total; /*限座*/int left; /*空座*/int price; /*票价*/struct flightnode *next; /*指向个结点*/flightnode;(2) 旅客的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素包括姓名、证件号码、航班号和座位号四个数据项:旅客姓名证件号码航班号座位号每个结点包括数据域和指针域:数据域指针域 C语言描述如下:typedef struct passengernode /*定义乘客资料结点*/char name20;char ID_num20;char air_num20;int seat_num;struc

5、t passengernode *next;passengernode;【详细设计】本系统源程序如下:#include<stdio.h>#include<stdlib.h>#define OK 1#define ERROR 0typedef struct flightnode /*定义航班信息结点*/char air_num10;char start_time15;char end_time15;char end_place30;int total;int left;int price;struct flightnode *next;flightnode;typedef

6、 struct passengernode /*定义乘客资料结点*/char name20;char ID_num20;char air_num20;int seat_num;struct passengernode *next;passengernode;flightnode *head_flight(); /*生成航班信息的头结点*/passengernode *head_passenger(); /*生成乘客资料的头结点*/int CreatFlight(flightnode *l); /*生成航班信息链表*/int CreatPassenger(passengernode *l); /

7、*生成乘客资料链表*/int InsertFlight(flightnode *p,char *air_num,char *start_time,char *end_place,int total,int left,int price); /*插入航班信息的结点*/int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int seat_num); /*插入乘客资料的结点*/flightnode *modefy_airline(flightnode *l,char *air_num); /*修改航班信

8、息的函数*/int BookTicket(flightnode*a,char *air_num,passengernode *c,char *name,char *ID_num); /*订票函数*/int CancelTicket(passengernode *c,flightnode*l,char *name,char *ID_num); /*退票函数*/int SearchFlight(flightnode*head); /*查询航班信息函数*/int SearchPassenger(passengernode *head); /*查询乘客信息函数*/void main() /*主函数*/

9、int p=2; /*p=1时进入主菜单,p=0时退出系统*/passengernode *cus=head_passenger(); flightnode *air=head_flight();char name20,air_num20,ID_num30,mima20,ch; char t20="zhengjianze" /*管理员密码*/clrscr();CreatFlight(&air); CreatPassenger(&cus);while(p=2) printf("n welcome to the airline system!nn pl

10、ease choose the serves below and press the number:nn");printf(" =nn");printf(" 1 -> Book Ticket n");printf(" 2 -> Cancel Ticket n");printf(" 3 -> Search Information n");printf(" 4 -> Exit nn");printf(" =n");switch(ch=getch(

11、)case '1':printf("n *-Booking Ticket-*n"); /*进入订票功能*/printf("Please input a airline number and press enter for OK:");scanf("%s",air_num);printf("Please input your name and press enter for OK:");scanf("%s",name);printf("Please input your

12、ID number and press enter for OK:");scanf("%s",ID_num);BookTicket(air,air_num,cus,name,ID_num);getch();break;case '2':printf(" *-Canceling Ticket-*n"); /*进入退票功能*/printf("Please input the cancel name for booking ticket:");scanf("%s",name);printf(&q

13、uot;Please input the ID for booking ticket:");scanf("%s",ID_num);CancelTicket(cus,air,name,ID_num);break;case '3':printf("*-Search Information-*n"); /*进入信息查询功能*/ printf(" 1 -> flight information n" ); printf(" 2 -> passenger informationn ");

14、 printf(" other -> exit n"); printf("*-*n"); if(ch=getch()='1') /*航班信息查询*/printf("*- flight information -*n"); SearchFlight(air);else if(ch='2') /*乘客资料查询*/printf("n please input the key:");scanf("%s",mima); /*输入管理员密码*/if(strcmp(mim

15、a,t)=0)printf("n*-passenger information -*nn");SearchPassenger(cus);else printf("sorry,the key is wrong");getch();break;case '4':getch(); /*退出系统*/p=0;break;flightnode *head_flight()flightnode *a;a=(flightnode *)malloc(sizeof(flightnode);if(a=NULL)a->next=NULL;return a;

16、passengernode *head_passenger()passengernode *c;c=(passengernode*)malloc(sizeof(passengernode);if(c=NULL)c->next=NULL;return c;int CreatFlight(flightnode *l)flightnode *p=*l;int i=0;char *air_num3="flight01","flight02","flight03"char *start_time3=" 08:00",&

17、quot; 12:00"," 16:30"char *end_place3="Guangzhou","Shenzhen","Shantou" /*初始化航班信息*/int total3=100,100,100;int price3=300,200,250;int left3=23,54,76; for(i=0;i<3;i+)InsertFlight(&p,air_numi,start_timei,end_placei,totali,lefti,pricei); /*插入航班信息*/retur

18、n OK;int CreatPassenger(passengernode *l)passengernode *p=*l;int i=0;char *name3="liming","Ximing","Chongliang"char *ID_num3="3105006052","3105006054","3105006051" /*初始化乘客资料*/char *air_num3="flight01","flight02","fl

19、ight03"int seat_num3=12,5,8;for(i=0;i<3;i+)InsertPassenger(&p,namei,ID_numi,air_numi,seat_numi); /*插入乘客资料*/return OK;int InsertFlight(flightnode *p,char *air_num,char *start_time,char *end_place,int total,int left,int price)flightnode *q;q=(flightnode*)malloc(sizeof(flightnode);strcpy(q-

20、>air_num,air_num);strcpy(q->start_time,start_time);strcpy(q->end_place,end_place);q->total=total;q->left=left;q->price=price;q->next=NULL;(*p)->next=q;(*p)=(*p)->next; /*航班信息链的尾插法*/return OK;int InsertPassenger(passengernode *p,char *name,char *ID_num,char *air_num,int sea

21、t_num)passengernode *q;q=(passengernode*)malloc(sizeof(passengernode);strcpy(q->name,name);strcpy(q->ID_num,ID_num);strcpy(q->air_num,air_num);q->seat_num=seat_num;q->next=NULL;(*p)->next=q;(*p)=(*p)->next; /*乘客资料链表的尾插法*/return OK;flightnode *modefy_airline(flightnode *l,char *a

22、ir_num)flightnode *p;p=l->next;for(;p!=NULL;p=p->next)if(strcmp(air_num,p->air_num)=0)p->left+;return l;printf("NO the airline!");return 0;int BookTicket(flightnode *a,char *air_num,passengernode *c,char *name,char *ID_num)flightnode *p=a;passengernode *q=c->next;p=a->nex

23、t;for(;q->next!=NULL;q=q->next);for(;p!=NULL;p=p->next)if(strcmp(p->air_num,air_num)=0)if(p->left>0)printf(" nSuccessful for Booking ticket.nn Your flight: %sn Your seat number : %d ",p->air_num,(p->total-p->left+1);printf("n *-*");InsertPassenger(&

24、q,name,ID_num,air_num,p->total-p->left+1);p->left-; return OK;elseprintf("seat is full");return 0;/*if(strcmp)*/ printf("Sorry,there isn't the plane,please check the airline number!");printf("n *-*");int CancelTicket(passengernode *c,flightnode *l,char *nam

25、e,char *ID_num)passengernode *p,*pr;char air_num20;pr=c;p=pr->next;while(p!=NULL)if(strcmp(p->name,name)=0&&strcmp(p->ID_num,ID_num)=0)strcpy(air_num,p->air_num);l=modefy_airline(l,air_num);pr->next=p->next;p=pr->next;printf("successful for canceling ticket.");

26、printf("n *-*");return OK;pr=pr->next;p=pr->next;printf("Sorry,there isn't the customer!");printf("n *-*");return ERROR;int SearchFlight(flightnode *head)flightnode *p=head->next;printf(" Flight Start_time Arrival_place Price Total Left_seatnn");for(;p!=NUL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论