《数据结构航空订票系统课程设计报告.doc》由会员分享,可在线阅读,更多相关《数据结构航空订票系统课程设计报告.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘 要飞机在现代得生活中扮演者非常重要得角色。它能够快速得把人们送到自己想要去得地方,既快速,又方便。所以现在坐飞机时很普遍得.但就是都到机场去买票浪费时间,因此,航空订票系统应运而生。有了航空订票系统,用户可以在该系统进行飞机票得查询,订票,退票等操作。方便了大家关键词 航空订票系统 、查询、订票、退票目录摘 要I1需求分析1、需求概述1、2需求环境21、 功能描述22 概要设计32、1 程序功能模块3、 程序流程图32、3 课程设计得思想33 详细设计、1 程序初始化43、1、1代码功能、2功能实现代码43、2 查询航班信息63、2、代码功能6、2、3功能实现代码3、3 订票模块83、3、
2、1 代码功能8、3、2 功能实现代码4 测试与运行15结束语、16参考文献、77附录、181 需求分析、1 需求概述航线管理。每条航线所涉及得信息有:终点站名、航班号、飞机号、飞行周日(星期几)、乘员定额、余票量 客户管理.有关订票得客房信息(包括姓名、订票量、舱位等级(1,与)以及等替补得客房名单(包括姓名、所需标量)。 系统实现主要操作操作与功能。系统实现得主要操作规程与功能如下: 查询航线。根据旅客提出得终点站名输出下列信息:航班号、飞机号、飞行日期、余标额。 承办订票业务.根据客户提出得要求(航班号、订票数额)查询该航班票额情况,若有余票,则为客户办理订票手续,输出座位号;若已满或者余
3、票少于订票额,则需要重新询问客户要求;若需要,可等待排队侯补 承办退票业务。根据客户提供得情况(日期、航班),为客户输退票手续,然后查询该航班就是否有人排队候补,首先询问排在第一得客户,若所退票额满足该客户得要求,则为其订票手续,否则依次询问其她排队候补得客户。1、需求环境本课程设计需要得设备为硬件要求与软件配置要求具体要求如下:硬件要求:一台计算机。软件配置:WINDOSVC+、0。、3 功能描述本次课程设计就是航空订票系统主要就是由查询航班信息,订票还有退票三大主要功能。除此之外,还有系统得界面等等。2 概要设计、1 程序功能模块由需求分析知,本次课程设计就是航空订票系统其主要由三大模块构
4、成,即查询模块(这部分由我负责),订票系统模块与退票系统模块构成.2、2 程序流程图开始 该程序开始运行后 进如航空订票系统 用户可以进行航班航空订票系统 信息得查询,订票 与退票操作.退票系统模块查询模块订票系统模块使用结束,退出系统图、1为该系统总得流程图2、3 课程设计得思想 由需求分析知道需要实现几个功能定义了两个结构体。这两个结构体分别用来表示顾客信息与航班信息。有结构体可以知道一些基本信息,比如顾客得姓名,定得机票与航班得时间等等信息。使得实验代码得可读性大大增强。3详细设计3、1 程序初始化3、1、1代码功能这一块还就是由我负责。我初始化了五个航班得基本信息。在初始化程序中,主要
5、就是航班得基本信息。比如航班号,出发时间与剩下得机票数目等等基本信息。通过运用指针与链表来进行对初始化信息得书写。在初始化时将三个重点得信息分别初始化为:广州 航班号005 飞机号PZ113 机票数10天津 航班号004 飞机号PH121 机票数120 北京 航班号003 飞机号PZH133 机票数10上海 航班号00 飞机号PZH132 机票数120成都 航班号001 飞机号PZH122 机票数123、1、 功能实现代码vod IitLine()/初始化航线信息airlinp,*q; /航线L(airline )malloc(izef(ailne);LooedNUL;Lwit=UL;L-nt
6、=NULL;tcpy(L-en_ddr,0000000); 终点站strcpy(Lline_nm,”0); /航班号scpy(Llan_nu,00000); /飞机号LdayLleft=Ltota=0;L;p=(airline *)malo(sizef(airli);/广州p-bokedNUL;wai=UL;srpy(pend_adr,广州);sy(lne_num,05”);strcpy(-an_um,”Z113);day=5;plet=120;ptotal120;pnext=qext;-ext=p;p=(arlie )maloc(izf(ailie);/天津boked=ULL;wNULL;t
7、rcpy(p-endadr,”天津”);srcpy(plin_nu,004);srcpy(pplant_um,”H21);pday=4;le12;ptota=12;p-next=qne;qnx=; p=(arlin )mloc(sizeo(iline));/北京pookedUL;pwait=NULL;strcpy(pe_adr,”北京”);strcpy(pin_um,003);scpy(p-pan_num,”PZ133”);p=;plet=10;pttl=120;pnet=qext;q-nt; =(irln )allo(ize(arlie);/上海p-booked=NL;p-watNUL;tc
8、y(pn_dr,”上海”);strcpy(li_nm,02”);strpy(plan_num,PH132);y=;p-lef0;ptal=10;p-next=qnext;qnxt=p; =(ailine )malloc(szof(ailne));/成都p-od=ULL;pwat=NU;strcpy(pn_addr,成都);strcpy(p-linem,”01”);stcpy(ppatm,”PZ122”);pday=3;peft0;p-toal=1;p-next=qnext;q-nxt=p;3、2 查询航班信息3、2、1代码功能 此模块主要由我负责,在此模块我实现了查询航班得功能。当进入查询功能
9、时,通过输入数字用户可以查询航班得基本信息,比如目得地,剩下得机票数目,出发得时间等等基本信息。如果输入得数字在界面中没有显示则会提示用户没有这次航班。在这个模块我使用了个swth语句来实现对查询方式得选择。通过判断输入得数字进入到相对应得查询方式.如果输入得信息有误得话,系统将会提示用户没有这次航班,需要重新输入。、2查询模块流程图查询4321航班终点飞行日期飞机号航班号 、2、2查询模块得流程图在该模块用户可以进行查询功能。用户根据提示可以按照航班号、飞机号、飞行日期与航班重点来查询航班得基本信息。这些基本信息包括了飞行航班号、飞机号、剩余票量与处罚日期等等。在该模块用户必须根据提示进行输
10、入,否则系统会提示输入有误,需要重新输入.3、 功能实现代码void sar()/航班查询系统 int i; int fla0; airine *p; P(请输入查询航班得方式:); PR(航班号-); P(飞机号-); PR(”飞行日期-n”); PR(航班终点4n); SC(”%d,i); f(;!fag;) sth(i) /swich语句来进行航班得查询方式 cae1: p=earchlne();fag=1;break; cae 2: =echlan();ag=1;brk; case : p=seach_day();flg=;break; as 4: p=sach_add();flag=
11、1;break; defaul:PR(操作错误,请重新输入n);beak; (p) P(”终点站 航班号 飞机号 飞行周日 余票量n”);PR(0s1s%0s8d%8dn,pd_addr,plienum,ppla_num,y,p-t);R(就是否订票(确定请按1);C(”,i);f(i=1)boo();elsePR(”没有该航班n);、3 订票模块3、 代码功能在此模块可以根据提示可以从航班号,飞行日期与终点站来进行订票。如果订票时余票不足所需要得票得数目时就可以进行排队购票选择。、3、2 功能实现代码oid book()/订票系统in i;int fag0;airin p;cstomer *
12、cs,*c;P(请输入查询航班得方式:n);(航班号1n”);PR(终点站n”);P(”飞行日期n);for(;!flag;)SC(d”,i);switch(i) /运用一个witch语句进行航班查询e1: =rh_line();fl=1;bra;ca: p=search_adr();fla;bek;cs 3: p=ech_a();flag=1;reak;defalt:PR(操作错误,请重新输入n);reak;if()R(终点站 航班号 飞机号 飞行周日 余票量n);PR(”-20s%10s%0s%8dn,end_ddr,plnenum,plantnum,-day,p-lft);cst=(cu
13、stme *)malloc(seo(stomr));PR(请输入订票数量:);SC(”%d,cstnum);(请输入舱位等级(1/3));SC(%”,cs-lev);PR(请输入您得名字);SC(,ctname);if(s-nnextpbookd;-bookd=cst;p-left=-l-cstnm;P(订票成功,座位号为%ddn,ptotalpltstum1,p-total-pft);l当需要得飘得数量大于剩余得票数得时候进行询问就是否进行排队购票R(”余票不足,就是否排队等候n就是()n否(n)n);SC(,fl);i(flag)if(!-ait)cst-ext=p-at;pwait=cs
14、t;ec=-wait;r(;cnext;=cnx);stex=net;cnexcs; else P(没有该航班n”);guide();排队订票时得排队订票系统:oidwaitd(ailine )/排队订票系统int flag;toe q,q0,*h;i(!pwait) eurn;q=(customer*)mallc(izeof(custome);leel=0;num=2;strcy(q-ame,”000”);qnext=pwait;h=;or(;pleft0-nxt;)i(qextnplt)PR(”s,您正在排队定d张票,现有票,就是否定就是(y)否(n)n,qnext-me,qnxtum);
15、SC(,flg);i(lg)q0=qnext;next=ext-net;q0nxt=pbokd;pboke0;p-left=pleftqnu;R(排队订票成功nn);else=nex;elseq=q-ex;p-wait=hnt;3、退票系统模块3、4、代码功能在此模块,用户可以根据系统得提示进行退票操作.当进行退票操作时需要进行信息得核对,如果正确,打印出信息,再询问就是否退票。3、4、2功能实现代码od run()/退票系统nt fa;chr a0;airline *p;ustom ,*1;p=search_lne();c=p-boke;f(!p)PR(”没有该航班n);gude();ret
16、urn;PR(请输入您得姓名”);C(”s”,a);if(!pbookednme) /进行信息得查找判断就是否有用户得信息PR(”对不起,没有找到您得信息n”);guid();reurn ;if(!srcmp(a,bokedname)/核对完信息后输出要退票乘客得信息PR(退票信息姓名/终点站/票数ns/%s,pbooedna,pen_ad,poked-num);PR(”确认要退票就是(y)n否();scan(”d”,flag);if(fag)p-booed=pbokedne;plef=p-leftc-num;fee(c);PR(退票成功”);waied();guide();elsefr(;n
17、et;c-next)if(!srcp(a,ex-na)break;if(!c-ex)PR(”对不起,没有找到您得信息n”);guide();rt ;e(退票信息n姓名终点站/票数ns/s%dn,exname,pend_add,-nextnm);P(”确认要退票?n就是(y)n否(n)n);/询问就是否退票sanf(d,&fag);if(flag)=c-nxt;-nex=ct-next;pef=-left+cnum;free();PR(退票成功n);wited(p);gud();以上三个模块就是改程序最主要得功能实现得代码.初次之外还有部分其她显示模块。4 测试与运行由需求分析可知该程序运行后实
18、现功能后得结果。此处就是功能界面,用户可以按照提示进行操作进行查询功能时:进行查询模块式会显示出查询方式,按照查询方式可以准确得得到航班得信息进行订票模块时:在此处模块,订票可以根据提示进行购票,可以订多张票,输入舱位得等级与订票人名字排队订票系统:如果该航班剩余得票量小于所要购买得数量,则会提示就是否进行排队购票。退票系统:在该模块,进行退票操作时,系统会进行信息得核对,如果正确,将会显示客户得信息。然后提示就是否退票。5 结束语 此次数据结构课程设计为航空订票系统。在写程序得时候还就是遇到了很多得问题.有些功能怎么也实现不了。经过与同学得探讨还有上网查找资料,最后终于克服了这些问题,成功得
19、运行出了程序。通过这次学习,使我对编写程序得兴趣更大了。除此之外,此次课程设计帮我们熟练地运用所学习得知识,还让我们熟练得去融合她们,写出一个全新得程序来。在这次课程设计中要衷心得感谢老师对我们得帮助,使得我们对所学知识得熟练运用.总而言之,这次得课程设计既有趣又训练了我们对知识得运用。 参考文献1阮宏一,鲁静数据结构课程设计/C+描述、电子工业出版社马巧梅,庞晓琼等、数据结构课程设计案例教程第三版、人民邮电出版社3袁蔚敏、数据结构 清华大学出版社 7源代码源代码:#incluefineP printdein SC scanfteftrctcutmer/客户信息chre0;/客户姓名int n
20、um;/订票量in evel;/舱位等级customer next;cutome,*Lustomr;ypdef trucirli/航线信息char end_adr0;/航线终点ca ine_m5;/航班号char plnt_u8;/飞机号t dy;/飞行日期in total;定员in left;/剩余票数ustome *boked;/已定客户信息usoer *wat;/排队等候订票信息airline et;airle,airlne;aiine L;/将航班信息定义为全局变量,减少参数传递airlie searchli()/按航班号查找航班chara5;airline*p;p=L-next;(请
21、输入航班号”);(%”,);for(;p;p=p-next)if(!srm(,ine_num)) rea;retrn;Lailne sarpant()/按飞机号查找航班chr 8;irlie p;=Lnex;P(请输入飞机号);S(%s”,a);(;p;p=next)if(!strcmp(a,p-lan_nu) bre;retur ;Larline sac_day()/按飞行日期查找航班inta;airine ;=ex;R(”请输入飞行日期);SC(%d”,&a);for(;p;=next)if(a=p-day) re;eturn ;aiine sarchaddr()/按航班终点查找航班cha
22、 0;airline ;p=Lnex;PR(请输入航班终点);S(”s,a);for(;p;ppnex)i(!strmp(a,ped_ar) brak;rurp;vod guid()/主菜单界面P( -航空订票客服系统-n);P(=”);P(tt显示所有航线=1n);R(”t查询航线信息= 2);(”tt订票业务 = );PR(tt退票业务 = 4n);PR(t退出系统 = 0n);R(=n);PR(”tt清除屏幕信息= 9n);PR(”请按上面指引操作:t);vi pri_custoer(rlne *)/显示航班客户信息customer ;if(poked)c=bood;R(”已定票客户信息
23、n票数tt客户姓名n);for(;c;c=cnext)PR(5t/t%n”,cnum,cname);R(n);eleP(暂时没有客户订票n);(pwit)c=pwa;R(”排队订票客户信息票数tt客户姓名n);for(;cnet)R(5dt/tsn,num,cne);R(”n);elsPR(暂时没有客户排队订票nn”);void ook()/订票系统it i;inflag=;airline*p;ctomr*cst,*c;PR(”请输入查询航班得方式:n);(航班号-1n);R(”终点站-2);PR(”飞行日期3n”);r(;!lag;)SC(,i);switch(i)case 1: p=sea
24、rchli();fla=1;brek;ase 2: p=sear_ad();flag=1;break;cse : =search_();ag=1;brak;deault:PR(”操作错误,请重新输入n”);br;if(p)PR(终点站 航班号 飞机号飞行周日 余票量n);PR(”2s%10s0s8%8,pn_addr,p-e_num,ppant_n,pday,pleft);st(utoer *)loc(szef(cutomer));PR(”请输入订票数量:);S(”d”,cst-nm);PR(请输入舱位等级(1/2/));SC(%d”,&cstlevl);P(请输入您得名字);S(”%s”,c
25、t-name);if(cstnum=ple)cstnext=pooked;ooked=cst;peft=efcstu;PR(订票成功,座位号为ddn,ptotal-p-ecst-um+1,pttalplet);ePR(”余票不足,就是否排队等候?n就是(y)n否(n)n);SC(d”,&flag);i(fag)if(!p-wait)cste=p-t;waitst;ele=pwt;fr(;c-ne;=cnext);ct-extcnet;c-next;else PR(没有该航班n);gd();voiaitd(airline *p)/排队订票系统in fla;cusmr q,*q0,h;if(!-w
26、at) rtun;q(customr *)maloc(sizeof(cstoer));-level=0;-num=23;trcp(q-name,00000”);q-nxt=pwait;h=q;fr(;p-ef0&qnext;)if(q-nenump-let)PR(s,您正在排队定张票,现有票,就是否定就是(y)n否(n),qnetame,qex-nm);SC(d,ag);if(fag)=next;qnxt=q-ex-nt;q0nx=boed;pooke=0;plef=pleftq0-;PR(排队订票成功nn”);elseqqext;elseq=qnext;p-wait=h-net;oidrfn
27、d()/退票系统ntfag;char a2;airlin*;customer c,1;p=sech_ln();=p-boed;f(!p)R(没有该航班n);guid();rturn;P(请输入您得姓名”);SC(”s”,);f(!pbooeda)PR(对不起,没有找到您得信息nn”);gie();reur ;i(!srcp(a,p-booke-name))PR(退票信息n姓名/终点站票数n%s/s/dn,p-bokdame,pend_adr,-bookdnum);PR(确认要退票?n就是(y)n否(n)n);scaf(”%d,lg);if(flg)bookedp-booednext;plft=
28、pef+c-num;fe(c);P(”退票成功n);waited(p);guide();elsfo(;cnext;c=cex)if(!strcm(a,cenam))break;(!c-next)PR(对不起,没有找到您得信息nn);gu();retur ;sPR(退票信息姓名终点站票数nss/%dn,cnxtname,end_d,c-ntu);PR(确认要退票?n就是()否(n));scanf(”,&fag);(fla)c1=cnet;cnet=cnex-nex;l=plft+c1nu;re(c1);PR(”退票成功);wite(p);gie();oiserch()/航班查询系统it ;in
29、la=;arline ;R(”请输入查询航班得方式:”);R(”航班号-1n);PR(飞机号-2n);R(飞行日期-3n);P(”航班终点-4”);SC(d,i);fr(;!flag;)sitch(i)ase1:p=srch_ine();fla1;break;case 2: =serch_ant();flag;brak;cas3: =sarch_day();fa1;break;case 4: p=serc_adr();flag-=1;brak;eault:R(操作错误,请重新输入”);bk;i(p)(终点站 航班号 飞机号 飞行周日 余票量n);PR(-0s%0s18d8dn,p_adr,-e_um,pplt_nm,pday,p-left);R(就是否订票(确定请按1));C(%d,i);if(=1)book();lse PR(没有该航班n”);voidnitLe()/初始化航线信息ailine p,*;L=(aiin *)maloc(szeo(ailine);Lbookd=NUL;Lwit=NULL;next=NL;sry(Lend_addr,00000”);strpy(L-linenum,000”);trcpy(L-pant_num,000000”);Lda=-lef=Loa0;=L;p=(airine)alloc(izeof(airline));bo