과제 1단계 수행을 위한 예제 - 콘솔 도서구매 시스템
콘솔 키오스크를 구현하기 위해 온라인 서점 도서구매 서비스로 요구사항 분석 및 설계과정을 먼저 이해합니다. 본 수업은 분석설계가 아닌 C 언어를 이해하고 프로그래밍을 목적으로 하므로, 분석, 설계 내용은 과정에 맞춰 단순화 하였습니다.
1 요구사항
| OO 온라인 서점 시스템은 고객이 도서를 검색하고 주문할 수 있도록 지원하는 시스템이다. 시스템은 서점에서 판매하는 도서 정보를 저장하고, 이를 바탕으로 도서 조회, 도서 선택, 주문 및 결제 기능을 제공한다. 도서는 도서번호(book_id), 도서명(title), 가격(price), 재고상태(status)를 관리한다. 재고상태는 판매중 또는 품절로 구분한다. 사용자는 온라인 서점 화면에서 도서 목록을 볼 수 있어야 하며, 도서명, 가격, 재고상태가 함께 표시되어야 한다. 품절인 도서는 화면에 표시되더라도 선택할 수 없다. 사용자는 원하는 도서를 선택하고 수량을 입력하여 주문할 수 있어야 한다. 한 번의 주문에는 여러 권의 도서를 추가할 수 있다. 주문이 완료되면 시스템은 주문번호(order_id), 주문한 도서 목록, 각 도서의 수량, 총 주문 금액을 저장해야 한다. 결제는 신용카드 또는 계좌이체 방식으로 진행할 수 있다. 시스템은 결제방식과 결제금액을 저장해야 한다. 결제가 완료되면 시스템은 주문번호, 주문한 도서명, 수량, 총 결제금액, 결제방식을 화면에 출력해야 한다. |
2. 기능 분석
목표 시스템에서 제공해야 할 기능을 정의하고, 기능이 사용할 데이타를 구체화 한다.
2.1. 기능 리스트
1. 도서관리
|
2.2. 데이타 리스트
1. 도서정보
2. 주문정보
|
3. 간략 설계
3.1 화면 메뉴 설계
=========================================
온라인 도서 시스템 메뉴
========================================
도서관리 주문관리
11. 도서등록 21. 주문하기
12. 도서정보 변경 22. 주문조회
13. 도서정보 조회
=========================================
3.2 모듈(파일) 설계
![]() |
main.c - main() 함수를 가지고, 프로그램 시작시 book_store_ui.c의 run()을 실행한다. book_store_ui.c 서점 시스템의 과 메인 메뉴를 display한다. book_item.c - 판매하는 도서정보를 등록, 수정, 폐기, 조회할 수 있다. order.c - book_item에서 등록된 도서정보를 선택하고, 선택을 마치면 결제하여 주문 처리한다. - 주문완료된 정보는 주문조회 할 수 있다. |
4. 코드 템플릿
코드 예시1. 통합버전
더보기
#include <stdio.h>
void register_book(void)
{
printf("[도서등록 기능 호출]\n");
}
void modify_book(void)
{
printf("[도서정보 변경 기능 호출]\n");
}
void search_book(void)
{
printf("[도서정보 조회 기능 호출]\n");
}
void order_book(void)
{
printf("[주문하기 기능 호출]\n");
}
void search_order(void)
{
printf("[주문조회 기능 호출]\n");
}
void print_main_menu(void)
{
printf("=========================================\n");
printf(" 온라인 도서 시스템 메뉴\n");
printf("=========================================\n");
printf("도서관리 주문관리\n");
printf("11. 도서등록 21. 주문하기\n");
printf("12. 도서정보 변경 22. 주문조회\n");
printf("13. 도서정보 조회\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_book();
break;
case 12:
modify_book();
break;
case 13:
search_book();
break;
case 21:
order_book();
break;
case 22:
search_order();
break;
default:
printf("잘못된 메뉴 번호입니다.\n");
}
printf("\n");
}
}
int main(void)
{
run();
return 0;
}
코드 예시2. 파일 분할
더보기
main.c
/* main.c */
#include "book_store_ui.h"
int main(void)
{
run();
return 0;
}
book_store_ui.h
/* book_store_ui.h */
#ifndef BOOK_STORE_UI_H
#define BOOK_STORE_UI_H
void run(void);
#endif
book_store_ui.c
/* book_store_ui.c */
#include <stdio.h>
#include "book_store_ui.h"
void register_book(void)
{
printf("[도서등록 기능 호출]\n");
}
void modify_book(void)
{
printf("[도서정보 변경 기능 호출]\n");
}
void search_book(void)
{
printf("[도서정보 조회 기능 호출]\n");
}
void order_book(void)
{
printf("[주문하기 기능 호출]\n");
}
void search_order(void)
{
printf("[주문조회 기능 호출]\n");
}
void print_main_menu(void)
{
printf("=========================================\n");
printf(" 온라인 도서 시스템 메뉴\n");
printf("=========================================\n");
printf("도서관리 주문관리\n");
printf("11. 도서등록 21. 주문하기\n");
printf("12. 도서정보 변경 22. 주문조회\n");
printf("13. 도서정보 조회\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_book();
break;
case 12:
modify_book();
break;
case 13:
search_book();
break;
case 21:
order_book();
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.05.03 |
| [콘솔키오스크] 과제 1단계. Intro - 키오스크 과제 [4/30] (0) | 2026.04.29 |
| [콘솔키오스크] 과제 0 단계. 과제 진행 계획 [4/30] (0) | 2026.04.21 |
