과제 1단계. [카페 키오스크] 기능/데이타 분석, 화면 설계, 코드 템플릿
1. 요구사항
| OO 카페 키오스크 시스템은 고객이 카페 메뉴를 주문할 수 있도록 지원하는 시스템이다. 시스템은 카페에서 판매하는 메뉴 정보를 저장하고, 이를 바탕으로 메뉴 조회, 메뉴 선택, 주문 및 결제 기능을 제공한다. 카페 메뉴는 메뉴번호(menu_id), 메뉴명(name), 가격(price), 판매상태(status)를 관리한다. 판매상태는 판매중 또는 품절로 구분한다. 사용자는 키오스크 화면에서 메뉴 목록을 볼 수 있어야 하며, 메뉴명, 가격, 판매상태가 함께 표시되어야 한다. 품절인 메뉴는 선택할 수 없다. 사용자는 원하는 메뉴를 선택하고 수량을 입력하여 주문할 수 있어야 한다. 한 번의 주문에는 여러 개의 메뉴를 추가할 수 있다. 주문이 완료되면 시스템은 주문번호(order_id), 주문한 메뉴 목록, 각 메뉴의 수량, 총 주문 금액을 저장해야 한다. 결제는 신용카드 또는 카카오페이 방식으로 진행할 수 있다. 시스템은 결제방식과 결제금액을 저장해야 한다. 결제가 완료되면 시스템은 주문번호, 주문한 메뉴명, 수량, 총 결제금액, 결제방식을 화면에 출력해야 한다. |
2. 기능분석
2.1. 기능 리스트
| 1. 카페 메뉴 관리 - 카페 메뉴 조회 - 카페 메뉴 등록 - 카페 메뉴 수정 - 카페 메뉴 삭제 2. 주문관리 - 주문하기 - 메뉴 조회 -> 메뉴 선택 (반복하기) -> 카트에 넣기 (반복하기) -> 선택완료 - 결제하기 - 결제방법 선택 (1. 신용카드, 2. 카카오페이) -> 결제처리 - 주문정보(+결제정보) 출력 |
2.2. 데이타 리스트 - 시스템에서 생성하고 저장하는 정보
1. 메뉴 정보 - 메뉴번호(menu_id) - 메뉴명(name) - 가격(price) - 판매상태(status) - 판매중/품절 2. 주문 정보 2.1 주문 항목 - 메뉴명, 수량 2.2. 주문정보 - 주문 번호(order_id) - 주문 항목 리스트 (2.1의 주문항목의 리스트) - 총 금액 2.3 결제정보 - 주문번호 - 결제방식 - 결제금액 - 결제상태 |
3. 간략 설계
3.1 화면 메뉴 설계
=========================================
SSS 카페 키오스크
=========================================
메뉴관리(관리자용) 주문관리
11. 메뉴 등록 21. 주문하기
12. 메뉴 변경 22. 주문조회
13. 메뉴 삭제
14. 메뉴 조회
0. 종료
=========================================
메뉴 번호를 입력하세요 (0: 종료):
3.2 모듈(파일) 설계 - (지속적 상세화 진행예정)

4. 코드 - 키오스크 메뉴 출력 코드
선택 1. 통합버전 main.c
#include <stdio.h>
void register_menu_item(void)
{
printf("[TODO] 메뉴 등록 기능 호출!\n");
}
void modify_menu_item(void)
{
printf("[TODO] 메뉴 변경 기능 호출!\n");
}
void delete_menu_item(void)
{
printf("[TODO] 메뉴 삭제 기능 호출!\n");
}
void retrieve_menu_item(void)
{
printf("[TODO] 메뉴 조회 기능 호출!\n");
}
void order(void)
{
printf("[주문하기 기능 호출]\n");
}
void search_order(void)
{
printf("[주문조회 기능 호출]\n");
}
void print_main_menu(void)
{
printf("=========================================\n");
printf(" SSS 카페 키오스크\n");
printf("=========================================\n");
printf("메뉴관리(관리자용) 주문관리\n");
printf("11. 메뉴 등록 21. 주문하기\n");
printf("12. 메뉴 변경 22. 주문조회\n");
printf("13. 메뉴 삭제\n");
printf("14. 메뉴 조회\n");
printf("0. 종료\n");
printf("=========================================\n");
}
void run(void)
{
int menu;
while (1)
{
print_main_menu();
printf("메뉴 번호를 입력하세요 (0: 종료): ");
scanf("%d", &menu);
switch (menu)
{
case 0:
printf("프로그램을 종료합니다.\n");
return;
case 11:
register_menu_item();
break;
case 12:
modify_menu_item();
break;
case 13:
retrieve_menu_item();
break;
case 21:
order();
break;
case 22:
search_order();
break;
default:
printf("잘못된 메뉴 번호입니다.\n");
}
printf("\n");
}
}
int main(void)
{
run();
return 0;
}
선택 2. 분할 버전
- 파일 분할 개념

- kiosk_ui.c 파일은 함수의 기능을 구현하고, kiosk_ui.h 파일은 외부(main.c)에서 호출할 수 있는 함수를 보여준다.
- kiosk_ui.h에 오픈된 함수의 내구 구현을 kiosk_ui.c에 작성한다.
- main.c에서 kiosk_ui의 함수를 호출하려면, kiosk_ui.h 파일을 include 한다.
- #include "kiosk_ui.h"
- 분할된 파일의 c 파일을 컴파일 한다.
- main.c 와 kiosk.c 파일을 각각 compile 하여 main.o, kiosk.o를 생성
- link 단계에서 main.o와 kiosk.o를 합쳐 kiosk.exe 생성
gcc main.c kiosk_ui.c -o kiosk
main.c
#include "kiosk_ui.h"
int main(void)
{
run();
return 0;
}
kiosk_ui.h
#ifndef KIOSK_UI_H
#define KIOSK_UI_H
void run(void);
#endif
kiosk_ui.c
#include <stdio.h>
#include "kiosk_ui.h"
void register_menu_item(void)
{
printf("[TODO] 메뉴 등록 기능 호출!\n");
}
void modify_menu_item(void)
{
printf("[TODO] 메뉴 변경 기능 호출!\n");
}
void delete_menu_item(void)
{
printf("[TODO] 메뉴 삭제 기능 호출!\n");
}
void retrieve_menu_item(void)
{
printf("[TODO] 메뉴 조회 기능 호출!\n");
}
void order(void)
{
printf("[주문하기 기능 호출]\n");
}
void search_order(void)
{
printf("[주문조회 기능 호출]\n");
}
void print_main_menu(void)
{
printf("=========================================\n");
printf(" SSS 카페 키오스크\n");
printf("=========================================\n");
printf("메뉴관리(관리자용) 주문관리\n");
printf("11. 메뉴 등록 21. 주문하기\n");
printf("12. 메뉴 변경 22. 주문조회\n");
printf("13. 메뉴 삭제\n");
printf("14. 메뉴 조회\n");
printf("0. 종료\n");
printf("=========================================\n");
}
void run(void)
{
int menu;
while (1)
{
print_main_menu();
printf("메뉴 번호를 입력하세요 (0: 종료): ");
scanf("%d", &menu);
switch (menu)
{
case 0:
printf("프로그램을 종료합니다.\n");
return;
case 11:
register_menu_item();
break;
case 12:
modify_menu_item();
break;
case 13:
retrieve_menu_item();
break;
case 21:
order();
break;
case 22:
search_order();
break;
default:
printf("잘못된 메뉴 번호입니다.\n");
}
printf("\n");
}
}
'[1] 프로그래밍1 및 실습(C언어) > [과제] 콘솔 키오스크' 카테고리의 다른 글
| [콘솔키오스크] 과제 2단계. 메뉴 관리 기능 구현 [5/7] - 결과 예시 (0) | 2026.05.10 |
|---|---|
| [콘솔키오스크] 과제 2단계. 메뉴 관리 기능 구현 [5/7] (0) | 2026.05.07 |
| [콘솔키오스크] 과제 1단계. Intro - 키오스크 과제 [4/30] (0) | 2026.04.29 |
| [콘솔키오스크] 과제 0단계. Intro - 도서구매 시스템 예제[4/30] (0) | 2026.04.21 |
| [콘솔키오스크] 과제 0 단계. 과제 진행 계획 [4/30] (0) | 2026.04.21 |