[C language] 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");
}
}