数据结构实验报告飞机订票系统Word格式.docx

上传人:b****6 文档编号:16239234 上传时间:2022-11-21 格式:DOCX 页数:15 大小:36.53KB
下载 相关 举报
数据结构实验报告飞机订票系统Word格式.docx_第1页
第1页 / 共15页
数据结构实验报告飞机订票系统Word格式.docx_第2页
第2页 / 共15页
数据结构实验报告飞机订票系统Word格式.docx_第3页
第3页 / 共15页
数据结构实验报告飞机订票系统Word格式.docx_第4页
第4页 / 共15页
数据结构实验报告飞机订票系统Word格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据结构实验报告飞机订票系统Word格式.docx

《数据结构实验报告飞机订票系统Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构实验报告飞机订票系统Word格式.docx(15页珍藏版)》请在冰豆网上搜索。

数据结构实验报告飞机订票系统Word格式.docx

勺链表如下

D1

D2

—i

D3

 

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

数据域

指针域

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<

stdio.h>

stdlib.h>

#defineOK1

#defineERROR0

typedefstructflightnode{/*定义航班信息结点*/charair_num[10];

structflightnode*next;

}flightnode;

typedefstructpassengernode{/*定义乘客资料结点*/

charname[20];

flightnode*head_flight();

/*生成航班信息的头结点*/

passengernode*head_passenger();

/*生成乘客资料的头结点*/

intCreatFlight(flightnode**l);

/*生成航班信息链表*/

intCreatPassenger(passengernode**l);

/*生成乘客资料链表*/

intInsertFlight(flightnode**p,char*air_num,char*start_time,char*end_place,int

total,intleft,intprice);

/*插入航班信息的结点*/

intInsertPassenger(passengernode**p,char*name,char*ID_num,char*air_num,int

修改航班信息的函数*/

seat_num);

/*插入乘客资料的结点*/flightnode*modefy_airline(flightnode*l,char*air_num);

/*

退票函

choosethe

*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\npleaseservesbelowandpressthenumber:

\n\n"

);

1

->

BookTicket

\n"

2

CancelTicket

3

SearchInformation

4

Exit

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:

scanf("

PleaseinputtheIDforbookingticket:

CancelTicket(cus,air,name,ID_num);

};

3'

*SearchInformation*\n"

/*进入信

息查询功能*/

1->

flightinformation\n"

);

2->

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]);

班信息*/

intCreatPassenger(passengernode**l)

passengernode*p=*l;

char*name[3]={"

liming"

Ximing"

Chongliang"

char*ID_num[3]={"

3105006052"

3105006054"

3105006051"

*/

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

InsertPassenger(&

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

returnOK;

/*初始化乘客资料

/*插入乘客资料*/

intInsertFlight(flightnode**p,char*air_num,char*starttotal,intleft,intprice)

{flightnode*q;

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

strcpy(q->

air_num,air_num);

time,char*end_place,int

strcpy(q->

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;

}}

*name,char

intBookTicket(flightnode*a,char*air_num,passengernode*c,char

*ID_num)

{flightnode*p=a;

passengernode*q=c->

p=a->

next!

q=q->

next);

next){if(strcmp(p->

air_num,air_num)==0){

if(p->

left>

0)

\nSuccessfulforBookingticket.\n\nYourflight:

%s\nYour

seatnumber:

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

**n\.

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!

returnERROR;

intSearchFlight(flightnode*head){flightnode*p=head->

FlightStart_timeArrival_placePriceTotalLeft_seat\n\n"

for(;

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

air_num,p->

start_time,p->

end_place,p->

price,p->

total,p->

left);

}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);

【调试分析】

1、调试结果:

(1)系统主菜单界面:

~C:

\WINDOWS\systeml2kmd.exe

ueleonetotheairlinesvsteof

pieaceehoosetrlieesbeLouandpre-EMC-±

hienumlbie"

1->

Bookriclcet

2CancelTicket

3—>

SearchInfurnat丄ui*

4->

(2)进入订票的界面:

寅C:

\WINDOWS\system32kmd,exe

口x

(3)查询信息的界面:

盲C:

\WINDOWS\system-32kmd,exe

ueIcometotheairlinesysten?

piercechioosetheeemueebeIduandpremie-ntimljei*"

—>

&

«

dFChInforn«

tlui»

^(^=====二=耳===・一[fifot%°

乩=二==============』耳二==彌

flierhtinformation

2一〉passengfeririforiniation

ot;

hei«

—》exit

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

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

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

WINDOWS\sys1em32kmd,exe

4—>

Se-aj*cliInfoi'

nation——*

1—>

FligihtinfDima,ticm

2—>

informalion

other->

cxiit

丄nputtJi

-passenjferinfoi*matinn

Name

rn

Flivht

Se*t_n«

mbtp

liming

f丄ightUL

12

Xhning

310SQH6054

fll9ht02

£

■CliongJLlan

310SS0G0E1

Jlitfht33

6

zhengjianze

31050B&

053

flight32

4?

密码错误时:

(4)进入退票的界面:

Bookricket

Cancel1'

icliet

^eavehInfcvnatu>

n

*CancelingIicket*

Pleaseinputl;

hec^nce1nameforhockingticket:

zFen^Jianzeric«

iif«

inputL}*hIVfurbookingLiuFoC:

31050^6053successfulfopcAncelinqrticket.

uelcametotheairlinesysten?

pleasechoosetheservesbelau是n就pressthenumber

1->

Bdo1<

ricket

3—>

CancelTicFet

SearchInfarnation

名字或者证件错误时:

2、时间复杂度分析:

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

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

原先在信息查询中没有乘客与管

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

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1