飞机到达目的地后,游客的行李会进入传送带,由游客自行在取行李处拿取,虽然机场出口处,有工作人员在检查,但也难免会出现拿错行李的事情。请为机场设计一个游客取行李的程序,游客在取行李处,输入自己的身份证号后才能取到自己的行李。 要求: 使用线性表实现行李存储,行李信息表如下: 行李编号 行李航班 姓名 身份证号 行李状态 001 UC8866 张里 510199909090002 到达 002 NI7755 李丽 510200012290001 已取 003 MQ9090 王一 510198810090003 未取 004 BU8080 赵山 610197708080022 未到达 游客输入身份证号,即可获取对应行李箱状态,并领取本人行李箱。 显示欢迎类语句,为游客增加美好的体验感。 代码符合规范,正确、易读、易操作。 分析代码的运行效率,如时间复杂度和空间复杂度。
时间: 2023-09-10 08:12:51 浏览: 40
以下是一个可能的实现方案:
```python
class Luggage:
def __init__(self, number, flight, name, id_number, status):
self.number = number
self.flight = flight
self.name = name
self.id_number = id_number
self.status = status # '到达', '未取', '已取'
class LuggageStorage:
def __init__(self):
self.luggage_list = []
def add_luggage(self, luggage):
self.luggage_list.append(luggage)
def find_luggage_by_id(self, id_number):
for luggage in self.luggage_list:
if luggage.id_number == id_number:
return luggage
return None
def take_luggage(self, id_number):
luggage = self.find_luggage_by_id(id_number)
if luggage is None:
return False # 未找到对应行李
if luggage.status != '未取':
return False # 行李已被取走或未到达
luggage.status = '已取'
return True
def __str__(self):
result = ''
for luggage in self.luggage_list:
result += f'{luggage.number}\t{luggage.flight}\t{luggage.name}\t{luggage.id_number}\t{luggage.status}\n'
return result
if __name__ == '__main__':
storage = LuggageStorage()
storage.add_luggage(Luggage('001', 'UC8866', '张里', '510199909090002', '到达'))
storage.add_luggage(Luggage('002', 'NI7755', '李丽', '510200012290001', '已取'))
storage.add_luggage(Luggage('003', 'MQ9090', '王一', '510198810090003', '未取'))
storage.add_luggage(Luggage('004', 'BU8080', '赵山', '610197708080022', '未到达'))
print('欢迎来到机场行李取件处!')
while True:
id_number = input('请输入您的身份证号:')
luggage = storage.find_luggage_by_id(id_number)
if luggage is None:
print('未找到您的行李,请确认身份证号是否正确。')
else:
print(f'您的行李状态为:{luggage.status}')
if luggage.status == '未取':
if input('是否要取走行李?(y/n)') == 'y':
if storage.take_luggage(id_number):
print('请前往取行李处领取您的行李。')
else:
print('取行李失败,请联系工作人员。')
break
print('感谢使用我们的服务!')
```
代码中使用了一个 `Luggage` 类来表示行李信息,包含行李编号、航班、姓名、身份证号和状态等属性。使用一个 `LuggageStorage` 类来管理行李存储,包括添加行李、根据身份证号查找行李、取走行李等操作。程序主体部分,首先创建一个 `LuggageStorage` 实例,然后进入循环,要求用户输入身份证号,根据身份证号查找对应的行李信息,如果行李状态为未取,则询问用户是否要取走行李,如果用户确认,则调用 `LuggageStorage` 的 `take_luggage` 方法取走行李并更新状态。最后输出感谢使用的语句。
时间复杂度:添加行李、根据身份证号查找行李、取走行李等操作的时间复杂度为 $O(n)$,其中 $n$ 是行李数量。由于每个游客只能取一次行李,因此总时间复杂度为 $O(n)$。
空间复杂度:行李信息占用的空间为 $O(n)$。当然,还有一些额外的空间开销,如变量和方法调用等,但其空间开销不随行李数量增加而增加,可以忽略不计。因此总空间复杂度为 $O(n)$。
相关推荐
![](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/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)