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();
        }
    };  

    三、测试结果:

  • 相关阅读:
    美团容器平台架构及容器技术实践
    【人物志】美团首席科学家夏华夏:不断突破边界的程序人生
    Category 特性在 iOS 组件化中的应用与管控
    浅谈大型互联网企业入侵检测及防护策略
    【基本功】深入剖析Swift性能优化
    CAT 3.0 开源发布,支持多语言客户端及多项性能提升
    安装window下的redis,redis可视化管理工具(Redis Desktop Manager)安装,基础使用,实例化项目
    .Net Core Redis的使用
    焦点IT Redis安装与配置( Windows10 或Windows server)
    用VScode配置Python开发环境
  • 原文地址:https://www.cnblogs.com/ouxiaohui/p/6135781.html
Copyright © 2011-2022 走看看