언어 자료구조 알고리즘/[C++]디딤돌 자료구조와 알고리즘

8.5 도서 검색 및 특정 장르 보기 [디딤돌 자료구조와 알고리즘 with C++]

언제나휴일 2016. 4. 4. 11:56
반응형

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;

};

 

 

 

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();

}

반응형