카테고리 없음

김복천국 코드

joo_coding 2025. 3. 28. 21:51
#include <stdio.h>
#include <stdlib.h> // 말록 프리
#include <string.h> // strcpy

#define MENU_NUM 48
#define BASKET_SIZE 10

// < 메뉴 구조체 >
typedef struct
{
    int menu_code;
    char menu_name[30];
    int menu_price;

} menu;

void menu_borad(menu *m) // 메뉴 출력 함수
{
    printf("========메뉴판========\n");

    for (int i = 0; i < MENU_NUM; i++)
    {
        printf("%02d.\t %-12s\t %4d원\n", i+1, m[i].menu_name, m[i].menu_price);
        // 가로배치는 별찍기 응용
    }
}

void gim_ra_set()
{
    // 김밥1:라면1 이면 500원 할인
    // 장바구니 1101 갯수 (나누기) 1201 갯수 = n 이면?
    // 똑같이 갯수가 n이면?
    // 500원 x n 개 할인
}

void ddeok_tui_set()
{
    // 떡볶이1:튀김1 이면 500원 할인
}

void bunsik_set()
{
    // 김라떡튀 1개씩 있으면 2천원 할인
}

void drink_service()
{
    // 메뉴 5개 이상 & 장바구니에 음료
    
}

void menu_10_up_dc()
{
    // 메뉴가 10개 이상이면 합계에서 *0.9
}

void cash_receipt(menu *basket, int user_total, int dc_money, int pay_money)
{
    printf("현금영수증\n");
    printf("메뉴\n");
    for (int i = 0; i < 10; i++)
    {
        if (basket[i].menu_price > 0) // 널값이 아니면 출력
        {
            printf("%s ", basket[i].menu_name);       
        }
    }
    printf("합계: %d원", user_total);
    printf("할인: %d원", dc_money);
    printf("총 결제금액: %d원", pay_money);
    
}

void card_receipt(menu *basket, int user_total, int dc_money, int pay_money)
{
    printf("카드영수증\n");
    printf("메뉴\n");
    for (int i = 0; i < 10; i++)
    {
        if (basket[i].menu_price > 0) // 널값이 아니면 출력
        {
            printf("%s ", basket[i].menu_name);       
        }
    }
    printf("합계: %d원", user_total);
    printf("할인: %d원", dc_money);
    printf("총 결제금액: %d원", pay_money);
    
}

void cancle(menu *m, menu *m2, int pick , int total, int count)
{
    for (int i = 0; i < 48; i++) // 메뉴 48개를 훑는다.
    {
        if (pick == i) // i번 메뉴를 골랐다면?
        {
            printf("%s를 골랐습니다.\n", m[i-1].menu_name);

            int cancle_or_not;
            printf("(1)취소   (2)담기   ");
            scanf("%d", &cancle_or_not);

            if (cancle_or_not == 1)
            {
                printf("취소하셨습니다. 다시 골라주세요.\n");
                break;
            }
            
            if (cancle_or_not == 2)
            {
                // 고른 메뉴를 장바구니에 저장
                for (int j = 0; j < BASKET_SIZE ; j++)
                {
                    if (m[j].menu_code == 0)
                    {
                        m2[j] = m[i-1];
                        total += m[i-1].menu_price;
                        count += 1;
                        break;
                    }
                }
            }
        }
    }
}

/*---------------------main--------------------*/
int main()
{
    //menu empty[] = {0,"빈칸",0};

    menu basket[BASKET_SIZE];
    // menu basket[BASKET_SIZE] = {{0,"빈칸",0},{0,"빈칸",0},{0,"빈칸",0},{0,"빈칸",0},{0,"빈칸",0},
    //                             {0,"빈칸",0},{0,"빈칸",0},{0,"빈칸",0},{0,"빈칸",0},{0,"빈칸",0}}; // 장바구니 = 동적할당 말록 프리
    menu drink_basket[BASKET_SIZE]; // 음료전용 바구니

    int menu_count=0; // 할인 계산용 갯수 카운트
    int *count_ptr;
    count_ptr = &menu_count;

    int user_total=0; // 장바구니 총액
    int dc_money=0;   // 할인된 금액들
    int pay_money=0; // 할인적용 후 계산할 금액
    int takeout_cost=0; // 포장비

    int daily_sales=0; // 일매출

    int date_day = 28;
    int date_month = 3;

    
    // 김밥,라면,덮밥,찌개,떡볶이,튀김,기타,음료 (1~8)
    menu all_menu[] = // 코드,이름,가격
    {
        // 1. 김밥 (8)
        {1101,"김밥",3000},
        {1101,"치즈김밥",3500},
        {1101,"참치김밥",3500},
        {1101,"김치김밥",3500},
        {1101,"야채김밥",3000},
        {1101,"소고기김밥",4000},
        {1101,"돈까스김밥",4000},
        {1101,"삼겹살김밥",4500},
    
        // 2. 라면 (7)
        {1201,"라면",3000},
        {1201,"계란라면",3500},
        {1201,"치즈라면",3500},
        {1201,"만두라면",3500},
        {1201,"짬뽕라면",4000},
        {1201,"떡라면",3500},
        {1201,"떡만두라면",4000},
    
        // 3. 덮밥 (9)
        {1301,"제육덮밥",7000},
        {1301,"오징어덮밥",7500},
        {1301,"오징어제육덮밥",8000},
        {1301,"돈까스덮밥",8000},
        {1301,"쇠고기덮밥",8000},
        {1301,"김치덮밥",7000},
        {1301,"김치제육덮밥",7500},
        {1301,"소세지덮밥",7500},
        {1301,"오므라이스",7500},
    
    
        // 4. 찌개 (8)
        {1401,"김치찌개",7000},
        {1401,"된장찌개",7000},
        {1401,"참치김치찌개",7500},
        {1401,"고기듬뿍찌개",8000},
        {1401,"차돌된장찌개",8000},
        {1401,"부대찌개",8000},
        {1401,"동태찌개",8000},
        {1401,"순두부찌개",8000},
    
        // 5. 떡볶이 (6)
        {1501,"떡볶이",5000},
        {1501,"치즈떡볶이",6000},
        {1501,"해물떡볶이",7000},
        {1501,"짜장떡볶이",7000},
        {1501,"라볶이",6000},
        {1501,"치즈라떡볶이",7000},
            
    
        // 6. 튀김 (5)
        {1601,"김말이튀김",4000},
        {1601,"야채튀김",4000},
        {1601,"만두튀김",4000},
        {1601,"고추튀김",5000},
        {1601,"오징어튀김",5000},
            
    
        // 7. 기타 (1)
        {1701,"공기밥",1500}, // 44
    
        // 8. 음료수 (4)
        {1801,"콜라",1000},
        {1801,"사이다",1000},
        {1801,"오렌지환타",1000},
        {1801,"파인애플환타",1000}, // 48

        // 빈칸
        {0,"빈칸",0} // 49
    
        }; // 총 48개


    while (1) // 종료전까지 키오스크를 계속 돌린다.
    {
        
        printf("[  김복천국 키오스크  ]\n[                     ]\n");
        printf("[      -%d월%d일-      ]\n[                     ]\n", date_month, date_day);
        printf("[       1. 정산       ]\n");
        printf("[       2. 주문       ]\n");
        printf("[       3. 종료       ]\n\n");

        int main_menu_pick;
        printf("원하시는 업무를 선택하세요.\n");
        scanf("%d", &main_menu_pick);

        if (main_menu_pick == 1)
        {
            printf("정산을 시작합니다. \n");
            printf("날짜:%d월%d일", date_month, date_day);
            printf("일매출: %d원\n", daily_sales);

            daily_sales = 0; // 일매출 초기화
            daily_sales += 1; // 날짜 하루 추가
            
        }

        else if (main_menu_pick == 2)
        {
            // 메뉴출력
            menu_borad(all_menu);

            // 주문하기
            int buy_or_not = 1;
            int menu_pick;

            while (buy_or_not == 1) // 2.나가기 하면 끝
            {
                int menu_pick; // 메뉴선택
                printf("\n메뉴를 골라주세요: ");
                scanf("%d", &menu_pick);

                //cancle(all_menu, basket, menu_pick, user_total, menu_count);
        
                for (int i = 0; i < 48; i++) // 메뉴 48개를 훑는다.
                {
                    if (menu_pick == i) // i번 메뉴를 골랐다면?
                    {
                        printf("%s를 골랐습니다.\n", all_menu[i-1].menu_name);

                        int cancle_or_not;
                        printf("(1)취소   (2)담기   ");
                        scanf("%d", &cancle_or_not);

                        if (cancle_or_not == 1)
                        {
                            printf("취소하셨습니다. 다시 골라주세요.\n");
                            break;
                        }
                        
                        if (cancle_or_not == 2)
                        {
                            // 고른 메뉴를 장바구니에 저장
                            // for (int j = 0; j < BASKET_SIZE ; j++)
                            // {
                            //     if (basket[j].menu_code == 0)
                            //     {
                            //         basket[j] = all_menu[i-1];
                            //         user_total += all_menu[i-1].menu_price;
                            //         menu_count += 1;
                            //         break;
                            //     }
                            // }
                            
                            // 현재 카운트가 0이니까 0번에 저장을 해준다.
                            //basket[menu_count].menu_name = all_menu[i-1].menu_name;
                            basket[menu_count].menu_code = all_menu[i-1].menu_code;
                            basket[menu_count].menu_price = all_menu[i-1].menu_price;
                            user_total += all_menu[i-1].menu_price;
                            strcpy(basket[menu_count].menu_name ,all_menu[i-1].menu_name); 
                            menu_count += 1;
                            break;
                        }
                    }
                }

        
                printf("현재 장바구니: ");
                for (int i = 0; i <= menu_count; i++) // 장바구니에 담은것만 출력하고싶은데..
                {
                    if (basket[i].menu_price > 0) // 널값이 아니면 출력
                    {
                        printf("%s ", basket[i].menu_name);       
                    }
                }

                printf("\n합계: %d원(총 %d개)\n", user_total, menu_count);

                printf("\n(1)더 주문하기   (2)결제하기   ");
                scanf("%d", &buy_or_not);

                if (buy_or_not == 1)
                    continue;
                
                else if (buy_or_not == 2)
                    break;

                menu_count = 0; //결제 끝나면 카운트 초기화 
            }

            // 세트할인 체크) 1.음료서비스 / 2.10%할인 / 3.세트할인(김라,떡튀,분식)
            if (menu_count >= 5)
            {
                // 메뉴가 5개 넘으면 음료수 있나 체크
                int n = (menu_count/5);

                // 나눈게 n개면 음료수 n개 주라
            }
            

            // 포장or매장
            int takeout_or_not;
            printf("(1)포장   (2)매장   ");
            scanf("%d", &takeout_or_not);

            if (takeout_or_not == 1)
            {
                if (menu_count < 5) // 5개 미만
                {
                    printf("포장비 2000원 추가\n");
                    takeout_cost += 2000;
                    printf("총 결제금액: %d원\n", user_total+takeout_cost);
                }

                else
                printf("포장비 없음\n");
            }

            else if (takeout_or_not == 2)
            {
                printf("매장으로 선택하셨습니다.\n");
            }


            // 현금or카드
            int cash_or_card;
            printf("(1)카드   (2)현금   ");
            scanf("%d", &cash_or_card);

            if (cash_or_card == 1)
            {
                printf("카드결제를 선택하셨습니다.\n");
                user_total += (user_total*0.1);
                user_total += takeout_cost;
                printf("총 결제금액: %d원\n", user_total);
            }

            else if (cash_or_card == 2)
            {
                printf("현금결제를 선택하셨습니다.\n");
                user_total += takeout_cost;
                printf("총 결제금액: %d원\n", user_total);
            }
            
        }
        

        else if (main_menu_pick == 3)
        {
            printf("정산할게 있습니까?\n");
            printf("종료합니다.\n");
            break;
        }

        else
        {
            printf("잘못 입력하셨습니다.\n");
            continue;
        }
    }

    return 0;

}