언어 자료구조 알고리즘/디딤돌 C언어

[C language] 111. 도서 관리 프로그램 - 제목으로 검색

언제나휴일 2016. 4. 24. 17:12
반응형



도서 관리 프로그램 - 제목으로 검색.zip


도서 제목으로 검색 기능은 검색에 사용한 키가 도서 번호 대신 도서 제목으로 변경한 말고는 차이가 없어요.

 
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");
    }
}

반응형