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 |