c++课程设计-航班订票系统.doc_第1页
c++课程设计-航班订票系统.doc_第2页
c++课程设计-航班订票系统.doc_第3页
c++课程设计-航班订票系统.doc_第4页
c++课程设计-航班订票系统.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 一 课程设计目的1 数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言,自行实现一个较为完整的应用系统的设计与开发。2 通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用 。3 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。二课程设计内容1)、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)2)、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);

2、可以输入起飞抵达城市,查询飞机航班情况;3)、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班;4)、退票: 可退票,退票后修改相关数据文件;客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。5)、修改航班信息:当航班信息改变可以修改航班数据文件三系统功能模块设计 本系统分为五个模块:录入新航班模块、浏览航班模块、查找航班模块、订票模块、退票模块。得到如图所示系统功能模块图。飞机航班订票系统浏览航班信息查找航班信息订票系统退票系统录入新航班信息四程序源代码#ifndef FLIGHTINFO_H#define FLIGHTINF

3、O_H#include<iostream>#include<string.h>using namespace std;/记录已订票的旅客及信息class PsgOnpublic:char Name20; int Booknum; int Rank;PsgOn *next;PsgOn(char N20,const int B,const int R,PsgOn *Ne=NULL);PsgOn(PsgOn *Ne=NULL);/记录,处理每条航线信息的类class FlightNodepublic:char Terminus20; int Flight; int Plane

4、; int Day; int Maxnum; int Left; FlightNode(char T20="",const int F=0,const int P=0,const int D=0,const int M=0,const int L=0);/对已订票的客户的信息的操作的类class POListprivate:void init();public:PsgOn *head;PsgOn *tail;PsgOn *fence;int leftcnt;int rightcnt;int Fli; POList(int size=10);void clear();bool

5、 insert(char N20,const int B,const int R);bool append(char N20,const int B,const int R);bool remove(char *N,int &B);void setStart();void setEnd();void prev();void next();int leftLength()const;int rightLength()const;bool gerValue(char *N,int &B,int &R)const;int n=0;void ShowAllFlight(Flig

6、htNode *F,POList *B);void addFlight(FlightNode *F,POList *B);void ShowOneFlight(FlightNode *F);void BookTicket(FlightNode *F,POList *B) ;void ReturnTicket(FlightNode *F,POList *B);#endif/PsgOn中的函数的实现PsgOn:PsgOn(char N20,const int B,const int R,PsgOn *Ne) for(int i=0;i<=20;i+)Namei=Ni;Booknum=B;Ra

7、nk=R;next=Ne; PsgOn:PsgOn(PsgOn *Ne) next=Ne; /POList中的函数的实现void POList:init()fence=tail=head=new PsgOn;leftcnt=rightcnt=0;POList:POList(int size) init(); bool POList:insert(char N20,const int B,const int R)fence->next=new PsgOn(N,B,R,fence->next);if(tail=fence)tail=fence->next;rightcnt+; r

8、eturn true;bool POList:append(char N20,const int B,const int R)tail=tail->next=new PsgOn(N,B,R,NULL);rightcnt+;return true;bool POList:remove(char *N,int &B)if(fence->next=NULL)return false;N=fence->next->Name;B=fence->next->Booknum;PsgOn *ltemp=fence->next;fence->next=lt

9、emp->next;if(tail=ltemp)tail=fence;delete ltemp;rightcnt-; return true;void POList:setStart() fence=head;rightcnt+=leftcnt;leftcnt=0;void POList:setEnd() fence=tail;leftcnt+=rightcnt;rightcnt=0;void POList:prev()PsgOn *temp=head;if(fence=head)return;while(temp->next!=fence)temp=temp->next;f

10、ence=temp;leftcnt-;rightcnt+;void POList:next()if(fence!=tail)fence=fence->next;rightcnt-;leftcnt+;int POList:leftLength()constreturn leftcnt;int POList:rightLength()constreturn rightcnt;bool POList:gerValue(char *N,int &B,int &R)constif(rightLength()=0)return false;N=fence->next->N

11、ame;B=fence->next->Booknum;R=fence->next->Rank;return true;FlightNode:FlightNode(char T20,const int F,const int P,const int D,const int M,const int L) for(int i=0;i<=20;i+)Terminusi=Ti;Flight=F;Plane=P;Day=D;Maxnum=M;Left=L; /列举全部航线void ShowAllFlight(FlightNode *F,POList *B)cout<&l

12、t;"-"<<endl;cout<<"航班号"<<"t"<<"终点站"<<"t"<<"飞行日"<<endl;for(int i=1;i<n;i+)cout<<Fi.Flight <<"t"<<Fi.Terminus <<"t"<<Fi.Day <<endl;cout<&l

13、t;"-"<<endl;cout<<"你可以进行以下操作:1.查看单条航线;"<<"2.录入新的航班信息"<<"3.返回上一级.n"<<"请选择:"int chioce;top2:cin>>chioce;if(chioce=1)ShowOneFlight(F);else if(chioce=2)addFlight(F,B);else if(chioce=3)return;elsecout<<"输入错误!

14、请重新选择:"goto top2;void addFlight(FlightNode *F,POList *B)int i=0;while(n<50)cout<<"请输入航班的信息:"<<endl<<"请输入新航班的终点站名:"cin>>Fn.Terminus;docout<<"请输入新航班的航班号:"cin>>Fn.Flight;if(Fn.Flight%5!=0)cout<<"输入有误,请重新输入." i=1;e

15、lse for(int j=0;j<n;j+)if(Fn.Flight=Fj.Flight)cout<<"航班号已存在,请重新输入。"i=1;break; while(i);cout<<"请输入新航班的飞机号:"cin>>Fn.Plane;cout<<"请输入新航班的飞行日:"cin>>Fn.Day;cout<<"请输入新航班的成员定额:"cin>>Fn.Maxnum;cout<<"请输入如新航班的余票量

16、:"cin>>Fn.Left;Bn.Fli=Fn.Flight; cout<<"录入成功"n+;cout<<"是否继续录入(y/n)" char ch;top10:cin>>ch;if(ch='y')i=1;else if(ch='n')return;elsecout<<"输入错误!请重新选择:"goto top10;/查询单条航线void ShowOneFlight(FlightNode *F) char T20;int choic

17、e;cout<<"请输入终点站名称:n"cin>>T;FlightNode temp50;int m=0;for(int i=0;i<=n;i+)if(strcmp(T,Fi.Terminus)=0)tempm=Fi;m+;if(m=0)cout<<"无此终点站"<<endl;elseFlightNode temp1=temp0; cout<<"航班号:"<<temp0.Flight<<ends<<"飞机号:"&l

18、t;<temp0.Plane<<ends<<"飞行日:"<<temp0.Day<<ends<<"余票额:"<<temp0.Left<<endl;for(int j=1;j<m;j+)if(tempj.Day!=0)cout<<"航班号:"<<tempj.Flight<<ends<<"飞机号:"<<tempj.Plane<<ends<<&q

19、uot;飞行日:"<<tempj.Day<<ends<<"余票额:"<<tempj.Left<<endl;if(tempj.Day>=3)&&(tempj-1.Day>tempj.Day)temp1=tempj;cout<<"最近一天的航班:n"<<"航班号:"<<temp1.Flight<<ends<<"飞机号:"<<temp1.Plane<

20、;<ends<<"飞行日:"<<temp1.Day<<ends<<"余票额:"<<temp1.Left<<endl;cout<<"请选择所要的操作:1.继续查询2.返回上一级n"top3:cin>>choice;if(choice=1)ShowOneFlight(F);else if(choice=2)return;elsecout<<"输入错误!请重新选择:" goto top3;void BookT

21、icket(FlightNode *F,POList *B) int flag=0;int Fl; int N; char Na20; int choice;int temp;cout<<"请输入需乘坐的航班号:n"top6:cin>>Fl;if(!(Fl%5=0)cout<<"输入错误!无此航班号,请重新输入:"goto top6;cout<<"请输入订票额:n"cin>>N;cout<<"请输入您的名字:n"cin>>Na;fo

22、r(int i=0;i<n;i+)if(Fl=Bi.Fli)temp=i;flag=1;if(flag=0)cout<<"无此航班n"return;if(Ftemp.Left>=N)char choice1;cout<<"尚有余票,"<<ends<<"飞行日:"<<Ftemp.Day<<ends<<"飞机号:"<<Ftemp.Plane<<endl;cout<<"你要订&qu

23、ot;<<N<<"张票,确定订票?(N/Y)"<<endl;cin>>choice1;switch(choice1)case 'Y':case 'y':Btemp.append(Na,N,1);Ftemp.Left=Ftemp.Left-N;cout<<"订票成功!n"break;default:return ;elsecout<<"余票不足,订票失败"<<endl;cout<<"请选择下一步操作:

24、1.继续订票 2.退票 3.返回上一级n"top4:cin>>choice; if(choice=1)BookTicket(F,B);else if(choice=2)ReturnTicket(F,B);else if(choice=3)return;elsecout<<"输入错误!请重新选择:"goto top4;void ReturnTicket(FlightNode *F,POList *B)int Ftemp;char Ntemp20;int BoNum; int flag=0;int flag1=0;int temp;int ch

25、oice;bool flag2;flag=0;int Length; int LengthR;cout<<"请输入要退票的航班号:"cin>>Ftemp;cout<<"请输入你的名字:"cin>>Ntemp;for(int i=0;i<n;i+)if(Ftemp=Bi.Fli)temp=i;flag1=1;if(flag1=0)cout<<"无此航班n"return;Btemp.setEnd();Length=Btemp.leftLength();cout<<

26、;Length<<endl;Btemp.setStart();for(int j=0;j<=Length;j+)if(strcmp(Btemp.fence->Name,Ntemp)=0)Btemp.prev();Btemp.remove(Ntemp,BoNum);Ftemp.Left+=BoNum; flag=1;Btemp.next();if(flag=1)cout<<"退票成功!"<<endl;else cout<<"对不起,没有你订票的记录!n"cout<<"请选择下

27、一步操作:1.继续退票 2.订票 3.返回上级菜单n"top5:cin>>choice;if(choice=1)ReturnTicket(F,B);else if(choice=2)BookTicket(F,B);else if(choice=3)return;elsecout<<"输入错误!请重新选择:"goto top5;void main()FlightNode F50;POList B50;/定义各条航线的详细信息F0=FlightNode("NULL",1000,1,1,0,0); B0=100; F1=Fli

28、ghtNode("北京",1005,100,4,100,100);B1.Fli=1005;F2=FlightNode("哈尔滨",1010,101,5,100,100);B2.Fli=1010;F3=FlightNode("长春",1015,102,4,100,100);B3.Fli=1015;F4=FlightNode("天津",1020,103,2,100,100);B4.Fli =1020;F5=FlightNode("西安",1025,104,1,100,100);B5.Fli =102

29、5;F6=FlightNode("拉萨",1030,105,6,100,100);B6.Fli =1030;F7=FlightNode("杭州",1035,106,7,100,100);B7.Fli =1035;F8=FlightNode("海口",1040,107,1,100,100);B8.Fli =1040;F9=FlightNode("台北",1045,108,2,100,100);B9.Fli =1045;F10=FlightNode("东京",1050,109,3,100,100);

30、B10.Fli =1050;F11=FlightNode("伦敦",1055,110,4,100,100);B11.Fli =1055;F12=FlightNode("纽约",1060,111,5,100,100);B12.Fli =1060;F13=FlightNode("巴黎",1060,112,6,100,100);B13.Fli =1060;F14=FlightNode("悉尼",1065,113,7,100,100);B14.Fli =1065;F15=FlightNode("温哥华"

31、,1070,114,1,100,100);B15.Fli =1070;F16=FlightNode("华盛顿",1075,115,2,100,100);B16.Fli =1075;F17=FlightNode("新加坡",1080,116,3,100,100);B17.Fli =1080;F18=FlightNode("平壤",1085,117,4,100,100);B18.Fli =1085;F19=FlightNode("汉城",1090,118,5,100,100);B19.Fli =1090; n=20;int choice;while(1)cout<<"+"<<endl;cout<<" * 欢迎使用航空客运订票系统!* "<<endl;cout<<"+"<<endl;cout<<"你可以进行以下的操作:n"<<"1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论