模拟电梯载人实验

Elevator.h

class Elevator{
public:
    Elevator();
    ~Elevator();
    void getNowNum();    
    void SetToNum(int);
    void UP();
    void DOWN();
private:
    int NowNum;
    int ToNum;

};

Elevator.cpp

#include<iostream>
#include<Windows.h>
#include"Elevator.h"    
using namespace std;
Elevator::Elevator()
{
    NowNum = 1;
    ToNum = 10;
}
Elevator::~Elevator()
{
}
void Elevator::getNowNum()
{    
    HANDLE consolehwnd;
    consolehwnd = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(consolehwnd, 10);
    cout << "您现在在" << NowNum << "楼" << endl;
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY
        | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
    cout << "请选择:";
    cout << "1.上升    2.下降    3.退出    " ;
}
void Elevator::SetToNum(int a)
{
        ToNum = a;    
}
void Elevator::UP()
{
    int i;
    if (ToNum < NowNum)    
            cout << "你不能上行" << endl;
    else if (ToNum == NowNum)
            cout << "亲,你就在这一层了,别调皮" << endl;
    else
    {
            for ( i = NowNum+1; i <= ToNum & i<=10; i++)
        {
            cout << "现在到了第" << i << "层了,我们就快到了" << endl;
            Sleep(500);
        }
        if (ToNum>10)
        {
            ToNum = i-1;
            cout << "以上楼层正在建设中,您只能到这里了。" << endl;
            NowNum = 10;
        }
        else    
        NowNum = ToNum;
    }
    
}
void Elevator::DOWN()
{
    int i;
    if (ToNum > NowNum)
            cout << "你不能下行" << endl;
    else if (ToNum == NowNum)
            cout << "亲,你就在这一层了,别调皮" << endl;
    else
    {
        for ( i = NowNum - 1; i >= ToNum & i>=1; i--)
        {
            cout << "现在到了第" << i << "层了,我们就快到了" << endl;    
            Sleep(500);
        }
        if (ToNum<1)
        {
            ToNum = i+1;
            cout << "地下室正在挖,您过两天才能下去。" << endl;
            NowNum = 1;
        }
        else    
        NowNum = ToNum;
    }
    
}

demo.cpp

#include<iostream>
#include<Windows.h>
#include"Elevator.h"
using namespace std;
int main()
{

Elevator e1;
    int choice,to;
    SYSTEMTIME time;    
    GetLocalTime(&time);        
    printf("%4d年%02d月%02d日 %02d:%02d:%02d 星期%1d\n", time.wYear, time.wMonth, time.wDay, time.wHour, time.wMinute, time.wSecond,  time.wDayOfWeek);        
    cout << "欢迎乘坐电梯\n" << endl;
    while (1)
    {    
        
        e1.getNowNum();
        cout<<"输入你的选择:";
        cin >> choice;
        e1.SetToNum(to);
        switch(choice)
        {
            case 1:{
                cout<<"输入你要去的楼层:"<<endl;
                cin>>to;
                e1.SetToNum(to);
                e1.UP();break;
                }
            case 2:{
                cout<<"输入你要去的楼层:"<<endl;
                cin>>to;
                e1.SetToNum(to);
                e1.DOWN();break;
            }                
            case 3:
                return 0;
            default:    
                cout<<"输入错误!"<<endl;
        }
        
        
        
        
        
    }
    
    system("pause");
    return 0;
}

c++初学(电梯实验)的更多相关文章

  1. c++初学(电梯实验加强版)

    Elevator.h class Elevator{public:    Elevator();    ~Elevator();    void getNowNum();        void Se ...

  2. 基于单层决策树的AdaBoost算法原理+python实现

    这里整理一下实验课实现的基于单层决策树的弱分类器的AdaBoost算法. 由于是初学,实验课在找资料的时候看到别人的代码中有太多英文的缩写,不容易看懂,而且还要同时看代码实现的细节.算法的原理什么的, ...

  3. 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)

    实验配套软件: https://download.csdn.net/download/qq_39932172/11221584 实验指导用书: 教师版: https://download.csdn.n ...

  4. PHP基础班初学心得:脑洞实验-JS变量存储函数与return的一些问题

    本人刚参加PHP基础班培训第一天,由于之前毫无基础,分享的心得可能不规范,方法也许也"旁门左道",不能保证质量,只作自己总结学习,也希望能帮助到同样是初学者的朋友们,共同进步. 在 ...

  5. 201771030115-牛莉梅 实验一 软件工程准备-<初学《构建之法--现代软件工程》的疑问>

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE 这个作业要求链接 https://www.cnblogs.com/nwnu- ...

  6. SQL学习(1)初学实验:SQL Server基本配置及基本操作

    网络配置.远程连接配置: 防火墙设置: SQL Server的默认端口号是1433. 网络配置: SQLServer Configuration Manager中的客户端协议,众多IP中随便选一个,比 ...

  7. 初学 Java Web 开发,请远离各种框架,从 Servlet 开发

    Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处 理有关,形成一个基础,在开发别的应用项目的时候则可以从 ...

  8. 初学javaweb,远离各自框架

    OSCHINA 软件库有一个分类--Web框架,该分类中包含多种编程语言的将近500个项目. Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项 ...

  9. (2015秋) 作业6:(电梯系统之结对编程 I 总分=2*50 分)

    电梯系统 0. 背景 南通大学钟秀校区“主教学楼” 用 2 部电梯(连地下室共9层):每到下课.上课前都特别拥挤,大家希望改进已有的电梯调度算法,满足学生和老师快速乘坐电梯的需要.因此,需要重新设计一 ...

随机推荐

  1. css 内联与块

    内联元素可以理解为不能直接设置宽度和高度元素,比如span,你为他设置宽度和高度没有效果,除非你把它设置成块级元素. 如下面的代码把display:block;属性值去掉的话,宽度和高度都不会起作用了 ...

  2. public private proteccted区别

    public公共,加上这个修饰的类或属性,可以在同一个包或者别的包里面访问 private私有的,加上这个修饰的类或属性,只能在同类里访问,同包和别的包不能访问 protected保护,加上这个修饰的 ...

  3. Ubuntu新建用户

    新建用户的命令是useradd,修改密码是passwd,如下: sudo useradd linc sudo passwd linc 但是问题出现了,home目录下并没有相对应的linc目录. 原来u ...

  4. Qt5:Qt中一些函数功能介绍

    1  .setContentsMargins 该函数用于设置窗口客户区中,四周空白边框的尺寸 , 类似于 word 中的 页边距设置 2.canonical Path 返回文件路径的规范路径 , 也就 ...

  5. Quartz总结(四):动态修改定时器二

    前文:http://www.cnblogs.com/LiuChunfu/p/5598806.html 提到了一种动态修改定时器的方法, 其本质就是在job方法中注入Schedular的对象,从Sche ...

  6. c++中冒号(:)的作用

    1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; X ...

  7. dlopen函数详解

    Linux提供了一套API来动态装载库.下面列出了这些API: - dlopen,打开一个库,并为使用该库做些准备.- dlsym,在打开的库中查找符号的值.- dlclose,关闭库.- dlerr ...

  8. 计算机学院大学生程序设计竞赛(2015’12) 1004 Happy Value

    #include<cstdio> #include<cstring> #include<cmath> #include<vector> #include ...

  9. 由获取子元素的方法find和children所获

    html代码如下 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://ww ...

  10. The 2013 ACMICPC Asia Regional Chengdu

    还有19天出发北京站,今年北京站的出题方是上交,去年他们出的成都现场的赛题,首先复盘一下. 去年的成都是我经历的第一次现场赛,也是近距离第一次见到了CLJ的真人,最后也是被虐惨了,那时候是声闻大神带着 ...