⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 模拟程序包括一个时钟
💻 CPP
字号:
#include <iostream>
#include<windows.h>
#include<time.h>
#include<conio.h>          //用于getch()函数的调用
using namespace std;

class Time                 //time类的定义
{
public:
    void waittime();       //电梯上升或下降等待时间
	void timer();          //演示停顿时间
    int m;
};

void Time::waittime()
{
	int m=5;
	while(m)
{
		cout<<m;
		Sleep(1000);
		m--;
		cout<<'\b';
	}
}


void Time::timer()
{ 
	Sleep(1000);                     //停顿1秒
}


class Person                        //persom类的定义
{
public:
	void persons();                 //产生一个人随机到达一层或二层
	void in();                      //人进入电梯
	void out();                     //人走出电梯
	int WhichOnStorey();            //输出所在楼层
	int WhichGoStorey();            //输出要去楼层

private:
	int OnStorey;//
	int GoStorey; //
	int PersonNum;                  // 编号
	static int Num;                 // 已经产生的总人数
	Time y;
};


int Person::Num=0;
void Person::persons()
{
	srand( (unsigned)time( NULL ) );
	OnStorey = rand()%2 + 1;            //随机产生到一层或二层的人
	if (OnStorey==1) GoStorey = 2;
	else GoStorey = 1;
	PersonNum = ++Num;
	cout << "一个人到来,编号:" << PersonNum << ",他将会在" << WhichOnStorey() << "层守候电梯,然后去" << WhichGoStorey() << "层。" <<endl; 
	y.timer();
}


inline int Person::WhichOnStorey() 
{
	return OnStorey;
}


inline int Person::WhichGoStorey()
{
	return GoStorey;
}


inline void Person::in()
{
	cout<<"此人进入电梯"<<endl;
	y.timer();
}

inline void Person::out()
{
	cout<<"此人走出电梯"<<endl;
	y.timer();
}

 class Floor                                //Floor类的定义
{
public:
	Floor(){state=1;LeftTime=0;}            //开始时,电梯停在1楼
	void Up1to2();                          //电梯上升
	void Down2to1();                        //电梯下降
	void light();                           //电梯中灯亮
	void bell();                            //铃响 
	void Stop();                            //电梯停止
	void open();                            //打开门
	void close();                           //关闭门
	int onstate();                          //输出电梯所在楼层

private:
	int state;
    int LeftTime;    // 剩余到达时间
    Time x;
};



void Floor::Up1to2()
{
	cout<<"电梯正在向2楼出发"<<endl;
	state++;
	x.waittime();
}


void Floor::Down2to1()
{
	cout<<"电梯正在向1楼出发"<<endl;
	state--;
	x.waittime();
}


void Floor::light()
{
	cout<<"电梯里的电灯亮了"<<endl;
	x.timer();
} 

void Floor::bell()
{
	cout<<"发出铃声"<<endl;
	x.timer();
}


void Floor::Stop()
{
	cout<<"电梯停止,到达目的楼层"<<state<<endl;
	x.timer();
}


inline int Floor::onstate()
{
	return state;
}


inline void Floor::open()
{
	cout<<"电梯门打开"<<endl;
    x.timer();
}

inline void Floor::close()
{
	cout<<"电梯门关闭"<<endl;
    x.timer();
}


class Button                        //button类的定义
{
public:
	Button(){buttons=0;}
	void button1();                 //按下按钮1
	void button2();                 //按下按钮2
	void button0();                 //按钮归零

private:
	int  buttons;
	Time z;
};


inline void Button::button1()
{
	cout<<"按下1层的按钮"<<endl;
	buttons=1;
	z.timer();
}


inline void Button::button2()
{
	cout<<"按下2层的按钮"<<endl;
	buttons=2;
	z.timer();
}


inline void Button::button0()
{
	buttons=0;
	cout<<"电梯按钮复位"<<endl;
}


class Elevator                 // elevator类的定义
{
public:
	void elevators();
private:
    int GoStorey;
    int state;
    int OnStorey;
    int PersonNum;  // 编号
    static int Num; // 已经产生的总人数
	Person m1;
	Button m2;
	Floor m3;
	Time m4;
};



void Elevator::elevators()
{
	m1.persons();
	if(m1.WhichOnStorey()==1)
		m2.button2();
	else 
		m2.button1();


	while (m1.WhichGoStorey()==m3.onstate())
	{
		while (m3.onstate()==1)
		{
			cout<<"电梯还在一楼,请等待..."<<endl;
			m4.timer();
			m3.Up1to2();
		}
		break;
		if(m3.onstate()==2)
			cout<<"电梯还在二楼,请等待..."<<endl;
		m4.timer();
		m3.Down2to1();
	}
	if(m1.WhichOnStorey()==1)
	{    
		m3.open();
		m1.in();
		m3.Up1to2();
	}
	else 
	{
		m3.open();
		m1.in();
		m3.Down2to1();
	}
	m3.light();
	m3.bell();
	m3.Stop();
	m1.out();
	m3.close();
}



void mulu()                    //界面函数
{
	Elevator s1;
	void impress();
	system("cls");
	system("color 2");
	cout<<endl;
	cout <<"\t            学生姓名: 文茂齐"<<"     指导教师:谭平"<<endl<<endl;
		

	cout<<"\t  ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇" <<endl
		<<"\t  ◇                                                      ◇" <<endl
		<<"\t  ◇                 电梯系统模拟程序                     ◇" <<endl
		<<"\t  ◇                                                      ◇" <<endl
		<<"\t  ◇                1.  程序功能描述                      ◇" <<endl
		<<"\t  ◇                                                      ◇" <<endl
		<<"\t  ◇                2.  程序功能演示                      ◇" <<endl
		<<"\t  ◇                                                      ◇" <<endl
		<<"\t  ◇                3.  退出电梯系统                      ◇" <<endl
		<<"\t  ◇                                                      ◇" <<endl
		<<"\t  ◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇◇" <<endl <<endl <<"\t\t";

	int n;
    cin>>n;
	switch (n)
		{
		case 1:
		   impress();
            break;
		case 2:
			system("cls");
			int a;
			s1.elevators();


			cout<<"演示结束"<<endl;

			cout<<"是否还要进行其他操作?1.是;2.否"<<endl;
			cin>>a;
			if(a==1)
			{void mulu();mulu();}
			    break;
		case 3:
			cout << endl << "\t\t谢谢使用!!!" << endl << endl << "\t\t";
			exit(0);
			break;
		default:
			break;
	}
}

void impress()             //功能描述函数
{
	system("cls");
	cout<<"                              功能描述                         "<<endl;
	cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
	cout<<"程序自动生成一个人随机来到电梯的一层或二层"<<endl
		<<"如果他在二层要去一层而电梯在一层,则电梯自己上升到二层接他,反之亦然"<<endl;
	cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<<endl;
	cout<<"任意键返回"<<endl;
	getch();
	void mulu();
	mulu();
}


int main()              //主函数
{
void mulu();
mulu();
return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -