用c++写一个简单电梯控制系统
时间: 2023-10-15 15:08:13 浏览: 33
好的,下面是一个简单的电梯控制系统的实现,包括电梯类的定义和主函数的实现。
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 电梯状态枚举类型
enum ElevatorStatus {
STOP,
UP,
DOWN
};
// 定义电梯类
class Elevator {
public:
Elevator(int maxFloor) : m_maxFloor(maxFloor), m_currentFloor(1), m_status(STOP), m_targetFloor(1) {}
// 获取当前楼层
int getCurrentFloor() const {
return m_currentFloor;
}
// 获取电梯状态
ElevatorStatus getStatus() const {
return m_status;
}
// 获取目标楼层
int getTargetFloor() const {
return m_targetFloor;
}
// 设置目标楼层
void setTargetFloor(int floor) {
m_targetFloor = floor;
}
// 电梯运行
void run() {
if (m_status == STOP) {
if (m_targetFloor > m_currentFloor) {
m_status = UP;
}
else if (m_targetFloor < m_currentFloor) {
m_status = DOWN;
}
}
if (m_status == UP) {
if (m_currentFloor < m_maxFloor) {
m_currentFloor++;
}
else {
m_status = STOP;
}
}
else if (m_status == DOWN) {
if (m_currentFloor > 1) {
m_currentFloor--;
}
else {
m_status = STOP;
}
}
}
private:
int m_maxFloor; // 最高楼层数
int m_currentFloor; // 当前楼层
ElevatorStatus m_status; // 电梯状态
int m_targetFloor; // 目标楼层
};
int main() {
const int MAX_FLOOR = 10; // 最高楼层数
const int TOTAL_ELEVATORS = 3; // 电梯总数
vector<Elevator> elevators;
for (int i = 0; i < TOTAL_ELEVATORS; i++) {
elevators.push_back(Elevator(MAX_FLOOR));
}
while (true) {
// 获取用户输入的目标楼层
int targetFloor;
cout << "请输入目标楼层(1-" << MAX_FLOOR << "):";
cin >> targetFloor;
// 找到离目标楼层最近的电梯
int minDistance = MAX_FLOOR + 1;
Elevator* closestElevator = nullptr;
for (auto& elevator : elevators) {
if (elevator.getStatus() == STOP) {
int distance = abs(elevator.getCurrentFloor() - targetFloor);
if (distance < minDistance) {
minDistance = distance;
closestElevator = &elevator;
}
}
}
// 如果没有空闲的电梯,则等待用户输入
if (closestElevator == nullptr) {
cout << "对不起,暂时没有可用的电梯,请稍等一会儿..." << endl;
continue;
}
// 设置电梯的目标楼层,然后运行电梯
closestElevator->setTargetFloor(targetFloor);
while (closestElevator->getCurrentFloor() != targetFloor) {
closestElevator->run();
cout << "电梯正在前往目标楼层..." << endl;
}
closestElevator->setTargetFloor(closestElevator->getCurrentFloor());
closestElevator->run();
// 输出电梯运行结果
cout << "电梯已到达目标楼层,当前楼层为:" << closestElevator->getCurrentFloor() << endl;
}
return 0;
}
```
以上是一个简单的电梯控制系统的实现,可以通过输入目标楼层来调用空闲的电梯前往指定楼层。当没有空闲的电梯时,程序会提示用户稍等一会儿。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](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)
![](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)
![](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)
![](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)
![](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)