航空机票订票系统设计 (1)设计每条航线所涉及的信息,如起点终点站名、航班号、飞机号、飞机周日(星期几)、乘员定额、余票量、订定票的客户名单(包括姓名、订票量、舱位等级1,2或3)等; (2)结合基本操作的单链表、队列、二叉树等数据结构以及排序算法,设计实现机票订票系统的查询、订票、退票等功能; (3)设计并实现人机交互友好的界面或菜单。请写出C++完整代码,

时间: 2023-08-31 13:54:07 浏览: 38
以下是一个简单的C++代码示例,实现了航空机票订票系统的查询、订票、退票功能,并设计了一个基本的人机交互界面: ```cpp #include <iostream> #include <string> #include <list> #include <queue> #include <map> #include <algorithm> using namespace std; // 航班信息结构体 struct FlightInfo { string startStation; string endStation; string flightNumber; string aircraftNumber; int weekday; int passengerQuota; int remainingTickets; map<string, pair<int, int>> passengerList; // 客户名单,<姓名, <订票量, 舱位等级>> }; // 航空机票订票系统类 class AirlineTicketSystem { private: list<FlightInfo> flightList; // 航班信息列表 public: // 查询航班信息 void queryFlightInfo(string startStation, string endStation) { for (const auto& flight : flightList) { if (flight.startStation == startStation && flight.endStation == endStation) { cout << "航班号:" << flight.flightNumber << endl; cout << "飞机号:" << flight.aircraftNumber << endl; cout << "飞机周日:" << flight.weekday << endl; cout << "乘员定额:" << flight.passengerQuota << endl; cout << "余票量:" << flight.remainingTickets << endl; cout << "客户名单:" << endl; for (const auto& passenger : flight.passengerList) { cout << "姓名:" << passenger.first << ",订票量:" << passenger.second.first << ",舱位等级:" << passenger.second.second << endl; } return; } } cout << "未找到符合条件的航班信息" << endl; } // 订票 void bookTicket(string flightNumber, string passengerName, int ticketQuantity, int cabinLevel) { for (auto& flight : flightList) { if (flight.flightNumber == flightNumber && flight.remainingTickets >= ticketQuantity) { flight.remainingTickets -= ticketQuantity; flight.passengerList[passengerName] = make_pair(ticketQuantity, cabinLevel); cout << "订票成功!" << endl; return; } } cout << "订票失败,请检查航班号和余票量" << endl; } // 退票 void cancelTicket(string flightNumber, string passengerName) { for (auto& flight : flightList) { if (flight.flightNumber == flightNumber) { auto it = flight.passengerList.find(passengerName); if (it != flight.passengerList.end()) { int ticketQuantity = it->second.first; flight.remainingTickets += ticketQuantity; flight.passengerList.erase(it); cout << "退票成功!" << endl; return; } } } cout << "退票失败,请检查航班号和乘客姓名" << endl; } // 添加航班信息 void addFlightInfo(FlightInfo flightInfo) { flightList.push_back(flightInfo); } }; // 主函数 int main() { AirlineTicketSystem ticketSystem; // 添加航班信息 FlightInfo flight1 = {"Beijing", "Shanghai", "CA123", "B777", 1, 200, 180, {}}; FlightInfo flight2 = {"Shanghai", "Guangzhou", "MU456", "A320", 2, 150, 120, {}}; FlightInfo flight3 = {"Beijing", "Guangzhou", "CZ789", "B737", 3, 250, 220, {}}; ticketSystem.addFlightInfo(flight1); ticketSystem.addFlightInfo(flight2); ticketSystem.addFlightInfo(flight3); // 人机交互菜单 while (true) { cout << "请选择操作:" << endl; cout << "1. 查询航班信息" << endl; cout << "2. 订票" << endl; cout << "3. 退票" << endl; cout << "4. 退出" << endl; int choice; cin >> choice; if (choice == 1) { cout << "请输入起点站名和终点站名:" << endl; string startStation, endStation; cin >> startStation >> endStation; ticketSystem.queryFlightInfo(startStation, endStation); } else if (choice == 2) { cout << "请输入航班号、乘客姓名、订票量和舱位等级:" << endl; string flightNumber, passengerName; int ticketQuantity, cabinLevel; cin >> flightNumber >> passengerName >> ticketQuantity >> cabinLevel; ticketSystem.bookTicket(flightNumber, passengerName, ticketQuantity, cabinLevel); } else if (choice == 3) { cout << "请输入航班号和乘客姓名:" << endl; string flightNumber, passengerName; cin >> flightNumber >> passengerName; ticketSystem.cancelTicket(flightNumber, passengerName); } else if (choice == 4) { break; } else { cout << "无效的操作,请重新选择!" << endl; } } return 0; } ``` 请注意,以上代码仅为一个简化的示例,实际情况中可能需要根据具体需求进行一些调整和优化。希望对你的设计有所帮助!

相关推荐

最新推荐

recommend-type

数据结构课程设计飞机票的管理

本程序主要用于机票的管理,甩以提供了以下功能,行班信息输入输出保存、航线查询、订票,退票,和修改航班信息。 录入: 可以录入航班情况; 浏览: 通过浏览系统,客户可以根据自己时间、金钱等多方面的因素选择...
recommend-type

数据结构课程设计--》航空订票系统

要求:根据以上功能说明,设计航班信息,订票信息的存储结构,设计程序完成功能 查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入...
recommend-type

数据结构课程设计报告-航空订票系统报告

航空客运订票的业务活动包括:查询航线、客票预订和办理退票等。设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。
recommend-type

Python获取航线信息并且制作成图的讲解

今天小编就为大家分享一篇关于Python获取航线信息并且制作成图的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

航空售票系统 C++课程设计源代码

(1) 查询航线:根据旅客提出的终点站名输出以下信息:航班号、飞机号、星期几飞行、最近一天航班的日期和余票额。承办订票业务:根据客户提供的要求(航班号、订票数额) (2)查询该航班票额情况,若尚有余票,则为...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB图像处理算法宝典:从理论到实战

![MATLAB图像处理算法宝典:从理论到实战](https://img-blog.csdnimg.cn/20200717112736401.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2d1emhhbzk5MDE=,size_16,color_FFFFFF,t_70) # 1. MATLAB图像处理基础理论 MATLAB图像处理是一种利用MATLAB编程语言进行图像处理的强大工具。它提供了丰富的函数和工具箱,用于图像获取、增强、分
recommend-type

matlab中1/x的非线性规划

在MATLAB中,可以使用非线性规划函数(`fmincon`)来优化一个包含1/x的非线性目标函数。下面是一个简单的例子: ```matlab % 定义目标函数 fun = @(x) 1/x; % 定义约束函数(这里没有约束) nonlcon = []; % 定义初始点 x0 = 1; % 定义优化选项 options = optimoptions('fmincon', 'Display', 'iter'); % 进行非线性规划 [x, fval] = fmincon(fun, x0, [], [], [], [], [], [], nonlcon, options); ``` 在
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。