영화관 예매 시스템 예제
package cgv;
import javax.swing.JOptionPane;
public class CGV {
public static void main(String[] args) {
String helloMsg = "★어서오세요 CGV입니다★ \n";
String menuMsg = "① 예매하기 \n②구매하기 \n③포인트조회 \n④ 나가기\n";
String ageMsg = "[청소년 구매 불가 상품]\n나이를 입력하세요\n";
String films = "① 라이언킹(08:00) \n② 스파이더맨(12:00) \n③ 사일런스(23:00)[청불]\n④ 뒤로가기\n";
String snack = "① 팝콘 8000원 \n② 콜라 2000원 \n③ 맥주[청소년구매제한] 4000원 \n④ 뒤로가기\n";
String snackMsg = "구매 수량을 입력하세요";
int choice = 0;
int age = 0;
int money = 1_000_000_000;
int snack_q = 0;
int snack_price = 0;
int snack_t = 0;
int point = 0;
int t_price = 10000;
boolean t_check;
while(true) {
t_check = true;
choice = Integer.parseInt(JOptionPane.showInputDialog(helloMsg+menuMsg));
if(choice == 4 ) break;
//잘못 입력했을 때
if(!(choice >= 1 && choice <= 3)) continue;
switch(choice ) {
//예매하기영역
case 1:
if(money - t_price < 0) { // money < t_price 는 불안정 money라는 변수가 여기저기서 사용되므로 값처리가 불안정할 수 있음 예외처리~~
JOptionPane.showMessageDialog(null, "잔액이 부족합니다.");
continue;
}
choice = Integer.parseInt(JOptionPane.showInputDialog(films));
if(choice == 1) {
JOptionPane.showMessageDialog(null, "라이언킹 예매 완료(08:00)");
}else if(choice == 2) {
JOptionPane.showMessageDialog(null, "스파이더맨 예매 완료(12:00)");
}else if(choice == 3) {
age = Integer.parseInt(JOptionPane.showInputDialog(ageMsg));
if(age>19) {
JOptionPane.showMessageDialog(null, "사일런스 예매 완료(23:00)");
}else {
t_check = false;
JOptionPane.showMessageDialog(null, "다시 시도해 주세요");
}
}else if(choice == 4) {
}else {
JOptionPane.showMessageDialog(null,"메인 메뉴로 돌아갑니다");
continue;
}
if(t_check) { //예매 완료 됐을때 출금
if(point > 0) { // 포인트가 1점이라도 있을 때는 포인트로 자동 결제
if(point - t_price >= 0) {
point -= t_price;
}else { //영화티켓값보다 포인트가 적게 있을 때
money -= (t_price - point); // (티켓가격 - 포인트) 차액 잔고에서 빼가고
point = 0; // 포인트 차감 후 0으로 초기화
}
}else {
money -= t_price;
point += t_price * 0.5;
}
JOptionPane.showMessageDialog(null,"현재 잔액 :"+money+"원");
}
break;
//구매하기 영역
case 2:
choice = Integer.parseInt(JOptionPane.showInputDialog(snack));
if(choice == 1) { //팝콘
snack_q = Integer.parseInt(JOptionPane.showInputDialog(snackMsg));
snack_price = 8000;
}else if(choice == 2) { //콜라
snack_q = Integer.parseInt(JOptionPane.showInputDialog(snackMsg));
snack_price = 2000;
}else if(choice == 3) { //맥주 청소년 구매 불가
age = Integer.parseInt(JOptionPane.showInputDialog(ageMsg));
if(age>19) { //나이검사
snack_q = Integer.parseInt(JOptionPane.showInputDialog(snackMsg));
snack_price = 4000;
}else {
System.out.println("청소년 구매 불가 상품 메뉴로 돌아갑니다.");
break;
}
}else{ //뒤로가기
break;
}
//상품결제
snack_t = snack_q * snack_price;
JOptionPane.showMessageDialog(null,"상품가격 :"+ snack_t);
if(point > 0) { // 포인트가 1점이라도 있을 때는 포인트로 자동 결제
if(point - snack_t >= 0) {
point -= snack_t;
}else { //영화티켓값보다 포인트가 적게 있을 때
money -= (snack_t - point); // (티켓가격 - 포인트) 차액 잔고에서 빼가고
point = 0; // 포인트 차감 후 0으로 초기화
}
}else {
money -= snack_t;
point += snack_t * 0.5;
}
JOptionPane.showMessageDialog(null,"현재 잔액 :"+money+"원");
break;
//포인트 조회하기 영역
case 3:
JOptionPane.showMessageDialog(null, "현재 가용 포인트 :" + point +"점");
break;
default:
}
}
}
}
'JAVA' 카테고리의 다른 글
DAY08; 2차원 배열 (0) | 2019.08.11 |
---|---|
DAY07; 배열 (0) | 2019.08.11 |
DAY05; 제어문 (For문과 While문) (0) | 2019.07.20 |
DAY04; 연산자 (0) | 2019.07.16 |
DAY 03; Scanner 클래스의 사용 (0) | 2019.07.15 |