#include<stdio.h> #include<stdlib.h> #include<string.h> #define BOOK_COUNT 100 #define NAME_NEN 20 #define AUTHOR_LNE 15 typedef struct book { char name[NAME_NEN]; char author[AUTHOR_LNE]; int price; int cnt; }BOOK; typedef int INT; int index=0; void input(BOOK *p); void output(BOOK *p); void sort(BOOK *p); void search(BOOK *p); void fix(BOOK *p); void del(BOOK *p); void Save(BOOK *p); void Open(BOOK *p); int main() { BOOK b[BOOK_COUNT]={0}; int choice; while(1) { printf( "\\n\\n\\t\\t** 도서관리 프로그램 **\\n\\n" "1.도서정보 입력\\n" "2.도서정보 출력\\n" "3.도서정보 정렬\\n" "4.도서정보 수정\\n" "5.도서정보 검색\\n" "6.도서정보 삭제\\n" "7.저 장\\n" "8.불 러 오 기\\n" "0.프로그램 종료\\n" "선택 : [ ]\\b\\b" ); scanf("%d",&choice); switch(choice) { case 1: input(b); break; case 2: output(b); break; case 3: sort(b); break; case 4: fix(b); break; case 5: search(b); break; case 6: del(b); break; case 7: Save(b); break; case 8: Open(b); break; case 0: printf("\\n\\n\\t\\t프로그램을 종료합니다\\n"); return 0; default : printf("잘못된 입력입니다\\a\\a\\n"); continue;// 반복문의 선두로 이동 } } return 0; } void input(BOOK *p) { if(index==BOOK_COUNT) { printf("\\n\\n\\t\\t더이상 저장할수가 없습니다."); return;//함수 종료 } printf("\\n\\n\\t\\t** 도서정보 입력 **\\n\\n"); //for(i=0;i<BOOK_COUNT;i++) //{ printf("\\n[%d번째 입력]\\n",index+1); printf("도서명 : "); fflush(stdin); gets((p+index)->name); printf("작가명 : "); fflush(stdin); gets((p+index)->author); printf("가 격 : "); scanf("%d",&(p+index)->price); printf("수 량 : "); scanf("%d",&(p+index)->cnt); ++index; } } void output(BOOK *p) { int i; printf("\\n\\n\\t\\t** 도서정보 출력 **\\n\\n"); printf("==============================================================\\n"); printf("%5s %-20s %-15s %6s %6s\\n","번호","도서명","작 가","가 격","수 량"); for(i=0;i<index;i++) { printf("%05d %-20s %-15s %6d %6d\\n",i+1,(p+i)->name,(p+i)->author,(p+i)->price,(p+i)->cnt); } } void sort(BOOK *p) { int i,j; for(i=0;i<index-1;i++) //정렬대상 { for(j=i+1;j<index;j++) //비교대상 { //if(p[i].name>p[j].name) // 주소비교 //정렬>비교 if(strcmp(p[i].name,p[j].name) > 0) { BOOK temp; temp=p[i]; p[i]=p[j]; p[j]=temp; /*값 교 환*/ } } } printf("정렬이 완료되었습니다.\\n"); output(p); } void search(BOOK *p) { char book_name[NAME_NEN]; int i; printf("검색할 도서명을 입력하세요 : "); fflush(stdin); gets(book_name); for(i=0;i<index;i++) { if(strcmp(book_name,(p+i)->name)==0) { printf("\\n\\n\\t\\t** 검색 도서정보 출력 **\\n\\n"); printf("==============================================================\\n"); printf("%5s %-20s %-15s %6s %6s\\n","번호","도서명","작 가","가 격","수 량"); printf("%05d %-20s %-15s %6d %6d\\n",i+1,(p+i)->name,(p+i)->author,(p+i)->price,(p+i)->cnt); } } } void fix(BOOK *p) { char book_name[NAME_NEN]; int i; printf("수정할 도서명을 입력하세요 : "); fflush(stdin); gets(book_name); for(i=0;i<index;i++) { if(strcmp(book_name,(p+i)->name)==0) { printf("\\n\\n\\t\\t** 도서정보 입력 **\\n\\n");
printf("작가명 : "); fflush(stdin); gets((p+i)->author); printf("가 격 : "); scanf("%d",&(p+i)->price); printf("수 량 : "); scanf("%d",&(p+i)->cnt); printf("\\n\\n** 수정되었습니다. **\\n"); break; } } } void del(BOOK *p) { char book_name[NAME_NEN]; int i; printf("삭제할 도서명을 입력하세요 : "); fflush(stdin); gets(book_name); for(i=0;i<index;i++) { if(strcmp(book_name,(p+i)->name)==0) { p[i]=p[index-1]; printf("\\n\\n** 삭제되었습니다. **\\n"); --index; break; } } } void Save(BOOK *p) { FILE *fp=NULL; char i; fp=fopen("book.txt","wt"); if(fp==NULL) { printf("file open fail!\\a\\a\\n"); exit(0); } fprintf(fp,"%5s %-20s %-15s %6s %6s\\n","번호","도서명","작 가","가 격","수 량"); fprintf(fp,"==============================================================\\n"); for (i=0;i<index;i++) { fprintf(fp,"%05d %-20s %-15s %6d %6d\\n",i+1,(p+i)->name,(p+i)->author,(p+i)->price,(p+i)->cnt); } printf("\\n\\n** 저장되었습니다. **\\n"); fclose(fp); } void Open(BOOK *p) { FILE *fp=NULL; char ch;; fp=fopen("book.txt","rt"); if(fp==NULL) { printf("file open fail!\\a\\a\\n"); exit(0); } printf("\\n\\n** book.txt 불러오기 **\\n\\n\\n"); while(1) { ch=fgetc(fp); if(ch==EOF) { break; } printf("%c",ch); } fclose(fp);
}
|
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.