📄 审核.cpp
字号:
#include "1.h"
void check(){
buy_list1 *check,*q,*sto,*p,*pass1,*r,*unpass,*s;
FILE *fp,*fp1,*fp2,*fp3,*fp4;//fp指向学生教师购书单,fp1指向库存,fp2指向pass1,fp3指向unpass,fp4指向pass2
int count=0,i,j,count1,flag2,count2=0,count3=0;//flag2标记当前结点是否有通过,count1记录库存数,count2记录PASS数,count3记录UNPASS数
//读出学生教师购书单
fp=fopen("Stu_buy.txt","r");
fread(&count,sizeof(int),1,fp);
check=q=(buy_list1 *)malloc(sizeof(buy_list1));
q->next=NULL;
for(i=0;i<count;){
fread(q,sizeof(buy_list1),1,fp);
i++;
if(i<count){
q->next=(buy_list1 *)malloc(sizeof(buy_list1));
q=q->next;
}
else q->next=NULL;
}
rewind(fp);//文件位置指针fp重新指向第一个
q=check;//重新指向头结点
//读出库存文件
fp1=fopen("store.txt","r+");
fread(&count1,sizeof(int),1,fp1);
sto=p=(buy_list1 *)malloc(sizeof(buy_list1));
p->next=NULL;
for(i=0;i<count1;){
fread(p,sizeof(buy_list1),1,fp1);
i++;
if(i<count1){
p->next=(buy_list1 *)malloc(sizeof(buy_list1));
p=p->next;
}
else p->next=NULL;
}
rewind(fp1);//文件位置指针fp1重新指向第一个
p=sto;//重新指向头结点
//审核
pass1=r=(buy_list1 *)malloc(sizeof(buy_list1));
unpass=s=(buy_list1 *)malloc(sizeof(buy_list1));
for(i=0;i<count;i++){
for(j=0;j<count1;j++){
flag2=0;
if((strcmp(q->name,p->name)==0)&&(strcmp(q->author,p->author)==0)&&(strcmp(q->press,p->press)==0)&&(q->num>0&&q->num<=100)){//书库里有这种书,并且数量合理,则通过一个结点
strcpy(r->cla,q->cla);//结点的复制
strcpy(r->buyer,q->buyer);
strcpy(r->author,q->author);
strcpy(r->press,q->press);
strcpy(r->name,q->name);
r->num=q->num;
count2++;
r->next=(buy_list1 *)malloc(sizeof(buy_list1));
r=r->next;
r->next=NULL;
p->num=(p->num-q->num);
flag2=1;
break;
}
else
p=p->next;
}
if(flag2==0){
strcpy(s->cla,q->cla);//结点的复制
strcpy(s->buyer,q->buyer);
strcpy(s->author,q->author);
strcpy(s->press,q->press);
strcpy(s->name,q->name);
s->num=q->num;
count3++;
s->next=(buy_list1 *)malloc(sizeof(buy_list1));
s=s->next;
s->next=NULL;
}
q=q->next;
p=sto;//重新指向头结点进行下一轮比较
}
//读出pass1及unpass,pass2
fp2=fopen("pass1.txt","w");
fp3=fopen("unpass.txt","w");
fp4=fopen("pass2.txt","w");
//写文件
fwrite(&count1,sizeof(int),1,fp1);//写库存的个数
fwrite(&count2,sizeof(int),1,fp2);//pass1
fwrite(&count3,sizeof(int),1,fp3);//pass2
fwrite(&count2,sizeof(int),1,fp4);//unpass
fclose(fp);
p=sto;//写库存
for(i=0;i<count1;i++){
fwrite(p,sizeof(buy_list1),1,fp1);
p=p->next;
}
fclose(fp1);
r=pass1;//写pass1
for(i=0;i<count2;i++){
fwrite(r,sizeof(buy_list1),1,fp2);
r=r->next;
}
fclose(fp2);
s=unpass;//写unpass
for(i=0;i<count3;i++){
fwrite(s,sizeof(buy_list1),1,fp3);
s=s->next;
}
fclose(fp3);
r=pass1;//写pass2
for(i=0;i<count2;i++){
fwrite(r,sizeof(buy_list1),1,fp4);
r=r->next;
}
fclose(fp4);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -