模拟电梯载人实验

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. C# 上传文件至远程服务器

    C# 上传文件至远程服务器(适用于桌面程序及web程序) 2009-12-30 19:21:28|  分类: C#|举报|字号 订阅     最近几天在玩桌面程序,在这里跟大家共享下如何将本地文件上传 ...

  2. [转]PHP经验——PHPDoc PHP注释的标准文档

    文档翻译自:http://en.wikipedia.org/wiki/Phpdoc 标记 用途 描述 @abstract   抽象类的变量和方法 @access public, private or ...

  3. css伪类 伪元素

    之前写了一篇 <详解 CSS 属性 - :before && :after> 的博文,当时自己没分清楚伪元素和伪类,所以在文章内把概念混淆了,庆幸 @riophae 兄指正 ...

  4. jstat undocumented

    jstat -J-Djstat.showUnsupported=true -name btrace.com.sun.btrace.samples.ThreadCounter.count 11674 h ...

  5. Size Balanced Tree(SBT) 模板

    首先是从二叉搜索树开始,一棵二叉搜索树的定义是: 1.这是一棵二叉树: 2.令x为二叉树中某个结点上表示的值,那么其左子树上所有结点的值都要不大于x,其右子树上所有结点的值都要不小于x. 由二叉搜索树 ...

  6. 背景透明IE和rgba

    opacity:0.5; filter:Alpha(opacity=40); //IE8以下 当我们设置opacity透明时,opacity后代元素会随着一起具有透明性,所以我们Opacity中的文字 ...

  7. Linux:网络yum源设置

    网络yum源,最大的网易(163)算是一个,无论是速度还是软件版本,都非常的不错,将yum源设置为163yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到.具体设置方法如下: 1 ...

  8. 在Delphi中使用C++对象(转)

    源:http://blog.csdn.net/henreash/article/details/7352335 Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难 ...

  9. RMQ问题再临

    RMQ问题再临 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 终于,小Hi和小Ho踏上了回国的旅程.在飞机上,望着采购来的特产——小Hi陷入了沉思:还记得在上上周他们去 ...

  10. vmware中的bridge、nat、host-only的区别

    概述: VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模 ...