📄 main3.c
字号:
void returnbook() //归还图书
{
struct card oldcard;
struct reader one;
int booknumber;
FILE *fp,*fp1;
fp=fopen("lendcard.txt","r+");
if(fp==NULL)
{
printf("文件不存在导致打开失败!\n"); //文件不存在报错
getch();
exit(0);
}
else //
{
printf("请输入所要归还的书的编号:\n");
scanf("%d",&booknumber);
while(!feof(fp))
{
fscanf(fp,"%d %s %d %d %d\n",&oldcard.one.cardnum,oldcard.one.readername,
&oldcard.one.classes,&oldcard.booknum,&oldcard.lenddate);
if(oldcard.booknum!=booknumber)
{
fp1=fopen("lendcard1.txt","a+");
if(fp1==NULL)
{
printf("该文件不存在!");
exit(0);
}
else
{
fprintf(fp1,"%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
fclose(fp1);
}
}
else
{
printf("该用户正在还书~~~\n");
printf("%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
}
}
fp=fopen("lendcard.txt","w");
fclose(fp);
fp=fopen("lendcard.txt","a+"); //相当于删除所查找的书目对应的借书卡信息
fp1=fopen("lendcard1.txt","r+");
while(!feof(fp1))
{
fscanf(fp1,"%d %s %d %d %d\n",&oldcard.one.cardnum,oldcard.one.readername,
&oldcard.one.classes,&oldcard.booknum,&oldcard.lenddate);
fprintf(fp,"%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
}
fclose(fp);
fclose(fp1);
fp1=fopen("lendcard1.txt","w");
fclose(fp1);
} //else
}
void countbookin() //统计在馆图书
{
struct book books[100];
struct book bookst;
int record_len = sizeof(struct book);
int counti,line,i;
line=0;
counti=0;
FILE *fp;
fp=fopen("book.txt","r+");
if(fp==NULL)
{
printf("文件不存在导致打开失败!\n");
getch();
exit(0);
}
else
{
while(!feof(fp))
{
fscanf(fp,"%d %s %s %s %d\n",&bookst.booknum,bookst.bookname,
bookst.bookcreat,bookst.writer,&bookst.lendture);
if(bookst.lendture!=0) //统计书库中书的信息中的lendtrue,为1表示在馆
counti++;
}
printf("在馆图书数目是 %d\n",counti);
}
fclose(fp);
}
//读者管理模块
void addcard() //申请读者卡
{
int j;
j=0;
struct card lcard={0," ",0,0,0};
struct reader newcard={0," ",0}; //加入的新卡
struct reader oldcard;
int record_len = sizeof(struct reader); //一条记录的长度
while(j!=-1)
{
FILE *fp,*fp1; //打开文件
fp=fopen("readcard.txt","a+"); //a+以读写方式打开一个文件
printf("请输入卡号(输入0则停止操作):\n");
scanf("%d",&newcard.cardnum);
getchar();
if(newcard.cardnum==0)
{
printf("退出新增操作!");
j=-1;
break;
}
else
{
while(!feof(fp))
{
fscanf(fp,"%d %s %d\n",&oldcard.cardnum,oldcard.readername,&oldcard.classes);
if(oldcard.cardnum==newcard.cardnum)
{
printf("编号已存在!请重新输入卡的编号:\n");
scanf("%d",&newcard.cardnum);
fseek(fp,0,0);
}
}
fseek(fp,0,0);
fp1=fopen("lendcard.txt","a+");
lcard.booknum=0;
lcard.lenddate=0;
printf("请输入新增的读者姓名:\n");
scanf("%s",&newcard.readername);
printf("请输入新增的读者的班级:\n");
scanf("%d",&newcard.classes);
getchar();
fprintf(fp,"%d %s %d\n",newcard.cardnum,newcard.readername,newcard.classes);
fprintf(fp1,"%d %s %d %d %d\n",newcard.cardnum,newcard.readername,
newcard.classes,lcard.booknum,lcard.lenddate);
fclose(fp1);
fclose(fp);
} //else
}//while
}
void delcard() //删除读者卡
{
int cardnumber;
int i=0;
struct card oldcard;
struct reader one; //以前的卡的信息
FILE *fp,*fp1,*fp2,*fp3;
fp=fopen("readcard.txt","a+");
if(fp==NULL)
{
printf("该文件不存在:\n");
exit(0);
}
else//
{
printf("请输入要删除的卡号:\n");
scanf("%d",&cardnumber);
getchar();
while(!feof(fp))
{
fscanf(fp,"%d %s %d \n",&one.cardnum,one.readername,&one.classes);
if(one.cardnum==cardnumber)
{
printf("%d %s %d\n",one.cardnum,one.readername,one.classes);
i=1;
}
}
if(i==0)
{
printf("您所输入的卡号不存在~");
getchar();
exit(0);
}
fseek(fp,0,0);
while(!feof(fp))
{
fscanf(fp,"%d %s %d \n",&one.cardnum,one.readername,&one.classes);
if(one.cardnum!=cardnumber)
{
fp1=fopen("readcard1.txt","a+");
if(fp1==NULL)
{
printf("该文件不存在!");
exit(0);
}
else
{
fprintf(fp1,"%d %s %d\n",one.cardnum,one.readername,one.classes);
fclose(fp1);
}
}
else
printf("%d %s %d\n",one.cardnum,one.readername,one.classes);
}//while(!feof(fp))
fp=fopen("readcard.txt","w");
fclose(fp);
fp=fopen("readcard.txt","a+");
fp1=fopen("readcard1.txt","r+");
while(!feof(fp1))
{
fscanf(fp1,"%d %s %d\n",&one.cardnum,one.readername,&one.classes);
fprintf(fp,"%d %s %d\n",one.cardnum,one.readername,one.classes);
}
fclose(fp);
fclose(fp1);
fp1=fopen("readcard1.txt","w");
fclose(fp1);
}//else
fp3=fopen("lendcard.txt","r+");
while(!feof(fp3))
{
fscanf(fp3,"%d %s %d %d %d\n",&oldcard.one.cardnum,oldcard.one.readername,
&oldcard.one.classes,&oldcard.booknum,&oldcard.lenddate);
if(oldcard.one.cardnum!=cardnumber)
{
fp2=fopen("lendcard1.txt","a+");
if(fp1==NULL)
{
printf("该文件不存在!");
exit(0);
}
else
fprintf(fp2,"%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
fclose(fp2);
}
}
fp3=fopen("lendcard.txt","w");
fclose(fp3);
fp3=fopen("lendcard.txt","a+");
fp2=fopen("lendcard1.txt","r+");
while(!feof(fp2))
{
fscanf(fp2,"%d %s %d %d %d\n",&oldcard.one.cardnum,oldcard.one.readername,
&oldcard.one.classes,&oldcard.booknum,&oldcard.lenddate);
fprintf(fp3,"%d %s %d %d %d\n",oldcard.one.cardnum,oldcard.one.readername,
oldcard.one.classes,oldcard.booknum,oldcard.lenddate);
}
fclose(fp3);
fclose(fp2);
fp2=fopen("lendcard1.txt","w");
fclose(fp2);
}
void modcard() //修改读者卡
{
char ch;
int cardnumber;
struct reader oldcard; //以前的卡的信息
FILE *fp,*fp1;
fp=fopen("readcard.txt","a+");
if(fp==NULL)
{
printf("该文件不存在:\n");
exit(0);
}
else //3
{
printf("请输入要修改的卡号:\n");
scanf("%d",&cardnumber);
getchar();
while(!feof(fp))
{
fscanf(fp,"%d %s %d \n",&oldcard.cardnum,oldcard.readername,&oldcard.classes);
if(oldcard.cardnum!=cardnumber)
{
fp1=fopen("readcard1.txt","a+");
if(fp1==NULL)
{
printf("该文件不存在!");
exit(0);
}
else
{
fprintf(fp1,"%d %s %d\n",oldcard.cardnum,oldcard.readername,oldcard.classes);
fclose(fp1);
}
}
else //2
{
printf("%d %s %d\n",oldcard.cardnum,oldcard.readername,oldcard.classes);
fp1=fopen("readcard1.txt","a+");
if(fp1==NULL)
{
printf("该文件不存在!");
exit(0);
}
else //1
{
int m;
printf("请选择所要修改的内容:\n 1->姓名\n2->班级\n3->全部\n");
scanf("%d",&m);
if(m==1)
{
printf("请输入新名字:\n");
scanf("%s",&oldcard.readername);
getchar();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -