您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 航班订票系统课程设计报告(C++)
一.课程设计目的1.数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言,自行实现一个较为完整的应用系统的设计与开发。2.通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。3.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。二.课程设计内容1)、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2)、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;3)、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)、退票:可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。5)、修改航班信息:当航班信息改变可以修改航班数据文件三.系统功能模块设计本系统分为五个模块:录入新航班模块、浏览航班模块、查找航班模块、订票模块、退票模块。得到如图所示系统功能模块图。系统功能模块图四.程序源代码#ifndefFLIGHTINFO_H#defineFLIGHTINFO_H#includeiostream#includestring.husingnamespacestd;//记录已订票的旅客及信息classPsgOn{public:charName[20];intBooknum;intRank;PsgOn*next;PsgOn(charN[20],constintB,constintR,PsgOn*Ne=NULL);PsgOn(PsgOn*Ne=NULL);};//记录,处理每条航线信息的类classFlightNode{public:charTerminus[20];intFlight;intPlane;飞机航班订票系统录入新航班信息浏览航班信息退票系统查找航班信息订票系统intDay;intMaxnum;intLeft;FlightNode(charT[20]=,constintF=0,constintP=0,constintD=0,constintM=0,constintL=0);};//对已订票的客户的信息的操作的类classPOList{private:voidinit();public:PsgOn*head;PsgOn*tail;PsgOn*fence;intleftcnt;intrightcnt;intFli;POList(intsize=10);voidclear();boolinsert(charN[20],constintB,constintR);boolappend(charN[20],constintB,constintR);boolremove(char*N,int&B);voidsetStart();voidsetEnd();voidprev();voidnext();intleftLength()const;intrightLength()const;boolgerValue(char*N,int&B,int&R)const;};intn=0;voidShowAllFlight(FlightNode*F,POList*B);voidaddFlight(FlightNode*F,POList*B);voidShowOneFlight(FlightNode*F);voidBookTicket(FlightNode*F,POList*B);voidReturnTicket(FlightNode*F,POList*B);#endif//PsgOn中的函数的实现PsgOn::PsgOn(charN[20],constintB,constintR,PsgOn*Ne){for(inti=0;i=20;i++){Name[i]=N[i];}Booknum=B;Rank=R;next=Ne;}PsgOn::PsgOn(PsgOn*Ne){next=Ne;}//POList中的函数的实现voidPOList::init(){fence=tail=head=newPsgOn;leftcnt=rightcnt=0;}POList::POList(intsize){init();}boolPOList::insert(charN[20],constintB,constintR){fence-next=newPsgOn(N,B,R,fence-next);if(tail==fence)tail=fence-next;rightcnt++;returntrue;}boolPOList::append(charN[20],constintB,constintR){tail=tail-next=newPsgOn(N,B,R,NULL);rightcnt++;returntrue;}boolPOList::remove(char*N,int&B){if(fence-next==NULL)returnfalse;N=fence-next-Name;B=fence-next-Booknum;PsgOn*ltemp=fence-next;fence-next=ltemp-next;if(tail==ltemp)tail=fence;deleteltemp;rightcnt--;returntrue;}voidPOList::setStart(){fence=head;rightcnt+=leftcnt;leftcnt=0;}voidPOList::setEnd(){fence=tail;leftcnt+=rightcnt;rightcnt=0;}voidPOList::prev(){PsgOn*temp=head;if(fence==head)return;while(temp-next!=fence)temp=temp-next;fence=temp;leftcnt--;rightcnt++;}voidPOList::next(){if(fence!=tail){fence=fence-next;rightcnt--;leftcnt++;}}intPOList::leftLength()const{returnleftcnt;}intPOList::rightLength()const{returnrightcnt;}boolPOList::gerValue(char*N,int&B,int&R)const{if(rightLength()==0)returnfalse;N=fence-next-Name;B=fence-next-Booknum;R=fence-next-Rank;returntrue;}FlightNode::FlightNode(charT[20],constintF,constintP,constintD,constintM,constintL){for(inti=0;i=20;i++){Terminus[i]=T[i];}Flight=F;Plane=P;Day=D;Maxnum=M;Left=L;}//列举全部航线voidShowAllFlight(FlightNode*F,POList*B){cout---------------------------------------------endl;cout航班号\t终点站\t飞行日endl;for(inti=1;in;i++){coutF[i].Flight\tF[i].Terminus\tF[i].Dayendl;}cout---------------------------------------------endl;cout你可以进行以下操作:.查看单条航线;2.录入新的航班信息3.返回上一级.\n请选择:;intchioce;top2:cinchioce;if(chioce==1){ShowOneFlight(F);}elseif(chioce==2)addFlight(F,B);elseif(chioce==3){return;}else{cout输入错误!请重新选择:;gototop2;}}voidaddFlight(FlightNode*F,POList*B){inti=0;while(n50){cout请输入航班的信息:endl请输入新航班的终点站名:;cinF[n].Terminus;do{cout请输入新航班的航班号:;cinF[n].Flight;if(F[n].Flight%5!=0){cout输入有误,请重新输入.;i=1;}else{for(intj=0;jn;j++)if(F[n].Flight==F[j].Flight){cout航班号已存在,请重新输入。;i=1;break;}}}while(i);cout请输入新航班的飞机号:;cinF[n].Plane;cout请输入新航班的飞行日:;cinF[n].Day;cout请输入新航班的成员定额:;cinF[n].Maxnum;cout请输入如新航班的余票量:;cinF[n].Left;B[n].Fli=F[n].Flight;cout录入成功;n++;cout是否继续录入(y/n);charch;top10:cinch;if(ch=='y'){i=1;}elseif(ch=='n')return;else{cout输入错误!请重新选择:;gototop10;}}}//查询单条航线voidShowOneFlight(FlightNode*F){charT[20];intchoice;cout请输入终点站名称:\n;cinT;FlightNodetemp[50];intm=0;for(inti=0;i=n;i++){if(strcmp(T,F[i].Terminus)==0){temp[m]=F[i];m++;}}if(m==0)cout无此终点站endl;else{FlightNodetemp1=temp[0];cout航班号:temp[0].Flightends飞机号:temp[0].Planeends飞行日:temp[0].Dayends余票额:temp[0].Leftendl;for(intj=1;jm;j++){if(temp[j].Day!=0){cout航班号:temp[j].Flightends飞机号:temp[j].Planeends飞行日:temp[j].Dayends余票额:temp[j].Leftendl;if((temp[j].Day=3)&&(temp[j-1].Daytemp[j].Day))temp1=temp[j];}}cout最近一天的航班:\n航班号:temp1.Flightends飞机号:temp1.Planeends飞行日:temp1.Dayends余票额:temp1.Leftendl;}cout请选择所要的操作:,继续查询2.返回上一级\n;top3:cinchoice;if(choice==1){ShowOneFlight(F);}elseif(choice==2){return;}else{cout输入错误!请重新选择:;gototop3;}}voidBookTicket(FlightNode*F,POList*B){intflag=0;intFl;in
本文标题:航班订票系统课程设计报告(C++)
链接地址:https://www.777doc.com/doc-6392269 .html