Python模拟飞机选座系统:实现与扩展功能
Python实现:模拟飞机选座系统
在构建一个飞机选座系统时,我们可以利用Python来模拟一个基本的座位选择功能。此系统将包含座位布局展示、用户选座、重复确认和显示最终选择等功能。以下代码将展示如何实现一个简单的飞机选座系统。
功能描述
- 座位布局初始化:设定飞机座位布局,如每排有6个座位(A, B, C, D, E, F),总共20排。
- 显示座位:清晰地展示座位状态(O表示空座位,X表示已占用)。
- 选择座位:用户可以选择具体的座位。
- 确认选座:提供选座确认提示,避免误选。
- 显示最终结果:确认选座后展示更新后的座位布局。
代码实现
class AirplaneSeatingSystem:
def __init__(self, rows=20, seats_per_row=6):
self.rows = rows
self.seats_per_row = seats_per_row
# 初始化所有座位为空座位 "O"
self.seats = [['O' for _ in range(seats_per_row)] for _ in range(rows)]
self.seat_labels = ['A', 'B', 'C', 'D', 'E', 'F'][:seats_per_row]
def display_seating(self):
print("\nCurrent seating arrangement:")
print(" " + " ".join(self.seat_labels)) # 顶部显示座位标签
for i, row in enumerate(self.seats):
row_display = f"{i + 1:2} " + " ".join(row)
print(row_display)
print("O = Available, X = Occupied\n")
def select_seat(self, row, seat):
# 检查行号和座位号是否有效
if 0 < row <= self.rows and seat in self.seat_labels:
seat_index = self.seat_labels.index(seat)
if self.seats[row - 1][seat_index] == 'O':
confirm = input(f"Confirm booking for seat {row}{seat}? (yes/no): ").strip().lower()
if confirm == 'yes':
# 更新座位状态
self.seats[row - 1][seat_index] = 'X'
print(f"Seat {row}{seat} successfully booked!")
else:
print("Seat selection cancelled.")
else:
print(f"Seat {row}{seat} is already occupied. Please choose another seat.")
else:
print("Invalid seat selection. Please try again.")
def start_booking(self):
print("Welcome to the Airplane Seating System!")
while True:
self.display_seating()
try:
row = int(input("Enter the row number (1-20) or '0' to exit: "))
if row == 0:
print("Thank you for using the Airplane Seating System!")
break
seat = input("Enter the seat letter (A-F): ").upper()
self.select_seat(row, seat)
except ValueError:
print("Invalid input. Please enter a valid row number.")
使用流程
-
初始化程序:创建
AirplaneSeatingSystem
的实例并开始选座流程。plane = AirplaneSeatingSystem() plane.start_booking()
-
用户交互:
- 程序将展示当前座位状态。
- 用户输入行号和座位字母来选择座位。
- 系统提供确认选座提示,用户需输入
yes
或no
进行确认。 -
退出程序:输入
0
退出选座程序。
示例运行
Welcome to the Airplane Seating System!
Current seating arrangement:
A B C D E F
1 O O O O O O
2 O O O O O O
...
20 O O O O O O
O = Available, X = Occupied
Enter the row number (1-20) or '0' to exit: 5
Enter the seat letter (A-F): B
Confirm booking for seat 5B? (yes/no): yes
Seat 5B successfully booked!
Current seating arrangement:
A B C D E F
1 O O O O O O
2 O O O O O O
3 O O O O O O
4 O O O O O O
5 O X O O O O
...
代码说明
display_seating()
:清晰展示当前座位状态,帮助用户更方便地查看空余座位。select_seat()
:验证用户输入的行号和座位字母是否有效;若座位可用,提示确认选座,以避免误操作。start_booking()
:循环运行选座流程,直到用户输入退出命令。功能扩展
- 不同座位类型:添加商务舱、头等舱的座位分布。
- 多座位预订:允许一次选择多个座位并进行批量确认。
- 乘客信息:记录乘客信息,如姓名、座位号等。
通过这样的设计,我们实现了一个简单的飞机选座系统,易于用户理解和操作,并可以扩展为更复杂的系统,如在线票务预订平台。
作者:徐浪老师