使用python面向对象对宾馆人员住宿信息进行增删改查操作,数据由键盘操作,信息保持在txt文件中
时间: 2024-03-03 07:48:03 浏览: 18
好的,我可以为您提供一种实现方式。首先,我们需要定义一个`Guest`类来表示宾客信息,包含姓名、房间号、入住时间和离店时间等属性。然后,我们可以定义一个`Hotel`类来管理宾馆的住宿信息,包含对宾客信息进行增删改查的方法,并将宾客信息保存在一个txt文件中。
下面是一个示例代码,您可以参考一下:
```python
import datetime
class Guest:
def __init__(self, name, room_no, checkin_time, checkout_time):
self.name = name
self.room_no = room_no
self.checkin_time = checkin_time
self.checkout_time = checkout_time
class Hotel:
def __init__(self, data_file):
self.data_file = data_file
self.guests = []
self.load_data()
def load_data(self):
with open(self.data_file, 'r') as f:
for line in f:
name, room_no, checkin_time_str, checkout_time_str = line.strip().split(',')
checkin_time = datetime.datetime.strptime(checkin_time_str, '%Y-%m-%d %H:%M:%S')
checkout_time = datetime.datetime.strptime(checkout_time_str, '%Y-%m-%d %H:%M:%S')
guest = Guest(name, room_no, checkin_time, checkout_time)
self.guests.append(guest)
def save_data(self):
with open(self.data_file, 'w') as f:
for guest in self.guests:
checkin_time_str = guest.checkin_time.strftime('%Y-%m-%d %H:%M:%S')
checkout_time_str = guest.checkout_time.strftime('%Y-%m-%d %H:%M:%S')
f.write('{},{},{},{}\n'.format(guest.name, guest.room_no, checkin_time_str, checkout_time_str))
def add_guest(self, guest):
self.guests.append(guest)
self.save_data()
def remove_guest(self, name):
for guest in self.guests:
if guest.name == name:
self.guests.remove(guest)
self.save_data()
return True
return False
def update_guest(self, name, room_no=None, checkin_time=None, checkout_time=None):
for guest in self.guests:
if guest.name == name:
if room_no is not None:
guest.room_no = room_no
if checkin_time is not None:
guest.checkin_time = checkin_time
if checkout_time is not None:
guest.checkout_time = checkout_time
self.save_data()
return True
return False
def find_guest(self, name):
for guest in self.guests:
if guest.name == name:
return guest
return None
```
在上面的代码中,`Guest`类表示宾客信息,包含姓名、房间号、入住时间和离店时间等属性。`Hotel`类表示宾馆管理系统,包含对宾客信息进行增删改查的方法,并将宾客信息保存在一个txt文件中。
具体来说,`Hotel`类的`__init__`方法会读取txt文件中的宾客信息,并将宾客信息保存在`guests`属性中。`add_guest`方法可以向宾客列表中添加新的宾客信息,并将信息保存到txt文件中。`remove_guest`方法可以根据姓名从宾客列表中删除宾客信息,并将信息保存到txt文件中。`update_guest`方法可以根据姓名更新宾客信息,并将信息保存到txt文件中。`find_guest`方法可以根据姓名查找宾客信息。
使用示例:
```python
hotel = Hotel('guests.txt')
# 添加宾客信息
guest1 = Guest('Tom', '101', datetime.datetime.now(), None)
hotel.add_guest(guest1)
# 查找宾客信息
guest = hotel.find_guest('Tom')
print(guest.name, guest.room_no, guest.checkin_time, guest.checkout_time)
# 更新宾客信息
hotel.update_guest('Tom', room_no='102', checkout_time=datetime.datetime.now())
# 删除宾客信息
hotel.remove_guest('Tom')
```