数据结构实验报告飞机订票系统Word文档下载推荐.docx

上传人:b****1 文档编号:4478403 上传时间:2023-05-03 格式:DOCX 页数:14 大小:22.20KB
下载 相关 举报
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第1页
第1页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第2页
第2页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第3页
第3页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第4页
第4页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第5页
第5页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第6页
第6页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第7页
第7页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第8页
第8页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第9页
第9页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第10页
第10页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第11页
第11页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第12页
第12页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第13页
第13页 / 共14页
数据结构实验报告飞机订票系统Word文档下载推荐.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数据结构实验报告飞机订票系统Word文档下载推荐.docx

《数据结构实验报告飞机订票系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告飞机订票系统Word文档下载推荐.docx(14页珍藏版)》请在冰点文库上搜索。

数据结构实验报告飞机订票系统Word文档下载推荐.docx

目的地

限座

空座

票价

单链表如下:

 

每个结点包括数据域和指针域:

数据域

指针域

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;

【详细设计】

本系统源程序如下:

#include<

>

#defineOK1

#defineERROR0

typedefstructflightnode{/*定义航班信息结点*/

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"

);

================================================================\n\n"

1->

BookTicket\n"

2->

CancelTicket\n"

3->

SearchInformation\n"

4->

Exit\n\n"

================================================================\n"

switch(ch=getch()){

case'

1'

:

{printf("

\n*-------------BookingTicket-------------*\n"

/*进入订票功能*/

PleaseinputaairlinenumberandpressenterforOK:

"

scanf("

%s"

air_num);

PleaseinputyournameandpressenterforOK:

name);

PleaseinputyourIDnumberandpressenterforOK:

ID_num);

BookTicket(air,air_num,cus,name,ID_num);

getch();

}

break;

2'

*-----------------------CancelingTicket--------------------*\n"

/*进入退票功能*/

Pleaseinputthecancelnameforbookingticket:

PleaseinputtheIDforbookingticket:

CancelTicket(cus,air,name,ID_num);

};

3'

*---------------SearchInformation---------------------*\n"

/*进入信息查询功能*/

printf("

flightinformation\n"

);

passengerinformation\n"

other->

exit\n"

*------------------------------------------------------*\n"

if((ch=getch())=='

)/*航班信息查询*/

*------------------flightinformation-----------------*\n"

SearchFlight(air);

elseif(ch=='

){/*乘客资料查询*/

\npleaseinputthekey:

mima);

/*输入管理员密码*/

if(strcmp(mima,t)==0){printf("

\n*---------------passengerinformation---------------*\n\n"

SearchPassenger(cus);

elseprintf("

sorry,thekeyiswrong"

}}break;

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->

returnc;

intCreatFlight(flightnode**l)

flightnode*p=*l;

inti=0;

char*air_num[3]={"

flight01"

"

flight02"

flight03"

char*start_time[3]={"

08:

00"

12:

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;

i<

3;

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;

char*name[3]={"

liming"

Ximing"

Chongliang"

char*ID_num[3]={"

52"

54"

51"

/*初始化乘客资料*/

intseat_num[3]={12,5,8};

InsertPassenger(&

p,name[i],ID_num[i],air_num[i],seat_num[i]);

/*插入乘客资料*/

intInsertFlight(flightnode**p,char*air_num,char*start_time,char*end_place,inttotal,intleft,intprice)

{flightnode*q;

q=(flightnode*)malloc(sizeof(flightnode));

strcpy(q->

air_num,air_num);

start_time,start_time);

end_place,end_place);

q->

total=total;

left=left;

price=price;

(*p)->

next=q;

(*p)=(*p)->

next;

/*航班信息链的尾插法*/

intInsertPassenger(passengernode**p,char*name,char*ID_num,char*air_num,intseat_num)

{passengernode*q;

q=(passengernode*)malloc(sizeof(passengernode));

name,name);

ID_num,ID_num);

seat_num=seat_num;

/*乘客资料链表的尾插法*/

flightnode*modefy_airline(flightnode*l,char*air_num)

flightnode*p;

p=l->

for(;

p!

=NULL;

p=p->

next)

if(strcmp(air_num,p->

air_num)==0)

p->

left++;

returnl;

NOtheairline!

return0;

intBookTicket(flightnode*a,char*air_num,passengernode*c,char*name,char*ID_num)

{flightnode*p=a;

passengernode*q=c->

p=a->

next!

q=q->

next);

{if(strcmp(p->

air_num,air_num)==0){

if(p->

left>

0)

\nSuccessfulforBookingticket.\n\nYourflight:

%s\nYourseatnumber:

%d"

p->

air_num,(p->

total-p->

left+1));

\n*-----------------------------------------*"

q,name,ID_num,air_num,p->

left+1);

left--;

returnOK;

else

seatisfull"

}/*if(strcmp)*/}

Sorry,thereisn'

ttheplane,pleasechecktheairlinenumber!

intCancelTicket(passengernode*c,flightnode*l,char*name,char*ID_num)

passengernode*p,*pr;

pr=c;

p=pr->

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->

successfulforcancelingticket."

\n*-----------------------------------------------------------------*"

pr=pr->

tthecustomer!

\n*--------------------------------------------------------*"

returnERROR;

intSearchFlight(flightnode*head)

{flightnode*p=head->

FlightStart_timeArrival_placePriceTotalLeft_seat\n\n"

%s%-10s%-9s%-7d%-6d%-6d\n"

air_num,p->

start_time,p->

end_place,p->

price,p->

total,p->

left);

\n"

}printf("

*----------------------------------------------------------*\n\n"

intSearchPassenger(passengernode*head)

{structpassengernode*q=head->

NameIDFlightSeat_number\n\n"

q!

%-12s%-8s%-5s%d\n"

q->

name,q->

ID_num,q->

air_num,q->

seat_num);

\n*----------------------------------------------------------*"

【调试分析】

1、调试结果:

(1)系统主菜单界面:

(2)进入订票的界面:

(3)查询信息的界面:

选择1,查询航班信息的界面:

选择2,输入密码,查询乘客的信息的界面:

新增乘客,查询乘客信息:

密码错误时:

(4)进入退票的界面:

名字或者证件错误时:

2、时间复杂度分析:

本程序运行所耗费的时间主要在于循环语句,for和while语句,其时间复杂度应该为O(n)。

3、模块设计和调试时存在问题的思考:

原先在信息查询中没有乘客与管理人员的区别,乘客与管理人员都可以看到相同的信息,航班信息和乘客资料,后来,在浏览乘客资料时要求输入管理人员的密码,以确保乘客资料的安全性。

4、算法的改进设想:

本程序还存在很多缺点,不能完全的实现老师要求的各种功能,特别是在查询功能方面,此程序应该增加一些查询的方式的设计,如可以按照终点地查询等。

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2