完整版航空公司订票系统_第1页
完整版航空公司订票系统_第2页
完整版航空公司订票系统_第3页
完整版航空公司订票系统_第4页
完整版航空公司订票系统_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构与算法设计课程设计【设计题目】航空公司订票系统【问题描述】编写一个咸阳航空公司订票大厅的一个订票系统,可以在系统中录入并 修改各个航班的具体情况,帮助乘客准确的查询各航班的最新信息包括航班 号、航班的起始时间和地点、票价和各项业务的及时办理包括订票、退票 等.该系统用可以用C+的类编写.【软件功能】1. 输入航班信息并保存到磁盘2. 浏览航班信息3. 修改航班信息并保存到磁盘4. 查找航班5. 删除航班信息6. 订票7. 退票【算法思想】1先定义一个乘客根本信息的类包含乘客的姓名、证件号、订票数 量及所乘的航班号注:每个航班有固定的人数限制,假设满额那么提示其他可供选 择的航班.2建立

2、一个功能类,包括对航班信息和乘客订票信息的录入及修改的函 数,其中订票信息采用单链表的顺序存储方式存储.另外还包括对信息的查询和修改的功能函数,乘客退票的函数.并将最终的改动结果通过i/O流写入磁盘文件保存O3编写主函数,对编写的航班系统进行全面测试,对用户界面采用人性化的菜单方式.【类的设计】定义一个航班的类class planefriend class customer;庆元类public:void input;/插入航班信息void print();/打印航班信息void save();/保存航班信息void read();/读取航班信息void search();/查找航班信息void

3、 Delete(); /删除航班信息void book();加票void back(); /退票void xiugai(); /修改航班信息private:int num;/航班号char start_place20;/起点站 char arrive_place20;虐$ 点站 char time10;/ 起降时间int count;/M 票数量;定义一个顾客信息的类class customerfriend class plane;/fe 元类protected:Int id;/身份证号char name10;/孜生名int customer_num;如票数量public:void read1

4、();/读取数据void save1();/保存数据;【存储结构设计】采用顺序存储结构,利用动态申请空间实现信息的存储【模块划分及调用关系】定义了两个类 class plane和class customer,分别实现顾客及航班的信 息操作.在两个类的后面分别定义了类中的各个函数.另外在主函数中分别 调用函数,实现各个功能.【模块流程图】1.主函数main()3. void book()/ff票函数cout«"进入航班治理系统菜单,«endl;=|,«endl;|,«endl;|,«endl;|,«endl;|,«e

5、ndl;|,«endl;|,«endl;|,«endl;|,«endl;=|,«endl;【界面设计】cout«"|cout«"|cout«"|cout«"|cout«"|cout«"|cout«"|cout«"|cout«"|cout«"| =cout«-请选择(07):";采用人性化的菜单提示语,让用户很容易的操作;【用户手

6、册】用户只需要在VC环境下就可以操作,具体步骤可见菜单提示就可以 顺利操作.另外,再参加、删除、修改航班信息时必须以治理员的身份进去, 所以必须要有密码,在这里初始密码事:xinxi0701.谢谢您的使用! !1、程序上机调试报告【语法错误及其排除】两个类的公有函数中,在循环嵌套调用时总是受阻,不能执行.所以我 把两个类都定义为相互的有元类.这样问题就解决了.【算法错误及其排除】在订票与退票函数中,要核对用户信息如姓名、ID等,开始是自己定义 一个函数进行字符问的比较,在调用时总是出现语法错误,最后想到可以用 一个函数库中的函数 strcmp(char,char)把问题简单化,而且语法错误也解

7、决2、程序测试结果【测试数据】说明:测试数据都是输入数据,见输出结果【输出结果】:xinxi701欢迎进入航空订票票单-=E_=HI=二 一 一一 .一 一 _ 一_ 一 二 一II一一1UWIJ一 一一 此 n, Hlix z - TJJ TJJ TJJ TJJ-找崔WB3 费修查删订退退12345670青选择勇巧青输入密:x in x 10701四支 上退8: 0012绞个信息己经输入,是否继续00-15帛3个信息己经输入,是否继续<y/n>?n盘的信息是:朋 01 M2终点站 时|1北尽 5: 90-88: 00-12香港 9> 00-15盘始站西斐 西安 西安息自心息

8、 二二,- r一 Z- - _ - 一 - - 一 - VJT1J TU V b 丁 , 一-_一哥修查删订退退-12345670请选择0:4欢迎进入查询菜单1 .按航班号查找2 .按终点站查找3 .按航线查我0.返回请选择厂3:1 请输大航班号丽查找旌班信息成功疯班M 聂站站西安终点站 时间治理员密码:4一 机票数北示 5: 30-8: 30xinxi0701120欢迎进入航空订票菜单找嚓毒雷 威傕詹-«.T7.S.M 12345670请选择0:5清输入密码:x in x i0?01 欢迎进入删除菜单按航班号删除 妃按航线删除*0.返回度碧金多暨号崖罟继续删除Wn:n治理员密码:x

9、inxi0701欢迎进入航空订票菜单12345670费修查删订退退魏安安1西西Of位班信息 而班信息 冗班信息 例终点站时间:30-8: 00-15;120200请按任意键返回主菜单/官理 贝密码:xinxi0?01白心自心.信信信Lr_ : - _r- Lr 一 rl1一时 、V 一 rMIvrws 尸 o7T">nv nJ , 4 k L y,Tu8i12345670 =.蜡<0户;!=择用主选位按航班号查找2嵌终点站查找3-按航线查找队您回至选 S<B3>=1圭输义航班号脱2找粼班信息成功,机票数洒和破智 起始站 终点站 时间L92西安香港 9: 00-

10、15; 00L弥迎进入订寡系统, 专羸入你的1房出3 :圭9海研姓名,国四 专看*竺兰订的机票数以 /丁票成珈治理员密码:xinxi0701欢迎进入航空订票菜单40白心白心 信信信1. 1. 1.LL一 L 一 一一.r订退退12345670清选 JJ<0,V7>:2和班每 起始站 终忘站 时间 机票数L00西安北煎 5; 30-8: 3日119L82西安善港 9: 00-15: 00198【程序性能评价】该程序可以查询航班的信息、修改信息,查询顾客的信息,订票、退票 等,界面采用人性化的提示,可以让用户很容易的操作.另外在修改信息、 添加航班信息时必须要以治理员的身份进入即必须要

11、有密码才能进入.保证 了系统的平安.【性能改进方向】该系统在操作中要是不根据菜单的有关提示操作,而进行非法操作,可能会导致系统的死循环.在这点该系统还有待改进.【收获及体会】事实总比想象的难,冈卅始编写这个程序的时候思路比较活晰.可是编写 的时候遇到了很多难题,譬如将顾客的信息及航班的信息保存到文件中, 不知道 用那种方式更简便,最后仔细思考,阅读课本资料,选择了用流的形式输出到文 件中,感觉用起来特别方便简洁.完成了程序的编写后乂对该程序进行了大量的 修改,调试,使程序更加简明,并添加了不少提示用户操作的语句,使用户使用 该系统时更加方便.对自己的这个程序还是比较满意的, 可以说已经超出了自

12、己 当初的设想.从编写这个程序的过程中不但发现了许多自己没学明白的地方,而且锻炼了自己的耐心.冈q调试时有很多错误,我逐个仔细的修改、排除,最终成功的完成了调试.进过这次实习,我更加深刻的体会到,作任何事情要仔细,要 静下心来认真思考,只要努力了,必定会有回报.3、源程序代码#include<iostream.h>#include<string.h>#include<stdio.h>#include<iomanip.h>#include<stdlib.h>#define N 1000/ 宏定义 class customer;/申明顾客

13、信息类/定义航班信息类class planefriend class customer;/有元类 public:void insert();参加航班信息void print();输出航班信息void save();保存航班信息void read();读取航班信息void search();查找航班信息void Delete();删除航班信息void book(); / 订票void back(); 退票void xiugai();修改航班信息private:int num;/航班号char start10;/ 起点站char arrive10;/ 终点站char time20;/ 起降时间in

14、t plane_num;/ 机票数量 sN;/-定义顾客信息类class customerfriend class plane;/有元类 protected:int id;/身份证号char name20;/ 姓名int pshu;/用户订票数量public:void read1();/ 读取数据void save 1();/ 保存数据)yhN;int ij;/全局变量int m=0,y=0;宏定义一个输出#definePRINTsi.num«setw(13)«si.start«setw(13)«si.arrive«setw(13)«

15、si.time«setw(13)«si.plane_num«endl定义输出格式/主函数void main()plane abc;定义一个航班类的对象intj;docout«"治理员密码:xinxi0701"«endl;cout«""«endl;cout«"欢迎进入航空订票菜单 "«endl; /主界面cout«"|=|"«endl;cout«"|1.新增航班|"«e

16、ndl;cout«"|2.浏览航班信息|"«endl;cout«"|3.修改航班信息|"«endl;cout«"|4.查找航班信息|"«endl;cout«"|5.删除航班|"«endl;cout«"|6.订票|"«endl;cout«"|7.退票|"«endl;cout«"|0.退出|"«endl;cout«

17、;" |=|"«endl;cout«"请选择(07):;cin»j;switch(j)case 1:abc. insert();/调用插入函数break;case 2:abc.print();/ 调用打印函数 break;case 3:abc.xiugai();/ 调用修改函数 break;case 4:abc.search();调用查找函数 break;case 5:abc.Delete(); 调用删除函数 break;case 6:abc.book();/调用订票函数break;case 7:abc.back();/ 调用退票函数

18、 break;case 0:;break;while(j!=0);判断结束cout<<"谢谢使用,再见!n;/主函数结束/定义类中各个函数void plane:insert() 打印函数char f="xinxi701; 设置密码char y;cout<<"请输入密码:"cin>>f;/读取密码if(strcmp(f,"xinxi0701")=0)cout<<"n"for(i=0;i<N;i+)cout<<"航班号 出发地点到达地点起降时间

19、满载人数"<<endl;cout<<"|"<<endl;cin>>si.num>>si.start>>si.arrive>>si.time>>si.plane_num;cout<<"|"<<endl;m+;cout<<"第"<<m<<"个信息已经输入,是否继续 (y/n)?;cin>>y;cout<<endl;if(y='y

20、9;)continue;elsesave();/将结构体信息存盘cout<<"刚刚存盘的信息是:"<<endl;print();/输出输入的航班信息break;elsecout<<"密码错误,您不能使用此项功能,强制推出!"<<endl; void plane:save() 保存函数(FILE *fp,*fp1;/定义文件指针if(fp=fopen("chen.txt","wb")=NULL)/ 翻开文件并判断是否出错 (cout<<创立文件失败!&quo

21、t;<<endl;/出错提示getchar();return;if(fp1=fopen("hao.txt,"wb")=NULL)/ 翻开文件并判断是否出错(cout<<"创立文件失败!"<<endl;/出错提示 getchar();return;for(i=0;i<m;i+)if(fwrite(&si,sizeof(class plane),1,fp)=0)/向文件写入数据,并判断是否出错cout<<"向文件输入数据失败!"<<endl;fprintf

22、(fp1,"%d,m);fclose(fp);/ 关闭文件 fclose(fp1);/ 关闭文件 /void plane:read()/从文件读取信息(FILE *fp,*fp1;/定义文件指针if(fp=fopen("chen.txt","rb")=NULL)/翻开文件,并判断是否出错(cout<<"出现错误,请检查文件是否存在!"/出错提示getchar();if(fp1=fopen("hao.txt","rb")=NULL)/ 翻开文件并判断是否出错(cout<

23、<"创立文件失败!nn;/出错提示getchar();return;fscanf(fp1,"%d",&m);fclose(fp1);/ 关闭文件 for(i=0;i<m;i+) (fread(&si,sizeof(plane),1,fp);/ 从文件中读取信息fclose(fp);/ 关闭文件/void plane:print()/ 输出函数(char w10;机票数n;read();/调用读取文件函数cout<<航班号 起始站 终点站 时间for(i=0;i<m;i+)(cout<<PRINT;/ 打印信

24、息cout<<"*"<<endl;cout<<"/请按任意键返回主菜单/"<<endl;cin>>w;/限制返回主菜单/void plane:search()/查询函数(char name110;char name212;char ii10;int n,no;do(cout<<"欢迎进入查询菜单"<<endl;/查询方式菜单cout<<""<<endl;cout<<" 1.按航班号查找n

25、n"2.按终点站查找nn"3.按航线查找nn""0.返回"<<endl;cout<<"请选择(03):"cin>>n;if(n=0)break;switch(n)(case 1:cout<<"请输入航班号:"cin>>no;/ 航班号break;case 2:cout<<"请输入终点站名称cin>>name2;/读取终点站 break;case 3:cout<<"请输入起始站名称:n;cin

26、>>name1;/读取起始站cout<<"请输入终点站名称:n;cin>>name2;/ 终点站 break;read();/调用读取函数for(i=0;i<m;i+)if(strcmp(si.arrive,name1)=0|strcmp(si.arrive,name2)=0)/按终点站起始站判断输出条件cout<<"n查找航班信息成功!"<<endl;cout<<"航班号 起始站 终点站 时间 机票数"<<endl;cout<<PRINT;/

27、 打印信息break;if(si.num=no)/按航班号判断输出条件cout<<"n查找航班信息成功!n;cout<<"航班号 起始站 终点站 时间 机票数"<<endl;cout<<PRINT;/ 打印信息break;no=0;/将航班号赋值为0if(i>m)cout<<"该航班不存在,是否继续查找(y/n)?;cin>>ii;while(strcmp(ii,"y")=0);/ 判断结束/void plane:Delete()/ 删除函数char nam

28、e110;char name212;char ii12;char f="xinxi701"/ 设置密码int no,n;cout<<"请输入密码:"cin>>f;/读取密码if(strcmp(f,xinxi0701)=0)判断密码是否正确do(cout<<"欢迎进入删除菜单"<<endl;/删除方式菜单cout<<""<<endl;cout<<"*1.按航班号删除nn""*2.按航线删除nn"

29、"*0.返回"<<endl;cout<<"请选择(02);cin>>n;/读取删除方式if(n=0)break; 跳出循环switch(n)(case 1:cout<<"请输入航班号:"cin>>no;/读取航班号read();/调用读取函数break;/跳出循环case 2:cout<<"请输入起始站名称:";cin>>name1;/读取起始站cout<<"请输入终点站名称:"cin>>name2

30、;/读取终点站read();/调用读取函数break;/跳出循环for(i=0;i<m;i+)(if(si.num=no|strcmp(si.start,name1)=0&&strcmp(si.arrive,name2)=0)/ 判断输 入信息是否存在(si=sm-1;m-;cout<<"没有该信息,是否继续删除(y/n):"cin>>ii;/读取是否继续信息save(); 调用读取函数if(!strcmp(ii,"y") /判断是否继续删除cout<<"请按任意键返回删除菜单!;bre

31、ak;while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); 判断结束elsecout<<"密码错误,不能使用此项功能,强行退出!nn"/void plane:book()/ 订票函数(customer abc;int n;char a12;do(cout<<"各位用户你好!请你先选择您要乘的航班"<<endl;search();abc.save1();abc.read1();y=y+i;cout<<"欢迎进入订票系

32、统!"<<endl;cout<<"请输入你的ID号:"cin>>yhy.id;cout<<"请输入你的姓名:;cin>> ;cout<<"请输入您要订的机票数:;fai: cin>>n;/读取所订机票数if(n<=0)goto fai;yhy.pshu=n;si.plane_num=si.plane_num-n;abc.save1();save();/调用保存函数cout<<"订票成功!nn"break;co

33、ut<<"是否继续(y/n)?;/判断是否继续订票cin>>a;while(!strcmp(a,y);/ 判断结束/void plane:back()/ 退票函数(customer abc;int n;char a12;do(cout<<"各位用户你好!请你先选择您要退的航班"<<endl;search();cout<<"请输入你的ID号:"<<endl;cin>>abc.id; cout<<"请输入你的姓名:"<<e

34、ndl; cin>> ; cout<<"请输入您要退的机票数目:"<<endl;cin>>n;/输入所退票数 if(n<0) /判断票数是否有效 ( cout<<"请输入有效的机票数!"<<endl;cin>>n; abc.read1(); for(i=0;i<y;i+) ( if(yhi.id=abc.id)=0&&strcmp(,)=0)/ 按终点站起 始站判断输出条件 ( cout<&

35、lt;"该顾客存在!"<<endl; cout<<"身份证号姓名订票数"<<endl;cout<<yhi.id<<setw(8)<<<<setw(8)<<yhi.pshu<<endl;/打印信息break; for(;i<y;i+) ( yhi.id=yhi+1.id; strcpy(,yhi+1.name); yhi.pshu=yhi+1.pshu; abc.save1(); si.plane_num=si.

36、plane_num+n; save(); 调用保存 cout<<"退票成功!nn; cout<<"是否继续(y/n)?"/判断是否继续退票 cin>>a; while(!strcmp(a,"y");/ 判断并跳出循环 getchar(); /void plane:xiugai()修改信息函数( class xiu/定义一个类( public:int no;char name112;char name212;char time12;int plane_num;x1;char j10;char f="x

37、inxi701"/ 设置密码int n;cout<<"请输入密码:;cin>>f;/读取密码if(strcmp(f,"xinxi0701")=0)/判断是否出错read();/调用读取docout<< "欢迎进入修改系统"<<endl;cout<< "*1,按航班号修改"<<endl;cout<< "*2,按航线修改"<<endl;cout<<"请选择(12);cin>&g

38、t;n;/读取修改方式switch(n)case 1:cout<<"请输入航班号:"cin>>x0.no;/读取航班号break;case 2:cout<<"请输入起始站:"cin>>1;/ 读取起始站cout<<"请输入终点站:"cin>>2;/ 读取终点站break;for(i=0;i<m;i+)if(strcmp(si.arrive,1)=0&&strcmp(si.arrive,2)=0)/判断输出条件cout<<"航班号 起始站 终点站 时间 机票数n;cout<<PRINT;break;if(si.num=x0.no)/ 判断输出条件cout<<"航班号起始站终点站 时间机票数n"cout<<PRINT;break;x0.no=0;将结构体中的号为零cout<<"请输入新航班号起始站 终点站 时间 机票数<<endl;cin>>x0.no>>1>>x0.n

温馨提示

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

评论

0/150

提交评论