1 / 31

도서관리시스템

도서관리시스템. ‘ 오늘도 무사히 ’ 팀 프로젝트 최종보고서. 조장 : 안근창 조원 : 박혜림 송수현 이현진. I NDEX. Ⅰ. 프로그램 소개 1.1 개요 1.2 구현방법. Ⅱ. 수정사항 2.1 변경사항 2.2 소스소개 2.3 실행화면. Ⅱ. 결론 3.1 결론 3.2 참고문헌. 프 로그램 소개. Made in 대학생 강연가 책쟁이. 프 로젝트 개요. 도서관 관리자

Download Presentation

도서관리시스템

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 도서관리시스템 ‘오늘도 무사히’팀 프로젝트 최종보고서 조장 : 안근창 조원 : 박혜림 송수현 이현진 dddddddddddddddddddddd

  2. INDEX Ⅰ.프로그램 소개 1.1 개요 1.2 구현방법 Ⅱ.수정사항 2.1 변경사항 2.2 소스소개 2.3 실행화면 Ⅱ.결론 3.1 결론 3.2 참고문헌

  3. 프로그램 소개 Made in 대학생 강연가책쟁이

  4. 프로젝트 개요 • 도서관 관리자 • - 대량의 도서를 보다 효율적이고 편리하게 관리하기 위함 • 회원 • - 빠른 도서 검색과 편리한 대출서비스를 받을 수 있도록 하기 위함

  5. 구현방법 회원관리 대여관리 도서관리 신규회원 등록 회원정보 조회 회원정보 검색 회원정보 수정 회원정보 삭제 도서 대출 도서 반납 대여목록 조회 대여기간 연장 연체자 조회 신규도서 등록 도서정보 조회 도서정보 검색 도서정보 수정 도서정보 삭제

  6. 회원관리 구조체 struct bookcard{ int membernum; char name[10]; /**< char[] 회원이름*/ char memberkey[20]; /**< char[] 주민번호*/ char address[20]; /**< char[] 주소 */ char phone[13]; /**< char[] 연락처 */ char gender[10]; /**< char[] 성별 */ unsigned int grade; /**< uint 등급 */ unsigned int rentedcnt; /**< uint 대여권수 */ };

  7. 도서 관리 구조체 struct _book{ unsigned int bookNum; /**< uint 도서번호 */ char bookname[64]; /**< char* 도서명 */ char arthor[30]; /**< char* 작가명 */ char publisher[30]; /**< char* 출판사명 */ unsigned int cost; /**< uint 가격 */ char genre[10]; /**< char* 장르 */ char publishDay[9]; /**< char* 출간일 */ int isrent; /**< int 대여여부 */ }; dddddddddddddddddddddd

  8. 대여관리 구조체 struct _bookrent{ int booknum; /**< int 도서번호 */ int cardnum; /**< int 회원번호 */ char rentday[9]; /**< char[] 대여일 */ char returnday[9]; /**< char[] 반납일 */ }; dddddddddddddddddddddd

  9. 회원관리 함수 void getMemberMenu(); int insertNewMember(); int inquiryMember(); int memberfind(); int memberupdate(); int memberdelete(); dddddddddddddddddddddd

  10. 도서관리 함수 void insertNewBook(); //도서"등록" void bookinquiry (); //도서조회후"출력" void getBookMenu(); //"도서관리_메뉴" void booksearch(); //도서"검색" void bookupdate(); //도서자료"수정" void bookdelete(); //도서"삭제" void namesel(); //검색=> 이름검색 void publishsel(); //검색=> 출판사검색 void genresel(); //검색=> 장르검색 dddddddddddddddddddddd

  11. 대여관리 함수 void getRentMenu(); void rentbook(); void returnbook(); int IsRegist(int); //등록된책인지의유효성검사 int GetBOOKRentState(int); //책의대여중임을체크 int IsValidmember(int); //등록된회원인지유효성검사 void writeTimeTable(int); //현재일,반납일을기록한다. void inquryRentList(); //대여리스트를조회한다. void extendRental(); //반납일을연장한다 void showOverdue(); //연체자를보여준다 dddddddddddddddddddddd

  12. 회원관리 int find() { char a; char name[10]; int count; system("cls"); printf("회원성명을입력하세요: "); fflush(stdin); gets(name); fflush(stdin); for(count=0;count<membercnt; count++) { if(strcmp(members[count].name,name)==0) { printf("회원번호: %d\n",members[count].membernum); printf("회원성명: %s\n", members[count].name); printf("주민등록번호: %s\n", members[count].memberkey); printf("연락처: %s\n", members[count].phone); printf("주소: %s\n", members[count].address); printf("성별: %s\n", members[count].gender); printf("등급: %d\n", members[count].grade); system("pause"); return; } } printf("회원정보없음\n"); system("pause"); } dddddddddddddddddddddd

  13. 도서관리 void booksearch() //검색실행부분 { int i=0,cnt=0; while(1) { do{ system("cls"); printf("어느것으로검색하시겠습니까?"); printf("선택메뉴책이름(0), 출판사(1) ,장르(2)"); scanf("%d", &cnt); // cnt 값입력 }while(cnt<0 || cnt>2); if(cnt==0) //cnt값이0과일치할때이름검색함수실행 { namesel(); } else if(cnt==1){ //cnt값이1과일치할때출판사검색함수실행 publishsel(); } else if(cnt==2){ genresel(); } do{ //검색을끝마치고재검색여부를묻고입력받은i값에따라실행한다. puts("\n재검색하시겠습니까?"); printf("예(1) | 아니오(0)"); scanf("%d",&i); }while(i<0 || i>1); if(i==0)break; //재검색여부를거절하였을경우 }system("cls"); } dddddddddddddddddddddd

  14. 도서관리 void namesel() //문자열로입력받아임시변수hone과일치하는books.bookname데이터내부를검색한다 { int i,j=0,cnt=0; char hone[30]; printf("검색하실도서명을입력>>"); scanf("%s", hone); for(i=0;i<bookcnt;i++){ // -1부터존재하는도서번호에도달할때까지실행한다. cnt=strcmp(hone,books[i].bookname); //cnt변수에서strcmp hone와도서명의문자열을비교하여일치하는항목이있을시에 if (cnt==0){ // 0값을내어놓아cnt에대입한다. j++; printf("도서번호: %d\n", books[i].bookNum); printf("도서명 : %s\n", books[i].bookname); printf("저자명 : %s\n", books[i].arthor); printf("출판사 : %s\n", books[i].publisher); printf("가 격 : %d\n", books[i].cost); printf("장 르 : %s\n", books[i].genre); printf("도서명 : %s\n", books[i].bookname); printf("출판일 : %s\n", books[i].publishDay); printf("대여여부: %s\n", (books[i].isrent) ? "대여":"미대여"); } } } dddddddddddddddddddddd

  15. 대여관리 void rentbook(void) // 도서대여-> 대여할책번호입력및검증. { int inputnum; printf("대여할책의번호를입력하세요:"); scanf("%d",&inputnum); fflush(stdin); if(!IsRegist(inputnum)) // 입력번호가등록되지않은번호이면, { printf("등록되지않은번호입니다\n"); system("pause"); return; } if(GetBOOKRentState(inputnum)) // 입력번호가대여가능한상태인지확인! 대여중이라면, { printf("대여중이라대여가불가능합니다.\n"); system("pause"); return; } //bookrent에booknum 기록 printf("대여가가능한책입니다.\n"); bookrent[rentcnt].booknum=inputnum; printf("대여회원ID 입력:"); scanf("%d",&inputnum); fflush(stdin); if(!IsValidmember(inputnum)) // 등록되어있지않은회원이면.. { printf("등록되지않았거나대여할수없는회원입니다.\n"); system("pause"); return; } //validmember가통과가되었으므로bookrent에회원번호기록 printf("대여가가능한유효한회원입니다.\n"); bookrent[rentcnt].cardnum=inputnum; printf("대여기간을몇일로하시겠습니까?\n"); scanf("%d", &inputnum); fflush(stdin); //writeTimeTable()으로현재bookrent의rentcnt에대여일과반납일을기록 writeTimeTable(inputnum); //books에isrent에1을넣는다. books[bookrent[rentcnt].booknum-1].isrent=1; //모든기록이끝났으므로인덱스증가 rentindex++; /// rentcnt++; /// } dddddddddddddddddddddd

  16. 대여관리 void writeTimeTable(int days) { char arr1[9], arr2[9], temp[9]; time_t rawtime = time(NULL); time_t rtime; struct tm *t=localtime(&rawtime); //현재날짜를문자열로arr1에기록ex)20111102 sprintf(temp,"%d",t->tm_year+1900); strcpy(arr1,temp); sprintf(temp,"%02d",t->tm_mon+1); strcat(arr1,temp); sprintf(temp,"%02d",t->tm_mday); strcat(arr1,temp); //현재시간에입력받은날을더한후문자열로arr2에기록 printf("before : %d\n",rawtime); rawtime=rawtime+((24*60*60)*days);// arr2에도arr1과같은값들어가아짜증;; printf("after: %d\n",rawtime); t=localtime(&rawtime); sprintf(temp,"%d",t->tm_year+1900); strcpy(arr2,temp); sprintf(temp,"%02d",t->tm_mon+1); strcat(arr2,temp); sprintf(temp,"%02d",t->tm_mday); strcat(arr2,temp); //bookrent에insert하므로cnt로참조 strcpy(bookrent[rentcnt].rentday,arr1); strcpy(bookrent[rentcnt].returnday,arr2); } dddddddddddddddddddddd

  17. 도서관리 함수선언

  18. 수정 사항

  19. 수정 보안 • 에러 검출 • 철자 부분 • 괄호 부분 • 무한 리드 방지 • While문 • 서브메뉴함수 변경사항 메뉴 꾸미기 • 대여 구조체 첨부

  20. 소스소개

  21. 회원관리

  22. 도서관리

  23. 대여관리

  24. 실행 화면

  25. 결론

More Related