第二周作业
第二周作业
系统有两种外部输入,即“车进入”(car_in)和“车离开”(car_out)。输出为起落杆控制(lever_control)和信号灯(light)。还包括起落杆状态(lever_state)。
系统初始状态为:car_in=0,car_out=0,起落杆为下降(lever_state=0),信号灯为红(light=0)。
车进入:car_in=1,car_out=0
车离开:car_in=0,car_out=1
起落杆控制:上升(lever_control=1) 下降(lever_control=0)
起落杆状态:上升(lever_state=1) 下降(lever_state=0)
灯:红(light=0) 绿(light=1)
系统工作流程为:车进入(car_in=1,car_out=0)——>控制起落杆上升(lever_control=1)——>起落杆状态为上升(lever_state=1)——>灯变为绿——>车离开(car_in=0,car_out=1)——>控制起落杆下降(lever_control=0)——>起落杆状态为下降(lever_state=0)——>灯变为红。

代码如下:
#include <iostream>
using namespace std;
class Car{ //车辆类,包括入闸传感器,出闸传感器
public:
void set_car_in();
void set_car_out();
int get_car_state();
Car(){
car_in=0;car_out=0;
};
private:
int car_in; //入闸传感器
int car_out; //出闸传感器
};
void Car::set_car_in(){
car_in=1;car_out=0;
};
void Car::set_car_out(){
car_in=0;car_out=1;
};
int Car::get_car_state(){
if(car_in==1&&car_out==0){return 1;};
if(car_in==0&&car_out==1){return 0;};
};
class Lever{ //起落杆类,包括起落杆控制,起落杆状态传感器
public:
void lever_control(int);
int get_lever_state();
Lever(){
lever_state=0;
};
private:
int lever_state; //起落杆状态传感器
};
void Lever::lever_control(int m){
if(m==1){lever_state=1;cout<<"起落杆上升"<<endl;};
if(m==0){lever_state=0;cout<<"起落杆下降"<<endl;};
};
int Lever::get_lever_state(){
return lever_state;
};
class Light{ //灯类
public:
void setlight(int);
Light(){
light=0;
};
private:
int light;
};
void Light::setlight(int n){
if(n==1){light=1;cout<<"灯变为绿"<<endl;};
if(n==0){light=0;cout<<"灯变为红"<<endl;};
};
int main(){
Car car;
Lever lever;
Light light;
cout<<"车辆进入.."<<endl;
car.set_car_in();
lever.lever_control(car.get_car_state());
light.setlight(lever.get_lever_state());
cout<<"车辆离开.."<<endl;
car.set_car_out();
lever.lever_control(car.get_car_state());
light.setlight(lever.get_lever_state());
return 0;
};
运行结果如下
