111. 도서 관리 프로그램 – 제목으로 검색

도서 제목으로 검색 기능은 검색에 사용한 키가 도서 번호 대신 도서 제목으로 변경한 것 말고는 차이가 없어요.

Book 헤더 파일에 도서 제목을 반환하는 함수를 선언하고 소스 파일에 구현하세요.

const char *BookGetTitle(Book *book)
{
    return book->title;
}

Genre 헤더 파일에 도서 제목으로 도서 검색 함수를 선언하고 소스 파일에 구현하세요.

Book *GenreFindBookByTitle(Genre *genre,const char *title)
{
    Iterator seek;
    Iterator end;
    Book *book=0;
    const char *stitle = 0;

    seek= EHArrayBegin(genre->books);
    end= EHArrayEnd(genre->books);

    GenreView(genre);
    for(  ;seek != end; ++seek)
    {
        book = (Book *)(*seek);
        stitle = BookGetTitle(book);
        if(strcmp(stitle,title)==0)
        {
            return book;
        }
    }
    return 0;
}

App에 도서 제목으로 검색 기능도 구현하세요.
도서 번호로 검색과 큰 차이가 없으므로 설명은 생략할게요.

void AppFindBookByTitle(App *app)
{
    char gname[MAX_GNAME_LEN+1]="";
    char title[MAX_TNAME_LEN+1]="";
    Iterator seek = 0;
    Genre *genre = 0;
    Book *book = 0;

    AppListGenre(app);
    printf("검색할 장르명을 입력하세요.\n");
    gets_s(gname,MAX_GNAME_LEN);
    seek = AppFindGenre(app,gname);
    if(seek == EHArrayEnd(app->genres))
    {
        printf("잘못 선택하였습니다.\n");
        return;
    }
    printf("도서 제목을 입력하세요.\n");
    gets_s(title,MAX_TNAME_LEN);
    genre = (Genre *)(*seek);
    book = GenreFindBookByTitle(genre,title);
    if(book)
    {
        BookView(book);
    }
    else
    {
        printf("도서를 찾지 못했습니다.\n");
    }
}