好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

14页
  • 卖家[上传人]:l****i
  • 文档编号:241923285
  • 上传时间:2022-01-18
  • 文档格式:DOC
  • 文档大小:50.50KB
  • / 14 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 可编辑版上海电力学院数据结构C++课程设计题  目: 航空客运订票系统 学生姓名: 范晓宁 学 号: 20103285 院  系:  计算机与信息工程学院 专业年级:  信息安全2010级 2012  年 6 月  29 日14 / 14一、设计题目 航空客运订票的业务活动包括;查询航线、客票预订和办理退票等试设计一个航空客 运订票系统,以使上述业务可以借助计算机来完成 [基本要求] 〔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 finish[10];//目的地 char flightname[10];//航班名 int flightnum;//航班号 int day;//飞行日期 int limitednum;//乘员限额 int remainber;//余票 struct booknode { public: char name[10];//乘客姓名 int ticketnum;//票数 int rate;//舱位等级 }b[40]; struct sparenode { public: char name[10];//乘客姓名 int ticketnum;//票数 int m;//记录排队等候的顾客的数量 }s[40]; transportNode *next;}2) 功能模块设计〔如主程序模块设计 主程序中录入航线的信息,然后进入主菜单,再实现其他的功能,类transport 中包括了除去主菜单以外的所有的功能函数class transport{public: 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 finish[10];//目的地 char flightname[10];//航班名 int flightnum;//航班号 int day;//飞行日期 int limitednum;//乘员限额 int remainber;//余票 struct booknode { public: char name[10];//乘客姓名 int ticketnum;//票数 int rate;//舱位等级 }b[40]; struct sparenode { public: char name[10];//乘客姓名 int ticketnum;//票数 int m;//记录排队等候的顾客的数量 }s[40]; transportNode *next;};举出订票的成员函数实现:void transport::book<>//订票系统{ transport y; transportNode p; static int i=0;//静态变量存储上次订票信息 static int j=0;//静态变量存储上次排队信息 static int k=1; p.s[j].m=0; int m=0;//计数器,据此判断是否有符合目的地的票 char c; transportNode *pre; pre=head->next; char f[10]; cout<<" ********欢迎进入订票系统*******"<>p.b[i].name; cout<<"请输入您的票数:"; cin>>p.b[i].ticketnum; cout<<"请输入您的舱位等级:"; cin>>p.b[i].rate; cout<<"请输入您要订的航班号:"; cin>>f; while

      	{		ifflightname>==0&&pre->remainber>=p.b[i].ticketnum>		{			cout<<"恭喜!订票成功!"<			cout<remainber=pre->remainber-p.b[i].ticketnum;		i++;		m++;		cout<<"回主菜单请按0,按任意键退出!";		cin>>c;		if 			return;		else exit<0>;		}		if remainber		{			cout<<"对不起!余票不足!"<:";			cin>>c;			if 			{				cout<<"请输入您的名字:";				cin>>p.s[j].name;				cout<<"请输入您需要的票数:";				cin>>p.s[j].ticketnum;				cout<<"排队成功!如果有人退票,我们会尽快通知您!"<>c;			if				return;			else exit<0>;		}		else			pre=pre->next;	}	if 	{		cout<<"抱歉!没有对应的航班号o<︶︿︶>o ";		cout<<"回主菜单请按0,按任意键退出!";		cin>>c;		if			return;		else exit<0>;	}}五、调试分析包括调试过程中遇到的问题及解决的方法、算法的时间空间复杂性分析、经验体会。

      1、 调试过程中出现了很多错误,刚开始的时候,我将订票人员看作一个类、将候补人员看作一个类,将航线看作一个大类而我将两个小类放进了大类中,想让小类当作大类的成员class transportNode//航线类节点这是一个类{ friend class transport;private: char finish[10];//目的地 char flightname[10];//航班名 int flightnum;//航班号 int day;//飞行日期 int limitednum;//乘员限额 int remainber;//余票class booknode 这里还有一个 { public: char name[10];//乘客姓名 int ticketnum;//票数 int rate;//舱位等级 };class sparenode 这里也有一个 { public: char name[10];//乘客姓名 int ticketnum;//票数 int m;//记录排队等候的顾客的数量 }; transportNode *next;};但是总是不能成功,非常郁闷于是我问了问老师,老师告诉我类是不能嵌套的!当时我就晕了,原来不能嵌套啊,于是我将里面的小类改成了结构体,这样,很多问题就迎刃而解了class transportNode//航线类节点{ friend class transport;private: char finish[10];//目的地 char flightname[10];//航班名 int flightnum;//航班号 int day;//飞行日期 int limitednum;//乘员限额 int remainber;//余票struct booknode 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.