음료 주문 프로그램
<입력>
음료 번호 / 음료 이름 / 가격 / 재고 순으로 입력(0 입력 시 종료)
주문 번호 / 고객 아이디 / 주문 음료 개수 / 주문 음료 번호 순으로 입력(주문 번호에 0 입력 시 종료)
고객 아이디 별로 10% 포인트 적립
<출력>
메뉴 출력
주문서 출력
총 매출 출력
판매 개수와 재고 출력
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | import java.util.Scanner; import java.util.ArrayList; public class DrinkOrder { static ArrayList<DrinkMenu> drinkArray = new ArrayList<DrinkMenu>(); ArrayList<Order> orderArray = new ArrayList<Order>(); public static void main(String[] args) { DrinkOrder demo = new DrinkOrder(); demo.doit(); } void doit() { Scanner scan = new Scanner(System.in); Menu(scan); print_menu(); DrinkOrderDemo(scan); print_result(); } void Menu(Scanner scan) { //음료 메뉴 DrinkMenu dr; int id = 0; while(true) { id = scan.nextInt(); if (id == 0) { break; } dr = new DrinkMenu(id); dr.read(scan); drinkArray.add(dr); } } void DrinkOrderDemo(Scanner scan) { //음료 주문 Order order; int num = 0; String id = null; int count = 0; while(true) { num = scan.nextInt(); if (num == 0) { break; } id = scan.next(); count = scan.nextInt(); order = new Order(num, id, count); order.read(scan); orderArray.add(order); for (int i = orderArray.size() - 2; i >= 0; i--) { if(orderArray.get(i).id.equals(id)) { //동일 아이디 존재 시 포인트 증가 order.point = orderArray.get(i).point; break; } else continue; } order.compute(); } } void print_menu() { //메뉴 출력 for (DrinkMenu d : drinkArray) d.print(); System.out.println(); } void print_result() { //최종 출력 for (Order o : orderArray) o.print(); System.out.println("\n\n\n---총 매출---\n\n\\" + Order.totalSales); System.out.println("\n\n---재고 결산---\n"); for (int i = 0; i < drinkArray.size(); i++) { System.out.println(drinkArray.get(i).name + " " + (drinkArray.get(i).ini_stock - drinkArray.get(i).stock) + "개 판매 [재고 " + drinkArray.get(i).stock + "개]"); } } } class DrinkMenu { //음료 메뉴 int id = 0; String name = null; int price = 0; int ini_stock = 0; int stock = 0; DrinkMenu(int id) { this.id = id; } void stock_d() { stock--; } void read(Scanner scan) { name = scan.next(); price = scan.nextInt(); ini_stock = stock = scan.nextInt(); } void print() { System.out.println("[" + id + "] " + name + " " + price + "원 " + stock + "개"); } } class Order { int[] orderCount;//주문 int num = 0; String id = null; int count = 0; double point = 0; int sum = 0; static int totalSales = 0; Order(int num, String id, int count) { this.num = num; this.id = id; this.count = count; } void read(Scanner scan) { orderCount = new int[DrinkOrder.drinkArray.size()]; int tmp = 0; for (int i = 0; i < count; i++) { tmp = scan.nextInt(); orderCount[tmp-1]++; DrinkOrder.drinkArray.get(tmp-1).stock_d(); } } void compute() { for (int i = 0; i < DrinkOrder.drinkArray.size(); i++) { if (orderCount[i] == 0) continue; sum += orderCount[i]*DrinkOrder.drinkArray.get(i).price; } point += sum * 0.05; totalSales += sum; } void print() { System.out.println("[" + num + "] " + id); for (int i = 0; i < DrinkOrder.drinkArray.size(); i++) { if (orderCount[i] == 0) continue; System.out.println("\t" + DrinkOrder.drinkArray.get(i).name + " * " + orderCount[i] + " = " + (DrinkOrder.drinkArray.get(i).price * orderCount[i]) + "원"); } System.out.println(" 합계 : " + sum + "원 (" + (int)point + "Point)"); } } | cs |
'프로그래밍 언어 > Java' 카테고리의 다른 글
[수치계산] 근접한 정수 구하기 (0) | 2018.09.17 |
---|---|
[수치계산] 학생 점수 프로그램 (0) | 2018.09.13 |
[Java] 소수의 개수 구하기 (2) | 2018.09.13 |
[Java] 오버로딩과 오버라이딩 (0) | 2017.10.01 |
[Java] 타입 변환 (0) | 2017.10.01 |