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

8.4 전체 도서 보기 및 전체 보기 [디딤돌 자료구조와 알고리즘 with C++]

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

8.4 전체 도서 보기 및 전체 보기

이번에는 전체 도서 보기와 전체 보기 기능을 구현합시다. 앞에서 도서 추가 기능을 구현하였는데 이를 확인할 수 있기 때문에 먼저 구현하는 것이 개발하기 편합니다.

 

먼저 정체 도서 보기 기능을 구현합시다.

void App::ListBook() //전체 도서 보기

{

isbn을 키, 도서 개체를 값으로하는 bookdic의 반복자를 이용하여 전체를 순회합니다.

    BDIter seek = bookdic.begin();

    BDIter last = bookdic.end();

    Book *book=0;

 

    for(  ;seek != last; ++seek)

    {

map에 보관한 것은 isbn키와 도서 개체를 값으로 하는 pair입니다. 도서 개체를 구하려면 반복자에 간접 연산하여 보관한 pair에 접근한 후에 멤버 second를 사용해야죠.

        book = (*seek).second;

 

        if(book)

        {

map을 인덱스 연산으로 사용할 때 값이 0인지 확인하고 사용해야죠.

            book->View();

        }

    }

}

 

이제 Book 클래스에 View메서드를 추가하세요.

class Book

{

    ...중략...   

    void View()const;

};

 

도서 정보를 출력하세요.

void Book::View()const

{

    cout<<isbn<<" ,No."<<bnum<<", 제목:"<<title<<endl;

}

 

 

 

 

 

이제 전체 보기 기능을 구현합시다.

void App::ViewAll() //전체 보기

{

리스트 genres의 반복자를 이용해서 전체 장르를 순회하세요.

    GIter seek = genres.begin();

    GIter last = genres.end();

    Genre *genre = 0;

    for(   ;seek != last ; ++seek)

    {

        genre = *seek;

장르에 ViewAll 메서드를 추가한 후에 호출하세요.

        genre->ViewAll();

    }   

}

 

class Genre

{

    ...중략...

    void ViewAll()const;

};

 

void Genre::ViewAll()const

{

먼저 장르의 기본 정보를 출력하세요.

    View();

장르에 보관한 도서를 반복해서 출력합니다. 인덱스를 사용하여 보관하므로 인덱스 0에서 최대 인덱스까지 순차적으로 출력하세요.

    for(int index=0; index<max_book;++index)

    {

        if(books[index])

        {

인덱스 연산 결과가 0일 수 있으니 0이 아닌지 확인하는 코드가 필요합니다.

            books[index]->View();

        }

    }

}

반응형