飞机订票系统设计c++

时间: 2023-11-18 18:45:33 浏览: 78
飞机订票系统设计需要考虑以下几个方面: 1. 飞机航班信息管理:包括航班号、起降时间、出发地、目的地、航空公司、座位数等; 2. 用户信息管理:包括姓名、性别、电话号码、邮箱、证件号码等; 3. 订单信息管理:包括订单号、航班号、日期、乘客姓名、座位号、票价等; 4. 座位预订管理:包括对座位的预订、取消预订等操作。 下面是一个简单的飞机订票系统设计: ```c++ #include <iostream> #include <string> #include <vector> using namespace std; // 定义航班类 class Flight { public: string flightNo; // 航班号 string departure; // 出发地 string destination; // 目的地 string airline; // 航空公司 string departureTime; // 起飞时间 string arrivalTime; // 到达时间 int seats; // 座位数 }; // 定义用户类 class User { public: string name; // 姓名 string gender; // 性别 string phone; // 电话号码 string email; // 邮箱 string idNo; // 证件号码 }; // 定义订单类 class Order { public: string orderNo; // 订单号 string flightNo; // 航班号 string date; // 日期 string passengerName; // 乘客姓名 string seatNo; // 座位号 double price; // 票价 }; // 定义座位类 class Seat { public: string seatNo; // 座位号 bool reserved; // 是否已预订 }; // 定义飞机订票系统类 class AirlineBookingSystem { public: vector<Flight> flights; // 所有航班信息 vector<User> users; // 所有用户信息 vector<Order> orders; // 所有订单信息 // 添加航班信息 void addFlight(Flight flight) { flights.push_back(flight); } // 添加用户信息 void addUser(User user) { users.push_back(user); } // 预订座位 bool reserveSeat(string flightNo, string date, string passengerName, string seatNo) { // 查找航班 Flight* flight = findFlight(flightNo); if (flight == NULL) { return false; } // 查找座位 Seat* seat = findSeat(flight, seatNo); if (seat == NULL || seat->reserved) { return false; } // 创建订单 Order order; order.orderNo = generateOrderNo(); order.flightNo = flightNo; order.date = date; order.passengerName = passengerName; order.seatNo = seatNo; order.price = 1000; // 假设票价为1000元 // 修改座位状态 seat->reserved = true; // 添加订单 orders.push_back(order); return true; } // 取消预订 bool cancelReservation(string orderNo) { // 查找订单 Order* order = findOrder(orderNo); if (order == NULL) { return false; } // 查找航班 Flight* flight = findFlight(order->flightNo); if (flight == NULL) { return false; } // 查找座位 Seat* seat = findSeat(flight, order->seatNo); if (seat == NULL) { return false; } // 修改座位状态 seat->reserved = false; // 删除订单 for (auto it = orders.begin(); it != orders.end(); it++) { if (it->orderNo == orderNo) { orders.erase(it); break; } } return true; } private: // 查找航班 Flight* findFlight(string flightNo) { for (int i = 0; i < flights.size(); i++) { if (flights[i].flightNo == flightNo) { return &flights[i]; } } return NULL; } // 查找座位 Seat* findSeat(Flight* flight, string seatNo) { for (int i = 0; i < flight->seats; i++) { if (flight->seats[i].seatNo == seatNo) { return &flight->seats[i]; } } return NULL; } // 查找订单 Order* findOrder(string orderNo) { for (int i = 0; i < orders.size(); i++) { if (orders[i].orderNo == orderNo) { return &orders[i]; } } return NULL; } // 生成订单号 string generateOrderNo() { // 简单地返回当前订单数+1作为订单号 return to_string(orders.size() + 1); } }; int main() { AirlineBookingSystem bookingSystem; // 添加航班信息 Flight flight1; flight1.flightNo = "MU5123"; flight1.departure = "上海"; flight1.destination = "北京"; flight1.airline = "东方航空"; flight1.departureTime = "8:00"; flight1.arrivalTime = "10:00"; flight1.seats = 100; for (int i = 0; i < flight1.seats; i++) { Seat seat; seat.seatNo = "A" + to_string(i + 1); seat.reserved = false; flight1.seats.push_back(seat); } bookingSystem.addFlight(flight1); // 添加用户信息 User user1; user1.name = "张三"; user1.gender = "男"; user1.phone = "13800000001"; user1.email = "zhangsan@example.com"; user1.idNo = "310101198001010001"; bookingSystem.addUser(user1); // 预订座位 bookingSystem.reserveSeat("MU5123", "2022-01-01", "张三", "A1"); // 取消预订 bookingSystem.cancelReservation("1"); return 0; } ```

相关推荐

最新推荐

recommend-type

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

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

航空售票系统 完整版数据结构课程设计

航空售票系统一般都是以航班为单位进行管理的,一个航班用一个结点来表示。考虑到添加的方便,这些以航班为单位的结点用链表方式组成一个主目录。每个结点有四个域: (1)航班号; (2)目的地; (3)起飞时间; ...
recommend-type

c++课程设计(航空订票系统)

终点名、航班号、飞机号、飞行时间、订票数余票量、已订票的客户名单:包括姓名、订票量、以及等候替补的客户名单(包括姓名、所需票量);
recommend-type

航空订票系统 数据结构 VC++

1. 设计一个航班订票系统,提高对信息管理、信息查找和排序算法的应用能力 2. 全面提高学生的程序设计、开发能力 (4)、基本功能: 1. 可以录入航班信息(数据可以存储在一个数据文件中,数据结构、具体数据自定) ...
recommend-type

毕业论文-Java 航空订票系统

Java语言是一个支持网络计算的面向对象程序设计语言,吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信和多媒体数据控制等。主要特性如下:  1、面向对象性:Java语言是一个纯...
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

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

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