用Python实现一个简易的火车购票系统,包含基本的列车查询、购票和退票功能。这个示例使用面向对象编程方式,适合初学者理解。
python
class Train:
def __init__(self, train_id, start_station, end_station, departure_time, arrival_time, total_seats):
self.train_id = train_id # 车次
self.start_station = start_station # 出发站
self.end_station = end_station # 到达站
self.departure_time = departure_time # 出发时间
self.arrival_time = arrival_time # 到达时间
self.total_seats = total_seats # 总座位数
展开剩余89%self.available_seats = total_seats # 剩余座位数
self.passengers = {} # 乘客信息 {座位号: 乘客姓名}
def display_info(self):
"""显示列车信息"""
print(f"车次: {self.train_id}")
print(f"路线: {self.start_station} -> {self.end_station}")
print(f"时间: {self.departure_time} -> {self.arrival_time}")
print(f"总座位数: {self.total_seats}, 剩余座位: {self.available_seats}")
print("-" * 30)
class TrainTicketSystem:
def __init__(self):
self.trains = {} # 存储所有列车 {车次: Train对象}
代码参考资料来源:https://bbs.csdn.net/topics/619763129
def add_train(self, train):
"""添加列车"""
self.trains[train.train_id] = train
print(f"已添加列车: {train.train_id}")
def search_trains(self, start_station=None, end_station=None):
"""查询列车"""
print("\n=== 列车查询结果 ===")
found = False
for train in self.trains.values():
if (start_station is None or train.start_station == start_station) and \
(end_station is None or train.end_station == end_station):
train.display_info()
found = True
if not found:
print("未找到符合条件的列车")
def book_ticket(self, train_id, passenger_name):
"""购票"""
if train_id not in self.trains:
print("错误: 该车次不存在")
return False
train = self.trains[train_id]
if train.available_seats <= 0:
print("错误: 该车次已无余票")
return False
代码参考资料来源:https://bbs.csdn.net/topics/619763033
# 分配座位 (这里简单处理,实际应该更复杂的座位分配逻辑)
seat_number = train.total_seats - train.available_seats + 1 # 简单分配
train.passengers[seat_number] = passenger_name
train.available_seats -= 1
print(f"购票成功! 车次: {train_id}, 座位: {seat_number}, 乘客: {passenger_name}")
return True
def refund_ticket(self, train_id, seat_number):
"""退票"""
if train_id not in self.trains:
print("错误: 该车次不存在")
return False
train = self.trains[train_id]
if seat_number not in train.passengers:
print("错误: 该座位无购票记录")
return False
# 退票逻辑
passenger_name = train.passengers.pop(seat_number)
train.available_seats += 1
print(f"退票成功! 车次: {train_id}, 座位: {seat_number}, 乘客: {passenger_name}")
return True
def display_passengers(self, train_id):
"""显示乘客信息"""
if train_id not in self.trains:
print("错误: 该车次不存在")
return
代码参考资料来源:https://bbs.csdn.net/topics/619763324
train = self.trains[train_id]
print(f"\n=== 车次 {train_id} 乘客信息 ===")
if not train.passengers:
print("当前无乘客")
else:
for seat, name in train.passengers.items():
print(f"座位: {seat}, 乘客: {name}")
# 示例使用
if __name__ == "__main__":
# 创建系统
system = TrainTicketSystem()
# 添加列车
train1 = Train("G101", "北京", "上海", "08:00", "12:30", 500)
train2 = Train("D202", "广州", "深圳", "09:15", "10:45", 300)
system.add_train(train1)
system.add_train(train2)
# 查询列车
print("\n=== 查询所有列车 ===")
system.search_trains()
# 购票
system.book_ticket("G101", "张三")
system.book_ticket("G101", "李四")
system.book_ticket("D202", "王五")
# 显示乘客
system.display_passengers("G101")
# 退票
system.refund_ticket("G101", 1) # 假设张三的座位是1
# 再次显示乘客
system.display_passengers("G101")
代码参考资料来源:https://bbs.csdn.net/topics/619763034
代码说明
Train类:表示列车信息,包含车次、站点、时间、座位数等属性,以及显示信息和乘客管理的方法。
TrainTicketSystem类:火车票系统核心类,管理所有列车和购票逻辑:
添加列车
查询列车(支持按出发站和到达站筛选)
购票(分配座位)
退票(释放座位)
显示乘客信息
示例使用:
创建系统实例
添加两趟列车
查询列车
进行购票和退票操作
查看乘客信息
扩展建议
这个简易系统可以进一步扩展:
添加数据库支持,持久化存储列车和票务信息
实现更复杂的座位分配算法(如区分一等座、二等座)
添加用户登录和权限管理
实现支付功能
添加图形用户界面(GUI)
发布于:江西省翔云优配提示:文章来自网络,不代表本站观点。