用C++写机票预订系统
时间: 2023-03-13 11:15:41 浏览: 59
我可以为您提供一些关于用C语言写机票预订系统的建议:首先,您需要了解C语言的基础知识,这样才能实现您的想法。 其次,您需要定义预订系统的功能,以及实现这些功能所需要的变量和函数,然后逐步实现它们。 最后,您还需要实现测试,以确保系统能够正常工作。
相关问题
机票预定系统用C++语言怎么写
下面是一个简单的机票预订系统的C++代码示例,仅供参考:
```cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
// 航班类
class Flight {
public:
string flightNo; // 航班号
string departureTime; // 起飞时间
string arrivalTime; // 到达时间
string departureLocation; // 起飞地点
string arrivalLocation; // 到达地点
string airline; // 航空公司
vector<string> economySeats; // 经济舱座位列表
vector<string> businessSeats; // 商务舱座位列表
vector<string> firstClassSeats; // 头等舱座位列表
// 构造函数
Flight(string flightNo, string departureTime, string arrivalTime,
string departureLocation, string arrivalLocation, string airline) {
this->flightNo = flightNo;
this->departureTime = departureTime;
this->arrivalTime = arrivalTime;
this->departureLocation = departureLocation;
this->arrivalLocation = arrivalLocation;
this->airline = airline;
}
// 添加座位
void addSeat(string seatNo, string seatType) {
if (seatType == "economy") {
economySeats.push_back(seatNo);
} else if (seatType == "business") {
businessSeats.push_back(seatNo);
} else if (seatType == "firstClass") {
firstClassSeats.push_back(seatNo);
}
}
// 获取可用座位
vector<string> getAvailableSeats(string seatType) {
if (seatType == "economy") {
return economySeats;
} else if (seatType == "business") {
return businessSeats;
} else if (seatType == "firstClass") {
return firstClassSeats;
}
return vector<string>();
}
};
// 座位类
class Seat {
public:
string seatNo; // 座位编号
string seatType; // 座位类型
bool isSold; // 是否已售出
// 构造函数
Seat(string seatNo, string seatType) {
this->seatNo = seatNo;
this->seatType = seatType;
this->isSold = false;
}
};
// 机票类
class Ticket {
public:
Flight flight; // 航班信息
Seat seat; // 座位信息
// 构造函数
Ticket(Flight flight, Seat seat) {
this->flight = flight;
this->seat = seat;
}
};
// 订单类
class Order {
public:
string passengerName; // 乘客姓名
Ticket ticket; // 机票信息
bool isPaid; // 是否已支付
// 构造函数
Order(string passengerName, Ticket ticket) {
this->passengerName = passengerName;
this->ticket = ticket;
this->isPaid = false;
}
// 支付订单
void pay() {
this->isPaid = true;
}
};
// 支付类
class Payment {
public:
double amount; // 支付金额
bool isPaid; // 是否已支付
string paymentMethod; // 支付方式
// 构造函数
Payment(double amount, string paymentMethod) {
this->amount = amount;
this->paymentMethod = paymentMethod;
this->isPaid = false;
}
// 支付
void pay() {
this->isPaid = true;
}
};
// 机票预订系统类
class FlightBookingSystem {
private:
vector<Flight> flights; // 航班列表
vector<Order> orders; // 订单列表
vector<Payment> payments; // 支付列表
public:
// 添加航班
void addFlight(Flight flight) {
flights.push_back(flight);
}
// 查询航班
vector<Flight> searchFlights(string departure, string arrival) {
vector<Flight> result;
for (Flight flight : flights) {
if (flight.departureLocation == departure && flight.arrivalLocation == arrival) {
result.push_back(flight);
}
}
return result;
}
// 预订机票
bool bookTicket(string passengerName, Flight flight, string seatNo) {
vector<string> seats = flight.getAvailableSeats(seatNo.substr(0, 1));
for (int i = 0; i < seats.size(); i++) {
if (seats[i] == seatNo) {
Seat seat(seatNo, seatNo.substr(0, 1));
seat.isSold = true;
Ticket ticket(flight, seat);
Order order(passengerName, ticket);
orders.push_back(order);
return true;
}
}
return false;
}
// 支付订单
bool payOrder(int orderId, double amount, string paymentMethod) {
for (Order& order : orders) {
if (orderId == order.passengerName && !order.isPaid) {
Payment payment(amount, paymentMethod);
payments.push_back(payment);
payment.pay();
order.pay();
return true;
}
}
return false;
}
};
int main() {
// 创建航班
Flight flight1("CA123", "2022-01-01 08:00:00", "2022-01-01 10:00:00", "Beijing", "Shanghai", "Air China");
flight1.addSeat("E01", "economy");
flight1.addSeat("E02", "economy");
flight1.addSeat("B01", "business");
flight1.addSeat("B02", "business");
flight1.addSeat("F01", "firstClass");
flight1.addSeat("F02", "firstClass");
// 创建机票预订系统
FlightBookingSystem system;
system.addFlight(flight1);
// 查询航班
vector<Flight> flights = system.searchFlights("Beijing", "Shanghai");
for (Flight flight : flights) {
cout << "Flight No: " << flight.flightNo << endl;
cout << "Departure Time: " << flight.departureTime << endl;
cout << "Arrival Time: " << flight.arrivalTime << endl;
cout << "Departure Location: " << flight.departureLocation << endl;
cout << "Arrival Location: " << flight.arrivalLocation << endl;
cout << "Airline: " << flight.airline << endl;
cout << "Available Seats: " << endl;
vector<string> seats = flight.getAvailableSeats("economy");
for (string seat : seats) {
cout << seat << " ";
}
cout << endl;
}
// 预订机票
bool success = system.bookTicket("张三", flight1, "E01");
if (success) {
cout << "Booking Success!" << endl;
} else {
cout << "Booking Failed!" << endl;
}
// 支付订单
success = system.payOrder(0, 1000, "Alipay");
if (success) {
cout << "Payment Success!" << endl;
} else {
cout << "Payment Failed!" << endl;
}
return 0;
}
```
需要注意的是,以上代码仅为示例代码,实现方式和具体功能可能与真实的机票预订系统有所不同,具体需求还需要根据实际情况进行调整和完善。
飞机票订票系统C++
以下是一个简单的C++飞机票订票和退票系统的实现,包括订票、退票、查询航班信息、查询乘客信息和计算销售额等功能:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
// 定义航班信息结构体
struct Flight {
string flightNo; // 航班号
string date; // 日期
int price; // 价格
int seats[20][4]; // 座位信息,0表示空位,1表示已订
};
// 定义乘客信息结构体
struct Passenger {
string name; // 姓名
string id; // 身份证号
string flightNo; // 航班号
string date; // 日期
string seat; // 座位号
};
// 定义航班信息和乘客信息的容器
vector<Flight> flights;
vector<Passenger> passengers;
// 初始化航班信息
void initFlights() {
for (int i = 0; i < 10; i++) {
Flight flight;
flight.flightNo = "CA" + to_string(i + 1);
flight.date = "2022-01-01";
flight.price = 1000;
for (int j = 0; j < 20; j++) {
for (int k = 0; k < 4; k++) {
flight.seats[j][k] = 0;
}
}
flights.push_back(flight);
}
}
// 显示航班信息
void showFlights() {
cout << "航班号\t日期\t价格\t余票" << endl;
for (int i = 0; i < flights.size(); i++) {
Flight flight = flights[i];
int count = 0;
for (int j = 0; j < 20; j++) {
for (int k = 0; k < 4; k++) {
if (flight.seats[j][k] == 0) {
count++;
}
}
}
cout << flight.flightNo << "\t" << flight.date << "\t" << flight.price << "\t" << count << endl;
}
}
// 订票
void bookTicket() {
string name, id, flightNo, date, seat;
cout << "请输入姓名:";
cin >> name;
cout << "请输入身份证号:";
cin >> id;
cout << "请输入航班号:";
cin >> flightNo;
cout << "请输入乘坐日期:";
cin >> date;
cout << "请输入座位号:";
cin >> seat;
// 查找航班
int index = -1;
for (int i = 0; i < flights.size(); i++) {
if (flights[i].flightNo == flightNo && flights[i].date == date) {
index = i;
break;
}
}
if (index == -1) {
cout << "没有找到该航班,请重新输入!" << endl;
return;
}
// 查找座位
int row = seat[0] - '0' - 1;
int col = seat[1] - 'A';
if (flights[index].seats[row][col] == 1) {
cout << "该座位已被预订,请重新选择!" << endl;
return;
}
// 订票
flights[index].seats[row][col] = 1;
Passenger passenger;
passenger.name = name;
passenger.id = id;
passenger.flightNo = flightNo;
passenger.date = date;
passenger.seat = seat;
passengers.push_back(passenger);
cout << "订票成功!" << endl;
}
// 退票
void cancelTicket() {
string id, flightNo, date;
cout << "请输入身份证号:";
cin >> id;
cout << "请输入航班号:";
cin >> flightNo;
cout << "请输入乘坐日期:";
cin >> date;
// 查找乘客信息
int index = -1;
for (int i = 0; i < passengers.size(); i++) {
if (passengers[i].id == id && passengers[i].flightNo == flightNo && passengers[i].date == date) {
index = i;
break;
}
}
if (index == -1) {
cout << "没有找到该乘客信息,请重新输入!" << endl;
return;
}
// 退票
string seat = passengers[index].seat;
int row = seat[0] - '0' - 1;
int col = seat[1] - 'A';
for (int i = 0; i < flights.size(); i++) {
if (flights[i].flightNo == flightNo && flights[i].date == date) {
flights[i].seats[row][col] = 0;
break;
}
}
passengers.erase(passengers.begin() + index);
cout << "退票成功!" << endl;
}
// 查询航班信息
void queryFlight() {
string flightNo, date;
cout << "请输入航班号:";
cin >> flightNo;
cout << "请输入乘坐日期:";
cin >> date;
// 查找航班
int index = -1;
for (int i = 0; i < flights.size(); i++) {
if (flights[i].flightNo == flightNo && flights[i].date == date) {
index = i;
break;
}
}
if (index == -1) {
cout << "没有找到该航班,请重新输入!" << endl;
return;
}
// 显示航班信息
cout << "航班号\t日期\t价格\t余票" << endl;
Flight flight = flights[index];
int count = 0;
for (int j = 0; j < 20; j++) {
for (int k = 0; k < 4; k++) {
if (flight.seats[j][k] == 0) {
count++;
}
}
}
cout << flight.flightNo << "\t" << flight.date << "\t" << flight.price << "\t" << count << endl;
}
// 查询乘客信息
void queryPassenger() {
string flightNo, date;
cout << "请输入航班号:";
cin >> flightNo;
cout << "请输入乘坐日期:";
cin >> date;
// 查找乘客信息
map<string, string> passengerMap;
for (int i = 0; i < passengers.size(); i++) {
if (passengers[i].flightNo == flightNo && passengers[i].date == date) {
passengerMap[passengers[i].seat] = passengers[i].name;
}
}
// 显示乘客信息
cout << "座位号\t姓名" << endl;
for (int j = 0; j < 20; j++) {
for (int k = 0; k < 4; k++) {
string seat = to_string(j + 1) + string(1, 'A' + k);
if (passengerMap.count(seat) > 0) {
cout << seat << "\t" << passengerMap[seat] << endl;
}
else {
cout << seat << "\t" << "空位" << endl;
}
}
}
}
// 计算销售额
void calcRevenue() {
string date;
cout << "请输入乘坐日期:";
cin >> date;
int revenue = 0;
for (int i = 0; i < passengers.size(); i++) {
if (passengers[i].date == date) {
for (int j = 0; j < flights.size(); j++) {
if (flights[j].flightNo == passengers[i].flightNo && flights[j].date == date) {
revenue += flights[j].price;
break;
}
}
}
}
cout << "销售额为:" << revenue << endl;
}
int main() {
initFlights();
while (true) {
cout << "请选择功能:" << endl;
cout << "1. 显示航班信息" << endl;
cout << "2. 订票" << endl;
cout << "3. 退票" << endl;
cout << "4. 查询航班信息" << endl;
cout << "5. 查询乘客信息" << endl;
cout << "6. 计算销售额" << endl;
cout << "7. 退出系统" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
showFlights();
break;
case 2:
bookTicket();
break;
case 3:
cancelTicket();
break;
case 4:
queryFlight();
break;
case 5:
queryPassenger();
break;
case 6:
calcRevenue();
break;
case 7:
return 0;
default:
cout << "输入有误,请重新输入!" << endl;
break;
}
}
return 0;
}
```