프로그래밍 언어 공부/C

도서관리 시스템 고도화(동적메모리)

CalebHong 2022. 1. 17. 17:51

고도화 개요

- 베스트셀러 Top3 도서의 제목을 출력하는 기능

- 도서 데이터를 동적할당을 이용하여 저장

프로그램 구현 시 처리 대상 자료
- 도서명 - 가격 - 코드 - 저자 - 판매수량 - 베스트셀러

 

기능 정의

- 베스트셀러 Top3 출력

- 동적메모리를 할당하여 저장(필요한 만큼 데이터를 사용)

- 연속 입력 기능, 출력 메뉴 연속 사용 기능

 

 

고도화 방법

베스트셀러 출력 메모리 공간 활용 연속 입·출력
- qsort함수를 이용한 판매수량 정렬 - 동적 메모리 할당을 이용한 요구 메모리축속 - 무한 반복 루프로 구현

 

자료

typedef struct book 
{
    char bookTitle[50];
    char bookAuthor[20];
    int boolPrice;
    int bookSale;
    char bookCode[8];
} BOOK;

int main()
{
    int sel, totalCBnt = 0;
    BOOK *myBook;
    myBook = (BOOK*)calloc(2, sizeof(BOOK)); // 미리 많은 갯수를 생성하지 않고 동적 할당 대체
}

BOOK* inBook(BOOK* mb, int* cn)
{
	char yn;
    int number;
    int cnt;
    cnt = *cn;
    do 
    {
    	while(1)
        {
        	mb = (BOOK*)realloc(mb, sizeof(BOOK)*(cnt+2)); // mb의 공간에 대하여 공간확보를 위한 재할당
        	중략
        }
    } while(yn == 'y');
    *cn = cnt;
    return mb;
}
#include <conio.h>

BOOK inBook(BOOK* mb, int* cn)
{
    char yn;
    do
    {
    	while(1)
        {
            printf("\n책코드 : ");
            중략
            printf("\n 계속 입력하시겠습니까?(Y/N) ");
            yn = getche(); // 버퍼가 없는 함수이기 때문에 누르자마자 엔터없이 입력이 종료가 됨
            cnt++;
       } while (yn == 'y');
       *cn = cnt;
       return mb;
    }
}

 

 

'프로그래밍 언어 공부 > C' 카테고리의 다른 글

텍스트 파일 입출력(응용)  (0) 2022.01.18
파일 입출력 라이브러리(Basic Step)  (0) 2022.01.17
함수 포인터(Function Pointer)  (0) 2022.01.15
동적 메모리  (0) 2022.01.15
수학 관련 라이브러리  (0) 2022.01.13