Python模拟飞机选座系统:实现与扩展功能

Python实现:模拟飞机选座系统

在构建一个飞机选座系统时,我们可以利用Python来模拟一个基本的座位选择功能。此系统将包含座位布局展示、用户选座、重复确认和显示最终选择等功能。以下代码将展示如何实现一个简单的飞机选座系统。

功能描述

  1. 座位布局初始化:设定飞机座位布局,如每排有6个座位(A, B, C, D, E, F),总共20排。
  2. 显示座位:清晰地展示座位状态(O表示空座位,X表示已占用)。
  3. 选择座位:用户可以选择具体的座位。
  4. 确认选座:提供选座确认提示,避免误选。
  5. 显示最终结果:确认选座后展示更新后的座位布局。

代码实现

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.")

使用流程

  1. 初始化程序:创建AirplaneSeatingSystem的实例并开始选座流程。

    plane = AirplaneSeatingSystem()
    plane.start_booking()
    
  2. 用户交互

    • 程序将展示当前座位状态。
    • 用户输入行号和座位字母来选择座位。
    • 系统提供确认选座提示,用户需输入yesno进行确认。
  3. 退出程序:输入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():循环运行选座流程,直到用户输入退出命令。

功能扩展

  1. 不同座位类型:添加商务舱、头等舱的座位分布。
  2. 多座位预订:允许一次选择多个座位并进行批量确认。
  3. 乘客信息:记录乘客信息,如姓名、座位号等。

通过这样的设计,我们实现了一个简单的飞机选座系统,易于用户理解和操作,并可以扩展为更复杂的系统,如在线票务预订平台。

Python中,模拟飞机选座程序可以设计成一个简单的命令行交互界面,让用户输入座位信息并查看可用座位情况。下面是一个简化的伪代码概述: ```python class PlaneSeatSimulator: def __init__(self): self.seats = {} # 用字典存储座位,键是座位编号,值是True表示未售出,False表示已售出 def add_seat(self, seat_number): if seat_number not in self.seats: self.seats[seat_number] = True print(f"Seat {seat_number} is added to the plane.") else: print(f"Seat {seat_number} is already occupied.") def book_seat(self, seat_number): if self.seats.get(seat_number, False): self.seats[seat_number] = False print(f"Seat {seat_number} booked by User X.") else: print("Sorry, that seat is not available.") def check_availability(self, seat_number): status = "Available" if self.seats.get(seat_number, True) else "Occupied" print(f"Seat {seat_number} status: {status}") # 模拟程序主入口 if __name__ == "__main__": sim = PlaneSeatSimulator() while True: choice = input("Enter 'a' for adding a seat, 'b' for booking a seat, or 'c' to check availability: ") if choice.lower() == 'a': seat_number = int(input("Enter seat number: ")) sim.add_seat(seat_number) elif choice.lower() == 'b': seat_number = int(input("Enter seat number to book: ")) sim.book_seat(seat_number) elif choice.lower() == 'c': seat_number = int(input("Enter seat number to check: ")) sim.check_availability(seat_number) else: print("Invalid choice. Please try again.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐浪老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值