본문 바로가기
JAVA

JAVA(카페주문관리 프로그램)_2024-05-31

by 앵보몬 2024. 6. 3.
728x90
반응형

카페 주문 관리 프로그램

 

요구사항

1) 사용자 인터페이스

2) 설명 : 메뉴 기반의 텍스트 사용자 인터페이스 제공

3) 사례 : "1. 주문 추가 2. 주문 조회 3. 주문 수정 4. 주문 삭제 5. 종료"

4) 핵심 : 사용자가 쉽게 각 기능을 선택

 

예외 처리

1) 설명 : 파일 입출력 및 잘못된 입력에 대한 예외 처리

2) 사례 : 파일이 없을 경우, 잘못된 수량 입력

3) 핵심 : 안정적인 프로그램 동작 보장

 

파일 생성

package Cafe;

import java.io.File;

public class CafeCreater {

    public static void main(String[] args) {

        try {

            File kidcafe = new File("KidCafe.csv");

            if (kidcafe.createNewFile()) {

                System.out.println("성공 : " + kidcafe.getName());

            } else {

                System.out.println("이미 있는 파일입니다.");

            }

        } catch (Exception e) {

            System.out.println("파일만들기 오류");

        }

    }

}

 

키오스크

package Cafe;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.nio.charset.Charset;

import java.util.Scanner;

public class KidCafeWrite {

    public static void main(String[] args) {

        Scanner cafe = new Scanner(System.in);

        int cnt = 0;

        String[] orderList = new String[5];

        int totPrice = 0;

        while (true) {

            while (true) {

                System.out.print(
                        "============= CAFE ORDER HERE =============\n1.주문하기 2.주문취소 3.주문목록 4.결제하기 5.저장 및 종료\n메뉴 선택 : ");

                int selectMenu = cafe.nextInt();

                System.out.println();

                int orderMenu;

                String deleteMenu;

                if (selectMenu == 1) {

                    System.out.print(
                            "================ 주문가능 메뉴 ================\n1.에스프레소 : 3000원\n2.아메리카노 : 2500원\n3.카페라떼 : 3000원\n4.밀크티 : 4000원\n5.청포도에이드 : 4000원\n6.딸기스무디 : 5000원\n7.오므라이스 : 8000원\n8.새우볶음밥 : 8000원\n9.샌드위치 : 5000원\n10.돈가스 : 10000원\n-------------------------------------------\n주문할 메뉴 선택 : ");

                    orderMenu = cafe.nextInt();

                    deleteMenu = "";

                    int menuPrice = 0;

                    if (orderMenu == 1) {

                        deleteMenu = "에스프레소";

                        menuPrice = 3000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 2) {

                        deleteMenu = "아메리카노";

                        menuPrice = 2500;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 3) {

                        deleteMenu = "카페라떼";

                        menuPrice = 3000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 4) {

                        deleteMenu = "밀크티";

                        menuPrice = 4000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 5) {

                        deleteMenu = "청포도에이드";

                        menuPrice = 4000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 6) {

                        deleteMenu = "딸기스무디";

                        menuPrice = 5000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 7) {

                        deleteMenu = "오므라이스";

                        menuPrice = 8000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 8) {

                        deleteMenu = "새우볶음밥";

                        menuPrice = 8000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 9) {

                        deleteMenu = "샌드위치";

                        menuPrice = 5000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else if (orderMenu == 10) {

                        deleteMenu = "돈가스";

                        menuPrice = 10000;

                        totPrice += menuPrice;

                        orderList[cnt] = deleteMenu;

                        ++cnt;

                        System.out.println(deleteMenu + "가 주문 목록에 추가되었습니다.");

                    } else {

                        System.out.println("잘못된 입력입니다.");

                    }

                    System.out.println();

                } else if (selectMenu == 2) {

                    System.out.println("================== 주문 목록 ==================");

                    for (orderMenu = 0; orderMenu < cnt; ++orderMenu) {

                        System.out.println("[" + (orderMenu + 1) + "]" + orderList[orderMenu]);

                    }

                    System.out.print("-------------------------------------------\n취소할 메뉴 번호 : ");

                    orderMenu = cafe.nextInt();

                    deleteMenu = orderList[orderMenu - 1];

                    if (orderMenu >= 1 && orderMenu <= cnt) {

                        if (deleteMenu.equals("에스프레소")) {

                            totPrice -= 3000;

                        } else if (deleteMenu.equals("아메리카노")) {

                            totPrice -= 2500;

                        } else if (deleteMenu.equals("카페라떼")) {

                            totPrice -= 3000;

                        } else if (deleteMenu.equals("밀크티")) {

                            totPrice -= 4000;

                        } else if (deleteMenu.equals("청포도에이드")) {

                            totPrice -= 4000;

                        } else if (deleteMenu.equals("딸기스무디")) {

                            totPrice -= 5000;

                        } else if (deleteMenu.equals("오므라이스")) {

                            totPrice -= 8000;

                        } else if (deleteMenu.equals("새우볶음밥")) {

                            totPrice -= 8000;

                        } else if (deleteMenu.equals("샌드위치")) {

                            totPrice -= 5000;

                        } else if (deleteMenu.equals("돈가스")) {

                            totPrice -= 10000;

                        }

                        --cnt;

                    } else {

                        System.out.println("잘못된 입력입니다.");

                    }

                    for (int i = orderMenu - 1; i < cnt; ++i) {

                        orderList[i] = orderList[i + 1];

                    }

                } else if (selectMenu == 3) {

                    System.out.println("================== 주문 목록 ==================");

                    for (orderMenu = 0; orderMenu < cnt; ++orderMenu) {

                        System.out.println("[" + (orderMenu + 1) + "]" + orderList[orderMenu]);

                    }

                } else if (selectMenu != 4) {

                    if (selectMenu == 5) {

                        String csvFile = "./KidCafe.csv";

                        String data = String.join(",", orderList);

                        data = data.substring(0, data.indexOf("null"));

                        System.out.println(data);

                        BufferedWriter writer = null;

                        try {

                            writer = new BufferedWriter(new FileWriter(csvFile, Charset.forName("UTF-8")));

                            writer.write("\uFEFF");

                            writer.write(data);

                            System.out.println("파일 저장이 완료되었습니다.");

                            writer.close();

                        }

                        catch (IOException var21) {

                            var21.printStackTrace();

                        }

                        cafe.close();

                        System.out.println("프로그램을 종료합니다.");

                        return;

                    }

                    System.out.println("잘못된 입력입니다.");

                } else {

                    System.out.print("총 주문금액 : " + totPrice + "\n결제할 금액 : ");

                    orderMenu = cafe.nextInt();

                    if (orderMenu >= totPrice) {

                        System.out.println("결제가 완료되었습니다.\n거스름돈은 " + (orderMenu - totPrice) + "원 입니다.");

                        totPrice = 0;

                        cnt = 0;

                        for (int i = 0; i < cnt; ++i) {

                            orderList[i] = "";

                        }

                    } else {

                        System.out.println("금액이 부족합니다.");

                    }

                    System.out.println();

                }

            }

        }

    }

}
728x90
반응형