언어 자료구조 알고리즘/디딤돌 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");
    }
}

반응형