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();
}
}
}
'언어 자료구조 알고리즘 > [C++]디딤돌 자료구조와 알고리즘' 카테고리의 다른 글
9. 기타 이진 트리 및 분할 정복 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
---|---|
8.7 장르별 도서 관리 프로그램 코드[디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
8.6 도서 삭제 및 소멸 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
8.6 도서 삭제 및 소멸 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
8.5 도서 검색 및 특정 장르 보기 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
8.3 도서 추가 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
8.2 장르 추가 및 전체 장르 보기 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
8. STL 실습 - 장르별 도서 관리 프로그램 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
7.5 STL의 map 사용 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |
7.4 이진 탐색 트리 구현 [디딤돌 자료구조와 알고리즘 with C++] (0) | 2016.04.04 |