📌 1. 플로우 차트

플로우 차트 설명

  • 키오스크 실행 흐름에 대해 위와 같이 설계하고 시작
  • 키오스크를 작동시키면 음료 메뉴판을 보임
  • 음료 메뉴를 정하여 선택하면 디저트 구매 여부를 물음
  • 디저트를 고르면 디저트 메뉴판을 보여주고 메뉴를 선택하도록 함
  • 디저트를 구매하지 않는다면 바로 주문 메뉴 확인으로 이동
  • 선택했던 것이 맞는지 <주문 메뉴 확인> 부분에서 체크
  • 주문을 하면 영수증이 출력되고, 취소를 선택하면 end!!



📌 2. 메뉴판 클래스 생성

  • 음료(Drink) 클래스
public class Drink {
	public void menu() {
          String[] menu = { "1. 아메리카노:2,400원", "2. 카페라떼:2,800원", "3. 카페모카:2,800원",
          					"4. 말차라떼:2,700원", "5. 초코:2,800원", "6. 담기"};
		System.out.println("---------------음료 메뉴---------------------");
			for (int i = 0; i<menu.length;i++) {
				System.out.println(menu[i]);
			}
		System.out.println("-------------------------------------------");
		}
	
	}
  • 디저트(Dessert) 클래스
	public class Dessert {
		public void menu() {
				String[] menu_de = { "1. 젤리:2,000원", "2. 마쉬멜로우초코:400원", "3. 뚱카롱:2,000원",
									"4. 과자:1,200원", "5. 구슬아이스크림:2,500원", "6. 담기"};
			System.out.println("---------------디저트 메뉴---------------------");
				for (int i = 0; i<menu_de.length;i++) {
					System.out.println(menu_de[i]);
				}
			System.out.println("-------------------------------------------");
		}
	}



📌 3. 영수증에 들어갈 랜덤 클래스 생성

  • 주문번호에 출력될 랜덤번호를 만들기 위해 싱글톤 객체 사용
	public class Random {
		private static Random rec;
		// 싱글톤 객체
		public static Random getInstance() {
			if(rec == null) {
				rec = new Random();
			}
			return rec;
		}
	
	public static void freeInstance() {
		rec = null;
	}
	
	private Random() {
		
	}
	
	public int random(int max, int min) {
		int a = (int)((Math.random()*(max - min + 1))+min);
		return a;
		}
	 }


📌 4. step별 메인메소드(step) 생성

package project;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;


public class step {
   public static void main(String[] args) {
	// total : 총합 / cnt : 개수 / price : 가격	
	   		int total = 0;
	     	int cnt1 = 0;
	     	int cnt2 = 0;
	     	int cnt3 = 0;
	     	int cnt4 = 0;
	     	int cnt5 = 0;
	     	int price1 = 0;
	     	int price2 = 0;
	     	int price3 = 0;
	     	int price4 = 0;
	     	int price5 = 0;
	     	int cnt11 = 0;
	     	int cnt12 = 0;
	     	int cnt13 = 0;
	     	int cnt14 = 0;
	     	int cnt15 = 0;
	     	int price11 = 0;
	     	int price12 = 0;
	     	int price13 = 0;
	     	int price14 = 0;
	     	int price15 = 0;
	     	
	   
	 Scanner sc = new Scanner(System.in);
	   Drink dr = new Drink();		// Drink클래스 불러오기
	   dr.menu();
	   	int choice = 0;				// 메뉴 선택 입력값(choice)

	   // 메뉴 선택 입력값이 1~5일 때 반복문
       while (choice < 6) {
	     System.out.print("메뉴를 선택하세요 : ");
         
	    // 메뉴 선택 입력값에 따른 가격 합산과 수량 +1
	    for(;;) {
	    	 choice = sc.nextInt();
	    	 if(choice == 1) {
	    		 price1 += 2400;
	    		 cnt1 += 1;
	    	 }
	    	 if(choice == 2) {
	    		 price2 += 2800;
	    		 cnt2 += 1;
	    	 }
	    	 if(choice == 3) {
	    		 price3 += 2800;
	    		 cnt3 += 1;
	    	 }
	    	 if(choice == 4) {
	    		 price4 += 2700;
	    		 cnt4 += 1;
	    	 }
	    	 if(choice == 5) {
	    		 price5 += 2800;
	    		 cnt5 += 1;
	    	 } break;
	     }	
	   }
	// 메뉴 선택 입력값이 6일 때, 장바구니 담기로 다음 질문으로 이동
	   if (choice == 6) {
		   for(;;) {
	     		System.out.println("");
	     		System.out.println("디저트를 주문하시겠습니까? (1. 네 / 2. 아니요)");
	     		int answer2 = sc.nextInt();
                
//[디저트를 선택했을 경우]--------------------------------------------------------
	     		if (answer2 == 1) {						// 디저트를 주문할 경우
	       Dessert ds = new Dessert();					// 디저트 클래스 불러오기
	       ds.menu();
	       int check = 0;								// 디저트 메뉴 입력값 (check)
           // 디저트 메뉴 입력값이 1~5일 때 반복문
	       while (check < 6) {
	         System.out.print("디저트를 선택하세요 : ");
	        for(;;) {
		    	 check = sc.nextInt();
                 
                 // 디저트 메뉴 입력값에 따른 가격과 개수 +1
		    	 if(check == 1) {
		    		 price11 += 2000;
		    		 cnt11 += 1;
		    	 }
		    	 if(check == 2) {
		    		 price12 += 400;
		    		 cnt12 += 1;
		    	 }
		    	 if(check == 3) {
		    		 price13 += 2000;
		    		 cnt13 += 1;
		    	 }
		    	 if(check == 4) {
		    		 price14 += 1200;
		    		 cnt14 += 1;
		    	 }
		    	 if(check == 5) {
		    		 price15 += 2000;
		    		 cnt15 += 1;
		    	 } break;
		     }	}

		// 디저트 메뉴 입력값이 6일 때, 장바구니 담기 수 주문 확인 할 수 있는 영역으로 이동
	       if (check == 6) { System.out.println("주문을 확인하세요"); }
//[디저트를 선택하지 않았을 경우]--------------------------------------------------         
           // 디저트를 선택하지 않을 경우
	     } else if (answer2 == 2) {
	    	 System.out.println("주문을 확인하세요");
          // 그 외 다른 값을 입력하였을 경우
	     } else {
	    	 System.out.println("다시 입력하세요.");
	    	continue;
	     } break;
	     }
	   }
       
       
       
	   System.out.println("------------------------<주문메뉴확인>--------------------------");
	   System.out.println("<음료>");
	   System.out.println("[메뉴]" + "\t\t" + "[수량]" + "\t\t" + "[단가]");
	   System.out.println("아메리카노" + "\t\t" + cnt1 +"잔" + "\t\t" + price1 + "원");
	   System.out.println("카페라떼" + "\t\t" + cnt2 +"잔" + "\t\t" + price2 + "원");
	   System.out.println("카페모카" + "\t\t" + cnt3 +"잔" + "\t\t" + price3 + "원");
	   System.out.println("말차라떼" + "\t\t" + cnt4 +"잔" + "\t\t" + price4 + "원");
	   System.out.println("초코" + "\t\t" + cnt5 +"잔" + "\t\t" + price5 + "원");
	   System.out.println("<디저트>");
	   System.out.println("[메뉴]" + "\t\t" + "[수량]" + "\t\t" + "[단가]");
	   System.out.println("젤리" + "\t\t" + cnt11 +"개" + "\t\t" + price11 + "원");
	   System.out.println("마쉬멜로우초코" + "\t" + cnt12 +"개" + "\t\t" + price12 + "원");
	   System.out.println("뚱카롱" + "\t\t" + cnt13 +"개" + "\t\t" + price13 + "원");
	   System.out.println("과자" + "\t\t" + cnt14 +"개" + "\t\t" + price14 + "원");
	   System.out.println("구슬아이스크림" + "\t" + cnt15 +"개" + "\t\t" + price5 + "원");
	   System.out.println("--------------------------------------------------------------");
	   
	   total = price1 + price2 + price3 + price4 + price5 + price11 + price12 
       			+ price13 + price14 + price15 ;
                
                
	   // 장바구니 보고 주문여부 결정
	   System.out.println("주문하시겠습니까? (1. 네 / 2. 취소)");
		int answerl = sc.nextInt();
        // 주문 결정
		if (answerl == 1) {
			System.out.println("");
			System.out.println("결제 금액 : " + total + "원 입니다.");
			
            
            
            
// 영수증 출력
			System.out.println("_________________________________________________");
			System.out.println("\t\t[영수증]");
			Random rd = Random.getInstance();		// 랜덤 주문번호
			System.out.println("주문번호	:" + "\t" + rd.random(100, 999));
			LocalDateTime now = LocalDateTime.now();
			String printNow = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm"));
			System.out.println(printNow);			// 시스템 날짜 출력
			System.out.println("-------------------------------------------------");
			System.out.println("<음료>");
			   System.out.println("[메뉴]" + "\t\t" + "[수량]" + "\t\t" + "[단가]");
			   System.out.println("아메리카노" + "\t\t" + cnt1 +"잔" + "\t\t" + price1 + "원");
			   System.out.println("카페라떼" + "\t\t" + cnt2 +"잔" + "\t\t" + price2 + "원");
			   System.out.println("카페모카" + "\t\t" + cnt3 +"잔" + "\t\t" + price3 + "원");
			   System.out.println("말차라떼" + "\t\t" + cnt4 +"잔" + "\t\t" + price4 + "원");
			   System.out.println("초코" + "\t\t" + cnt5 +"잔" + "\t\t" + price5 + "원");
			   System.out.println("<디저트>");
			   System.out.println("[메뉴]" + "\t\t" + "[수량]" + "\t\t" + "[단가]");
			   System.out.println("젤리" + "\t\t" + cnt11 +"개" + "\t\t" + price11 + "원");
			   System.out.println("마쉬멜로우초코" + "\t" + cnt12 +"개" + "\t\t" + price12 + "원");
			   System.out.println("뚱카롱" + "\t\t" + cnt13 +"개" + "\t\t" + price13 + "원");
			   System.out.println("과자" + "\t\t" + cnt14 +"개" + "\t\t" + price14 + "원");
			   System.out.println("구슬아이스크림" + "\t" + cnt15 +"개" + "\t\t" + price5 + "원");
			   System.out.println("-------------------------------------------------");
			   System.out.println("합계" + "\t\t\t\t" + total);
		} else if (answerl == 2) {
			System.out.println("취소합니다.");
	  		
	  	}	else {
	  		System.out.println("다시 입력해주세요.");
	  	}	
}
}


📌 5. 전체를 완성시킬 메인메소드(Main_cafe) 생성

package project;

import java.util.Scanner;

public class Main_cafe {

	public static void main(String[] args) {
		for(;;) {
			System.out.println("1. 매장 / 2. 포장");
			Scanner sc = new Scanner(System.in);		//직접 입력하기 위해 scanner 사용
			// 포장여부 입력값(eat)
			int eat = sc.nextInt();
			if(eat == 1 || eat == 2) {
				for (;;) {
			  System.out.println("주문하시겠습니까? (1. 네 / 2. 아니요)");
			  int answer1 = sc.nextInt();
              
              // 주문 결정하면 step 메소드 실행
			  	if(answer1 == 1) {
			  		step ts = new step();
			  		ts.main(args);
               		
			  	}	else if (answer1 == 2) {					//주문X
			  		System.out.println("처음으로 돌아갑니다.");
			  		continue;
			  	}	else {
			  		System.out.println("다시 입력해주세요.");
			  	}	break;
			  	
			}  	break;
			
            // 매장, 포장 외 다른 값 입력했으 시
			} else {
				System.out.println("다시 입력해주세요.");
					continue;}
}}
}


📌 6. 결과값




1개의 댓글

comment-user-thumbnail
2023년 7월 28일

잘 읽었습니다. 좋은 정보 감사드립니다.

답글 달기
Powered by GraphCDN, the GraphQL CDN