8.5 도서 검색 및 특정 장르 보기

이번에는 ISBN으로 도서 검색과 특정 장르 선택 후 도서 검색과 특정 장르 보기 기능을 구현합시다.

먼저 ISBNㅇ로 도서 검색 기능을 구현하세요.

void App::FindBookByISBN() //ISBN으로 도서 검색
{
먼저 검색할 도서의 ISBN을 입력받으세요.
    cout<<"검색할 도서의 ISBN:";
    string isbn = ehglobal::getstr();
    if(bookdic[isbn]==0)
    {

입력한 ISBN의 도서가 없으면 메시지를 출력하고 종료합니다.

        cout<<"없는 도서의 ISBN입니다."<<endl;
        return;
    }

도서 정보를 출력하세요.

    bookdic[isbn]->View();
}

특정 장르 선택 후 도서 검색을 구현합시다.

void App::FindBookAtAGenre() //특정 장르 선택 후 도서 검색
{

먼저 장르를 선택하세요.

    Genre *genre = SelectGenre();

잘못 선택하였으면 메시지를 출력하고 종료합니다.

    if(genre == 0)
    {
        cout<<"잘못 선택하였습니다."<<endl;
        return;
    }

선택한 장르에서 도서 검색 메서드를 호출하세요. 아직 추가하지 않은 메서드입니다.

    genre->FindBook();
}

Genre 클래스에 FindBook 메서드를 추가하세요.

class Genre
{
    ...중략...
    void FindBook()const;
};

Genre 클래스에 FindBook 메서드를 구현합시다.

void Genre::FindBook()const
{

검색할 도서 구분자를 입력받으세요.

    cout<<"장르 내 도서 구분자(1~100):";
    int bnum = ehglobal::getnum();
    if((bnum<1)||(bnum>100))
    {

유효한 도서 구분자가 아니면 메시지를 출력하고 종료하세요.

        cout<<"범위를 벗어난 도서 구분자입니다."<<endl;        
        return;
    }

입력한 도서가 있으면 도서 정보를 출력하세요.

    if(books[bnum-1])
    {
        books[bnum-1]->View();
    }

입력한 도서가 없으면 메시지를 출력하세요.

    else
    {
        cout<<"없는 도서입니다."<<endl;
    }
}

이제 특정 장르 보기 기능을 구현합시다.

void App::ViewAGenre() //특정 장르 보기
{

장르를 선택합니다.

    Genre *genre = SelectGenre();
    if(genre == 0)
    {

잘못 선택하였으면 메시지를 출력하고 종료합니다.

        cout<<"잘못 선택하였습니다."<<endl;
        return;
    }

장르의 ViewAll 메서드를 호출하여 장르 정보 및 장르 내 보관 도서 정보를 출력합니다.

    genre->ViewAll();
}