염치없는 놈입니다. 기말고사 숙제로 자판기 프로그램을
짜는 것입니다. 염치 불구 하고 이렇게 올립니다.
소스는 어케어케 구했는데 주석을 달아야 합니다. 제가 프로그래밍에
문외한 이라서...구석 좀 달아주세여. 이 소스를 약간 변형하셔도
좋구여. 제발 부탁합니다. 오늘 아침 8시까지 입니다
부탁합니다.
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
//#include "machine2.h"
typedef unsigned short int USint;
class MACHINE
{
public:
char input[10];
USint get_total;
char menus[4][20];
USint price[4];
static USint LAST_MONEY;
public:
void MACHINE_start();
void MACHINE_end();
void start();
void show_menu();
void set_menu();
int select();
void naonda(int get_select);
bool q_again();
};
USint MACHINE::LAST_MONEY=1;
void MACHINE::MACHINE_start()
{
get_total=0;
char m[4][20]={"콜라","메실","바나나우유","사이다"};
USint p[4]={500,550,600,700};
for(int i=0;i<4;i++){
strcpy(menus[i],m[i]);
price[i]=p[i];
}
}
void MACHINE::MACHINE_end()
{
LAST_MONEY=1;
cout << "잔돈 출구" << get_total << endl;
}
bool MACHINE::q_again()
{
if(LAST_MONEY==0)
return false;
else return true;
}
void MACHINE::start()
{
cout << "------관리자모드m: x-나가기 -----" << endl;
cout << "INSERT MONEY->";
cin >> input;
}
void MACHINE::show_menu()
{
char *coin;
coin=input;
if(0==strcmp(input,"m")){
set_menu();
start();
}
else if(0==strcmp(input,"x")) strcpy(input,"x");
else{
get_total+=atoi(coin);
char star[4];
if(get_total != 0 ){
if(get_total>=price[3]){ star[0]='O';star[1]='O';star[2]='O';star[3]='O';} //메뉴수량 추
가시 보완! else if(get_total>=price[2]){star[0]='O';star[1]='O';star[2]='O';star[3]='X';}
else if(get_total>=price[1]){star[0]='O';star[1]='O';star[2]='X';star[3]='X';}
else if(get_total>=price[0]){star[0]='O';star[1]='X';star[2]='X';star[3]='X';}
else { star[0]='X';star[1]='X';star[2]='X';star[3]='X';}
}
for(int i=0;i<4;i++) cout << i+1 << "번 -<"<< star[i] << ">-"<< price[i] << "원 "<< menus[i] << endl;
}
}
void MACHINE::set_menu()
{
int sel;
cout << "1-메뉴변경/2-가격변경/3-나가기 ";
cin >> sel;
while(sel!=3){
switch(sel){
case 1 : {
cout << "새로운 메뉴를 입력해주세요";
for(int i=0;i<4;i++){
cout << i+1 << "------->";
cin >> menus[i];
}
break;
}
case 2 : {
cout << "새로운 가격 입력";
for(int j=0;j<4;j++){
cout << j+1 << menus[j] << "--------->";
cin >> price[j];
}
break;
}
default : {
cout << "입력이 잘못됬음";
break;
}
}
cout << "1-메뉴변경/2-가격변경/3-나가기";
cin >> sel;
}
}
int MACHINE::select()
{
int sel=0;
if(q_again()==true){
cout << "선택=>";
cin >> sel;
}
else sel=5;
return sel;
}
void MACHINE::naonda(int get_select)
{
switch(get_select){
case 0 : cout << "-------------";
case 1 : {
if(get_total >= price[0]){
cout << menus[0] << "가나왔습니다!" << "잔액" << get_total-price[0] << "" ;
get_total-=price[0];
break;}
else cout << "잔액부족!"; break;
}
case 2 : {
if(get_total >= price[1]){
cout << menus[1] << "가나왔습니다!"<< "잔액" << get_total-price[1]<< "" ;
get_total-=price[1];
break;}
else cout << "잔액부족!"; break;
}
case 3 : {
if(get_total >= price[2]){
cout << menus[2] << "가나왔습니다!"<< "잔액" << get_total-price[2]<< "" ;
get_total-=price[2];
break;}
else cout << "잔액부족!"; break;
}
case 4 : {
if(get_total >= price[3]){
cout << menus[3] << "가나왔습니다!"<< "잔액" << get_total-price[3]<<"";
get_total-=price[3];
break;}
else cout << "잔액부족!"<< "잔액" << get_total ; break;
}
default : {
cout << "------"; break;
}
}
//----switch 문을 빠저나온후 종료 여부를 판단하기위한 if문------
if(get_total==0 || 0==strcmp(input,"x")) LAST_MONEY=0;
}
void main(void)
{
MACHINE park,kim;
park.MACHINE_start();
while(park.q_again()==true ){
park.start();
park.show_menu();
park.naonda(park.select());
}
park.MACHINE_end();
kim.MACHINE_start();
while(kim.q_again()==true ){
kim.start();
kim.show_menu();
kim.naonda(kim.select());
}
kim.MACHINE_end();
}