U E D R , A S I H C RSS

Vending Machine/세연/재동

~cpp 
#include <iostream> 
using namespace std;

struct drink
{
    char * name;
    int price, amount;
};

class VendingMachine
{
private:
    int _money;
    int _selectMoney;
	int _insertAmount;
    int _maxNum;
	drink s_drink[5];
public:
    VendingMachine();
    void insertMoney();
    void buyDrink();
    void takeBackMoney();
    void insertDrink();
	void showMainMenu();
	void showDrinkMenu();
	bool isMoney(int arg);
	bool isBuyableDrink(int arg);
	bool isSelectableDrink(int arg);
}; 

VendingMachine::VendingMachine() 
{ 
    _money = 0;
    _maxNum = 5;

	char * name[] = {"coke","juice","tea","cofee","milk"};
	int price[] = {400,600,500,450,350};

	for(int i=0;i<_maxNum;i++)
	{
		s_drink[i].name = name[i];
		s_drink[i].price = price[i];
		s_drink[i].amount = 10;
	}
}

void VendingMachine::insertMoney() 
{
	int tempInsertMoney = 0;
    cout << " . 10, 50, 100, 500, 1000  : "; 
    cin >> tempInsertMoney; 
    if(isMoney(tempInsertMoney))
		_money += tempInsertMoney;
    else
		cout << "10, 50, 100, 500, 1000 .  \n";             
    cout << _money << " \n"; 
} 
 
void VendingMachine::buyDrink() 
{
	int selectBuyDrink;
	showDrinkMenu();
	cout << "    ";
    cin >> selectBuyDrink; 
    if(isSelectableDrink(selectBuyDrink))
	{
		if(isBuyableDrink(selectBuyDrink))
		{ 
			s_drink[selectBuyDrink - 1].amount--; 
			_money -= s_drink[selectBuyDrink - 1].price; 
		} 
		else
			cout << "   \n";
	}
    cout << _money << " \n";
}

void VendingMachine::takeBackMoney() 
{ 
    cout << "" << _money << " \n"; 
    _money = 0; 
} 

void VendingMachine::insertDrink() 
{ 
	int selectInsertDrink;
    for(int i = 0 ; i < _maxNum ; i++)
		cout << i + 1 << "." << s_drink[i].name << "\t" << s_drink[i].amount << "\n"; 
    cout << "   택하 : "; 
    cin >> selectInsertDrink; 
    cout << "     : "; 
    cin >> _insertAmount; 

    if(isSelectableDrink(selectInsertDrink))
		s_drink[selectInsertDrink - 1].amount += _insertAmount;

    cout << " \n"; 
    showDrinkMenu();
}

void VendingMachine::showMainMenu()
{
	cout << "\n \n"; 
    cout << "1. \n"; 
    cout << "2. \n"; 
    cout << "3.  \n"; 
    cout << "4. \n"; 
	cout << "0.\n";  
    cout << " 택하 : "; 
} 

void VendingMachine::showDrinkMenu()
{
	cout << "\t\t\t\n"; 
    cout << "------------------------------------\n"; 
    for(int i = 0 ; i < _maxNum ; i++)
	{
		cout << i + 1 << "."  << s_drink[i].name << "\t\t";
		cout << s_drink[i].price << "\t" << s_drink[i].amount << "\n";
	}
    cout << "\n " << _money << " \n";
}

bool VendingMachine::isMoney(int arg)
{
	if(arg == 10 || arg == 50 || arg == 100 || arg == 500 || arg == 1000)
		return true;
	else
		return false;
}

bool VendingMachine::isBuyableDrink(int arg)
{
	if((_money - s_drink[arg - 1].price) >= 0 && s_drink[arg - 1].amount >= 1)
		return true;
	else
		return false;
}
bool VendingMachine::isSelectableDrink(int arg)
{
	if(arg > 0 && arg < 6)
		return true;
	else
		return false;
}
int main() 
{ 
    VendingMachine vendingMachine; 

    int choice = -1;

    while(choice != 0) 
    {
		vendingMachine.showMainMenu();
        cin >> choice; 
        if(choice >= 0 && choice <= 4) 
        { 
            switch(choice) 
            { 
            case 1: 
                vendingMachine.insertMoney(); 
                break; 
            case 2: 
                vendingMachine.buyDrink(); 
                break; 
            case 3: 
                vendingMachine.takeBackMoney(); 
                break; 
            case 4: 
                vendingMachine.insertDrink(); 
                break;
            } 
        } 
        else
			cout << "  .   \n"; 
    }
	cout << " !!\n\n";
    return 0; 
}

~cpp 
1.  211  144   32% 
2.    buy()함 insertDrink()함  
3. 클     형
4. showDrinkMenu() 함 private 
5.   ...
6.      ...-,-;;;

See Also CppStudy_2002_2

See Also VendingMachine/

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:22
Processing time 0.0159 sec