웹_프론트_백엔드/단과

[단과_JAVA] 2020.01.28

shine94 2020. 1. 28. 21:00

1. 실생활 적용해보기(영화관 만들기) 

** 저번 시간에 만들지 못했던 부분까지 오늘 완성 **

package cinema;

import java.util.Random;

import javax.swing.JOptionPane;

public class Cinema {
	public static void main(String[] args) {
		String title = "▥롯데 시네마▥";
		String main_menu = "①예매하기\n②구매하기\n"
				+ "③포인트 조회\n④쿠폰 등록\n⑤나가기";
		
		String film_menu = "①백두산(09:00)\n②겨울왕국2(13:00)\n"
				+ "③[청소년 관람 불가]나쁜녀석들3(23:00)\n④메인메뉴로 이동";
		
		String food_menu = "①팝콘(7000원)\n②콜라(3000원)\n"
				+ "③[청소년 구매 불가]맥주(4000원)\n④메인메뉴로 이동";
		
		String errMsg = "다시 시도해주세요.";
		String ageMsg = "나이를 입력하세요.";
		
		String msg = "";
		
		int choice = 0;
		int age = 0;
		
		int t_price = 11000; 
		
		int p_price = 7000;
		int c_price = 3000;
		int b_price = 4000;
		
		int price = 0;
		int money = 100000;
		int point = 0;
		
		Random r = new Random();
//		r.nextInt(10); // 0 ~ 9
		
		//100000~999999
		//0 ~ 899999 + 100000
		
		int coupon = r.nextInt(900000) + 100000;
		int myCoupon = 0;
		
		//Flag : 해당영역에 들어왔을 때 무언가를 표시하고자 할 때
		boolean couponCheck = false;
		boolean foodCheck = false;
		
		System.out.println(coupon);
		
		while(true) {
			foodCheck = false;
			choice = Integer.parseInt(JOptionPane.showInputDialog(title + "\n" + main_menu));
			
			if(choice == 5) {break;}
			
			switch(choice) {
			//예매하기 영역
			case 1:
				//변수의 재사용
				//1. 효율적인 메모리 관리
				//2. 가독성이 떨어진다.
				choice = Integer.parseInt(JOptionPane.showInputDialog(film_menu));
				
				switch(choice) {
				//백두산(09:00)
				case 1:
					msg = "백두산(09:00) 예매";
					break;
				//겨울왕국2(13:00)
				case 2:
					msg = "겨울왕국(13:00) 예매";
					break;
				//[청소년 관람불가]나쁜녀석들3(23:00)
				case 3:
					//나이를 입력받고 미성년자일 경우
					//나쁜 녀석들3(23:00) 예매 실패 / 미성년자 관람 불가 출력 후
					//continue로 결제 막기
					//성인일 경우 msg에 나쁜 녀석들3(23:00) 예매 저장
					age = Integer.parseInt(JOptionPane.showInputDialog(ageMsg));
					msg = "나쁜 녀석들3(23:00) 예매";
					if(age < 20) {
						JOptionPane.showMessageDialog(null, msg + " 실패 / 미성년자 관람 불가");
						continue;
					}
					break;
				//메인메뉴로 이동
				case 4:
					continue;
				default:
					JOptionPane.showMessageDialog(null, errMsg);
					continue;
				}
				price = t_price;
				break;
			//구매하기 영역
			//팝콘(7000원), 콜라(3000원), [미성년자 구매 불가]맥주(4000원)
			//price변수를 통해서 일괄처리하기
			//맥주 구매시 미성년자 확인 후 처리
			case 2:
				choice = Integer.parseInt(JOptionPane.showInputDialog(food_menu));
				
				switch(choice) {
				//팝콘
				case 1:
					msg = "팝콘 구매";
					price = p_price;
					break;
				//콜라
				case 2:
					msg = "콜라 구매";
					price = c_price;
					break;
				//[청소년 구매불가]맥주
				case 3:
					age = Integer.parseInt(JOptionPane.showInputDialog(ageMsg));
					msg = "맥주 구매";
					if(age < 20) {
						JOptionPane.showMessageDialog(null, msg + " 실패 / 미성년자 구매 불가");
						continue;
					}
					price = b_price;
					break;
					//메인메뉴로 이동
				case 4:
					continue;
				default:
					JOptionPane.showMessageDialog(null, errMsg);
					continue;
				}
				//음식 선택 완료 영역
				foodCheck = true;
				break;
			//포인트 조회 영역
			case 3:
				JOptionPane.showMessageDialog(null, "잔여 포인트 : " + point + "점");
				continue;
			//쿠폰 등록 영역
			case 4:
				if(!couponCheck) {
					myCoupon = Integer.parseInt(JOptionPane.showInputDialog("쿠폰번호(6자리) : "));
					
					if(coupon == myCoupon) {
						msg = "쿠폰등록 성공";
						couponCheck = true;
						
					}else {
						msg = "쿠폰등록 실패";
					}
				}else {
					msg = "이미 등록하셨습니다.";
				}
				JOptionPane.showMessageDialog(null, msg);
				continue;
				
			default:
				JOptionPane.showMessageDialog(null, errMsg);
				continue;
			}
			
			//결제 영역
			if(couponCheck && foodCheck) {
				msg += "성공 / 결제 1회 무료 쿠폰 사용";
				JOptionPane.showMessageDialog(null, msg);
				couponCheck = false;
				coupon = r.nextInt(900000) + 100000;
				System.out.println(coupon);
				continue;
			}
			//1점이라도 있다면 포인트가 자동으로 사용된다.
			if(point > 0) {
				if(point - price < 0) {
					//포인트 + 현금 결제
					if(money < price - point) {
						//잔액부족
						msg += " 실패 / 잔액부족";
					}else {
						money -= price - point;
						point = 0;
						msg += " 성공 / 포인트 + 현금 결제\n현재 잔액 : " + money + "원";
					}
				}else {
					//포인트 결제
					point -= price;
					msg += " 성공 / 포인트 결제";
				}
				
			}else {
				//현금 결제
				if(money < price) {
					//잔액부족
					msg += " 실패 / 잔액부족";
				}else {
					money -= price;
					point += price * 0.5;
					msg += " 성공\n현재 잔액 : " + money + "원";
				}
			}
			JOptionPane.showMessageDialog(null, msg);
		}
	}
}

'웹_프론트_백엔드 > 단과' 카테고리의 다른 글

[단과_JAVA] 2020.01.29  (0) 2020.01.29
[단과_Python] 2020.01.28  (0) 2020.01.28
[단과_Python] 2020.01.23  (0) 2020.01.23
[단과_JAVA] 2020.01.23  (0) 2020.01.23
[단과_Python] 2020.01.22  (0) 2020.01.22