第二周作业

第二周作业
系统有两种外部输入,即“车进入”(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;
};

 

运行结果如下

 

posted @ 2016-12-09 16:36  茅化荃  阅读(150)  评论(1)    收藏  举报