본문 바로가기

프로그래밍 언어/Java

[수치계산] 음료 주문 프로그램

음료 주문 프로그램


<입력>

음료 번호 / 음료 이름 / 가격 / 재고 순으로 입력(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] == 0continue;
            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] == 0continue;
            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