목차
1. class 구성도(Inheritance(상속)과 composition 이용)
2. 각 class 분석
3. 세부 구현방법
4. source code
2. 각 class 분석
3. 세부 구현방법
4. source code
본문내용
1/13, 음료확률은 3/13
int choice[13] ={0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};
int select;
char *name[10] = {"반환", "Hot coffee", "Hot choco", "Ice tea", "Lemon tea"};
// 버튼 표시
cout << " **********************************************************************" << endl;
cout << " * 0. 반환 1. Hot coffee 2. Hot choco 3. Ice tea 4. Lemon tea *" << endl;
cout << " **********************************************************************" << endl;
if(coin < 500) // 500원 미만으로 넣었으경우 선택할수 있는 경우는 0번, 1번
select = choice[random(3)];
else if(coin < 600) // 600원 미만으로 놓었을 경우 0, 1, 2번
select = choice[random(6)];
else if(coin < 700) // 700원 미만으로 넣었을 경우 0, 1, 2, 3번
select = choice[random(9)];
else // 700원 이상으로 넣었을 경우 다 선택가능
select = choice[random(12)];
cout << " " << name[select] << "버튼을 눌렀습니다. " << endl;
switch(select){ // 선택에 따른 입금
case 1: coin -= 450;
coffee.decAmount(); // 커피 갯수 -1
break;
case 2: coin -= 500;
chocolate.decAmount(); // 초코 갯수 -1
break;
case 3: coin -= 600;
icetea.decAmount(); // 아이스 티 갯수 -1
break;
case 4: coin -= 700;
lemontea.decAmount(); // 레몬 티 갯수 -1
break;
}
if(coin > 0){
money.decCoin(coin); // coin이 남았을 경우 잔돈을 거슬러 준다.
}
}
void VendingMachine::Administer(){ // 관리자모드
time.incTime(5); // 관리자는 상품이나 돈이 떨어지면 5분위에 온다.
cout << time << endl; // 도착시간
double total = money.getDeposit(); // 현재까지 자판기에서 벌어들인 돈
cout << " 관리인이 왔습니다. " << endl;
cout << " 돈과 물건을 채워 놓는군요. " << endl;
cout << " 현재 까지 벌어들인 " << total << "원을 가져갑니다. " << endl;
coffee.setAmount(10); // 초기 설정
chocolate.setAmount(10);
icetea.setAmount(10);
lemontea.setAmount(10);
money.setCoin50(20);
money.setCoin100(20);
money.setCoin500(10);
totalIncome += total; // 하루 총 매상을 알아보기 위해 누적시킨다.
}
void VendingMachine::printStatus(){ // 자판기 상태 출력
cout << " ************************************ " << endl;
cout << setw(15) << "Hot coffee : " << setw(3) << coffee.getAmount()
<< setw(15) << "500 won : " << money.getCoin500() << endl;
cout << setw(15) << "Hot choco : " << setw(3) << chocolate.getAmount()
<< setw(15) << "100 won : " << money.getCoin100() << endl;
cout << setw(15) << "Ice tea : " << setw(3) << icetea.getAmount()
<< setw(15) << "50 won : " << money.getCoin50() << endl;
cout << setw(15) << "Lemon tea : " << setw(3) << lemontea.getAmount()
<< setw(15) << "Income : " << money.getDeposit() << endl;
cout << " ************************************ " << endl << endl << endl;
// 상품수 5개 미만, 동전수 50, 100원 10개 미만, 500 5개 미만일 경우
if(coffee.getAmount()<5 || chocolate.getAmount()<5 || icetea.getAmount()<5
|| lemontea.getAmount()<5 || money.getCoin500()<5 || money.getCoin100()<10
|| money.getCoin50()<10){
Administer(); // 관리자가 온다.
printStatus();
}
}
/**********************************************
M A I N . C P P
***********************************************/
#include
#include // time함수
#include
#include // Sleep 함수
#include "vendingmachine.h"
#define randomize() srand((unsigned)time(NULL)) // 난수 발생
void main(){
VendingMachine v; // 객체 생성
randomize();
v.Run(); // 실행
}
int choice[13] ={0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};
int select;
char *name[10] = {"반환", "Hot coffee", "Hot choco", "Ice tea", "Lemon tea"};
// 버튼 표시
cout << " **********************************************************************" << endl;
cout << " * 0. 반환 1. Hot coffee 2. Hot choco 3. Ice tea 4. Lemon tea *" << endl;
cout << " **********************************************************************" << endl;
if(coin < 500) // 500원 미만으로 넣었으경우 선택할수 있는 경우는 0번, 1번
select = choice[random(3)];
else if(coin < 600) // 600원 미만으로 놓었을 경우 0, 1, 2번
select = choice[random(6)];
else if(coin < 700) // 700원 미만으로 넣었을 경우 0, 1, 2, 3번
select = choice[random(9)];
else // 700원 이상으로 넣었을 경우 다 선택가능
select = choice[random(12)];
cout << " " << name[select] << "버튼을 눌렀습니다. " << endl;
switch(select){ // 선택에 따른 입금
case 1: coin -= 450;
coffee.decAmount(); // 커피 갯수 -1
break;
case 2: coin -= 500;
chocolate.decAmount(); // 초코 갯수 -1
break;
case 3: coin -= 600;
icetea.decAmount(); // 아이스 티 갯수 -1
break;
case 4: coin -= 700;
lemontea.decAmount(); // 레몬 티 갯수 -1
break;
}
if(coin > 0){
money.decCoin(coin); // coin이 남았을 경우 잔돈을 거슬러 준다.
}
}
void VendingMachine::Administer(){ // 관리자모드
time.incTime(5); // 관리자는 상품이나 돈이 떨어지면 5분위에 온다.
cout << time << endl; // 도착시간
double total = money.getDeposit(); // 현재까지 자판기에서 벌어들인 돈
cout << " 관리인이 왔습니다. " << endl;
cout << " 돈과 물건을 채워 놓는군요. " << endl;
cout << " 현재 까지 벌어들인 " << total << "원을 가져갑니다. " << endl;
coffee.setAmount(10); // 초기 설정
chocolate.setAmount(10);
icetea.setAmount(10);
lemontea.setAmount(10);
money.setCoin50(20);
money.setCoin100(20);
money.setCoin500(10);
totalIncome += total; // 하루 총 매상을 알아보기 위해 누적시킨다.
}
void VendingMachine::printStatus(){ // 자판기 상태 출력
cout << " ************************************ " << endl;
cout << setw(15) << "Hot coffee : " << setw(3) << coffee.getAmount()
<< setw(15) << "500 won : " << money.getCoin500() << endl;
cout << setw(15) << "Hot choco : " << setw(3) << chocolate.getAmount()
<< setw(15) << "100 won : " << money.getCoin100() << endl;
cout << setw(15) << "Ice tea : " << setw(3) << icetea.getAmount()
<< setw(15) << "50 won : " << money.getCoin50() << endl;
cout << setw(15) << "Lemon tea : " << setw(3) << lemontea.getAmount()
<< setw(15) << "Income : " << money.getDeposit() << endl;
cout << " ************************************ " << endl << endl << endl;
// 상품수 5개 미만, 동전수 50, 100원 10개 미만, 500 5개 미만일 경우
if(coffee.getAmount()<5 || chocolate.getAmount()<5 || icetea.getAmount()<5
|| lemontea.getAmount()<5 || money.getCoin500()<5 || money.getCoin100()<10
|| money.getCoin50()<10){
Administer(); // 관리자가 온다.
printStatus();
}
}
/**********************************************
M A I N . C P P
***********************************************/
#include
#include
#include
#include
#include "vendingmachine.h"
#define randomize() srand((unsigned)time(NULL)) // 난수 발생
void main(){
VendingMachine v; // 객체 생성
randomize();
v.Run(); // 실행
}
추천자료
UML 1 [Unified Modeling Language]
UML[Unified Modeling Language]
은행개좌구현
데이터베이스의역사
시스템분석설계
자바스크립트 핵심정리
행렬 덧셈계산과 클래스를 사용한 삼각형 넓이 계산
[자바][JAVA][자바스크립트]자바(JAVA)의 정의, 자바(JAVA)의 특징, 자바(JAVA)의 역사, 자바...
프로그래밍 언어의 발전사 2번째장
2010년 1학기 소프트웨어공학 기말시험 핵심체크
2010년 하계계절시험 시스템분석및설계 시험범위 핵심체크
[자바][JAVA][자바스크립트]자바(JAVA)의 의미, 자바(JAVA)의 특징, 자바(JAVA)의 유래, 자바...
데이터베이스관리 시스템 (Database Management System(MySql))
정보시스템 개발방법론 및 개발도구
소개글