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

📄 主程序.cpp

📁 图书管理小程序实现了图书读者的输入,图书的借还.文件读写.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				scanf("%s",sm);
				k=BnameFind(f1,sm);
				if(k==0){
					printf("没有该书,请检查是否输入有错\n");
					break;
				}
				for(i=k;i;i=df.BookDbase[i].namenext)
					ShowRec(df,i);
				break;
            case 3:
				printf("输入作者名:\n");
				scanf("%s",zz);
				k=BauthFind(f2,zz);
				if(k==0){
					printf("没有该书,请检查是否输入有错\n");
					break;
				}
                for(i=k;i;i=df.BookDbase[i].authnext)
					ShowRec(df,i);
				break;
            case 4:
				printf("输入出版社:\n");
				scanf("%s",cbs);
				k=BnameFind(f3,cbs);
				if(k==0){
					printf("没有该书,请检查是否输入有错\n");
					break;
				}
				for(i=k;i;i=df.BookDbase[i].prenext)
					ShowRec(df,i);
				break;
			case 5: return;
		}
	}
}

/*end for search.c**/

/*begin for reader.c*/
void ReaderManage(ReadFile &rf){
	int i;
	char yn='y';
	i=++rf.len;
	while(yn=='y'||yn=='Y'){
		printf("输入读者号(3)	读者名	可借书数\n");
		scanf("\n%s %s",rf.ReadRec[i].rno,rf.ReadRec[i].name);
		scanf("\n%d",&rf.ReadRec[i].bn1);
		printf("继续输入吗?(输入错误按输入n处理)y/n:\n");
		scanf("\n%c",&yn);
		i++;
	}
	rf.len=i-1;
}

/*end for reader.c*/

/* begin for borrow.c**/
void BorrowBook(BookDbaseFile &bf,BnoIdxFile bif,BbookFile &bbf,ReadFile &rf){
	char dzh[8],sh[4],jyrq[8];
	int i,j,k=0;
	printf("输入读者号(3)	书号(3)	借阅日期(6)\n");
	scanf("\n%s%s%s",dzh,sh,jyrq);
	for(i=1;i<=rf.len;i++)
		if(strcmp(dzh,rf.ReadRec[i].rno)==0){ 
			k=i;
		
			break;
		}
		if(k==0){
			printf("非法读者! \n");
		//	return;
		}
		if(rf.ReadRec[k].bn2>=rf.ReadRec[k].bn1){
			printf("书已借满! \n");
			return;
		}
		j=BinSearch(bif,sh);					//查找图书文件
		if(j==0){
			printf("非法书号! \n");
			return;
		}
		if(bf.BookDbase[j].borrownum>=bf.BookDbase[j].storenum){
			printf("图书已借出! \n");
			return;
		}
		i=++bbf.len;
		strcpy(bbf.Bbook[i].rno,dzh);
		strcpy(bbf.Bbook[i].bno,sh);
		strcpy(bbf.Bbook[i].date1,jyrq);
		rf.ReadRec[k].bn2++;					//读者借书数加1
		bf.BookDbase[j].borrownum++;			//图书借出数加1
		printf("借书成功! \n");
}

//还书处理算法
void BackBook(BookDbaseFile &bf,BnoIdxFile bif,BbookFile &bbf,ReadFile &rf){
	char dzh[8],sh[15],hsrq[8];
	int i,j,k=0,m=0;
	printf("输入读者号(3)	书号(3)	还书日期(6)\n");
	scanf("%s%s%s",dzh,sh,hsrq);
	for(i=1;i<=rf.len;i++)
		if(strcmp(dzh,rf.ReadRec[i].rno)==0){
			k=i;
			break;
		}
	if(k==0){
		printf("非法读者! \n");
		return;
		}
	for(i=1;i<=bbf.len;i++)
		if(strcmp(sh,bbf.Bbook[i].bno)==0){
			m=i;
			break;
		}
	if(m==0){
		printf("非法书号! \n");
		return;
		}
	j=BinSearch(bif,sh);
	if(j==0){
		printf("非法书号! \n");
		return;
	}
	rf.ReadRec[k].bn2--;
	bf.BookDbase[j].borrownum--;
	strcpy(bbf.Bbook[m].date2,hsrq);		//填入还书日期
	printf("还书成功! \n");
}

/*end for borrow.c*/

FileEngine FileBook ("D:\数据结构课程设计\\book.txt");
FileEngine FileBidx ("D:\数据结构课程设计\\bidx.txt");
FileEngine FileNidx ("D:\数据结构课程设计\\nidx.txt");
FileEngine FileAidx ("D:\数据结构课程设计\\aidx.txt");
FileEngine FilePidx ("D:\数据结构课程设计\\pidx.txt");
FileEngine FileRead ("D:\数据结构课程设计\\read.txt");
FileEngine FileBbff ("D:\数据结构课程设计\\bbff.txt");

/* begin for writefile.c*/

void writefile(BookDbaseFile bf,BnoIdxFile bif,LHFile1 f1,LHFile2 f2,LHFile3 f3,ReadFile rf,BbookFile bbf){
	
	//写图书主文件
	int i;
	for (i = 1; i <= bf.len; i ++)
		FileBook.put (&bf.BookDbase[i] , sizeof (BookRecType) , 1);

	//写图书索引文件
	for(i=1;i<=bif.len;i++)
		FileBidx.put (&bif.BnoIdx[i] , sizeof (BidxRecType) , 1);

	//写书名索引链头文件
	for (i = 1; i <= f1.len1; i ++)
		FileNidx.put (&f1.LHFrec1[i] , sizeof (BNRecType) , 1);

	//写作者索引链头文件
	for (i = 1; i <= f2.len2; i ++)
		FileAidx.put (&f2.LHFrec2[i],sizeof(BARecType),1);

	//写出版社索引链头文件
	for (i = 1; i <= f3.len3; i ++)
		FilePidx.put (&f3.LHFrec3[i],sizeof(BPRecType),1);

	//写读者文件
	for (i = 1; i <= rf.len; i ++)
		FileRead.put (&rf.ReadRec[i],sizeof(RRecType),1);


	//写借还书文件
	for (i = 1; i <= bbf.len; i ++)
		FileBbff.put (&bbf.Bbook[i],sizeof(BbookRecType),1);
}
/* end for writefile.c*/

/*begin for readfile.c*/

void readfile(BookDbaseFile &bf,BnoIdxFile &bif,LHFile1 &f1,LHFile2 &f2,LHFile3 &f3,ReadFile &rf,BbookFile &bbf){
//	FILE *fp;
	//读图书主文件
	bf.len = FileBook.get (&bf.BookDbase[1] , sizeof (BookRecType));
	printf ("读图书主文件 ... 个数 %d ...OK!\n" , bf.len);

	//读图书索引文件
	bif.len = FileBidx.get (&bif.BnoIdx[1] , sizeof(BidxRecType));
	printf ("读图书索引文件 ...个数 %d ... OK!\n" , bif.len);

	//读书名索引链头文件
	f1.len1 = FileNidx.get (&f1.LHFrec1[1],sizeof(BNRecType));
	printf ("读书名索引链头文件 ...个数 %d ... OK!\n" , f1.len1);


	//读作者索引链头文件
	f2.len2 = FileAidx.get (&f2.LHFrec2[1],sizeof(BARecType));
	printf ("读作者索引链头文件 ... 个数 %d ...OK!\n" , f2.len2);

	//读出版社索引链头文件
	f3.len3 = FilePidx.get (&f3.LHFrec3[1],sizeof(BPRecType));
	printf ("读出版社索引链头文件 ... 个数 %d ...OK!\n" , f3.len3);

	//读读者文件
	rf.len = FileRead.get (&rf.ReadRec[1],sizeof(RRecType));
	printf ("读读者文件 ... 个数 %d ...OK!\n" , rf.len);

	//读借还书文件
	bbf.len = FileBbff.get (&bbf.Bbook[1],sizeof(BbookRecType));
	printf ("读借还书文件 ... 个数 %d ...OK!\n" , bbf.len);
}
/*end for readfile.c*/

void main(){
	int j,m,k=1;
	char xz='n';
	BookDbaseFile bf;
	BnoIdxFile bif;
	LHFile1 f1;
	LHFile2 f2;
	LHFile3 f3;
	ReadFile rf;
	BbookFile bbf;

	bf.len = 0;
	bif.len = 0;
	f1.len1 = 0;
	f2.len2 = 0;
	f3.len3 = 0;
	bbf.len = 0;

	while(k<=5){
		printf("图书管理系统\n");
		printf("==============\n");
		printf("1.系统维护\n");
		printf("2.读者管理\n");
		printf("3.图书管理\n");
		printf("4.图书流通\n");
		printf("5.存盘\n");
		printf("6.退出系统\n");
		printf("==============\n");
		printf("请选择1-6:\n");
		scanf("\n%d",&k);
		switch(k){
		case 1:
			printf("系统维护\n");
			printf("---------\n");
			printf("1.初始化\n");
			printf("2.读盘\n");
			printf("---------\n");
			printf("请选择: \n");
			scanf("\n%d",&m);
			switch(m){
			case 1:
				printf("初始化只能做一次,需慎重! 还要初始化吗?(输入错误按输入n处理)y/n:\n");
				scanf("\n%c",&xz);
				while(xz=='y'||xz=='Y'){
					FileBook.Build ();
					FileBidx.Build ();
					FileNidx.Build ();
					FileAidx.Build ();
					FilePidx.Build ();
					FileRead.Build ();
					FileBbff.Build ();
					bf.len=bif.len=f1.len1=f2.len2=0;
					f3.len3=rf.len=bbf.len=0;
					printf("已完成初始化!\n");
					break;
				}
				break;
			case 2:
				readfile(bf,bif,f1,f2,f3,rf,bbf);
				break;
			}
			break;
		 case 2:
			 ReaderManage(rf);
			 break;
		 case 3:					
			 printf("图书管理子系统\n");
			 printf("---------------\n");
			 printf("1.图书信息输入\n");
			 printf("2.图书信息查询\n");
			 printf("---------------\n");
			 printf("请选择: \n");
			 scanf("\n%d",&j);
			 if(j==1)
				 CreateBook(bf,bif,f1,f2,f3);
			 else
				 SearchBook(bf,bif,f1,f2,f3);
	         break;
		 case 4:
			 printf("图书流通子系统\n");
			 printf("---------------\n");
			 printf("1.借书处理\n");
			 printf("2.还书处理\n");
			 printf("---------------\n");
			 printf("请选择: \n");
			 scanf("\n%d",&j);
			 if(j==1)
				 BorrowBook(bf,bif,bbf,rf);
			 else if(j==2)
				 BackBook(bf,bif,bbf,rf);
			 break;
		 case 5:
			 printf("系统正在写盘中,请稍等...\n");
			 writefile(bf,bif,f1,f2,f3,rf,bbf);
			 printf("写盘完成!\n");
			 break;
		 case 6:
		     printf("下次再来!\n");
			writefile(bf,bif,f1,f2,f3,rf,bbf);
			  return;
		}
	}
}



















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -