티스토리 뷰

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

# 프로그램 설계

1. 고도화 개요
베스트셀러 Top3 도서의 제목을 출력하는 기능
도서 데이터를 동적할당을 이용하여 저장
프로그램 구현 시 처리 대상 자료
• 도서명
• 저자
• 가격
• 판매수량
• 코드
• 베스트셀러
2. 기능 정의
1) 메뉴

2) 기능
도서 입력, 도서 출력, 제목 검색, 저자검색(검색기능키워드검색), 출판연도별 목록 출력, 베스트셀러 출력

3) 고도화 내용
베스트셀러 Top3 출력
동적메모리를 할당하여 저장
연속 입력 기능, 출력 메뉴 연속 사용 기능

4) 고도화 방법

3. 자료구조 정의
1) 자료

2) 자료구조
struct book {
   char bookTitle[50];
   char bookAuthor[20];
   int bookPrice;
   int bookSale;
   char bookCode[8];
};

# 코드 분석

1. 동적할당

int main()
{
    int sel, totalBCnt=0;
    BOOK *myBook;
    myBook = (BOOK *)calloc(2,sizeof(BOOK));

    typedef struct book {
        char bookTitle[50];
        char bookAuthor[20];
        int bookPrice;
        int bookSale;
        char bookCode[9];
    }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));
                중략
        }while(yn == 'y');
        
        *cn = cnt;
        return mb;
    }  
2. 베스트셀러 출력

case 3 :
    qsort(mb, cnt+1, sizeof(BOOK), compare);
    printf(‚\n-----------------------------------\n‛);
    printf(‚----------BestSeller Top 3----------‛);
    printf(‚\n-----------------------------------\n‛);

    for (int i = 0; i < 3 ; i++)
    {
        printf(‚Top %d : %30s Sale: %d\n‛, i+1, mb[i].bookTitle,
        mb[i].bookSale );
    }

    printf(‚\n-----------------------------------\n‛);
    break;

int compare(const void *a, const void *b)
{
    BOOK* ptr_a = (BOOK *)a;
    BOOK* ptr_b = (BOOK *)b;

    if (ptr_a->bookSale < ptr_b->bookSale) return 1;
    else if (ptr_a->bookSale == ptr_b->bookSale) return 0;
    else return -1;
}
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함