第二周作业

第二周作业

一、思路:

一辆汽车的通过流程为:

  • 起落杆处于落下状态,通行灯为红灯。
  • 汽车进入门禁系统,入闸传感器值变为True。
  • 控制起落杆上升,直到起落杆位置传感器到达升起位置。
  • 通行灯为绿灯。
  • 汽车离开门禁,触发汽车出闸传感器值为True。
  • 控制起落杆下降,直到起落杆位置传感器到达落下位置。
  • 通行灯变为红灯

需控制的是起落杆和通行灯,需测试的是汽车进入还是出去。

由此得到状态机图示:

二、代码

主函数:

#include "./head.h"
#include <iostream>

using namespace std;
int main()

{

GurdSystem gs;
    cout << "测试车辆进入.." << endl;
    gs.carIn();
    cout << "测试车辆出去..." << endl;
    gs.carOut();
    return 0;
}

头文件:

#include <iostream>
using namespace std;

class Lifter{ //起落杆类

private:
    bool state; //私有值表示自身状态,0落下 1升起

public:
    Lifter(){
    state = false; //构造函数,默认起落杆处于降下状态
    }

    void setstate(bool s){ //函数方法该参
  state=s;
 }

    bool getstate(){ //获取参数函数
  return state;
 }

    void change(){ //主要功能 升降起落杆
     if(getstate()==0){
      cout << "___________升起起落杆___________" << endl;
   setstate(true);
  }
     else{
  cout << "___________降下起落杆___________" << endl;
  setstate(false);
  }
 }

};

class Light{ //灯类

private:
    bool state; //私有值表示自身状态,0红灯 :1绿灯
public:
    Light(){
    state = false; //构造函数,默认false表示红灯状态
    }
    void setstate(bool s){ //函数方法改参
  state=s;
 }

    bool getstate(){ //函数方法获取参数
  return state;
 }

   void change(){ //主要功能 升降起落杆
  
     if(getstate()==0){
      cout << "___________绿灯亮起___________" << endl;
   setstate(true);
  }
     else{
  cout << "___________红灯亮起___________" << endl;
  setstate(false);
  }
 }

};
class GurdSystem {
private:
    Lifter lifter;
    Light light;
bool state; //表示是否有车进入

public:
    GurdSystem(){ //初始化杆和灯类
       Lifter lifter;
       Light light;
    state=false; //默认表示无车进入
    }
    void setState(bool s){ //函数方法改参
  state=s;
 }
 
    void carIn() {  // 测试车进入
     setState(true);
     cout << "___________汽车准备入门___________" << endl;
     light.change();//改变灯
  lifter.change(); //改变起落杆
    }

    void carOut()  { //测试车出去
    setState(false);
    cout << "___________汽车准备出门___________" << endl;
    light.change();
 lifter.change();
    }
};  

三、测试结果:

 

posted @ 2016-12-05 22:25  小灰爱吃鱼  阅读(181)  评论(1编辑  收藏  举报