과제 1단계 수행을 위한 예제 -  콘솔 도서구매 시스템

콘솔 키오스크를 구현하기 위해 온라인 서점 도서구매 서비스로 요구사항 분석 및 설계과정을 먼저 이해합니다. 본 수업은 분석설계가 아닌 C 언어를 이해하고 프로그래밍을 목적으로 하므로, 분석, 설계 내용은 과정에 맞춰 단순화 하였습니다. 

 

1 요구사항

OO 온라인 서점 시스템은 고객이 도서를 검색하고 주문할 수 있도록 지원하는 시스템이다. 시스템은 서점에서 판매하는 도서 정보를 저장하고, 이를 바탕으로 도서 조회, 도서 선택, 주문 및 결제 기능을 제공한다.

도서는 도서번호(book_id), 도서명(title), 가격(price), 재고상태(status)를 관리한다. 재고상태는 판매중 또는 품절로 구분한다.


사용자는 온라인 서점 화면에서 도서 목록을 볼 수 있어야 하며, 도서명, 가격, 재고상태가 함께 표시되어야 한다. 품절인 도서는 화면에 표시되더라도 선택할 수 없다.


사용자는 원하는 도서를 선택하고 수량을 입력하여 주문할 수 있어야 한다. 한 번의 주문에는 여러 권의 도서를 추가할 수 있다. 주문이 완료되면 시스템은 주문번호(order_id), 주문한 도서 목록, 각 도서의 수량, 총 주문 금액을 저장해야 한다.


결제는 신용카드 또는 계좌이체 방식으로 진행할 수 있다. 시스템은 결제방식과 결제금액을 저장해야 한다.

결제가 완료되면 시스템은 주문번호, 주문한 도서명, 수량, 총 결제금액, 결제방식을 화면에 출력해야 한다.

 

2. 기능 분석

목표 시스템에서 제공해야 할 기능을 정의하고, 기능이 사용할 데이타를 구체화 한다. 

2.1. 기능 리스트 

1. 도서관리
  • 도서 등록
    도서 정보 변경
  • 도서 정보 조회(재고상태 확인 포함)
2. 주문관리
  • 주문하기
    1. 주문 항목 추가 
      • 도서 선택
      • 수량 입력
    2. 주문생성
      • 총 금액 계산
    3. 결제하기
      • 결제종류 선택하기
      • 결제진행
      • 결제 정보 저장
  • 주문 결과 출력

 

2.2. 데이타 리스트 

1. 도서정보
  • 도서번호
  • 도서명
  • 가격
  • 재고상태 (판매중, 품절)
2. 주문정보
  • 주문번호
  • 주문 항목 목록
  • 총 주문 금액
  • 주문상태
2-1. 주문정보  - 주문항목
  • 도서번호
  • 도서명
  • 수량
  • 항목 금액
4. 결제정보
  • 결제방식(신용카드, 계좌이체)
  • 결제금액
  • 결제상태

 

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");
    }
}

 

+ Recent posts