• 第二周作业(更新)


    一、思路

    一辆汽车的通过流程为:

    起落杆处于落下状态,通行灯为红灯。
    汽车进入门禁系统,入闸传感器值变为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(); 
        }
    };   
    

    三、测试结果

  • 相关阅读:
    org-mode
    MediaWiki
    Creole
    AsciiDoc
    markdown
    图像对比度调整的simulink仿真总结
    Altera的几个常用的Synthesis attributes(转载)
    红外发送接收电路(转载)
    使用反相器的rc振荡电路
    两个小电路
  • 原文地址:https://www.cnblogs.com/ouxiaohui/p/6227232.html
Copyright © 2020-2023  润新知