⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 审核.cpp

📁 由于当时只是学到C语言
💻 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 + -