欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构课程设计-航空订票系统(C++).doc

    • 资源ID:4524626       资源大小:707.58KB        全文页数:18页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构课程设计-航空订票系统(C++).doc

    上海电力学院数据结构C+课程设计题目: 航空客运订票系统 学生姓名: 范晓宁 学 号: 20103285 院系: 计算机与信息工程学院 专业年级: 信息安全2010级 2012 年6月 29日一、设计题目 航空客运订票的业务活动包括;查询航线、客票预订和办理退票等。试设计一个航空客 运订票系统,以使上述业务可以借助计算机来完成。 【基本要求】 (1)每条航线所涉及的信息有:终点站名、航班名、飞机号、飞行周日(星期几)、乘员定 额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级1,2 或3)以及等候替补 的客户名单(包括姓名、所需票量); (2)作为示意系统,全部数据可以只放在内存中; (3)系统能实现的操作和功能如下: 查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行, 最近一天航班的日期和余票额; 承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若 尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则 需重新询问客户要求。若需要,可登记排队候补; 承办退票业务:根据客户提供的情况(日期、航班),为客户办理退票手续,然后查 询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足客户的要 求,则为客户办理订票手续,否则依次询问其他排队候补的客户。二、需求分析1)运行环境(软、硬件环境) Winxp 32位 visual C+6.02)输入的形式和输入值的范围 由航空公司输入航线情况并以单链表的形式存储在内存里面3)输出的形式描述 通过客户的输入输出相应的内容4)功能描述 用户通过本系统实现该航空公司的查询、订票(包括候补)、和退票功能5)测试数据 终点站 航班 飞机号 飞行日期 成员定额 余票量 zhengzhouIphone4s1Sunday33beijingNokia2Tuesday22tianjinASUS3Friday44三、概要设计1)抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述,参见书或ppt及实验) 一条航线包括了终点站、航班名、飞机号、飞行周日、成员定额、余票量、订票人员、候补人员等信息,我们可以将航线看成一类,定义为一个类,而订票人员通用的属性是:姓名、订票张数和舱位等级,候补人员通用属性是姓名和订票张数,可以将订票人员和候补人员定义为结构体,航线定义为一个类,类包括了两个结构体。具体定义如下:class transportNode/航线类节点friend class transport;private:char finish10;/目的地char flightname10;/航班名int flightnum;/航班号int day;/飞行日期int limitednum;/乘员限额int remainber;/余票struct booknodepublic:char name10;/乘客姓名int ticketnum;/票数int rate;/舱位等级b40;struct sparenodepublic:char name10;/乘客姓名int ticketnum;/票数 int m;/记录排队等候的顾客的数量s40;transportNode *next;2) 功能模块设计(如主程序模块设计) 主程序中录入航线的信息,然后进入主菜单,再实现其他的功能,类transport 中包括了除去主菜单以外的所有的功能函数class transportpublic:transport();/无參构造函数构造头节点void recort();/记录航班信息void chest();/实现根据输入的目的地查询的功能void book();/实现旅客的订票功能void bounce();/实现退票功能private:transportNode *head;int menu();/进入主菜单3)模块层次调用关系图 函数入口,录入航班信息进入主菜单选择1234 1 2 3 4 没有查到订票退票查询 查到 输出 输出回主菜单 退出回主菜单 退出四、详细设计实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算法。类和它的私有成员以及成员函数class transportNode/航线类节点friend class transport;private:char finish10;/目的地char flightname10;/航班名int flightnum;/航班号int day;/飞行日期int limitednum;/乘员限额int remainber;/余票struct booknodepublic:char name10;/乘客姓名int ticketnum;/票数int rate;/舱位等级b40;struct sparenodepublic:char name10;/乘客姓名int ticketnum;/票数 int m;/记录排队等候的顾客的数量s40;transportNode *next;举出订票的成员函数实现:void transport:book()/订票系统transport y;transportNode p;static int i=0;/静态变量存储上次订票信息static int j=0;/静态变量存储上次排队信息static int k=1; p.sj.m=0;int m=0;/计数器,据此判断是否有符合目的地的票char c;transportNode *pre;pre=head->next;char f10;cout<<"*欢迎进入订票系统*"<<endl;cout<<"请输入您的姓名:"cin>>p.bi.name;cout<<"请输入您的票数:"cin>>p.bi.ticketnum;cout<<"请输入您的舱位等级:"cin>>p.bi.rate;cout<<"请输入您要订的航班号:"cin>>f;while (pre)if(strcmp(f,pre->flightname)=0&&pre->remainber>=p.bi.ticketnum)cout<<"恭喜!订票成功!"<<endl<<"座位号是:"for(int z=0;z<p.bi.ticketnum;z+)cout<<k+<<""cout<<endl;pre->remainber=pre->remainber-p.bi.ticketnum;i+;m+;cout<<"回主菜单请按0,按任意键退出!"cin>>c;if (c=0)return;else exit(0);if (pre->remainber<p.bi.ticketnum)cout<<"对不起!余票不足!"<<endl<<"您要加入排序吗?(Y/N):"cin>>c;if (c=Y)cout<<"请输入您的名字:"cin>>p.sj.name;cout<<"请输入您需要的票数:"cin>>p.sj.ticketnum;cout<<"排队成功!如果有人退票,我们会尽快通知您!"<<endl;j+;p.sj.m+;cout<<"回主菜单请按0,按任意键退出!"cin>>c;if(c=0)return;else exit(0);elsepre=pre->next;if (pre=NULL)cout<<"抱歉!没有对应的航班号o()o "cout<<"回主菜单请按0,按任意键退出!"cin>>c;if(c=0)return;else exit(0);五、调试分析包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会。1、 调试过程中出现了很多错误,刚开始的时候,我将订票人员看作一个类、将候补人员看作一个类,将航线看作一个大类。而我将两个小类放进了大类中,想让小类当作大类的成员。 class transportNode/航线类节点 这是一个类friend class transport;private:char finish10;/目的地char flightname10;/航班名int flightnum;/航班号int day;/飞行日期int limitednum;/乘员限额int remainber;/余票class booknode 这里还有一个public:char name10;/乘客姓名int ticketnum;/票数int rate;/舱位等级;class sparenode 这里也有一个public:char name10;/乘客姓名int ticketnum;/票数 int m;/记录排队等候的顾客的数量;transportNode *next;但是总是不能成功,非常郁闷。于是我问了问老师,老师告诉我类是不能嵌套的!当时我就晕了,原来不能嵌套啊,于是我将里面的小类改成了结构体,这样,很多问题就迎刃而解了 class transportNode/航线类节点friend class transport;private:char finish10;/目的地char flightname10;/航班名int flightnum;/航班号int day;/飞行日期int limitednum;/乘员限额int remainber;/余票struct booknodepublic:char name10;/乘客姓名int ticketnum;/票数int rate;/舱位等级b40;struct sparenodepublic:char name10;/乘客姓名int ticketnum;/票数 int m;/记录排队等候的顾客的数量s40;transportNode *next; 2、在编程的时候很容易忽略一些边界条件,导致漏洞很多,比如设计主菜单的时候有1、2、3、4等选项,但是如果用户选择了其他的就会出现 陷入死循环,我将主菜单的代码改成了: int menu() int c; cout<<" *欢迎进入主菜单*"<<endl<<endl; cout<<" *通过目的地查询请按 1 *"<<endl; cout<<" *订票请按 2 *"<<endl; cout<<" *退票请按 3 *"<<endl; cout<<" * 退出请按其他键 *"<<endl; cout<<" -"<<endl; cout<<"请输入您的选择:" cin>>c; return c; 这样就不会再陷入死循环了! 时间复杂度的话,由于程序源代码中没有多重循环,所以时间复杂度都很小。总之,调试过程中还是遇到了不少问题,不过都在同学和自己的努力中解决了。六 用户使用说明详细列出每一步的操作说明。1、 录入航班信息(应该是航空公司录入的,添加到数据库中) 2、实现查询功能: 是客户的查询 3、订票(余票充足) 4、订票(余票不足) 5、余票不足排队 6、退票 7、 退出系统 七、 测试结果 八、附录:程序设计源代码#include <iostream.h>#include <string.h>#include <STDLIB.H>class transport;int menu();class transportNode/航线类节点friend class transport;private:char finish10;/目的地char flightname10;/航班名int flightnum;/航班号int day;/飞行日期int limitednum;/乘员限额int remainber;/余票struct booknodepublic:char name10;/乘客姓名int ticketnum;/票数int rate;/舱位等级b40;struct sparenodepublic:char name10;/乘客姓名int ticketnum;/票数 int m;/记录排队等候的顾客的数量s40;transportNode *next;class transportpublic:transport();/无參构造函数构造头节点void recort();/记录航班信息void chest();/实现根据输入的目的地查询的功能void book();/实现旅客的订票功能void bounce();/实现退票功能private:transportNode *head;transport:transport()head=new transportNode;head->next=NULL;void transport:chest()/实现查询功能char a10;/输入的地址int m=0;/计数器,判断是否有符合条件的航班char q;cout<<"请输入要查询的目的地:"cin>>a;transportNode *pre;pre=head->next;while (pre)if(strcmp(a,pre->finish)=0)m+;cout<<"恭喜!查到了,航班信息如下:"<<endl;cout<<"航班名:"<<pre->flightname<<endl;cout<<"航班号:"<<pre->flightnum<<endl;cout<<"飞行时间:"<<pre->day<<endl;cout<<"余票:"<<pre->limitednum<<endl;pre=pre->next;if (!m)cout<<"抱歉!没有对应的航班!"<<endl;cout<<"返回主菜单请按0,按其他键退出:"<<endl;cin>>q;if (q=0)return;else exit(0);elsecout<<"回主菜单请按0,按任意键退出!" cin>>q; if(q=0) return;void transport:book()/订票系统transport y;transportNode p;static int i=0;/静态变量存储上次订票信息static int j=0;/静态变量存储上次排队信息static int k=1; p.sj.m=0;int m=0;/计数器,据此判断是否有符合目的地的票char c;transportNode *pre;pre=head->next;char f10;cout<<"*欢迎进入订票系统*"<<endl;cout<<"请输入您的姓名:"cin>>p.bi.name;cout<<"请输入您的票数:"cin>>p.bi.ticketnum;cout<<"请输入您的舱位等级:"cin>>p.bi.rate;cout<<"请输入您要订的航班号:"cin>>f;while (pre)if(strcmp(f,pre->flightname)=0&&pre->remainber>=p.bi.ticketnum)cout<<"恭喜!订票成功!"<<endl<<"座位号是:"for(int z=0;z<p.bi.ticketnum;z+)cout<<k+<<""cout<<endl;pre->remainber=pre->remainber-p.bi.ticketnum;i+;m+;cout<<"回主菜单请按0,按任意键退出!"cin>>c;if (c=0)return;else exit(0);if (pre->remainber<p.bi.ticketnum)cout<<"对不起!余票不足!"<<endl<<"您要加入排序吗?(Y/N):"cin>>c;if (c=Y)cout<<"请输入您的名字:"cin>>p.sj.name;cout<<"请输入您需要的票数:"cin>>p.sj.ticketnum;cout<<"排队成功!如果有人退票,我们会尽快通知您!"<<endl;j+;p.sj.m+;cout<<"回主菜单请按0,按任意键退出!"cin>>c;if(c=0)return;else exit(0);elsepre=pre->next;if (pre=NULL)cout<<"抱歉!没有对应的航班号o()o "cout<<"回主菜单请按0,按任意键退出!"cin>>c;if(c=0)return;else exit(0);void transport:bounce()/退票实现函数transport a;transportNode b;char c;int i=0;int x;cout<<"欢迎进入退票系统!"cout<<"请输入您要退票的目的地:"cin>>b.finish;cout<<"请输入您的飞行日期:"cin>>b.day;cout<<"请输入您的退票张数:"cin>>x;while (x>=b.si.ticketnum&&i<b.si.m)cout<<"所退票数满足候补客户需求"x-=b.si.ticketnum;i+;if (i=b.si.m)b.remainber-=x;cout<<"退票成功,希望我们的服务能让您满意,期待下次为您服务!"<<endl;cout<<"回主菜单请按0,按任意键退出!"cin>>c;if(c=0)return;void transport:recort()transportNode *t; transport();t=new transportNode;cout<<"请输入航线终点:"cin>>t->finish;cout<<"请输入航班号:"cin>>t->flightname;cout<<"请输入飞机号:"cin>>t->flightnum;cout<<"请输入飞行日期:"cin>>t->day;cout<<"请输入乘客限额:"cin>>t->limitednum;t->remainber=t->limitednum;t->next=head->next;head->next=t;int menu()int c; cout<<" *欢迎进入主菜单*"<<endl<<endl;cout<<" *通过目的地查询请按 1 *"<<endl;cout<<" *订票请按 2 *"<<endl;cout<<" *退票请按 3 *"<<endl;cout<<" * 退出请按其他键 *"<<endl;cout<<" -"<<endl;cout<<"请输入您的选择:"cin>>c;return c;void main()transport a;cout<<" *录入航班信息*"<<endl;for (int i=0;i<3;i+)cout<<"第"<<i+1<<"个航班的信息:"<<endl;a.recort();for(;)switch(menu()case 1:a.chest();break;case 2:a.book();break;case 3:a.bounce();break;default:cout<<"谢谢光临!( _ )/拜拜" exit(0);

    注意事项

    本文(数据结构课程设计-航空订票系统(C++).doc)为本站会员(陆**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开