模拟电梯载人实验

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. HDU 3726 Graph and Queries 平衡树+前向星+并查集+离线操作+逆向思维 数据结构大综合题

    Graph and Queries Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  2. reflow和repaint区别?

    作者:zccst 重绘和重排之前也知道,但也没有可以详细了解他们的机制,区别,以及对性能的影响. A repaint occurs when changes are made to an elemen ...

  3. dom4j解析xml实例

    dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异.功能强大和极易使用等特点 所用jar包:dom4j-1.6.1.jar 需要解析的xml文件:people.xm ...

  4. UML关系总结

    用例图: 1.扩展关系:如果已有一个用例,在这个用例的基础(该用例是完整的)上加入新的动作形成了另一个用例,即后者是通过继承前者的属性并加入新的内容而来的,则前者通常称为通用化用例,后者常为扩展用例. ...

  5. manecher

    #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> us ...

  6. Quartz定时调度

    测试类 import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; ...

  7. SVN MERGE 和冲突

    摘要:最佳做法是避免冲突.冲突时,不要把branch merge到trunk. 先由最新版本的trunk得到branch,然后再修改文件,直接merge过去就行.这样不会有冲突.先用svn merge ...

  8. C++ Builder多线程编程技术经验谈(转)

    源:C++ Builder多线程编程技术经验谈 线程之可行性   在很多情况下,可能需要为程序创建线程.这里给出其中一些可能性: (1)如果创建的是一个多文档接口(Multiple Document ...

  9. c语言学习基础:[1]开发工具介绍

    标签:c语言 1 2 3 4 分步阅读 学习编程语言的童鞋们一开始接触到的最多的估计就是C语言了,其次才是什么java.c++等,可以说学习c语言是我们走向编程世界的一座桥梁,学好它,对于我们学习和研 ...

  10. MyEclipse使用经验归纳