以下是一个飞机订票系统,请你修改一下,使他在程序结束时,数据不丢失
时间: 2023-10-06 08:10:52 浏览: 36
要实现在程序结束时数据不丢失,可以将数据保存到文件中,程序启动时从文件中读取数据并加载到程序中。可以按照以下步骤进行修改:
1. 定义一个函数用于保存数据到文件中,例如`save_data()`,在程序退出前调用该函数。
2. 定义一个函数用于从文件中读取数据,例如`load_data()`,在程序启动时调用该函数。
3. 将所有需要保存的数据存储在一个字典或类中,例如`booking_data`。
4. 在程序执行过程中,对`booking_data`进行操作。
5. 在`save_data()`函数中,将`booking_data`保存到文件中。
6. 在`load_data()`函数中,从文件中读取数据并加载到`booking_data`中。
以下是修改后的代码示例:
```python
import json
class BookingSystem:
def __init__(self):
self.booking_data = {} # 存储所有订票信息的字典
self.load_data() # 从文件中加载数据
def book_ticket(self, flight_number, seat_number, name):
if flight_number not in self.booking_data:
self.booking_data[flight_number] = {} # 如果该航班没有订票信息,则新建一个字典
if seat_number in self.booking_data[flight_number]:
return False # 如果该座位已经被预订,则返回False
self.booking_data[flight_number][seat_number] = name # 记录订票信息
return True
def cancel_ticket(self, flight_number, seat_number):
if flight_number not in self.booking_data or seat_number not in self.booking_data[flight_number]:
return False # 如果该航班或该座位没有被预订,则返回False
del self.booking_data[flight_number][seat_number] # 取消订票信息
return True
def display_seats(self, flight_number):
print(f"Flight {flight_number} seating arrangement:")
for i in range(1, 11):
if str(i) in self.booking_data.get(flight_number, {}):
print("X", end=" ")
else:
print(i, end=" ")
print()
def save_data(self):
with open("booking_data.json", "w") as f:
json.dump(self.booking_data, f)
def load_data(self):
try:
with open("booking_data.json", "r") as f:
self.booking_data = json.load(f)
except FileNotFoundError:
pass # 如果文件不存在,则不做任何操作
if __name__ == "__main__":
booking_system = BookingSystem()
while True:
print("1. Book ticket")
print("2. Cancel ticket")
print("3. Display seats")
print("4. Exit")
choice = input("Enter your choice: ")
if choice == "1":
flight_number = input("Enter flight number: ")
seat_number = input("Enter seat number: ")
name = input("Enter name: ")
if booking_system.book_ticket(flight_number, seat_number, name):
print("Ticket booked successfully")
else:
print("Seat already booked")
elif choice == "2":
flight_number = input("Enter flight number: ")
seat_number = input("Enter seat number: ")
if booking_system.cancel_ticket(flight_number, seat_number):
print("Ticket cancelled successfully")
else:
print("Seat not booked")
elif choice == "3":
flight_number = input("Enter flight number: ")
booking_system.display_seats(flight_number)
elif choice == "4":
booking_system.save_data() # 保存数据到文件中
print("Goodbye!")
break
else:
print("Invalid choice")
```
在上面的代码中,`save_data()`函数使用`json`模块将`booking_data`字典保存到文件中,`load_data()`函数从文件中读取数据并加载到`booking_data`中。程序启动时,会先调用`load_data()`函数从文件中加载数据,当用户选择退出时,会调用`save_data()`函数将数据保存到文件中。这样,在程序结束时,数据不会丢失。