电梯仿真系统:某国际会展中心共40层,设有载客电梯10部(用E0~E9标识)。 限定条件: (1) 每部电梯的最大载客量均为13人。 (2) 仿真开始时,各电梯都位于第1层,为空梯。 (3) 仿真开始后,有200位乘客在5分钟内随机地到达该国际会展中心的1层,开始乘梯活动。 (4) 电梯运行的方向由先发出请求者决定,不允许后发出请求者改变电梯的当前运行方向,除非是未被请求的空梯。 (5) 当某层有乘客按下乘梯按钮时,优先考虑离该层最近的、满足条件(4)、能够最快达到目标层的电梯。 (6) 不允许电梯超员。超员时应给出提示。 (7) 电梯运行速度为1秒/层 第一次上机实验内容: (1) 设计实现电梯类、乘客类以及你认为必要的类。 (2) 设计实现显示仿真信息的界面(不要求是GUI):显示每部电梯的状态(空闲或运行中)、运行的方向(上行或者下行)、目前停留的楼层;电梯内乘客的数量,每位乘客要去往的楼层(例如12-32表示标识为12的乘客要求去往32层);当前时间。 (3) 假设10部电梯各自独立运行,均可到达每一层。 (4) 随机产生每位乘客所要到达的楼层(每位乘客只产生一次乘梯请求),并随机选择一部电梯让其等待。 (5) 实现满足该要求的电梯仿真流程,选择电梯将乘客送至其请求的楼层。当所有乘客均到达请求的楼层后,仿真结束。
时间: 2024-03-19 12:42:26 浏览: 22
为了实现该电梯仿真系统,我们需要设计实现以下类:
1. 电梯类(Elevator):用来表示一个电梯,包括电梯的状态、方向、当前所处楼层、电梯内的乘客等信息。电梯类需要提供运行、停止、开门、关门等方法,用于模拟电梯的基本操作。
2. 乘客类(Passenger):用来表示一个乘客,包括乘客的目标楼层等信息。
3. 控制器类(Controller):用来控制所有电梯的运行,并根据乘客的请求将乘客分配给最近的、满足条件的电梯。
4. 仿真界面类(SimulationInterface):用来显示电梯的状态、方向、当前所处楼层、电梯内的乘客等信息,以及当前的时间。
下面是一个简单的类定义示例:
```cpp
class Elevator {
public:
Elevator(int id); // 构造函数
void run(); // 运行电梯
void stop(); // 停止电梯
void openDoor(); // 开门
void closeDoor(); // 关门
void addPassenger(Passenger p); // 添加乘客
void removePassenger(int index); // 移除乘客
// 其他成员函数
private:
int m_id; // 电梯编号
int m_capacity; // 最大载客量
int m_currentFloor; // 当前所处楼层
int m_direction; // 运行方向(1为上行,-1为下行,0为停止)
bool m_isRunning; // 电梯是否在运行
bool m_isDoorOpen; // 电梯门是否打开
vector<Passenger> m_passengers; // 电梯内的乘客
// 其他成员变量
};
class Passenger {
public:
Passenger(int id, int srcFloor, int destFloor); // 构造函数
int getId(); // 获取乘客编号
int getSrcFloor(); // 获取乘客出发楼层
int getDestFloor(); // 获取乘客目标楼层
// 其他成员函数
private:
int m_id; // 乘客编号
int m_srcFloor; // 出发楼层
int m_destFloor; // 目标楼层
// 其他成员变量
};
class Controller {
public:
Controller(); // 构造函数
void addElevator(Elevator e); // 添加电梯
void addPassenger(Passenger p); // 添加乘客
void run(); // 控制器运行
// 其他成员函数
private:
vector<Elevator> m_elevators; // 所有电梯
vector<Passenger> m_passengers; // 所有乘客
// 其他成员变量
};
class SimulationInterface {
public:
SimulationInterface(); // 构造函数
void show(); // 显示界面
// 其他成员函数
private:
// 成员变量
};
```
在控制器运行时,我们需要实现以下步骤:
1. 检查是否有乘客在某一楼层按下乘梯按钮,如果有,则将该乘客加入乘客列表中,并将其请求分配给最近的、满足条件的电梯。
2. 检查所有电梯当前的状态,如果电梯处于停止状态,则检查是否有乘客已经到达其目标楼层,如果有,则将这些乘客从电梯中移除。
3. 对于每个正在运行的电梯,检查其当前状态,如果电梯已经到达了其目标楼层,则停止电梯,开门,将乘客从电梯中移除,并将电梯的方向设置为未决定状态。
4. 对于每个正在运行的电梯,检查其当前状态,如果电梯的方向为未决定状态,则根据当前电梯内的乘客和等待电梯的乘客的位置决定电梯的运行方向。
5. 对于每个正在运行的电梯,根据电梯的当前方向将电梯移动一层。
6. 更新仿真界面的显示信息。
7. 如果还有乘客的请求未被满足,则继续运行控制器,否则仿真结束。
以上是一个简单的电梯仿真系统的设计思路,具体实现可以根据自己的需求进行相应的修改和扩展。