본문 바로가기
IT창고/C

카드 관리

by 창구창고 2007. 1. 22.
반응형

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define MAX 100

int menu(void);
void author_search(void);
void title_search(void);
void enter(void);
void save(void);
void load(void);
void display(int i);

struct book_type{
 unsigned date;
 unsigned char ed;
 unsigned pages;
};


struct catalog{
 char name[80];
 char title[80];
 char pub[80];
 struct book_type book;
} cat[MAX];

int top = 0;

int main(int argc, char*argv[])
{
 int choice;

 do{
  choice = menu();
  switch(choice){
   case 1: enter();
    break;
   case 2: author_search();
    break;
   case 3: title_search();
    break;
  }
 }while(choice != 4);

 return 0;
}

int menu(void)
{
 int i;
 char str[80];

 printf("Card catalog: \n");
 printf("1. Enter \n");
 printf("2. Search by Author \n");
 printf("3. Search by Title \n");
 printf("4. Quit \n");

 do{
  printf("Choose your selection: ");
  gets(str);
  i = atoi(str);
  printf("\n");
 } while(i<1 || i>5);

 return i;
}

void enter(void)
{
 int i;
 char temp[80];

 for(i=top; i<MAX; i++){
  printf("give me a Author name(enter is quit): ");
  gets(cat[i].name);
  if(!*cat[i].name) break;
  printf("give me a title: ");
  gets(cat[i].title);
  printf("give me a publisher: ");
  gets(cat[i].pub);
  printf("give me a date publication: ");
  gets(temp);
  cat[i].book.date = (unsigned) atoi(temp);
  printf("give me a edition: ");
  gets(temp);
  cat[i].book.pages = (unsigned) atoi(temp);
 }
 top = i;
}

void author_search(void)
{
 char name[80];
 int i, found;

 printf("Name: ");
 gets(name);
 found = 0;
 for(i=0; i<top; i++)
  if(!strcmp(name, cat[i].name)){
   display(i);
   found = 1;
   printf("\n");
  }

 if(!found) printf("no data\n");
}

void title_search(void)
{
 char title[80];
 int i, found;

 printf("Title: ");
 gets(title);
 found = 0;
 for(i=0; i<top; i++)
  if(!strcmp(title, cat[i].title)){
   display(i);
   found = 1;
   printf("\n");
  }
 if(!found) printf("not found\n");
}

void display(int i)
{
 printf("%s\n", cat[i].title);
 printf("by %s\n", cat[i].name);
 printf("Published by %s\n", cat[i].pub);
 printf("Printed: %u, %u edition\n", cat[i].book.date, cat[i].book.ed);
}


반응형