도서 제목으로 검색 기능은 검색에 사용한 키가 도서 번호 대신 도서 제목으로 변경한 것 말고는 차이가 없어요.
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"); } }