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

📄 machinestate.h

📁 饮料自动售货机
💻 H
字号:
#ifndef MACHINESTATE_H
#define MACHINESTATE_H

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <string>

using namespace std;

class CDrinkMachine;

//状态接口
class CState
{
public:
	virtual void InsertCoin(double dCoinValue) = 0; //塞入钱 
	virtual double EjectCoin() = 0; //退钱
	virtual void SelectDrinkButton(int nkindNum) = 0;//选择饮料
	virtual void DispenseDrink(int nkindNum) = 0; //发放饮料
};


//没有足够钱的状态
class CNoCoinState: public CState
{   
public:
	CDrinkMachine* m_DrinkMachine;
public:
	CNoCoinState(CDrinkMachine* drinkMachine);
	void InsertCoin(double dCoinValue);
	double EjectCoin();
	void SelectDrinkButton(int nkindNum);
	void DispenseDrink(int nkindNum); 
};


//有足够钱的状态
class CHaveCoinState: public CState
{
public:
	CDrinkMachine* m_DrinkMachine;
public:
	CHaveCoinState(CDrinkMachine* drinkMachine);
	void InsertCoin(double dCoinValue);
	double EjectCoin();
	void SelectDrinkButton(int nkindNum);
	void DispenseDrink(int nkindNum); 
};


//出售的状态
class CSoldState: public CState
{
public:
	CDrinkMachine* m_DrinkMachine;
public:
	CSoldState(CDrinkMachine* drinkMachine);
	void InsertCoin(double dCoinValue);
	double EjectCoin();
	void SelectDrinkButton(int nkindNum);
	void DispenseDrink(int nkindNum); 
};


//售完的状态
class CSoldOutState: public CState
{
public:
	CDrinkMachine* m_DrinkMachine;   
public:
    CSoldOutState(CDrinkMachine* drinkMachine);
	void InsertCoin(double dCoinValue);
	double EjectCoin();
	void SelectDrinkButton(int nkindNum);
	void DispenseDrink(int nkindNum); 
};

#endif

⌨️ 快捷键说明

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