카테고리 없음
[C언어] 도서관리 프로그램 - 구현
s뽈록이s
2012. 11. 26. 16:33
struct book { char name[10]; char title[100]; int page; }typedef book; void main() { book bk[10] = {0}; int index = 0; int cmd; int del_index; int i; while(1) { printf("입력[0] 삭제[1] 수정[2] 출력[3] 종료[-1]\n"); printf("원하는 동작을 입력해 주세요 : "); scanf("%d", &cmd); if(cmd == 0) { for(index = 0; index < 10; index++)if(bk[index].page == 0)break; if(index == 10) { printf("더 이상 저장할 공간이 없습니다.\n\n"); continue; } printf("저자를 입력해 주세요 : "); scanf("%s", bk[index].name); printf("제목을 입력해 주세요 : "); scanf("%s", bk[index].title); printf("page를 입력해 주세요 : "); scanf("%d", &bk[index].page); if(bk[index].page < 1) { printf("잘못된 값을 입력하셨습니다.\n\n"); for(i = 0; i < 10; i++)bk[index].name[i] = 0; for(i = 0; i < 100; i++)bk[index].title[i] = 0; bk[index].page = 0; continue; } printf("저장되었습니다.\n\n"); } else if(cmd == 1) { printf("삭제할 번호를 입력해 주세요 : "); scanf("%d", &del_index); if((del_index >= 0) && (del_index <= 9)) { if(bk[del_index].page == 0) { printf("해당되는 책이 없습니다. \n\n"); continue; } for(i = 0; i < 10; i++)bk[del_index].name[i] = 0; bk[del_index].page = 0; for(i = 0; i < 100; i++)bk[del_index].title[i] = 0; printf("삭제 했습니다.\n\n"); } else printf("잘못된 번호를 입력하셨습니다.\n\n"); } else if(cmd == 2) { printf("수정할 번호를 입력해 주세요 : "); scanf("%d", &del_index); if((del_index >= 0) && (del_index <= 9)) { if(bk[del_index].page == 0) { printf("해당되는 책이 없습니다. \n\n"); continue; } printf("저자를 입력해 주세요 : "); scanf("%s", bk[del_index].name); printf("제목을 입력해 주세요 : "); scanf("%s", bk[del_index].title); printf("page를 입력해 주세요 : "); scanf("%d", &bk[del_index].page); if(bk[del_index].page < 1) { printf("잘못된 값을 입력하셨습니다.\n\n"); for(i = 0; i < 10; i++)bk[del_index].name[i] = 0; for(i = 0; i < 100; i++)bk[del_index].title[i] = 0; bk[del_index].page = 0; continue; } printf("수정 했습니다.\n\n"); } else printf("잘못된 번호를 입력하셨습니다.\n\n"); } else if(cmd == 3) { printf("\n"); for(i = 0; i < 10; i++) { if(bk[i].page != 0) { printf("%d번\n", i); printf("저자 : %s\n", bk[i].name); printf("제목 : %s\n", bk[i].title); printf("page : %d\n\n", bk[i].page); } } } else if(cmd == -1) break; else printf("\n잘못된 값을 입력했습니다.\n\n"); } }
이것 저것 해야 하는 검사해야 하는 것들이 많아서 코드 길이가 조금 길다. 구조체를 이용해서 책에 대한 정보를 저장할 수 있도록 했다. 그리고 이 구조체를 배열로 선언해 10권을 저장할 수 있도록 했다.
index는 이 배열의 주소값을 지정하기 위해 사용하며 cmd는 어떤 동작을 해야 하는지 입력받는다. 그리고 del_index는 삭제하거나 수정해야 하는 주소 값을 입력받으며 i는 for문의 반복을 횟수용으로 사용한다.
프로그램 길이만 길지 어려운 내용은 없다. 다만 구조체 배열을 선언할 때 book bk[10] = {0}; 라고 해 주어 초기값을 다 0으로 주었다. 그래서 비어있는지 저장되어 있는지 구분을 할 수 있도록 하였다.