1、 信息安全2010级2012 年 6 月 29 日一、 设计题目航空客运订票的业务活动包括; 查询航线、客票预订和办理退票等。 试设计一个航空客 运订票 系统,以使上述业务可以借助计算机来完成。【基本要求】(1) 每条航线所涉及的信息有:终点站名、航班名、飞机号、飞行周日(星期几) 、乘员定额、余票量、已订票的客户名单(包括姓名、订票量、舱位等级 1, 2或3)以及等候替补的客户名单(包括姓名、所需票量);(2) 作为示意系统,全部数据可以只放在内存中;(3) 系统能实现的操作和功能如下:1查询航线:根据旅客提出的终点站名输出下列信息:航班号、飞机号、星期几飞行,最近一天航班的日期和余票额;2
2、承办订票业务:根据客户提出的要求(航班号、订票数额)查询该航班票额情况,若尚有余票,则为客户办理订票手续,输出座位号;若已满员或余票额少于订票额,则需重新询问客户要求。若需要,可登记排队候补;3承办退票业务:根据客户提供的情况(日期、航班) ,为客户办理退票手续,然后查询该航班是否有人排队候补,首先询问排在第一的客户,若所退票额能满足客户的要求,则为客户办理订票手续,否则依次询问其他排队候补的客户。二、 需求分析1) 运行环境(软、硬件环境)Winxp 32 位 visual C+6.02) 输入的形式和输入值的范围由航空公司输入航线情况并以单链表的形式存储在内存里面3) 输出的形式描述通过客
3、户的输入输出相应的内容4) 功能描述用户通过本系统实现该航空公司的查询、订票(包括候补)、和退票功能5) 测试数据终点站航班飞机号飞行日期成员定额余票量zhengzhouIphone4s1Sunday3beijingNokia2TuesdaytianjinASUSFriday4二、概要设计1)抽象数据类型定义描述(对各类的成员及成员函数进行抽象描述,参见书或 ppt及实验)一条航线包括了终点站、航班名、飞机号、飞行周日、成员定额、余票量、订票人员、候补人员等信息,我们可以将航线看成一类,定义为一个类,而订票人员通用的届性是:姓名、订票张数和舱位等级,候补人员通用届性是姓名和订票张数, 可以将订
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 spar
5、enodeint m;/记录排队等候的顾客的数量s40;transportNode *next;2)功能模块设计(如主程序模块设计)主程序中录入航线的信息,然后进入主菜单,再实现其他的功能,类 transport中包括了除去主菜单以外的所有的功能函数class transporttransport。;/无参构造函数构造头节点void recort();/记录航班信息void chest();/实现根据输入的目的地查询的功能void book();/实现旅客的订票功能void bounce();/实现退票功能transportNode *head;;int menu();/进入主菜单四、详细设计
6、实现概要设计中定义的所有的类的定义及类中成员函数,并对主要的模块写出伪码算 法。类和它的私有成员以及成员函数char name10;int ticketnum;举出订票的成员函数实现: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 f
7、10;coutp.bi.name;请输入您的票数:p.bi.ticketnum;请输入您的舱位等级:p.bi.rate;请输入您要订的航班号:f;while (pre)if(strcmp(f,pre-flightname)=0&pre-remainber=p.bi.ticketnum)恭喜!订票成功!endl座位号是:for(int z=0;zp.bi.ticketnum;z+)k+remainber-p.bi.ticketnum;i+;m+;回主菜单请按0,按任意键退出!c;if (c=0)return;else exit(0);if (pre-remainberif (pre=NULL)抱
8、歉!没有对应的航班号 o( )o 五、调试分析包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会。1、调试过程中出现了很多错误,冈卅始的时候,我将订票人员看作一个类、将候补人员看作一个类,将航线看作一个大类。而我将两个小类放进了大类中,想让小类当作大类的 成员。class transportNode/航线类节点 这是一个类char flightname10;class booknode 这里还有一个;class sparenode 这里也有一个但是总是不能成功,非常郁闷。丁是我问了问老师,老师告诉我类是不能嵌套的 !当时我就晕了,原来不能嵌套啊,丁是我将里面的小类改成了结构体,这样,很多问题就迎刃而解了friend class transport;char finish10;int day;int limitednum;int remainber;/记录排队等候的顾客的数量 s40;2、在编程的时候很容易忽略一些边界条件,导致漏洞很多,比如设计主菜单的时候有 1、2、3、4等选项,但是如果用户选择了其他
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1