#includelt;
#includelt;
#includelt; includelt; stdlib.hgt;
#includelt;ctype.hgt;
#define STACK_INIT_SIZE 10
#define OK 1
# 정의 TRUE 1
#define FALSE 0
#define ERROR 0
struct Student /*빌린 책을 저장하는 데 사용되는 학생 유형 정의*/ < /p >
{
int carnum;
charlentbook[10]
}student[1000]; /*직원 유형 정의*/
{
int Employmentnum;
char Employmentname[15]
int Employment; p>
char 고용sex[2];
char 고용[10];
long int 고용
} p>
struct book /*책 유형 정의*/
{
int booknum
char bookname[10]; >
p>
char bookcreat[10];
int turefalse; /*책 대출 여부를 결정하기 위해 대출 및 반납 모듈에서 사용되는 조건*/
} book[1000];
struct car /*도서관 카드의 데이터 유형*/
{
int carnum; >char Studentname[10];
int Studentclass;
}car[100]
huanbook() /*책 반환 함수*/
{
FILE *fp, *fp2; /*두 개의 파일 포인터를 정의합니다. fp2는 데이터 수정 시 데이터 손상을 방지하기 위해 임시 파일을 설정하는 데 사용됩니다.*/
int i, n;
int carnum;
charlentbook[10]
printf("카드 번호를 입력하세요.") ;
Charlentbook[10]; p>
scanf("d", amp; carnum)
fp=fopen("car.txt", "r" ); /*카드 번호 레코드 읽기*/
for(i=0; fread(amp; car[i], sizeof(struct car), 1, fp)!=0; i ) /* for 루프는 카드 번호가 존재하는지 확인합니다*/
{
if(car[i].carnum==carnum) /*카드 번호가 존재합니다. 다음 주기에 들어갑니다* /
{
n=i
fclose(fp);
printf("반납하려는 책의 이름을 입력하세요\n")
scanf("s",lentbook)
fp=fopen("record.txt ", "r");
for(i=0; fread(amp; Student[i], sizeof(struct Student), 1, fp)!=0; i) /* 입력은 빌린 책입니다*/
{
if(strcmp(student[i].lendbook,lentbook)==0) /*책을 빌리고 다음 주기에 들어갔습니다. 그렇지 않으면 오류가 발생했습니다. Display*/
{
fclose(fp)
fp=fopen("record.txt", "r")
fp2=fopen("bookl.txt", "w");
for(i=0; fread(amp; 학생[i], sizeof(struct Student), 1 , fp)! =0;i)
{
if(strcmp(student[i].lendbook, 대출북)==0)
{
continue; /*반납된 도서의 대출 기록 삭제*/
}
fwrite(amp; Student[i], sizeof(struct Student), 1, fp2 ); /*반납되지 않은 원본 책의 기록을 작성합니다*/
}
fclose(fp)
fclose(fp2); /p >
fp=fopen("record.txt", "w")
fp2=fopen("bookl.txt", "r"); for( i=0; fread(amp; 학생[i], sizeof(struct Student), 1, fp2)!=0; i )
{
fwrite(amp; Student[ i], sizeof(struct Student), 1, fp) /*대출 기록 정보 다시 쓰기*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt", "w") /*임시 파일 기록 지우기*/
fclose(fp2);
p>fp=fopen("book.txt", "r")
fp2=fopen("bookl.txt", "w")
for (i=0; fread(amp; book[i], sizeof(struct book), 1, fp)!=0; i) /*이전 레코드가 삭제되지 않도록 임시 파일에 도서 레코드를 씁니다. 정보 수정으로 인해 파기됨* /
{
if(i
==n)
{
book[i].turefalse=1;
fwrite(amp; book[i], sizeof(struct book), 1, fp2); /*반납된 도서의 원래 상태를 대출 취소로 설정*/
continue
}
fwrite(amp; book[i ], sizeof(struct book), 1, fp2);
}
fclose(fp)
fclose(fp2); p> p>
fp=fopen("book.txt", "w")
fp2=fopen("bookl.txt", "r"); > for (i=0;fread(amp;book[i],sizeof(struct book),1,fp2)!=0;i)
{
fwrite(amp ;book [i], sizeof(struct book), 1, fp) /*임시 파일을 다시 쓰기*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt", "w") /*임시 파일 지우기*/
fclose(fp2); >
printf("책 반환이 완료되었습니다. 반환하려면 아무 키나 누르세요.\n")
getch()
return 1;
}
printf("그런 책을 빌리지 않았습니다. 열쇠가 반환됩니다.\n") /*오류 메시지*/
fclose(fp );
p>getch();
0을 반환
}
printf( "시스템에 해당 카드가 없습니다. 관리자에게 문의하고 돌아가려면 아무 키나 누르십시오.\n") /*오류 메시지*/
fclose(fp); ();
}
findbook()
{
FILE *fp>
char 책 이름[ 10];
설정, i;
fp=fopen("book.txt", "r")
printf(" 찾고 있는 책 제목\n") ;
scanf("s", bookname);
for(i=0; fread(amp; book[i] , sizeof(struct book), 1, fp)! =0;i)
{
if(strcmp(bookname, book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("이 책의 세부정보는 다음과 같습니다: d s s 이 책은 현재 선택되어 있지 않습니다.\n돌아가려면 아무 키나 누르십시오.\n", book[i].booknum, book[i].bookname, book[i].bookcreat) p>
}
else {printf("이 책은 대여되었습니다\n"); fclose(fp) return 0;}
fclose( fp); /p>
return FALSE;
}
}
printf("쿼리하려는 책이 없습니다\n")
} p>
fclose(fp);
FALSE를 반환
}
findbook1()
{
p>
파일 *fp;
char bookcreat[10]
문서, i; .txt" , "r");
printf("찾고 있는 저자의 이름을 입력하세요\n");
scanf("s", bookcreat) ;
for(i=0;fread(amp;book[i],sizeof(struct book),1,fp)!=0;i)
{
if( strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
p>
{
printf("이 책의 세부정보는 다음과 같습니다: d s s 이 책은 현재 선택되어 있지 않습니다.\n돌아가려면 아무 키나 누르십시오.\n", book[i].booknum, book[i] .bookname, book [i].bookcreat);
}
else {printf("이 책은 대출되었습니다\n") fclose(fp);
p>fclose(fp);
반환 FALSE
}
}
printf(" 검색할 책이 없습니다.\n");
fclose(fp);
return FALSE;
}
lendcount( )
{
파일 *fp;
int i, n=0
fp=fopen("record.txt" , "r" );
for(i=0; fread(amp; Student[i], sizeof(struct Student), 1, fp)!=0; i )
{ p>
printf("카드 번호: d 빌려준 책: s\n", Student[i].carnum, Student[i].lendbook)
n=n 1 ;
n=n 1;
p>
}
fclose(fp)
printf("현재 * ** 대출할 책이 d 권 있습니다\n", n);
printf("아무 키나 누르세요\n");
getch()
;
n을 반환
}
chabook()
{
char ch5; >
do
{
printf("---------------도서 검색 시스템에 오신 것을 환영합니다!------ - --------\n");
printf(" 1: lt; 책 제목으로 gt 검색; \n");
printf(" 2: lt; 작성자로 검색 gt; \n");
printf(" 0: lt; return gt; \n");
printf("0-을 입력하세요. -2, 다른 입력은 허용되지 않습니다! \n");
scanf("s", amp; ch5);
switch(ch5)
{
케이스 '1': getch(); break;
케이스 '2': getch(); > case ' 0': break;
기본값: printf("해당 작업 없음\n") break; while(ch5 !='0');
반환
}
lendbook()
{
파일 *fp, *fp2;
int i, n;
int carnum
printf("카드 번호를 입력하세요." );
scanf("d", amp; carnum)
fp=fopen("car.txt", "r")
(i =0;fread(amp;car[i],sizeof(struct car),1,fp)!=0;i)
{
if(car[i ].carnum==carnum)
{
n=i;
fclose(fp) printf("입력하세요. 원하는 것 빌린 책 이름\n");
scanf("s", Student[n].lendbook);
fp=fopen("book.txt ", "r ");
for(i=0; fread(amp; book[i], sizeof(struct book), 1, fp)!=0; i )
{
if(strcmp(book[i].bookname, 학생[n].lendbook)==0)
{
if(book [i].turefalse==0) {printf("죄송합니다. 다른 책을 빌려주세요.\n"); fclose(fp) return;}
else
fclose(fp);
fp=fopen("record.txt", "a ")
학생[n]
.carnum=carnum;
fwrite(amp; 학생[n], sizeof(struct Student), 1, fp)
fclose(fp); > fp=fopen("book.txt", "r");
fp2=fopen("bookl.txt", "w")
for(i=0 ;fread(amp;book[i],sizeof(struct book),1,fp)!=0;i)
{
if(strcmp(book[i]. bookname, 학생[n].lendbook)==0)
{
book[i].turefalse=0
fwrite(amp;book[ i], sizeof(구조체 책), 1, fp2);
계속
}
fwrite(amp; book[i], sizeof(구조체) 책), 1, fp2);
}
fclose(fp)
fclose(fp2); ("book.txt", "w");
fp2=fopen("bookl.txt", "r")
for(i=0; fread(amp) ; book[i], sizeof(구조체 책), 1, fp2)!=0; i )
{
fwrite(amp; book[i], sizeof(구조체 책 ), 1, fp);
}
fclose(fp)
fclose(fp2); .txt", "w");
fclose(fp2);
printf("책을 빌린 후 반납하려면 아무 키나 누르세요\n");
getch();
return;
}
}
printf("해당 책이 없습니다. 모든 키가 반환됩니다. \n");
fclose(fp);
getch();
return;
}
}
printf("카드 번호가 없습니다. 새 카드를 신청하세요. 돌아가려면 아무 키나 누르세요.\n")
fclose(fp); /p>
getch();
}
carcount()
{
FILE *fp; >
int i, n=0;
fp=fopen("car.txt", "r")
for(i=
0; fread(amp; car[i], sizeof(struct car), 1, fp)!=0 i )
{
printf("d번째 카드 lt ; 카드 번호: d 이름: s 클래스: dgt;\n", i 1, car[i].carnum, car[i].studentname, car[i].studentclass);
n=n 1;
}
fclose(fp);
printf("현재 *** d권의 책이 있습니다\n", n); >
printf("아무 키나 누르세요\n");
getch()
}
delcar()
{
FILE *fp, *fp2;
int carnum
문자 선택;
fp=fopen("car.txt", "r")
fp2=fopen("bookl.txt", "w")
printf(" 삭제하려는 카드번호를 입력하세요\n");
printf("입력하신 카드번호가 존재하는 경우 시스템은 자동으로 해당 정보를 삭제합니다. 존재하지 않는 경우 시스템은 정보를 삭제하지 않습니다. 변경\n");
scanf("d", amp; carnum);
for(i=0; fread(amp; car[i], sizeof( struct car), 1, fp)! =0;i)
{
if(car[i].carnum!=carnum)
{
fwrite(amp ; car[i], sizeof(struct car), 1, fp2)
}
}
fclose (fp);
fclose(fp2);
printf("정말로 카드를 삭제하시겠습니까? 삭제 후에는 "Y/N" 도서의 모든 정보를 삭제할 수 없습니다. 복구됨\n");
scanf("s",amp;choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("car.txt", "w")
fp2=fopen("bookl.txt", "r") ;
for(i= 0; fread(amp; car[i], sizeof(struct car), 1, fp2)!=0; i )
{
fwrite(amp; car[i] , sizeof(struct car), 1, fp)
}
fclose(fp); > fclose(fp2);
fp2=fopen("bookl.txt", "w")
fclose(fp2); 돌아가려면 아무 키나 누르십시오.\n");
getch();
return;
}
else
{
printf( "돌아가려면 아무 키나 누르세요\n")
<p> getch();
반환
}
}
addcar()
{
파일 *fp;
int i=0;
fp=fopen("car.txt", "a "); >printf("카드 번호를 입력하세요\n");
scanf("d", amp; car[i].carnum)
printf("카드 번호를 입력하세요. 학생 이름\n");
scanf("s", car[i].studentname);
printf("반을 입력하세요\n");
scanf("d", car[i].studentclass)
fwrite(car[i], sizeof(struct car), 1, fp); fclose(fp);
printf("입력이 완료되면 모든 키가 반환됩니다.\n")
getch();