카테고리 없음
김복천국 코드
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;
}