(完整word版)航空公司订票系统_第1页
(完整word版)航空公司订票系统_第2页
(完整word版)航空公司订票系统_第3页
(完整word版)航空公司订票系统_第4页
(完整word版)航空公司订票系统_第5页
免费预览已结束,剩余19页可下载查看

下载本文档

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

文档简介

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

2、类,包括对航班信息和乘客订票信息的录入及修改的函数, 其中订票信息采用单链表的顺序存储方式存储。另外还包括对信息的查询和修改的功能函数,乘客退票的函数。并将最终的改动结果通过i/O 流写入磁盘文件保存。3 编写主函数,对编写的航班系统进行全面测试,对用户界面采用人性化的菜单方式。【类的设计】定义一个航班的类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浓元类protected:I nt id;身份证号char name10;/校生名int customer_num;/订票数量public:void read1();/读取数据

4、void save1();/保存数据;【存储结构设计】 采用顺序存储结构,利用动态申请空间实现信息的存储。【模块划分及调用关系】定义了两个类 class plane和class customer,分别实现顾客及航班的信 息操作。在两个类的后面分别定义了类中的各个函数。另外在主函数中分别 调用函数,实现各个功能。【模块流程图】1.主函数main()2. void search()处询函数3. void book()/订票函数4. void back()/退票函数【界面设计】cout«" cout«" cout«" cout«&

5、quot; cout«" cout«" cout«" cout«" cout«" cout«" cout«"一一入霞-修 - -12 3HpnHpnHF 拿岷册哪 """ 4 .查找航班5 .删里抗 “订妻7 .退票I I I I I I进入航班管理系统菜单"«endl;|"«endl;"«endl;"«endl;"«endl;

6、"«endl;"«endl;"«endl;"«endl;"«endl;"«endl;采用人性化的菜单提示语,让用户很容易的操作;【用户手册】用户只需要在VC环境下就可以操作,具体步骤可见菜单提示就可以 顺利操作。另外,再加入、删除、修改航班信息时必须以管理员的身份进去, 所以必须要有密码,在这里初始密码事:xinxi0701.谢谢您的使用! !1、程序上机调试报告【语法错误及其排除】两个类的公有函数中,在循环嵌套调用时总是受阻,不能执行。所以我 把两个类都定义为相互的有元类。

7、这样问题就解决了。【算法错误及其排除】在订票与退票函数中,要核对用户信息如姓名、ID等,开始是自己定义 一个函数进行字符间的比较,在调用时总是出现语法错误,最后想到可以用 一个函数库中的函数 strcmp(char,char)把问题简单化,而且语法错误也解决2、程序测试结果【测试数据】说明:测试数据都是输入数据,见输出结果【输出结果】:xinxi701欢迎进入航空订票菜单-三_5思=二一二nLL - I 二二.三 . 一 一 一 1. F11II * 一 二 1.-fHTWxi; e?l»lT<lv-HIix 一 TJJ TJJ TJJ TJJ-找怪翟田 费修查删订退退1234

8、5670青选择二胃输入密码二乂讪翼i7附1四女 上那8: 00-12眨个信息已经输入,是否继续00-15帚3个信息已经输入,是否继续。小?n终点站 时“ 北运 5: 90-8 上修 8: 00-12 香港 91 00-15盘的信息是:起始站600132西爱 西安 西安自邕自5 信信信 =Iff Trf =到习9号歹 -2?找喀£缶 一一翦修查删订退退=12345670请选择0":4欢迎进入查询菜单1 .按航班号查找2 .按终点站查找3 .按航线查找0.返回请选择请输入颔班号:10。查找加班信息成功?航班弯 起菇站西安终点站时间北京 5: 30-8: 30机票数120管理员密

9、码:xinxi0701欢迎进入航空订票菜单翦修查删订退退 12345670请选择(0 A): 5请输入密码:xinx i0?01欢迎进入删除菜单按航班号删除 稼2 .按航线删除*0.返回直擦择(924接黔瞿号避继续删除 y/n): n管理员密码:xinxi0701欢迎进入航空订票菜单时间机票数5: 30-8: 309: 00-15: 00旷7:2息息息 旨旨归f f f t f一一 找喽w击_ ,修查删订退退一 二 12345670 =起始站 西安 西安终点站120200管理 贝密码:xinxi0?01息息息 信但信 =fIfff =3现习-一一 我玲3田 一一翦修查删订退退 = =12345

10、670青选择0*):6座用户蝴鹏铲乘的鹿工.按航班号查找2 .按终点站查找3 .按航线查找"返回 选择(OF八1 输入杭班号一找勤班信息成功, 起防站192西安空点站 时间香港 9; 00-15 00机票数200欢迎进入订罢系统, 输入你的1D寻姓名享原日 订的机票数;2管理员密码:xinxi0701 欢迎进入航空订票菜单-翦售一册订退退 i i 123456704D一自心自3 信信信 1. 1. 1.LL j - L 一 一一 Lr-沆班等 起始站 终虚站 时间 机票数L00西安比壶 5; 30-8 : 3目119L82西安善港 9: 00-15: 00198比 JtiHMiJtJ

11、CJIKHMJCMItJCXMMKJOINMiMMXHMIMMXKJCXNMKJOtXmKMK【程序性能评价】该程序可以查询航班的信息、修改信息,查询顾客的信息,订票、退票 等,界面采用人性化的提示,可以让用户很容易的操作。另外在修改信息、 添加航班信息时必须要以管理员的身份进入即必须要有密码才能进入。保证 了系统的安全。【性能改进方向】该系统在操作中要是不按照菜单的有关提示操作,而进行非法操作,可 能会导致系统的死循环。在这点该系统还有待改进。【收获及体会】事实总比想象的难,刚开始编写这个程序的时候思路比较清晰。可是编写 的时候遇到了很多难题,譬如将顾客的信息及航班的信息保存到文件中, 不知

12、道 用那种方式更简便,最后仔细思考,阅读课本资料,选择了用流的形式输出到文 件中,感觉用起来特别方便简洁。完成了程序的编写后又对该程序进行了大量的 修改,调试,使程序更加简明,并添加了不少提示用户操作的语句,使用户使用 该系统时更加方便。对自己的这个程序还是比较满意的, 可以说已经超出了自己 当初的设想。从编写这个程序的过程中不但发现了许多自己没学明白的地方,而且锻炼了自己的耐心。刚调试时有很多错误,我逐个仔细的修改、排除,最终成功的完成了调试。进过这次实习,我更加深刻的体会到,作任何事情要仔细,要 静下心来认真思考,只要努力了,必定会有回报。3、源程序代码#include<iostre

13、am.h>#include<string.h>#include<stdio.h>#include<iomanip.h>#include<stdlib.h>#define N 1000 /宏定义class customer;申明顾客信息类/ 定义航班信息类class planefriend class customer;有元类public:void insert();/加入航班信息void print();/输出航班信息void save();/保存航班信息void read();/读取航班信息void search();/查找航班信息voi

14、d Delete();/删除航班信息void book(); / 订票void back();/退票void xiugai(); /修改航班信息private:int num;/ 航班号char start10;/ 起点站char arrive10;/ 终点站char time20;/ 起降时间int plane_num;/ 机票数量sN;/ 定义顾客信息类class customerfriend class plane;有元类protected:int id;/ 身份证号char name20; 姓名int pshu;用户订票数量 public:void read1();/读取数据void

15、save 1(); 保存数据yhN;int ij;/全局变量int m=0,y=0;宏定义一个输出#definePRINTsi.num«setw(13)«si.start«setw(13)«si.arrive«setw(13)«si.time«setw(13)«si.plane_num«endl定义输出格式/主函数void main()(plane abc;定义一个航班类的对象intj;docout«"管理员密码:xinxi0701"«endl;cout«

16、""«endl;cout«"欢迎进入航空订票菜单 "«endl; /主界面cout«"|=|"«endl;cout«"|1 .新增航班|"«endl;cout«"|2.浏览航班信息|"«endl;cout«"|3.修改航班信息|"«endl;cout«"|4.查找航班信息|"«endl;cout«"|5.删除

17、航班|"«endl;cout«"|6.订票|"«endl;cout«"|7.退票|"«endl;cout«"|0.退出|"«endl;cout«" |=|"«endl;cout«"请选择(07):"cin»j;switch(j)(case 1 :abc. insert。,调用插入函数break;case 2:abc.print();/ 调用打印函数 break;case 3:a

18、bc.xiugai(); 调用修改函数 break;case 4:abc.search();/倜用查找函数 break;case 5:abc.Delete(); 调用删除函数 break;case 6:abc.book();调用订票函数break;case 7:abc.back();/调用退票函数break;case 0:;break;while(j!=0);/判断结束cout<<" 谢谢使用,再见!n"/ 主函数结束/定义类中各个函数void plane:insert()/ 打印函数char f="xinxi701"/设置密码char y;

19、cout<<" 请输入密码:"cin>>f;/读取密码if(strcmp(f,"xinxi0701")=0) cout<<"n"for(i=0;i<N;i+) cout<<" 航班号出发地点到达地点起降时间满载人数"<<endl;cout<<"|"<<endl;cin>>si.num>>si.start>>si.arrive>>si.time>>s

20、i.plane_num;cout<<"|"<<endl;m+;cout<<" 第 "<<m<<" 个信息已经输入,是否继续(y/n)?"cin>>y;cout<<endl;if(y='y')continue;elsesave();/将结构体信息存盘cout<<"刚刚存盘的信息是:"<<endl;print();/输出输入的航班信息 break;elsecout<<" 密码

21、错误,您不能使用此项功能,强制推出!"<<endl; void plane:save()保存函数FILE *fp,*fp1;/ 定义文件指针if(fp=fopen("chen.txt","wb")=NULL)/ 打开文件并判断是否出错 cout<<"创建文彳失败!"<<endl;/出错提示getchar();return;if(fp1=fopen("hao.txt","wb")=NULL)/ 打开文件并判断是否出错cout<<"

22、创建文彳失败!"<<endl;/出错提示getchar();return;for(i=0;i<m;i+)if(fwrite(&si,sizeof(class plane),1,fp)=0)/ 向文件写入数据,并判断是否出错cout<<" 向文件输入数据失败!"<<endl;fprintf(fp1,"%d",m);fclose(fp);/ 关闭文件fclose(fp1);/ 关闭文件/void plane:read()从文件读取信息FILE *fp,*fp1;/ 定义文件指针if(fp=fopen

23、("chen.txt","rb")=NULL)/ 打开文件,并判断是否出错cout<<" 出现错误,请检查文件是否存在!"/出错提示getchar();if(fp1=fopen("hao.txt","rb")=NULL)/ 打开文件并判断是否出错cout<<" 创建文件失败!nn"/ 出错提示getchar();return;fscanf(fp1,"%d",&m);fclose(fp1);/ 关闭文件for(i=0;i<

24、;m;i+)fread(&si,sizeof(plane),1,fp);/ 从文件中读取信息fclose(fp);/ 关闭文件/void plane:print()/ 输出函数char w10;read();/调用读取文件函数机票数 n"cout<<" 航班号起始站终点站时间for(i=0;i<m;i+)cout<<PRINT;/ 打印信息cout<<"*"<<endl;cout<<"/ 请按任意键返回主菜单/"<<endl;cin>>w

25、;/ 控制返回主菜单/void plane:search()查询函数char name110;char name212;char ii10;int n,no;docout<<"欢迎进入查询菜单"<<endl;/ 查询方式菜单cout<<""<<endl;cout<<" 1.按航班号查找nn""2.按终点站查找nn""3.按航线查找nn""0.返回"<<endl;cout<<" 请选择

26、 (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>>name1;/读取起始站cout<<" 请输入终点站名称:n"cin>>name2;/ 终点站br

27、eak;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;/ 打印信息break;if(si.num=no)/ 按航班号判断输出条件cout<<"n 查找航班信息成功!n"cou

28、t<<" 航班号起始站终点站时间机票数 "<<endl;cout<<PRINT;/ 打印信息break;no=0;/将航班号赋值为0if(i>m)cout<<" 该航班不存在,是否继续查找(y/n)?"cin>>ii;while(strcmp(ii,"y")=0);/ 判断结束/void plane:Delete()/ 删除函数char name110;char name212;char ii12;char f="xinxi701"/ 设置密码int

29、 no,n;cout<<" 请输入密码:"cin>>f;/ 读取密码if(strcmp(f,"xinxi0701")=0)/判断密码是否正确do欢迎进入删除菜单"<<endl;删除方式菜单cout<<"cout<<""<<endl;cout<<" *1. 按航班号删除nn"" *2.按航线删除nn"" *0. 返回 "<<endl;cout<<”请选

30、择(02)”;cin>>n;/读取删除方式if(n=0)break;/跳出循环switch(n)case 1:cout<<" 请输入航班号:"cin>>no;/ 读取航班号read();调用读取函数break;跳出循环case 2:cout<<" 请输入起始站名称:"cin>>name1;/读取起始站cout<<" 请输入终点站名称:"cin>>name2;/读取终点站read();调用读取函数break;跳出循环for(i=0;i<m;i+)判

31、断输if(si.num=no|strcmp(si.start,name1)=0&&strcmp(si.arrive,name2)=入信息是否存在si=sm-1;m-;cout<<" 没有该信息,是否继续删除(y/n):"cin>>ii;/读取是否继续信息save(); /调用读取函数if(!strcmp(ii,"y") / 判断是否继续删除cout<<" 请按任意键返回删除菜单! "break;while(n!=1&&n!=2&&n!=3&&a

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

33、;;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;cout<<"是否继续(y/n)?"/判断是否继

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

35、name ;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<<" 该顾客存在!"<&

36、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.plane_num+n;save(); /调用保存cout<

37、;<" 退票成功!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="xinxi701"/ 设置密码int n;cout<&

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

39、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>>x0.

温馨提示

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

评论

0/150

提交评论