# include & ltstring.h & gt
# include & ltconio.h & gt
# include & ltstdlib.h & gt
# include & ltctype.h & gt
#define STACK_INIT_SIZE 10
#定義OK 1
#定義真1
#定義假0
#定義錯誤0
結構student/*定義了學生類型,用於存儲借出的書籍*/
{
int carnum
char lend book[10];
}學生[1000];
結構員工/*定義員工類型*/
{
int employnum
char employ name[15];
int employage
char employex[2];
char employ leve[10];
long int employtage
}雇傭[50];
Struct book /*定義了書的類型*/
{
int booknum
char bookname[10];
char book creat[10];
int turefalse/*圖書借還模塊判斷圖書是否借出的條件*/
} book[1000];
Struct car /*圖書館卡的數據類型*/
{
int carnum
char student name[10];
int studentclass
}車[100];
Huanbook() /*返回函數*/
{
FILE *fp,* fp2/*定義兩個文件指針。fp2用於在修改數據時建立臨時文件,防止數據被破壞*/
int i,n;
int carnum
char lend book[10];
Printf("請輸入您的卡號\ n ");
scanf("%d ",& ampcarnum);
fp=fopen("car.txt "," r ");/*讀取卡號記錄*/
for(I = 0;弗雷德(& ampcar[i],sizeof(struct car),1,fp)!=0;I++) /*for循環判斷卡號是否存在*/
{
如果(車[我]。carnum==carnum) /*卡號存在,下壹個周期*/
{
n = I;
fclose(FP);
Printf("請輸入您要歸還的圖書名稱\ n ");
scanf("%s ",lend book);
fp=fopen("record.txt "," r ");
for(I = 0;弗雷德(& amp學生[i],sizeof(結構學生),1,fp)!=0;I++) /*判斷輸入的圖書是否被借閱*/
{
If (strcmp (student [I])。Lendbook,Lendbook) = = 0)/*借書,進入下壹個循環,否則顯示錯誤*/
{
fclose(FP);
fp=fopen("record.txt "," r ");
fp2=fopen("bookl.txt "," w ");
for(I = 0;弗雷德(& amp學生[i],sizeof(結構學生),1,fp)!=0;i++)
{
if(strcmp(student[i])。lendbook,lendbook)==0)
{
繼續;/*刪除還書的借閱記錄*/
}
fwrite(& amp;student[i],sizeof(struct student),1,fp2);/*寫下沒有歸還的書的記錄*/
}
fclose(FP);
fclose(fp2);
fp=fopen("record.txt "," w ");
fp2=fopen("bookl.txt "," r ");
for(I = 0;弗雷德(& amp學生[i],sizeof(結構學生),1,fp2)!=0;i++)
{
fwrite(& amp;學生[i],sizeof(結構學生),1,FP);/*寫回圖書借閱記錄信息*/
}
fclose(FP);
fclose(fp2);
fopen("bookl.txt "," w ");/*清除臨時文件的記錄*/
fclose(fp2);
fp=fopen("book.txt "," r ");
fp2=fopen("bookl.txt "," w ");
for(I = 0;弗雷德(& ampbook[i],sizeof(結構書),1,fp)!=0;I++) /*將書的記錄寫入臨時文件,防止之前的記錄被修改信息破壞*/
{
如果(i==n)
{
書[我]。ture false = 1;
fwrite(& amp;book[i],sizeof(struct book),1,fp2);/*將還書的原始狀態設置為無人借閱*/
繼續;
}
fwrite(& amp;book[i],sizeof(struct book),1,fp2);
}
fclose(FP);
fclose(fp2);
fp=fopen("book.txt "," w ");
fp2=fopen("bookl.txt "," r ");
for(I = 0;弗雷德(& ampbook[i],sizeof(結構書),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();
返回1;
}
}
Printf("妳沒有借這樣的書,按任意鍵返回\ n ");/*錯誤提示*/
fclose(FP);
getch();
返回0;
}
}
Printf("系統中沒有此卡,請聯系管理員,按任意鍵返回\ n ");/*錯誤提示*/
fclose(FP);
getch();
}
findbook()
{
FILE * fp
char bookname[10];
int ture,我;
fp=fopen("book.txt "," r ");
Printf("請輸入您要找的書的書名\ n ");
scanf("%s ",圖書名稱);
for(I = 0;弗雷德(& ampbook[i],sizeof(結構書),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i])。圖書名稱)==0)
{
如果(書[我]。turefalse==1)
{
Printf("這本書的詳細信息是:%d %s %s這本書沒有被借走\ n按任意鍵返回\ n ",Book [i]。Booknum,Book [i]。書名,書[i]。bookcreat);
}
Else {printf("本書已被借出\ n ");fclose(FP);返回0;}
fclose(FP);
返回FALSE
}
}
Printf("沒有您要查詢的書籍\ n ");
fclose(FP);
返回FALSE
}
findbook1()
{
FILE * fp
char book creat[10];
int ture,我;
fp=fopen("book.txt "," r ");
Printf("請輸入您要查找的作者的姓名\ n ");
scanf("%s ",bookcreat);
for(I = 0;弗雷德(& ampbook[i],sizeof(結構書),1,fp)!=0;i++)
{
if(strcmp(bookcreat,book[i])。bookcreat)==0)
{
如果(書[我]。turefalse==1)
{
Printf("這本書的詳細信息是:%d %s %s這本書沒有被借走\ n按任意鍵返回\ n ",Book [i]。Booknum,Book [i]。書名,書[i]。bookcreat);
}
Else {printf("本書已被借出\ n ");fclose(FP);返回0;}
fclose(FP);
返回FALSE
}
}
Printf("沒有您要查詢的書籍\ n ");
fclose(FP);
返回FALSE
}
lendcount()
{
FILE * fp
int i,n = 0;
fp=fopen("record.txt "," r ");
for(I = 0;弗雷德(& amp學生[i],sizeof(結構學生),1,fp)!=0;i++)
{
Printf("卡號為%d的書:% s \ n ",學生[i]。卡努姆,學生[我]。lend book);
n = n+1;
}
fclose(FP);
Printf ("* *目前已借出%d本書\n ",n);
Printf("按任意鍵\ n ");
getch();
返回n;
}
查布克()
{
char ch5
做
{
Printf (" -歡迎使用圖書查詢系統!-\ n ");
printf(" 1:& lt;按標題搜索> \ n ");
printf(" 2:& lt;按作者搜索> \ n ");
printf(" 0:& lt;返回到> \ n ");
Printf("請輸入0-2,其他輸入不合法!\ n ");
scanf("%s ",& ampch5);
開關(ch5)
{
case ' 1 ':find book();getch();打破;
案例“2”:findbook 1();getch();打破;
大小寫“0”:break;
默認值:printf("無此操作\ n ");getch();打破;
}
}while(ch5!='0');
返回FALSE
}
lendbook()
{
FILE *fp,* fp2
int i,n;
int carnum
Printf("請輸入您的卡號\ n ");
scanf("%d ",& ampcarnum);
fp=fopen("car.txt "," r ");
for(I = 0;弗雷德(& ampcar[i],sizeof(struct car),1,fp)!=0;i++)
{
如果(車[我]。卡號= =卡號)
{
n = I;
fclose(FP);
Printf("請輸入妳想借的書的名字\ n ");
scanf("%s ",學生[n]。lend book);
fp=fopen("book.txt "," r ");
for(I = 0;弗雷德(& ampbook[i],sizeof(結構書),1,fp)!=0;i++)
{
if(strcmp(書[i])。書名,學生[n]。lendbook)==0)
{
如果(書[我]。true false = = 0){ printf("對不起,這本書已經借出,請借其他書\ n ");fclose(FP);getch();返回;}
其他
fclose(FP);
fp=fopen("record.txt "," a+");
學生。carnum = carnum
fwrite(& amp;學生[n],sizeof(結構學生),1,FP);
fclose(FP);
fp=fopen("book.txt "," r ");
fp2=fopen("bookl.txt "," w ");
for(I = 0;弗雷德(& ampbook[i],sizeof(結構書),1,fp)!=0;i++)
{
if(strcmp(書[i])。書名,學生[n]。lendbook)==0)
{
書[我]。ture false = 0;
fwrite(& amp;book[i],sizeof(struct book),1,fp2);
繼續;
}
fwrite(& amp;book[i],sizeof(struct book),1,fp2);
}
fclose(FP);
fclose(fp2);
fp=fopen("book.txt "," w ");
fp2=fopen("bookl.txt "," r ");
for(I = 0;弗雷德(& ampbook[i],sizeof(結構書),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();
返回;
}
}
Printf("沒有這樣的書,按任意鍵返回\ n ");
fclose(FP);
getch();
返回;
}
}
Printf("您的卡號不存在,請辦理新卡,按任意鍵返回\ n ");
fclose(FP);
getch();
}
汽車計數()
{
FILE * fp
int i,n = 0;
fp=fopen("car.txt "," r ");
for(I = 0;弗雷德(& ampcar[i],sizeof(struct car),1,fp)!=0;i++)
{
Printf("卡%d
n = n+1;
}
fclose(FP);
Printf("目前* * *有%d本書\n ",n);
Printf("按任意鍵\ n ");
getch();
}
德爾卡爾()
{
FILE *fp,* fp2
int I;
int carnum
char選擇;
fp=fopen("car.txt "," r ");
fp2=fopen("bookl.txt "," w ");
Printf("請輸入您要刪除的卡號\ n ");
Printf("如果您輸入的卡號存在,系統會自動刪除信息!如果不存在,系統不會做任何更改\ n ");
scanf("%d ",& ampcarnum);
for(I = 0;弗雷德(& ampcar[i],sizeof(struct car),1,fp)!=0;i++)
{
如果(車[我]。卡努姆。=carnum)
{
fwrite(& amp;car[i],sizeof(struct car),1,fp2);
}
}
fclose(FP);
fclose(fp2);
Printf("妳確定要刪除這張卡嗎?刪除後,本書所有信息無法恢復為Y/N \ N”);
scanf("%s ",& amp選擇);
if(choice=='y'||choice=='Y ')
{
fp=fopen("car.txt "," w ");
fp2=fopen("bookl.txt "," r ");
for(I = 0;弗雷德(& amp汽車[i],sizeof(結構汽車),1,fp2)!=0;i++)
{
fwrite(& amp;car[i],sizeof(struct car),1,FP);
}
fclose(FP);
fclose(fp2);
fp2=fopen("bookl.txt "," w ");
fclose(fp2);
Printf("按任意鍵返回\ n ");
getch();
返回;
}
其他
{
Printf("按任意鍵返回\ n ");
getch();
返回;
}
}
addcar()
{
FILE * fp
int I = 0;
fp=fopen("car.txt "," a+");
Printf("請輸入卡號\ n ");
scanf("%d ",& amp汽車[我]。carnum);
Printf("請輸入學生姓名\ n ");
scanf("%s ",car[i].student name);
Printf("請輸入類\ n ");
scanf("%d ",& amp汽車[我]。student class);
fwrite(& amp;car[i],sizeof(struct car),1,FP);
fclose(FP);
Printf("輸入後,任何鍵都會返回\ n ");
getch();
}