模拟电梯载人实验

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. windows下spark开发环境配置

    http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...

  2. Android Studio的使用(十一)--每次打开时选择项目,而不是直接进入上次项目

    1.打开的时候选择打开哪一个项目 2.需要在设置System Setting,不要勾选Reopen last project on startup项.

  3. CF 299 div2 C 博弈

    http://codeforces.com/contest/299/problem/C 题目大意: 给两个0,1串保证长度都是2*n(偶数),问,Yaroslav, Andrey按照顺序取,首先是ya ...

  4. Brain Network (medium)

    Brain Network (medium) Further research on zombie thought processes yielded interesting results. As ...

  5. JAVA List<T> 如何初始化

    通常用法:List<类型> list=new ArrayList<类型>();List是一个接口,不可实例化,通过实例化其实现类来使用List集合,他的最常用实现类ArrayL ...

  6. python WEB接口自动化测试之requests库详解

    由于web接口自动化测试需要用到python的第三方库--requests库,运用requests库可以模拟发送http请求,再结合unittest测试框架,就能完成web接口自动化测试. 所以笔者今 ...

  7. Hadoop远程调用机制

  8. BodyContent揭秘及定制复杂的JSP标签

    BodyContent揭秘及定制复杂的JSP标签 标签: jspintegerwrapperclass设计模式 2010-08-30 11:30 4555人阅读 评论(0) 收藏 举报  分类: HT ...

  9. 深入浅出Ajax(四)

    function initPage() { btn.onmouseover = buttonOver; btn.onmouseover = buttonOut; } 如上,浏览器只会运行指定的最后一个 ...

  10. Dojo和jQuery区别

    Dojo类似jQuery,且用法也差不多,但是Dojo属于重量级的框架,自带的表单验证,Grid,tree等控件. 在选择上,个人觉得轻量级的框架比较好,因为方便引入第三方的,有特色的库. 就像选择S ...