只用python写出一个简易的火车售票系统,其中包括不同座位不同车次的选择,车次时间,还有余票限制,不能重复购买,单人购买多张票
时间: 2024-03-01 07:54:03 浏览: 62
好的,我可以为您提供一个简单的火车售票系统,实现以下功能:
1. 选择不同车次和座位类型
2. 显示车次时间和余票数量
3. 防止重复购买
4. 单人购买多张票
代码如下:
```python
class Train:
def __init__(self, train_num, start_station, end_station, start_time, end_time, seat_type, price, ticket_num):
self.train_num = train_num
self.start_station = start_station
self.end_station = end_station
self.start_time = start_time
self.end_time = end_time
self.seat_type = seat_type
self.price = price
self.ticket_num = ticket_num
class Passenger:
def __init__(self, name):
self.name = name
self.tickets = []
def buy_ticket(self, train, seat_num):
if train.ticket_num <= 0:
print("对不起,该车次余票不足!")
return False
for ticket in self.tickets:
if ticket.train.train_num == train.train_num and ticket.seat_num == seat_num:
print("对不起,您已经购买了该座位的车票!")
return False
ticket = Ticket(train, seat_num)
self.tickets.append(ticket)
train.ticket_num -= 1
print("购票成功!")
return True
class Ticket:
def __init__(self, train, seat_num):
self.train = train
self.seat_num = seat_num
def display_trains(trains):
for train in trains:
print("车次:{}\t起点站:{}\t终点站:{}\t发车时间:{}\t到达时间:{}\t座位类型:{}\t价格:{}\t余票数量:{}".format(
train.train_num, train.start_station, train.end_station, train.start_time, train.end_time,
train.seat_type, train.price, train.ticket_num))
def main():
# 初始化车次信息
train1 = Train("G1234", "北京", "上海", "09:00", "13:00", "商务座", 500, 5)
train2 = Train("G2345", "北京", "上海", "13:00", "17:00", "一等座", 300, 10)
train3 = Train("G3456", "北京", "上海", "18:00", "22:00", "二等座", 200, 20)
trains = [train1, train2, train3]
# 初始化乘客信息
name = input("请输入您的姓名:")
passenger = Passenger(name)
while True:
print("请选择要购买的车次:")
display_trains(trains)
train_num = input("请输入车次号码(输入q退出程序):")
if train_num == "q":
break
seat_type = input("请选择座位类型(商务座、一等座、二等座):")
seat_num = int(input("请选择座位号:"))
# 查找选定车次和座位类型的列车信息
train = None
for t in trains:
if t.train_num == train_num and t.seat_type == seat_type:
train = t
break
if train is None:
print("对不起,您选择的车次或座位类型不存在!")
continue
# 购票
passenger.buy_ticket(train, seat_num)
if __name__ == '__main__':
main()
```
您可以根据需要修改车次信息,运行代码体验火车售票系统的功能。
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)