本题要求实现一个简易的“智能设备管理系统”,支持两类设备与四种指令:
设备类型:Light(状态 ON/OFF)、Lock(状态 LOCKED/UNLOCKED)
指令:
CREATE LIGHT id initial_stateCREATE LOCK id initial_state要求设计一个简单的智能设备监控系统。该系统能够管理不同类型的智能设备(如智能灯和智能门锁),并能统一查问它们的状态。你需要运用你所选编程语言的特性,来实现设备的抽象和具体化,以及统一的状态显示功能。
具体的实现方式应利用你所选编程语言的特性,例如:
对于C语言,可以考虑使用结构体和函数指针来模拟多态行为,或者通过清晰的函数命名约定来管理不同设备。
输入包含多行,模拟对不同设备的创建和操作。
第一行包含一个整数 N(N≤100),表示操作的总次数。
接下来的 N 行,每行描述一个操作。操作类型有四种:
1、CREATE LIGHT <id><initial_state>:创建一个智能灯。<id>是字符串,<initial _state> 是 ON 或 OFF .
2、CREATE LOCK <id><initial_state>:创建一个智能门锁。<id>是字符串,<initial _state> 是 LOCKED 或 UNLOCKED .
3、DISPLAY <id> : 显示指定设备的状态。
4、DISPLAY ALL: 显示所有已创建设备的状态。
1、对于每个 DISPLAY <id> 操作,输出对应设备的状态信息。状信格式如下:
a、智能灯:Light <id> is <ON/OFF>
b、智能门锁:Lock <id> is <LOCKED/UNLOCKED>
2、如果 DISPLAY 的 <id> 不存在,则输出 Device <id> not found.
3、对于 DISPLAY ALL 操作,按照设备创建的先后顺序,逐行输出所有设备的状态信息。
如果没有设备,则不输出任何内容。
约束与注意事项:
1、设备 ID 的唯一性: 系统中每个设备的 <id> 必须是唯一的。如果尝试使用一个已经存在的 <id> 创建新设备,则忽略该创建操作,不输出任何错误信息。
2、错误处理:
a、无效初始状态:如果 CREATE 操作提供的 <initial _state>不是 ON/OFF 或 LOCKED/UNLOCKED,则忽略该创建操作,不输出任何错误信息。
b、未知操作类型:如果输入的操作类型不是 CREATE 或 DISPLAY,也忽略该操作。
3、标准库使用:允许使用所选语言的标准库容器来管理设备,例如 C++ 的 std::map 或 std::unordered _map, Python 的 dict,Java 的 HashMap 等。
输入
7
CREATE LIGHT Light1 ON
CREATE LOCK LockA UNLOCKED
DISPLAY Light1
DISPLAY LockA
DISPLAY NonExistentDevice
DISPLAY ALL
CREATE LIGHT Light1 OFF
输出
Light Light1 is ON
Lock LockA is UNLOCKED
Device NonExistentDevice not found.
Light Light1 is ON
Lock LockA is UNLOCKED
输入
6
CREATE LIGHT LivingRoomLight OFF
CREATE LIGHT KitchenLight ON
DISPLAY KitchenLight
DISPLAY ALL
DISPLAY LivingRoomLight
CREATE LOCK MainDoor UNKNOWN_STATE
输出
Light kitchenLight is ON
Light LivingRoomLight is OFF
Light KitchenLight is ON
Light LivingRoomLight is OFF