zoukankan      html  css  js  c++  java
  • 第二周作业

    第二周作业

    一、思路:

    一辆汽车的通过流程为:

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

    三、测试结果:

  • 相关阅读:
    C语言学习_C如何在一个文件里调用另一个源文件中的函数
    C语言学习_include<>与include""的区别
    C语言学习_一个简单程序的解释与C学习方法概括
    python_list和tuple互转
    C语言学习_恶搞小程序
    Linux命令(基础1)
    Linux基础配置
    面向对象知识补充1
    linux系统centOS在虚拟机下的自定义安装
    sql注入
  • 原文地址:https://www.cnblogs.com/ouxiaohui/p/6135781.html
Copyright © 2011-2022 走看看