월레스와 그로밋: 코딩의 날

kiosk(카페 키오스크) 본문

Etc/C

kiosk(카페 키오스크)

구운 감자 2025. 1. 26. 19:13

main.c

#include "kiosk.h" //키오스크 (무인 계산기)

int main()
{
    kiosk_system();

    return 0; //운영체제에 0을 반환 -> 프로그램 종료 코드
}

kiosk.h

#define _CRT_SECURE_NO_WARNINGS
#define LINE "----------------------------------------------------------------------------------\n"

#include <stdio.h>
#include <windows.h>

void kiosk_system(); //함수의 원형을 선언
void show_menu(); // 카페 메뉴판 (커피, 음료, 디저트 등) 출력

int choose_Food(int input_menu);  // 메뉴 선택시 세부 메뉴 선택
int input_num();
void price();

int detail_menu(int menu_num);

kiosk.c

#include "kiosk.h"

// int sum = 0;  // 누적 가격

const char menu[4][3][30] = {
    {"커피 메뉴", "음료 메뉴", "디저트 메뉴"},
    {"아메리카노 1800원", "아이스티 1500원", "딸기와플 3000원"},
    {"크림라떼 4000원", "레몬에이드 2000원", "초코머핀 2500원"},
    {"에스프레소 3000원", "블랙밀크티 3000원", "도쿄롤 3000원"}
}; // 메뉴판

void kiosk_system() // 이 프로그램에 대한 시스템 함수
{
    int system_num = 0; // 시스템을 제어하기 위한 숫자
    int total_price = 0;

    do {
        show_menu();
        printf("총 누적금액 >> %d원\n", total_price);
        printf(LINE);
        printf("1. 커피, 2. 음료, 3. 디저트 중 번호를 입력해주세요 (나머지 숫자 입력 시 종료) >> ");
        int menu_num = input_num();

        if (menu_num >= 1 && menu_num <= 3) {
            system_num = 1;
            total_price += detail_menu(menu_num); // 세부 메뉴로 이동
        } else {
            printf("\n프로그램을 종료합니다.\n");
            system_num = 0; // 종료
        }

        Sleep(3000);
        system("cls");

    } while (system_num);
}

int detail_menu(int cat_num) // 세부 메뉴 선택
{
    printf("\n%s 중 무엇을 선택하시겠습니까?\n", menu[0][cat_num - 1]);

    for (int i = 1; i <= 3; i++) {
        printf("%d. %s\n", i, menu[i][cat_num - 1]); // 선택 가능한 메뉴 출력
    }

    printf("메뉴 번호를 입력하세요 >> ");
    int sub_num = input_num();

    printf("몇 개를 고르시겠습니까? >> ");
    int sub_count = input_num();

    int menu_price = 0;

    if (sub_num >= 1 && sub_num <= 3) {
        switch (cat_num) {
            case 1: // 커피
                if (sub_num == 1) menu_price = 1800;
                else if (sub_num == 2) menu_price = 4000;
                else if (sub_num == 3) menu_price = 3000;
                break;

            case 2: // 음료
                if (sub_num == 1) menu_price = 1500;
                else if (sub_num == 2) menu_price = 2000;
                else if (sub_num == 3) menu_price = 3000;
                break;

            case 3: // 디저트
                if (sub_num == 1) menu_price = 3000;
                else if (sub_num == 2) menu_price = 2500;
                else if (sub_num == 3) menu_price = 3000;
                break;
        }

        int total_price = menu_price * sub_count;
        printf(LINE);
        printf("%s을(를) %d개 선택하여 총 %d원이 나왔습니다.\n\n", menu[sub_num][cat_num - 1], sub_count, total_price);

        return total_price;
    } else {
        printf("잘못된 입력입니다. 이전 메뉴로 돌아갑니다.\n");
        return 0;
    }
}

void show_menu() // 카페 메뉴판 (커피, 음료, 디저트 등) 출력
{
    printf("★ 수빈 커피 ★\n\n");

    for (int i = 0; i <= 3; i++) {
        for (int j = 0; j <= 2; j++) {
            if (i == 0)
                printf("%s\t\t", menu[i][j]); // 카테고리 출력
            else
                printf("%d. %s\t", i, menu[i][j]); // 메뉴 항목 출력
        }
        printf("\n");
    }
    printf(LINE);
}

int input_num()
{
    int num = 0;
    scanf("%d", &num);
    return num;
}

output

★ 수빈 커피 ★

커피 메뉴               음료 메뉴               디저트 메뉴
1. 아메리카노 1800원    1. 아이스티 1500원      1. 딸기와플 3000원
2. 크림라떼 4000원      2. 레몬에이드 2000원    2. 초코머핀 2500원
3. 에스프레소 3000원    3. 블랙밀크티 3000원    3. 도쿄롤 3000원
----------------------------------------------------------------------------------
총 누적금액 >> 0원
----------------------------------------------------------------------------------
1. 커피, 2. 음료, 3. 디저트 중 번호를 입력해주세요 (나머지 숫자 입력 시 종료) >> 1

커피 메뉴 중 무엇을 선택하시겠습니까?
1. 아메리카노 1800원
2. 크림라떼 4000원
3. 에스프레소 3000원
메뉴 번호를 입력하세요 >> 1
몇 개를 고르시겠습니까? >> 3
----------------------------------------------------------------------------------
아메리카노 1800원을(를) 3개 선택하여 총 5400원이 나왔습니다.
★ 수빈 커피 ★

커피 메뉴               음료 메뉴               디저트 메뉴
1. 아메리카노 1800원    1. 아이스티 1500원      1. 딸기와플 3000원
2. 크림라떼 4000원      2. 레몬에이드 2000원    2. 초코머핀 2500원
3. 에스프레소 3000원    3. 블랙밀크티 3000원    3. 도쿄롤 3000원
----------------------------------------------------------------------------------
총 누적금액 >> 5400원
----------------------------------------------------------------------------------
1. 커피, 2. 음료, 3. 디저트 중 번호를 입력해주세요 (나머지 숫자 입력 시 종료) >> 0

프로그램을 종료합니다.

'Etc > C' 카테고리의 다른 글

rsp_game(묵찌빠 게임)  (0) 2025.01.26
hourglass(모래시계)  (0) 2025.01.26
369  (0) 2025.01.26
스택(stack)  (0) 2023.07.31
이중연결리스트 사용 예시 (대기자명단)  (0) 2023.07.27