2023年数据结构C语言实验报告飞机订票系统.pdf

上传人:文*** 文档编号:88938119 上传时间:2023-05-04 格式:PDF 页数:19 大小:1.26MB
返回 下载 相关 举报
2023年数据结构C语言实验报告飞机订票系统.pdf_第1页
第1页 / 共19页
2023年数据结构C语言实验报告飞机订票系统.pdf_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《2023年数据结构C语言实验报告飞机订票系统.pdf》由会员分享,可在线阅读,更多相关《2023年数据结构C语言实验报告飞机订票系统.pdf(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

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

3、信息链表中查找要修改的结点,进行修改,否则不能修改。2.存储结构设计:(1)航班的信息:为了便于查找和修改,航班的情况存储结构采用单链表,每个元素表达一个航班的情况,涉及航班号、起飞达成的时间、空座和目的的、票价以及限座七个数据项:航班号起飞时间达成时间目的地限座空座票价hDID7每个结点涉及数据域和指针域:数据域指针域C 语言描述如下:t yped e f struc t f 1 ightn o de charair_num 10;/*航班号*/c h a r st a rt_ timel 5;/*起飞时间*/c ha r en d _ time 15;/*到达时间*/char en d _

4、pl a c e 30;/*目的地*/i n t tot a 1;/*限座*/i nt lef t;/*空座*/i nt price;/*票价*/str u ct fl i gh t n o de*next;/*指向个结点*/fl i g htnod e;(2)旅客的资料:为了便于插入、删除和修改,其采用单链表存储结构,每个数据元素涉及姓名、证件号码、航班号和座位号四个数据项:旅客姓名证件号码航班号座位号每个结点涉及数据域和指针域:数据域指针域C 语言描述如下:ty p e def s truct p a ssen g e r n ode/*定义乘客资料结点*/c har n ame2 0;c

5、har I D_n u m 2 0;c har a ir_num20;i nt seat_ n um;s t r uct pa s se n gemod e*n ex t;pas s e ngemode;【具体设计】本系统源程序如下:#inclu d e#i n clude#d efi n e OK 1#d e f i ne E RROR 0typed e f s tru c t f 1 i g h tno d e/*定义航班信息结点*/c h ar a i r_n um 1 0 ;cha r start_time 15;c ha r end_timel 5 ;char e n d _pla

6、c e30;i n t t otal;int 1 eft;i nt p r i c e;st r u c t f ligh t nod e*next;fl i g h t n o de;typ e def s t r uc t p a ssen g emode /*定义乘客资料结点*/char name 20;c h ar I D_ num 20;c h a r air_ n u m2 0;i n t seat_n um;st r uc t pas s e n g e rn o d e *n e x t;p a s s e ngern o de;flig h tnode*h e ad_f l

7、i g h t();/*生成航班信息的头结点可pass e ng e rn o d e*h e a d_p a s s e nger();/*生成乘客资料的头结点*/int C reatF 1 ight(f 1 igh t n ode*1 );/*生成航班信息链表*/int CreatP a sse n ger(p a ss enge r nod e*1);/*生成乘客资料链表*/i n t Inse r t F light(fl i ghtnode*p,c har*a i r_num,cha r*start_time,ch a r 火end_place,i nt total,i n t le

8、ft,int p rice);/*插入航班信息的结点*/int InsertPasseng e r(passen g er n ode*p,c har*name,ch a r*ID_ n um,c har*air_num,intseat_ n um);/*插入乘客资料的结点*/f 1 ightnode*modef y _ a irl i ne(fligh t n o de*1 ,ch a r*a ir_ n u m);/*修改航班信息的函数*/in t BookT i eke t(fli g htnode*a,c h ar*air_n u m,passenge r n o de*c,char

9、大 nam e,char*ID_num);/*订票函数*/i nt Ca n c e ITi c ke t(pass e n gernode*c,flig htnode*1,cha r*n ame,ch a r*I D_ nu m);/*退票函数*/int Searc h Fl i ght(fli g htno d e*h e ad);/*查询航班信息函数*/i n t Sear c h P a ssen g e r(pa s senge r nod e*hea d);/*查询乘客信息函数*/v o id ma i n()/*主函数*/(int p=2;/*p=l时进入主菜单,p=0时退出系统

10、*/p a s senge r nod e*c u s=head_ pa s senger();f 1 igh t no d e*air=head_flight();char n a me|20,a i r _n um2 0,ID_n u m3 0 0,c h;cha r t 20=z h e n g j i a n ze;/*管理员密码*/c 1 r scr();C r ea t Flight(&air);Creat P a ssen g e r(&c us);whil e(p=2)p r i n t f(n wel c ome t o th e a irline s y s t e m!n

11、n please c h o os e the s e r v e s bel o w and press the n u mbe r:n n);=n n);p rint f(1-Book T i c k et n );p rintf(M2-C an c e 1 T i c ke t nu);prin t f(3-Sea r ch In f o rm atio n nM);printf(4 E x it n n);printf(u=ny,swi t c h(c h=g etch()case 1,:p rint f(n-B o o kingT i cket-一一一一一*n);/*进入订票功能*/

12、p r i n t f(Plea s e input a air 1 in e numb e r and p r e s s enter f or OK:H);s c a n f(M%sn,a ir_num);p r i n tf(P lea s e i n p u t y o u r n a me and pr e ss e nter f o r OK:);s c a n f(%s,name);prin t f(n P leas e input your I D num b e r an d pre s s en t er f o r O K:);sea n f(n%sID_num);B o

13、 o kTick e t(ai r,a ir_ n um,cu s,n a me,I D_num);g e t ch();:brea k;c a se1 2 r:(printf(H*-Cancel i ng T i cket-*nu);/*进入退票功能p r in t f(Please in p ut the cancel name for booki n g ticket:H);s canf(%s n ame);pri n tf(u P 1 e ase input t he I D f or book i ng ticket:);s c anf C%s H,ID_num);Cance 1 T

14、icket(cus,a ir,n ame,ID_num);br e a k;c a s e p rintf(M*一-Se a r ch Inf o r m ation-*n);/*进入信息查询功能*/p r intf(0 1-fli g h t i nfo r matio n n );print f(2-p as se n ger inf o rmatio n n );printf(other-e x it nn);p r int f(*-*nn);i f(ch=getch()=T)/*航班信息查询文/p r int f(*-f 1 igh t inf o rma t i on -*nu);S

15、 e a r chFI i ght(a i r);e ls e if(ch=,2,)/*乘客资料查询*/printf(nn p le a se in p u t the k e y:);sc a nf(%s H,mima);/*输入管理员密码*/i f(strcmp(m i ma,t)=0)prin t 一-passenger informatio n -S e a r chP a s s e nger(c u s);e 1 se p r i nt f(sor r y,the k e y is wr o n g );ge t ch();br e a k;c a s e 4:gelch();/*

16、退出系统*/p=0;break;)fli g h tn o d e*h e a d_ f 1 i g h t()(flig h t n ode*a;a=(flightnode*)malloc(sizeof(f 1 i gh t node);i f(a=NULL)a-nex t=NULL;return a;pas s e n g e r nod e*he a d_p a s s e nger()passen g e r nod e*c;c=(p assenge r nod e*)mallo c(sizeof(p assengerno d e);i f(c=N U L L)c-next=NULL;

17、r e turn c;)i nt Creat F 1 i ght(fl i ghtnod e*1)(flight n od e*p=*l;i n t i=0;c h ar*air_ n u m 3 =f l ightOl H,fli g ht 0 2 n,fligh t 03;c h ar*s t a rt_ t ime3=0 0 8:0 0“,”12:00?1 6:30;cha r*e n d_ p lac e 3=n Guangzhou,nS henz hen”,S h a n toun;/*初始化航班信息*/i nttotal3=100,1 00,100);int pr i ce 3=3

18、00,200,250;i n t 1 e ft3=23,54,76;f o r(i=0;i3;i+)Inse r tF 1 i g h t(&p,air_ n um i,start_ tim e i,en d _ p 1 acei,t o t a l i,l e fti,price i);/*插入航班信息*/return OK;)i n t C reatPasseng e r(p assen g e r n ode*1)pas s engern o d e*p=*1 ;inti=O;c har*n ame3=limin g ,Ximing,u Chongl i a ng”;char*ID_nu

19、m 3=H,n,M);/*初始化乘客资料*/ch ar*a i r _ n um 3=u f 1 i g h tOlVightO 2 n,nf 1 igh t 0 3;in t s eat_ num3=12,5,8;f or(i=0;i a i r _num,a i rnum);s trcp y(qstart_time,sta r t_t i me);strcpy(q-end_pla c e,e n d_pl a c e);q-tot a l=to t a i;qleft=l e ft;q-price=p r ic e;q-nex t=NUL L;(*p)-n e x t=q;(*p)=(*p

20、)-next;/*航班信息链的尾插法*/r e t u r n OK;i n t Inse r tPas s enge r(pa s s e nger n o de*p,c har*n a m e,char*ID_num,c h a r*ai r _n u m,int seat_ n um)p a s sengern o d e*q;q=(pa s se n ger n o d e *)malloc(size o f(pass e ngernode);strcpy(q-nam e,n a m e);s trc p y(q-I D_num,ID_ n um);st r cpy(q-a i r_

21、n um,a i r _ n um);q-se a t_n um=sea t _n u m;q-n e xt=NULL;(*p)-ne x t=q;(*p)=(*p)ne x t;/*乘客资料链表的尾插法*/retu r n OK;)flightnode*mo d efy_airline(fligh t n o d e *l,char*a ir_ num)(fl i ghtnod e*p;p=1 -next;f o r(;p!=NU L L;p=p n ext)(i f(strcm p(air_num,pair_ num)=0)(p-le f t+;ret u rn 1;printf(N 0

22、t he airline!);ret u m 0;)int B o okTicket(fl i g htn o de*a,c ha r*air_n u m,p as s enge r nod e*c,cha r*n a me,c har*1D _ num)f 1 ightno d e*p=a;p as s e n gernod e*q=c-nex t;p=a-n ext;f or(;q-n ext!=NUL L;q=qne x t);fo r(;p!=N U LL;p=p n ex t)i f(strcm p(p ai r _ n u m,air_n u m)=0)if(p-1 e f t 0

23、)pri n tf(nSu c c es s fu 1 f o r Bo o king ti c ket.nn Yourflight:%sn Yo u r seat n umb e r:%d”,p-a i r_num,(p-tot a l-p-l eft+1);p r i n t f(n*-*”);Inse r tPasse n g e r(&q,n ame,ID_n u m,air_num,p-t ot a 1 p-1 ef t+1);p-le f t-;r e t u r n OK;elseprin t f(seal i s full(1);r etur n 0;/*i f(s t r c

24、m p)*/p r i nt f(nS o rr y,t her e i sn t t he p lane,pl e ase check th e a i r 1 i ne number!u);p r intf(n*-*);int Can c e 1 Ticket(p a s s e n gern o de*c,f lig h t node*l,char*n a m e,ch a r*ID_num)passe n g e r n o d e*p,*p r;char air_numl 2 0;pr=c;p=pr-n ext;while(p!=NULL)(i f(strcmp(pname,n am

25、e)=0&s t rcmp(p-ID_ n umj D _ n um)=0)(strc p y(air_ n um,p-air_ n u m);l=mod e fy_airline(l,a i r_ num);p r next=p-next;p=p rn e xt;pr i n t f(nsu c c e ssful for c a nee 1 ing ticke t.);p ri nt f(nn*-*”);ret u rn OK;)p r=p r-next;p=p r n ext;)pr i ntf(S o r r y,t h e re i s nz t the c u stomer!0);

26、prin t f(1 n*-*);r e tu r n E R RO R;)i nt Sear c h F 1 i ght(flig h t n ode*h e a d)fli g h t node*p=h e a d-nex t;p r i n t f(Flig h t Start_time A r riva 1 _place P r i c e T ot a 1 Le f t _ s eat n nH);f or(;p!=N U L L;p=p-n e x t)(pri n t f(M%s%-10s%-9s%-7 d%-6d%-6dn ,p-air_ n um,p-s t a r t_ti

27、m e,p-end_ p 1 a ce,p-p r ice,p-t o t al,p-le f t);p r i n t f(nnn);pri n tf(*-*n nn);return OK;int S ea r c h P a s s enger(p a sseng e rno d e*h ead)struct p a sse n g emode*q=head-next;p r intf(n Name ID Fl i g ht S e a t _numb e rn nM);f o r(;q!=NULL;q=q-n e xt)(p r i ntf(%-l 2 s%8s%-5s%d n n,qn

28、ame,q-ID_n um,q a i r _n u m,q-se a t_ n um);printf(H nM);pn n tf(n*_ _ _ _-_ _ _-*);retu r n OK;【调试分析】1、调试结果:(1)系统主菜单界面:(2)进入订票的界面:氤 C:WINDOWSsystem32cmd.exeBEIBweleone to the airline system?please choose the serues below and press the number:1-Book T icket2-Cancel Ticket3-Search Information4-Exit*

29、-Booking Ticket-*Please input a airline number and press enter for OK:flight02Please input youi*name and press enter for OK:zhengjianzePlease input your ID number and press enter for OK:3105006053Successful for Booking ticket.Vour flight:flight02Voui*seat number:4?(3)查询信息的界面:选 择1,查询航班信息的界面:BEIB氤 C:W

30、INDOWSsystem32cmd.exeE-F lightflig h t inform ationTotal-MS tart_tin eA rriual_placePriceLet_seatflig h tS l08:00Guangzhou30010023flig h t0 212:00Shenzhen20010054flig h t0 3M-16:30Shantou25010076-xweleone to the a ir lin e system?please choose the serves belovi and press the number:1 Book Ticket2-Ca

31、ncel Ticket3 Search Information4-Exit选择2,输入密码,查询乘客的信息的界面:环 C:WINDOWSsystem32cmd.exe HQ El2-Cancel Ticket3-Search Information4-Exit*-Seat*ch Information*1 一 flig h t inform ation2-passenger inform ationother-ex itM-Mplease input the kev:zhengJianze*-passengei*i nf i o n*Name ID F ligh t Seat_nunberli

32、m ing 3105006052 flig h tB l 12lin in g 3105006054 ligh t02 5Chongliang 3105006051 flig h t0 3 8M-X新增乘客,查询乘客信息:氨 C:WINDOWSsystem32cmd.exe-ExitBBQ*-Search Informat ion-*1-flight information2-passenger informationother-exitM-M1 please input the key:zhengjianzeM-passenger infornation-MNameIDFlightSeat_

33、nunberlining31050060s2 flightBl12Ximing3105006054 flight025Chongliang3105006051flight038zhengjianze3105006053flight0247密码错误时:CA C:WINDOWSsystem32cmd.exeBBQweIcome to the airline system?please choose the serves below and press the number:1-Book Ticket2-Cancel Ticket3-Search Information4-Exit-Search I

34、nformation-*1-flight information2-passenger informationother-exitplease input the key:limingsorry,the key is wrong.(4)进入退票的界面:名字或者证件错误时:2、时间复杂度分析:本程序运营所花费的时间重要在于循环语句,for和while语句,其时间复杂度应当为0(n)o3、模块设计和调试时存在问题的思考:原先在信息查询中没有乘客与管理人员的区别,乘客与管理人员都可以看到相同的信息,航班信息和乘客资料,后来,在浏览乘客资料时规定输入管理人员的密码,以保证乘客资料的安全性。4、算法的改善设想:本程序还存在很多缺陷,不能完全的实现老师规定的各种功能,特别是在查询功能方面,此程序应当增长一些查询的方式的设计,如可以按照终点地查询等。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com