Demo entry 6838527

1

   

Submitted by anonymous on Jun 11, 2019 at 10:38
Language: C++. Code size: 2.8 kB.

#include<iostream>

using namespace std;

struct item
{
	char *name;
	int price;
	int cnt;
};
item Menu[6] = {"핫식스",1000,0,"레드불",3000,0,"컨피던스",600,0,"포카리스웨트",1200,0,"비타500",700,0,"비락식혜",750,0};

class VendingMachine
{
private:
	int totalcnt = 0;
	int totalamount = 0;
public:
	int itemnum;
	int money;
	VendingMachine()
	{
		cout << "자동판매기 객체가 생성되었습니다." << endl;
	}
	~VendingMachine()
	{
		cout << "자동판매기 객체가 제거되었습니다." << endl;
	}
	void setMenu()
	{
		for (int i = 0;i < 6;i++)
		{
			cout << "추가할 메뉴를 입력하여주세요.(종료:-1)" << endl;
			cin >> Menu[i].name;
			if (Menu[i].name == "-1")
				break;

			cout << "가격을 입력하여주세요." << endl;
			cin >> Menu[i].price;
		}
	}
	void getMoney()
	{
		cout << "금액을 입력하여주세요 : ";
		cin >> money;
	}
	void display()
	{
		cout << "=============================================" << endl;
		cout << " 현재 소지 금액 : " << money << "원" << endl;
		for (int i = 0;i < 6;i++)
		{
			printf("%3d %-12s : %4d\n", i+1,Menu[i].name, Menu[i].price);
		}
		cout << "구입할 항목의 번호를 입력하여 주세요(종료:0)" << endl;
		cout << "=============================================" << endl;
	}
	void selectItem()
	{
		cin >> itemnum;
	}
	void exitDisplay()
	{
		cout << "=============================================" << endl;
		cout << "이용해주셔서 감사합니다. " << endl;
		cout << "남은 금액은 " << money << "원 이며 현재까지" << endl;
		for (int i = 0;i < 6;i++)
		{
			totalcnt += Menu[i].cnt;
			totalamount += (Menu[i].cnt*Menu[i].price);
			printf("%-12s %2d 개\n", Menu[i].name, Menu[i].cnt);
		}
		cout << "총 " << totalcnt << "개를 구입하셨으며," << totalamount << "원을 사용하셨습니다." << endl;
		cout << "=============================================" << endl;
	}
};

class Payment : public VendingMachine
{
public:
	void buyItem()
	{
		if (money >= Menu[itemnum-1].price)
		{
			money = money - Menu[itemnum-1].price;
			Menu[itemnum-1].cnt++;
			cout << Menu[itemnum-1].name << " 구입 완료." << endl;
			cout << "남은 금액은" << money << "원 입니다." << endl;
		}
		else 
		{
			cout << "보유하고 계신 금액이 " << Menu[itemnum-1].price - money << "원이 모자랍니다. 다른메뉴를 골라주십시오." << endl;
		}
	}
};

int main()
{
	VendingMachine *Venmac = new Payment;
	// 금액 입력
	while (true)
	{
		Venmac->getMoney();
		// 입력받은 금액의 범위가 음수일 경우 다시 입력받는다.
		if (Venmac->money > 0)
			break;
		else
			cout << "입력받은 금액이 음수입니다. 다시 입력하여 주세요." << endl;
	}

	// 자동판매기 
	while (true)
	{
		Venmac->display();
		Venmac->selectItem();
		if (Venmac->itemnum == 0)
			break;
		else if (Venmac->itemnum < 0 || Venmac->itemnum > 6)
		{
			cout << "상품의 범위가 잘못되었습니다. 다시 입력하여주세요." << endl;
			continue;
		}
		((Payment*)Venmac)->buyItem();
		if (Venmac->money == 0)
		{
			cout << "소유하고 계신 금액을 모두 소진하였습니다. 프로그램을 종료합니다." << endl;
			break;
		}
	}
	Venmac->exitDisplay();
	delete Venmac;
}

This snippet took 0.01 seconds to highlight.

Back to the Entry List or Home.

Delete this entry (admin only).