急求c语言程序设计 图书管理系统 源代码 c语言程序设计课程设计 图书管理系统 求原代码

\u6025\u6c42\u7528C\u8bed\u8a00\u7f16\u5199\u7684\u56fe\u4e66\u7ba1\u7406\u7cfb\u7edf\u6e90\u4ee3\u7801

#include
#include
#include
#include
#include
#define STACK_INIT_SIZE 10
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0

struct student /*\u5b9a\u4e49\u5b66\u751f\u7c7b\u578b\uff0c\u7528\u4e8e\u5b58\u653e\u501f\u51fa\u7684\u4e66\u7c4d*/
{
int carnum;
char lendbook[10];
}student[1000];

struct employ /*\u5b9a\u4e49\u804c\u5de5\u7c7b\u578b*/
{
int employnum;
char employname[15];
int employage;
char employsex[2];
char employleve[10];
long int employtage;
}employ[50];

struct book /*\u5b9a\u4e49\u4e66\u7684\u7c7b\u578b*/
{
int booknum;
char bookname[10];
char bookcreat[10];
int turefalse; /*\u7528\u4e8e\u501f\u4e66\u548c\u8fd8\u4e66\u6a21\u5757\u5224\u65ad\u4e00\u672c\u4e66\u662f\u5426\u501f\u51fa\u7684\u6761\u4ef6*/
}book[1000];

struct car /*\u501f\u4e66\u5361\u7684\u6570\u636e\u7c7b\u578b*/
{
int carnum;
char studentname[10];
int studentclass;
}car[100];


huanbook() /*\u8fd8\u4e66\u51fd\u6570*/
{
FILE *fp,*fp2; /*\u5b9a\u4e49\u4e24\u4e2a\u6587\u4ef6\u6307\u9488\uff0cfp2\u7528\u4e8e\u4fee\u6539\u6570\u636e\u65f6\u8bbe\u7acb\u4e34\u65f6\u6587\u4ef6\u7528\uff0c\u9632\u6b62\u6570\u636e\u906d\u7834\u574f*/
int i,n;
int carnum;
char lendbook[10];
printf("\u8bf7\u4f60\u8f93\u5165\u4f60\u7684\u5361\u53f7\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r"); /*\u8bfb\u53d6\u5361\u53f7\u8bb0\u5f55*/
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++) /*for\u5faa\u73af\u5224\u65ad\u5361\u53f7\u662f\u5426\u5b58\u5728*/
{
if(car[i].carnum==carnum) /*\u5361\u53f7\u5b58\u5728\uff0c\u8fdb\u5165\u4e0b\u4e00\u5faa\u73af*/
{
n=i;
fclose(fp);
printf("\u8bf7\u8f93\u5165\u4f60\u8981\u8fd8\u7684\u4e66\u7684\u540d\u5b57\n");
scanf("%s",lendbook);
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++) /*\u5224\u65ad\u662f\u5426\u501f\u9605\u4e86\u8f93\u5165\u7684\u4e66*/
{
if(strcmp(student[i].lendbook,lendbook)==0) /*\u501f\u9605\u4e86\u8be5\u4e66\uff0c\u8fdb\u5165\u4e0b\u4e00\u5faa\u73af\uff0c\u5426\u5219\u51fa\u9519\u663e\u793a*/
{
fclose(fp);
fp=fopen("record.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
if(strcmp(student[i].lendbook,lendbook)==0)
{
continue; /*\u5220\u9664\u8fd8\u6389\u7684\u4e66\u7684\u501f\u4e66\u8bb0\u5f55*/
}
fwrite(&student[i],sizeof(struct student),1,fp2); /*\u5199\u5165\u539f\u6765\u6ca1\u8fd8\u7684\u4e66\u7684\u8bb0\u5f55*/
}
fclose(fp);
fclose(fp2);
fp=fopen("record.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp2)!=0;i++)
{
fwrite(&student[i],sizeof(struct student),1,fp); /*\u5c06\u501f\u4e66\u8bb0\u5f55\u4fe1\u606f\u5199\u56de*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*\u6e05\u4e34\u65f6\u6587\u4ef6\u7684\u8bb0\u5f55*/
fclose(fp2);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++) /*\u5c06\u4e66\u7684\u8bb0\u5f55\u5199\u5165\u4e34\u65f6\u6587\u4ef6\uff0c\u9632\u6b62\u56e0\u4e3a\u4fee\u6539\u4fe1\u606f\u7834\u574f\u4ee5\u524d\u7684\u8bb0\u5f55*/
{
if(i==n)
{
book[i].turefalse=1;
fwrite(&book[i],sizeof(struct book),1,fp2); /*\u5c06\u8fd8\u7684\u4e66\u7684\u539f\u6765\u72b6\u6001\u8bbe\u4e3a\u65e0\u4eba\u501f\u9605\u7684*/
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp); /*\u5c06\u4e34\u65f6\u6587\u4ef6\u5199\u56de*/
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w"); /*\u6e05\u4e34\u65f6\u6587\u4ef6*/
fclose(fp2);
printf("\u8fd8\u4e66\u5b8c\u6bd5\uff0c\u6309\u4efb\u610f\u952e\u8fd4\u56de\n");
getch();
return 1;
}
}
printf("\u4f60\u6ca1\u6709\u501f\u8fd9\u6837\u7684\u4e66\uff0c\u4efb\u610f\u952e\u8fd4\u56de\n"); /*\u51fa\u9519\u63d0\u793a*/
fclose(fp);
getch();
return 0;
}
}
printf("\u7cfb\u7edf\u6ca1\u8fd9\u6837\u7684\u5361\uff0c\u548c\u7ba1\u7406\u5458\u8054\u7cfb,\u6309\u4efb\u610f\u952e\u8fd4\u56de\n"); /*\u51fa\u9519\u63d0\u793a*/
fclose(fp);
getch();
}


findbook()
{
FILE *fp;
char bookname[10];
int ture,i;
fp=fopen("book.txt","r");
printf("\u8bf7\u8f93\u5165\u4f60\u8981\u67e5\u627e\u7684\u4e66\u540d\n");
scanf("%s",bookname);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookname,book[i].bookname)==0)
{
if(book[i].turefalse==1)
{
printf("\u8fd9\u672c\u4e66\u7684\u8be6\u7ec6\u8d44\u6599\u662f\uff1a%d %s %s \u6b64\u4e66\u73b0\u5728\u65e0\u4eba\u501f\u9605\n\u6309\u4efb\u610f\u952e\u8fd4\u56de\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("\u8fd9\u672c\u4e66\u5df2\u7ecf\u6709\u4eba\u501f\u51fa\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("\u6ca1\u6709\u4f60\u8981\u67e5\u8be2\u7684\u4e66\u7c4d\n");
fclose(fp);
return FALSE;
}


findbook1()
{
FILE *fp;
char bookcreat[10];
int ture,i;
fp=fopen("book.txt","r");
printf("\u8bf7\u8f93\u5165\u4f60\u8981\u67e5\u627e\u7684\u4f5c\u8005\u540d\n");
scanf("%s",bookcreat);
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(bookcreat,book[i].bookcreat)==0)
{
if(book[i].turefalse==1)
{
printf("\u8fd9\u672c\u4e66\u7684\u8be6\u7ec6\u8d44\u6599\u662f\uff1a%d %s %s \u6b64\u4e66\u73b0\u5728\u65e0\u4eba\u501f\u9605\n\u6309\u4efb\u610f\u952e\u8fd4\u56de\n",book[i].booknum,book[i].bookname,book[i].bookcreat);
}
else {printf("\u8fd9\u672c\u4e66\u5df2\u7ecf\u6709\u4eba\u501f\u51fa\n");fclose(fp);return 0;}
fclose(fp);
return FALSE;
}
}
printf("\u6ca1\u6709\u4f60\u8981\u67e5\u8be2\u7684\u4e66\u7c4d\n");
fclose(fp);
return FALSE;
}



lendcount()
{
FILE *fp;
int i,n=0;
fp=fopen("record.txt","r");
for(i=0;fread(&student[i],sizeof(struct student),1,fp)!=0;i++)
{
printf("\u5361\u53f7\uff1a%d \u501f\u51fa\u7684\u4e66\u7c4d\uff1a%s \n",student[i].carnum,student[i].lendbook);
n=n+1;
}
fclose(fp);
printf("\u76ee\u524d\u5171\u6709%d\u672c\u4e66\u501f\u51fa\n",n);
printf("\u6309\u4efb\u610f\u952e\n");
getch();
return n;
}



chabook()
{
char ch5;
do
{
printf("---------------\u6b22\u8fce\u8fdb\u5165\u56fe\u4e66\u67e5\u8be2\u7cfb\u7edf\uff01--------------\n");
printf(" 1\uff1a\n");
printf(" 2\uff1a\n");
printf(" 0\uff1a\n");
printf("\u8bf7\u8f93\u51650--2,\u5176\u4ed6\u8f93\u5165\u975e\u6cd5\uff01\n");
scanf("%s",&ch5);
switch(ch5)
{
case '1':findbook();getch();break;
case '2':findbook1();getch();break;
case '0':break;
default:printf("\u65e0\u6b64\u64cd\u4f5c\n");getch();break;
}
}while(ch5!='0');
return FALSE;
}


lendbook()
{
FILE *fp,*fp2;
int i,n;
int carnum;
printf("\u8bf7\u4f60\u8f93\u5165\u4f60\u7684\u5361\u53f7\n");
scanf("%d",&carnum);
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum==carnum)
{
n=i;
fclose(fp);
printf("\u8bf7\u8f93\u5165\u4f60\u8981\u501f\u9605\u7684\u4e66\u7684\u540d\u5b57\n");
scanf("%s",student[n].lendbook);
fp=fopen("book.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
if(book[i].turefalse==0) {printf("\u5bf9\u4e0d\u8d77\uff0c\u6b64\u4e66\u6709\u4eba\u501f\u51fa\uff0c\u8bf7\u501f\u5176\u4ed6\u4e66\n");fclose(fp);getch();return;}
else
fclose(fp);
fp=fopen("record.txt","a+");
student[n].carnum=carnum;
fwrite(&student[n],sizeof(struct student),1,fp);
fclose(fp);
fp=fopen("book.txt","r");
fp2=fopen("bookl.txt","w");
for(i=0;fread(&book[i],sizeof(struct book),1,fp)!=0;i++)
{
if(strcmp(book[i].bookname,student[n].lendbook)==0)
{
book[i].turefalse=0;
fwrite(&book[i],sizeof(struct book),1,fp2);
continue;
}
fwrite(&book[i],sizeof(struct book),1,fp2);
}
fclose(fp);
fclose(fp2);
fp=fopen("book.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&book[i],sizeof(struct book),1,fp2)!=0;i++)
{
fwrite(&book[i],sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fp2);
fopen("bookl.txt","w");
fclose(fp2);
printf("\u501f\u4e66\u5b8c\u6bd5\uff0c\u6309\u4efb\u610f\u952e\u8fd4\u56de\n");
getch();
return;
}
}
printf("\u4e0d\u5b58\u5728\u8fd9\u6837\u7684\u4e66\uff0c\u4efb\u610f\u952e\u8fd4\u56de\n");
fclose(fp);
getch();
return;
}
}
printf("\u4f60\u7684\u5361\u53f7\u4e0d\u5b58\u5728\uff0c\u8bf7\u7533\u8bf7\u65b0\u5361,\u6309\u4efb\u610f\u952e\u8fd4\u56de\n");
fclose(fp);
getch();
}


carcount()
{
FILE *fp;
int i,n=0;
fp=fopen("car.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
printf("\u7b2c%d\u5f20\u5361\n",i+1,car[i].carnum,car[i].studentname,car[i].studentclass);
n=n+1;
}
fclose(fp);
printf("\u76ee\u524d\u5171\u6709%d\u672c\u4e66\n",n);
printf("\u6309\u4efb\u610f\u952e\n");
getch();
}


delcar()
{
FILE *fp,*fp2;
int i;
int carnum;
char choice;
fp=fopen("car.txt","r");
fp2=fopen("bookl.txt","w");
printf("\u8bf7\u8f93\u5165\u4f60\u8981\u5220\u9664\u7684\u5361\u53f7\n");
printf("\u5982\u679c\u4f60\u8f93\u5165\u7684\u5361\u53f7\u5b58\u5728\uff0c\u7cfb\u7edf\u81ea\u52a8\u5220\u9664\u8be5\u4fe1\u606f\uff01\u5982\u679c\u4e0d\u5b58\u5728\uff0c\u7cfb\u7edf\u4e0d\u505a\u4efb\u4f55\u6539\u52a8\n");
scanf("%d",&carnum);
for(i=0;fread(&car[i],sizeof(struct car),1,fp)!=0;i++)
{
if(car[i].carnum!=carnum)
{
fwrite(&car[i],sizeof(struct car),1,fp2);
}
}
fclose(fp);
fclose(fp2);
printf("\u662f\u5426\u771f\u7684\u8981\u5220\u9664\u8be5\u5361\uff1f\u5220\u9664\u540e\u8be5\u4e66\u7c4d\u7684\u6240\u6709\u4fe1\u606f\u5c06\u65e0\u6cd5\u6062\u590d\u300aY/N\u300b\n");
scanf("%s",&choice);
if(choice=='y'||choice=='Y')
{
fp=fopen("car.txt","w");
fp2=fopen("bookl.txt","r");
for(i=0;fread(&car[i],sizeof(struct car),1,fp2)!=0;i++)
{
fwrite(&car[i],sizeof(struct car),1,fp);
}
fclose(fp);
fclose(fp2);
fp2=fopen("bookl.txt","w");
fclose(fp2);
printf("\u6309\u4efb\u610f\u952e\u8fd4\u56de\n");
getch();
return;
}
else
{
printf("\u6309\u4efb\u610f\u952e\u8fd4\u56de\n");
getch();
return;
}
}


addcar()
{
FILE *fp;
int i=0;
fp=fopen("car.txt","a+");
printf("\u8bf7\u4f60\u8f93\u5165\u5361\u53f7\n");
scanf("%d",&car[i].carnum);
printf("\u8bf7\u4f60\u8f93\u5165\u5b66\u751f\u59d3\u540d\n");
scanf("%s",car[i].studentname);
printf("\u8bf7\u4f60\u8f93\u5165\u73ed\u7ea7\n");
scanf("%d",&car[i].studentclass);
fwrite(&car[i],sizeof(struct car),1,fp);
fclose(fp);
printf("\u8f93\u5165\u5b8c\u6bd5\uff0c\u4efb\u610f\u952e\u8fd4\u56de\n");
getch();
}

\u9ad8\u7ea7\u8bed\u8a00\u7a0b\u5e8f\u8bbe\u8ba1\uff082\uff09\u8bfe\u7a0b\u8bbe\u8ba1
   
\u4e00 \u7a0b\u5e8f\u8bbe\u8ba1\u8bf4\u660e\u4e66
\u3010\u8bbe\u8ba1\u9898\u76ee\u3011 \u56fe\u4e66\u9986\u501f\u9605\u7ba1\u7406
\u3010\u95ee\u9898\u63cf\u8ff0\u3011\u56fe\u4e66\u9986\uff0c\u9002\u5408\u7528C++\u9762\u5411\u5bf9\u8c61\u7684\u529f\u80fd\u6765\u63cf\u8ff0\u3002\u56fe\u4e66\u9986\u7ba1\u7406\u7cfb\u7edf\u5206\u4e3a\u501f\u4e66\u3001\u8fd8\u4e66\u3001\u56fe\u4e66\u7ba1\u7406\u548c\u8bfb\u8005\u670d\u52a1\u7b49\u56db\u4e2a\u90e8\u5206\u3002\u8bbe\u8ba1\u4e00\u4e2a\u8bfb\u8005\u7c7bReader,\u8bb0\u5f55\u6bcf\u4e2a\u8bfb\u8005\u57fa\u672c\u4fe1\u606f\uff1b\u8bfb\u8005\u5e93\u7c7bRdatabase,\u8bb0\u5f55\u6240\u6709\u8bfb\u8005\u4fe1\u606f\uff1b\u56fe\u4e66\u7c7bBook, \u8bb0\u5f55\u6bcf\u672c\u4e66\u7684\u57fa\u672c\u4fe1\u606f\uff1b\u56fe\u4e66\u5e93\u7c7bBdatabase, \u8bb0\u5f55\u6240\u6709\u56fe\u4e66\u4fe1\u606f\u3002
\u3010\u57fa\u672c\u8981\u6c42\u3011
1\u8bfb\u8005\u5e93\u7c7bRDatabase\u4e2d\uff0c\u5176\u6784\u9020\u51fd\u6570\u4e2d\uff0c\u5c06read.txt\u6587\u4ef6\u4e2d\u6240\u6709\u8bfb\u5165\u8bfb\u8005\u8bb0\u5f55rede[]\u4e2d\u3002\u5904\u7406\u5b8c\u6bd5\uff0c\u5728\u6790\u6784\u51fd\u6570\u4e2d\u5c06read[]\u4e2d\u7684\u6240\u6709\u672a\u5220\u8bb0\u5f55\u5199\u5165\u5230read.txt\u4e2d\u3002
2\u56fe\u4e66\u5e93\u7c7bBDatabase\u4e2d\uff0c\u5176\u6784\u9020\u51fd\u6570\u4e2d\uff0c\u5c06book.txt\u6587\u4ef6\u4e2d\u6240\u6709\u8bfb\u5165\u56fe\u4e66\u8bb0\u5f55book[]\u4e2d\u3002\u5904\u7406\u5b8c\u6bd5\uff0c\u5728\u6790\u6784\u51fd\u6570\u4e2d\u5c06book[]\u4e2d\u7684\u6240\u6709\u672a\u5220\u8bb0\u5f55\u5199\u5165\u5230book.txt\u4e2d\u3002
3 \u5229\u7528\u6784\u9020\u51fd\u6570\u5b8c\u6210\u8bfb\u8005\u548c\u56fe\u4e66\u6570\u636e\u521d\u59cb\u5316\uff0c\u5b8c\u6210\u5185\u5b58\u5206\u914d\u3002\u7a0b\u5e8f\u7ed3\u675f\u524d\uff0c\u6790\u6784\u51fd\u6570\u5b8c\u6210\u6240\u7533\u8bf7\u7684\u5806\u5185\u5b58\u7a7a\u95f4\u3002
4 \u7f16\u5199\u4e3b\u51fd\u6570\uff0c\u5bf9\u6240\u7f16\u5199\u7684\u77e9\u9635\u7c7b\u8fdb\u884c\u5168\u9762\u6d4b\u8bd5\u3002\u8981\u6c42\u7528\u6237\u754c\u9762\u91c7\u7528\u83dc\u5355\u65b9\u5f0f\u3002\u6d4b\u8bd5\u4e2d\u9700\u8981\u8bfb\u8005\u548c\u56fe\u4e66\u6570\u636e\u901a\u8fc7I/O\u6d41\u4ece\u78c1\u76d8\u6587\u4ef6\u8bfb\u5165\uff0c\u540c\u65f6\u663e\u793a\u5728\u5c4f\u5e55\u4e0a\u3002\u5f97\u5230\u7684\u6570\u636e\u901a\u8fc7I/O\u6d41\u5199\u5165\u78c1\u76d8\u6587\u4ef6\u4fdd\u5b58\uff0c\u540c\u65f6\u663e\u793a\u5728\u5c4f\u5e55\u4e0a\u3002
5 \u6e90\u7a0b\u5e8f\u4e2d\u8981\u6709\u5145\u5206\u7684\u6ce8\u91ca\uff0c\u62a5\u544a\u4e2d\u8981\u6709\u8be6\u7ec6\u7684\u6d41\u7a0b\u56fe\u548c\u6587\u5b57\u6750\u6599\u3002
\u3010\u7c7b\u7684\u8bbe\u8ba1\u3011
\u8be5\u7a0b\u5e8f\u5305\u542b\u4e86\u56db\u4e2a\u7c7b\uff0c\u5982\u4e0b\uff1a
1.Reader\u7c7b\uff0c\u6709\u8bfb\u8005\u7684\u57fa\u672c\u7ba1\u7406\u529f\u80fd\uff0c\u5177\u6709\u4ee5\u4e0b\u79c1\u6709\u6570\u636e\uff1a
int tag;//\u5220\u9664\u6807\u8bb0 1\uff1a\u5df2\u5220\uff1b0\uff1a\u672a\u5220
int no;//\u8bfb\u8005\u7f16\u53f7
char name[10];//\u8bfb\u8005\u59d3\u540d
int borbook[Maxbor];//\u6240\u501f\u56fe\u4e66
2.\u8bfb\u8005\u5e93\u7c7bRdatabase, \u5177\u6709\u4ee5\u4e0b\u79c1\u6709\u6570\u636e\uff1a
int top;//\u8bfb\u8005\u8bb0\u5f55\u6307\u9488
Reader read[Maxr];//\u8bfb\u8005\u8bb0\u5f55
3.\u56fe\u4e66\u5e93\u7c7bBook,\u6709\u4e00\u672c\u56fe\u4e66\u7684\u57fa\u672c\u529f\u80fd\uff0c\u6709\u4ee5\u4e0b\u79c1\u6709\u6570\u636e\uff1a
int tag;//\u5220\u9664\u6807\u8bb0 1\uff1a\u5df2\u5220\uff1b0\uff1a\u672a\u5220
int no;//\u56fe\u4e66\u7f16\u53f7
char name[20];//\u4e66\u540d
int onshelf;//\u662f\u5426\u5728\u67b6 1\u5728\u67b6 0\u5df2\u501f
4.\u56fe\u4e66\u5e93\u7c7bBDatabase,\u6709\u4ee5\u4e0b\u79c1\u6709\u6570\u636e\uff1a
int top;//\u56fe\u4e66\u8bb0\u5f55\u6307\u9488
Book book[Maxb];//\u56fe\u4e66\u8bb0\u5f55
\u3010\u7279\u6b8a\u51fd\u6570\u7684\u8bbe\u8ba1\u8bf4\u660e\u3011
\u6784\u9020\u51fd\u6570
1.Reader\u7c7b\u4e2d\u6784\u9020\u51fd\u6570Reader(),\u521d\u59cb\u5316\u51fd\u6570\uff1b
2.\u8bfb\u8005\u5e93\u7c7bRDatabase\u4e2d\uff0c\u5176\u6784\u9020\u51fd\u6570Rdatabase\uff08\uff09\uff0c\u5c06read.txt\u6587\u4ef6\u4e2d\u6240\u6709\u8bfb\u5165\u8bfb\u8005\u8bb0\u5f55rede[]\u4e2d\u3002
3.Book\u7c7b\u4e2d\u6784\u9020\u51fd\u6570Book(),\u521d\u59cb\u5316\u51fd\u6570\uff1b
4.\u56fe\u4e66\u5e93\u7c7bBDatabase\u4e2d\uff0c\u5176\u6784\u9020\u51fd\u6570\u4e2d\uff0c\u5c06book.txt\u6587\u4ef6\u4e2d\u6240\u6709\u8bfb\u5165\u56fe\u4e66\u8bb0\u5f55book[]\u4e2d\u3002
 
\u62f7\u8d1d\u6784\u9020\u51fd\u6570
Reader\u7c7b\u4e2d\u7684\u62f7\u8d1d\u6784\u9020\u51fd\u6570\u5c06getname()\u7684\u8fd4\u56de\u503c\u8bfb\u8005\u59d3\u540d\u62f7\u8d1d\u5230setname()\u4e2d\uff0cBook\u7c7b\u4e2d\u7684\u62f7\u8d1d\u6784\u9020\u51fd\u6570\u5c06getname()\u51fd\u6570\u7684\u8fd4\u56de\u503c\u56fe\u4e66\u540d\u62f7\u8d1d\u5230\u56fe\u4e66\u540d\u8bbe\u7f6e\u51fd\u6570setname()\u4e2d\u3002
 
\u6790\u6784\u51fd\u6570
1.\u8bfb\u8005\u5e93\u7c7bRDatabase\u4e2d\uff0c\u5176\u6790\u6784\u51fd\u6570~Rdatabase\uff08\uff09\uff0c\u5c06read[]\u4e2d\u7684\u6240\u6709\u672a\u5220\u8bb0\u5f55\u5199\u5165\u5230read.txt\u4e2d\uff1b
2.\u56fe\u4e66\u5e93\u7c7bBDatabase\u4e2d\uff0c\u5176\u6790\u6784\u51fd\u6570~Bdatabase\uff08\uff09\uff0c\u5c06book[]\u4e2d\u7684\u6240\u6709\u672a\u5220\u8bb0\u5f55\u5199\u5165\u5230book.txt\u4e2d\u3002
 
\u8fd0\u7b97\u7b26\u91cd\u8f7d
\u91cd\u8f7d\u4e86\u201c=\u201d\uff0c\u5f53\u6bd4\u8f83\u8bfb\u8005\u7f16\u53f7\u548c\u56fe\u4e66\u7f16\u53f7\u65f6\uff0c\u91cd\u8f7d\uff1b\u91cd\u8f7d\u4f4d\u8fd0\u7b97\u7b26\u201c\u3008\u3008\u201d\u548c\u201c\u3009\u3009\u201d\u7b49\u3002
 
\u3010\u4e3b\u8981\u51fd\u6570\u7b97\u6cd5\u6d41\u7a0b\u56fe\u3011
 
\u3010\u7a0b\u5e8f\u7684\u4f7f\u7528\u65b9\u6cd5\u3011
1.\u8fdb\u5165\u64cd\u4f5c\u9875\u9762\uff0c\u6309\u63d0\u793a\u64cd\u4f5c\uff1b
2.\u9996\u5148\uff0c\u65b0\u589e\u56fe\u4e66\u548c\u8bfb\u8005\u4fe1\u606f\uff0c\u4e4b\u540e\u5c31\u53ef\u4ee5\u5bf9\u4ee5\u5b58\u5728\u7684\u4fe1\u606f\u8fdb\u884c\u64cd\u4f5c\uff1b
3.\u64cd\u4f5c\u5f53\u4e2d\uff0c\u53ef\u4ee5\u968f\u65f6\u589e\u52a0\uff0c\u66f4\u6539\u548c\u5220\u9664\u56fe\u4e66\u6216\u8bfb\u8005\u4fe1\u606f\uff1b
4.\u5f53\u9009\u62e9\u9000\u51fa\u65f6\uff0c\u8fdb\u884c\u6e05\u5c4f\u3002
 
\u4e8c \u7a0b\u5e8f\u4e0a\u673a\u8c03\u8bd5\u62a5\u544a
\u3010\u8bed\u6cd5\u9519\u8bef\u53ca\u5176\u6392\u9664\u3011
1\uff0e\u5728\u6572\u7a0b\u5e8f\u65f6\uff0c\u6709\u5f88\u591a\u62fc\u5199\u9519\u8bef\uff0c\u4f8b\u597d\u591a\u5904\u628aReaddata()\u8bef\u6253Readdate()\uff1b\u7ed3\u675f\u7684\u5206\u53f7\uff0c\u5728\u4e0d\u540c\u7684\u8f93\u5165\u6cd5\u72b6\u6001\u4e0b\u8f93\u5165\uff0c\u8fd9\u4e9b\u5c0f\u9519\u8bef\u521a\u5f00\u59cb\u5f88\u96be\u53d1\u73b0\uff0c\u4e0d\u8fc7\u6709\u4e86\u7ecf\u9a8c\uff0c\u5c31\u5f88\u5bb9\u6613\u4e86\u3002
2\uff0e\u521b\u5efa\u65b0\u7684\u6784\u9020\u51fd\u6570\u65f6\uff0c\u4f7f\u7528\u51fa\u73b0\u4e86\u9519\u8bef\u3002\u91cd\u8f7d\u6784\u9020\u51fd\u6570\u8981\u6ce8\u610f\u51fd\u6570\u7684\u8bbf\u95ee\u6743\u9650\uff0c\u7ed3\u679c\u5c31\u4e0d\u4f1a\u51fa\u73b0\u9519\u8bef\u3002
\u3010\u7b97\u6cd5\u9519\u8bef\u53ca\u5176\u6392\u9664\u3011
1.\u8bfb\u8005\u7c7b\u4e2d\u501f\u4e66\u64cd\u4f5c\u51fd\u6570\u4e2d\uff0c\u91c7\u7528\u5faa\u73af\u8bed\u53e5\u65f6\u5224\u65ad\u8bfb\u8005\u5df2\u501f\u56fe\u4e66\u91cf\u65f6for(int i=0;i<Maxbor;i++)\u8bef\u5199\u4e3afor(int i=1;i<Maxbor;i++)\uff0c\u4f7f\u5faa\u73af\u53d1\u751f\u9519\u8bef\u3002
2.\u6307\u9488\u4f7f\u7528\u9519\u8bef\uff0c\u6307\u9488b\u548cr\u6df7\u6dc6\uff0c\u5bfc\u81f4\u7f16\u8bd1\u9519\u8bef\u5f97\u5230\u201cerror C2660: 'retbook' : function does not take 1 parameters\u201d\u9519\u8bef\u62a5\u544a\u3002
\u4e09 \u7a0b\u5e8f\u6d4b\u8bd5\u7ed3\u679c
\u3010\u6536\u83b7\u53ca\u4f53\u4f1a\u3011
\u9664\u4e86\u8bfe\u5802\u5916\uff0c\u8bfe\u7a0b\u8bbe\u8ba1\u662f\u6700\u80fd\u5b66\u5230\u4e1c\u897f\u7684\uff0c\u6700\u8003\u9a8c\u4eba\u7684\u3002\u5728\u505a\u8bfe\u7a0b\u8bbe\u8ba1\u8fd9\u6bb5\u65f6\u95f4\uff0c\u65f6\u523b\u90fd\u611f\u89c9\u81ea\u5df1\u6709\u597d\u591a\u4e0d\u61c2\uff0c\u8981\u5b66\u7684\u592a\u591a\u4e86\uff01\u7ecf\u8fc7\u8fd9\u6b21\u8bfe\u7a0b\u8bbe\u8ba1\uff0c\u8ba9\u6211\u5bf9C++\u8fd9\u95e8\u8bed\u8a00\u6709\u4e86\u66f4\u6df1\u7684\u8ba4\u8bc6\uff0c\u64cd\u4f5c\u80fd\u529b\u6709\u4e86\u63d0\u9ad8\u3002\u8981\u60f3\u5f97\u5230\u6572\u7684\u4ee3\u7801\u8fd0\u884c\u51fa\u6765\u540e\u7684\u6ee1\u8db3\u611f\uff0c\u9700\u8981\u8010\u5fc3\u7ec6\u5fc3\uff0c\u6bc5\u529b\u4ee5\u53ca\u5145\u6c9b\u7684\u4f53\u529b\u3002\u53ea\u6709\u7ecf\u8fc7\u591a\u6b21\u7f16\u8f91\uff0c\u591a\u6b21\u7f16\u8bd1\uff0c\u518d\u591a\u6b21\u8fd0\u884c\uff0c\u624d\u80fd\u7f16\u5199\u51fa\u66f4\u597d\u7684\u7a0b\u5e8f\uff0c\u6709\u65f6\u5019\u9700\u8981\u591a\u6b21\u7684\u66f4\u6b63\u624d\u8fbe\u5230\u6240\u8981\u7684\u8fd0\u884c\u7ed3\u679c\u3002\u5b66\u4e60\u7f16\u7a0b\uff0c\u9700\u8981\u591a\u63e3\u6469\uff0c\u5b9e\u8df5\uff0c\u5b9e\u8df5\uff0c\u518d\u5b9e\u8df5\uff0c\u7f16\u7a0b\u6280\u80fd\u624d\u80fd\u66f4\u4e0a\u4e00\u5c42\u697c\uff0c\u6b64\u5916\u8fd8\u5f97\u591a\u5411\u9ad8\u624b\u8bf7\u6559\uff01
\u3010\u6e90\u7a0b\u5e8f\u4ee3\u7801\u3011
//********************
//\u56fe\u4e66\u9986\u501f\u9605\u7ba1\u7406
//\u73ed\u7ea7\uff1a
//\u5b66\u53f7\uff1a
//\u59d3\u540d\uff1a
//********************
#include
#include
#include
#include
const int Maxr=1000;//\u6700\u591a\u7684\u8bfb\u8005
const int Maxb=10000;//\u6700\u591a\u7684\u56fe\u4e66
const int Maxbor=8;//\u6bcf\u4f4d\u8bfb\u8005\u6700\u591a\u501f8\u672c\u4e66
class Reader //\u8bfb\u8005\u7c7b
{
int tag;//\u5220\u9664\u6807\u8bb0 1\u5df2\u5220\uff1b0\u672a\u5220
int no;//\u8bfb\u8005\u7f16\u53f7
char name[10];//\u8bfb\u8005\u59d3\u540d
int borbook[Maxbor];//\u6240\u501f\u56fe\u4e66
public :
Reader(){}//\u6784\u9020\u51fd\u6570
char *getname(){return name;}//\u83b7\u53d6\u8bfb\u8005\u59d3\u540d
int gettag(){return tag;}//\u83b7\u53d6\u5220\u9664\u6807\u8bb0
int getno(){return no;}//\u83b7\u53d6\u8bfb\u8005\u7f16\u53f7
void setname(char na[])//\u8bbe\u7f6e\u8bfb\u8005\u59d3\u540d
{
strcpy(name,na);
}
void delbook(){tag=1;}//\u8bbe\u7f6e\u5220\u9664\u6807\u8bb0
void addreader(int n,char *na)//\u589e\u52a0\u8bfb\u8005
{
tag=0;
no=n;
strcpy(name,na);
for(int i=0;i<Maxbor;i++)
borbook[i]=0;
}
void borrowbook(int bookid)//\u501f\u4e66\u64cd\u4f5c
{
for(int i=0;i<Maxbor;i++)
{
if(borbook[i]==0)
{
borbook[i]=bookid;
}
}
}
int retbook(int bookid)//\u8fd8\u4e66\u64cd\u4f5c
{
for(int i=0;i<Maxbor;i++)
{
if (borbook[i]==bookid)
{
borbook[i]=0;
return 1;
}
}
return 0;
}
void disp()//\u8f93\u51fa\u8bfb\u8005\u4fe1\u606f
{
cout<<setw(5)<<no<<setw(10)<<name<<"\u501f\u4e66\u7f16\u53f7\uff1a";
for(int i=0;i,Maxbor;i++)
if(borbook[i]!=0)
cout<<borbook[i]<<endl;
}
};
 
class RDatabase//\u8bfb\u8005\u5e93\u7c7b
{
int top;//\u8bfb\u8005\u8bb0\u5f55\u6307\u9488
Reader read[Maxr];//\u8bfb\u8005\u8bb0\u5f55
public:
RDatabase()//\u6784\u9020\u51fd\u6570\uff0c\u5c06reader.txt\u8bfb\u5230read[]\u4e2d
{
Reader s;
top=-1;
fstream file("reader.txt",ios::in);
while(1)
{
file.read((char*)&s,sizeof(s));
if(!file)break;
top++;
read[top]=s;
}
file.close();
}
void clear()//\u5220\u9664\u6240\u6709\u8bfb\u8005\u4fe1\u606f
{
top=-1;
}
int addreader(int n,char *na)//\u6dfb\u52a0\u8bfb\u8005\uff0c\u68c0\u67e5\u662f\u5426\u5df2\u5b58\u5728
{
Reader *p=query(n);
if(p==NULL)
{
top++;
read[top].addreader(n,na);
return 1;
}
return 0;
}
Reader*query(int readerid)//\u6309\u7f16\u53f7\u67e5\u627e
{
for(int i=0;i<=top;i++)
if(read[i].getno()==readerid&&read[i].gettag==0)
return &read[i];
return NULL;
}
void disp()//\u5220\u9664\u8bfb\u8005\u6240\u6709\u4fe1\u606f
{
for(int i=0;i<=top;i++)
read[i].disp();
}
void readerdata();//\u8bfb\u8005\u5e93\u7ef4\u62a4
~RDatabase()//\u6790\u6784\u51fd\u6570\uff0c\u5c06read[]\u5199\u5165reader.txt\u6587\u4ef6\u4e2d
{
fstream file("reader.txt",ios::out);
for(int i=0;i<=top;i++)
if(read[i].gettag()==0)
file.write((char*)&read[i],sizeof(read[i]));
file.close();
}
};
void RDatabase::readerdata()
{
int choice=1;
char rname[20];
int readerid;
Reader*r;
while(choice!=0)
{
cout<<"\u8bfb\u8005\u670d\u52a1 1\u65b0\u589e 2\u66f4\u8be5 3\u5220\u9664 4\u67e5\u627e 5\u663e\u793a 6\u5168\u5220 0\u9000\u51fa"<<endl;
cin>>choice;
switch(choice)
{
case 1:
cout<<"\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a";
cin>>readerid;
cout<<"\u8bfb\u5165\u8bfb\u8005\u59d3\u540d\uff1a";
cin>>rname;
addreader(readerid,rname);
break;
case 2:
cout<<"\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"\u8bfb\u8005\u4e0d\u5b58\u5728"<<endl;
break;
}
cout<<"\u8bf7\u8f93\u5165\u65b0\u8bfb\u8005\u59d3\u540d:";
cin>>rname;
r->setname(rname);
break;
case 3:
cout<<"\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"\u8bfb\u8005\u4e0d\u5b58\u5728"<<endl;
break;
}
r->delbook();
break;
case 4:
cout<<"\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"\u8be5\u8bfb\u8005\u7f16\u53f7\u4e0d\u5b58\u5728"<<endl;
break;
}
case 5:
disp();
break;
case 6:
clear();
break;
}
}
}
 
class Book//\u56fe\u4e66\u7c7b
{
int tag;//\u5220\u9664\u6807\u8bb0 1\uff1a\u5df2\u5220\uff1b0\uff1a\u672a\u5220
int no;//\u56fe\u4e66\u7f16\u53f7
char name[20];//\u4e66\u540d
int onshelf;//\u662f\u5426\u5728\u67b6 1\u5728\u67b6 0\u5df2\u501f
public:
Book(){}
char*getname(){return name;}//\u83b7\u53d6\u8bfb\u8005\u59d3\u540d
int getno(){return no;}//\u83b7\u53d6\u56fe\u4e66\u7f16\u53f7
int gettag(){return tag;}//\u83b7\u53d6\u5220\u9664\u6807\u8bb0
void setname(char na[])//\u8bbe\u7f6e\u4e66\u540d
{
strcpy(name,na);
}
void delbook(){tag=1;}//\u5220\u9664\u56fe\u4e66
void addbook(int n,char*na)//\u589e\u52a0\u56fe\u4e66
{
tag=0;
no=n;
strcpy(name,na);
onshelf=1;
}
int borrowbook()//\u501f\u4e66\u64cd\u4f5c
{
if(onshelf==1)
{
onshelf=0;
return 1;
}
return 0;
}
void retbook()//\u8fd8\u4e66\u64cd\u4f5c
{
onshelf=1;
}
void disp()//\u8f93\u51fa\u56fe\u4e66
{
cout<<setw(6)<<no<<setw(18)<<name<<setw(10)<<(onshelf==1?"\u5728\u67b6":"\u5df2\u501f")<<endl;
}
};
 
class BDatabase//\u56fe\u4e66\u5e93\u7c7b
{
int top;//\u56fe\u4e66\u8bb0\u5f55\u6307\u9488
Book book[Maxb];//\u56fe\u4e66\u8bb0\u5f55
public:
BDatabase()//\u6784\u9020\u51fd\u6570\uff0c\u5c06book.txt\u8bfb\u5230book[]\u4e2d
{
Book b;
top=-1;
fstream file("book.txt",ios::in);
while(1)
{
file.read((char*)&b,sizeof(b));
if(!file)break;
top++;
book[top]=b;
}
file.close();
}
void clear()//\u5168\u5220
{
top=-1;
}
int addbook(int n,char*na)//\u589e\u52a0\u56fe\u4e66
{
Book*p=query(n);
if(p==NULL)
{
top++;
book[top].addbook(n,na);
return 1;
}
cout<<"\u65b0\u589e\u6210\u529f\uff01"<<endl;
}
Book*query(int bookid)//\u67e5\u627e\u56fe\u4e66
{
for(int i=0;i<=top;i++)
if(book[i].getno()==bookid&&book[i].gettag()==0)
return NULL;
}
void bookdata();//\u56fe\u4e66\u5e93\u7ef4\u62a4
void disp()
{
for(int i=0;i<=top;i++)
if(book[i].gettag()==0)
book[i].disp();
}
~BDatabase()//\u6790\u6784\u51fd\u6570\uff0c\u5c06book[]\u5199\u5165book.txt\u6587\u4ef6\u4e2d
{
fstream file("book.txt",ios::out);
for (int i=0;i<=top;i++)
if(book[i].gettag()==0)
file.write((char*)&book[i],sizeof(book[i]));
file.close();
}
};
void BDatabase::bookdata()
{
int choice;
char bname[40];
int bookid;
Book *b;
while(choice!=0)
{
cout<<"\u56fe\u4e66\u7ba1\u7406 1\u65b0\u589e 2\u66f4\u8be5 3\u5220\u9664 4\u67e5\u627e 5\u663e\u793a 6\u5168\u5220 0\u9000\u51fa"<<endl;
cin>>choice;
switch(choice)
{
case 1:
cout<<"\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1a";
cin>>bookid;
cout<<"\u8f93\u5165\u56fe\u4e66\u4e66\u540d\uff1a";
cin>>bname;
addbook(bookid,bname);
break;
case 2:
cout<<"\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1a";
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"\u8be5\u56fe\u4e66\u4e0d\u5b58\u5728"<<endl;
break;
}
cout<<"\u8f93\u5165\u65b0\u4e66\u540d:";
cin>>bname;
b->setname(bname);
cout<<"\u66f4\u540d\u6210\u529f\uff01"<<endl;
break;
case 3:
cout<<"\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1a";
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"\u8be5\u56fe\u4e66\u4e0d\u5b58\u5728\uff01"<<endl;
break;
}
b->delbook();
break;
case 4:
cout<<"\u8bf7\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1a";
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"\u8be5\u4e66\u4e0d\u5b58\u5728\uff01"<<endl;
break;
}
b->disp();
break;
case 5:
disp();
break;
case 6:
clear();
break;
}
}
}
 
void main()
{
int choice=1,bookid,readerid;
RDatabase ReaderDB;
Reader *r;
BDatabase BookDB;
Book *b;
while(choice!=0)
{
cout<<" 1\u501f\u4e66      "<<endl;
cout<<" 2\u8fd8\u4e66      "<<endl;
cout<<" 3\u56fe\u4e66\u7ef4\u62a4  "<<endl;
cout<<" 4\u8bfb\u8005\u7ef4\u62a4  "<<endl;
cout<<" 0\u79bb\u5f00      "<<endl;
cin>>choice;
switch(choice)
{
case 1:
cout<<"\u501f\u4e66\uff0c\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a";
cin>>readerid;
cout<<"\u56fe\u4e66\u7f16\u53f7\uff1a";
cin>>bookid;
r=ReaderDB.query(readerid);
if(r==NULL)
{
cout<<"\u54c8\u54c8\uff0c\u501f\u4e66\u6210\u529f\uff01";
break;
}
b=BookDB.query(bookid);
if(b==NULL)
{
cout<<"\u4e0d\u5b58\u5728\u8be5\u4e66\uff01"<<endl;
break;
}
if(b->borrowbook()==0)
{
cout<<"\u8be5\u4e66\u5df2\u501f"<<endl;
break;
}
r->borrowbook(b->getno());
break;
cout<<"\u501f\u4e66\u6210\u529f\uff01"<<endl;
case 2:
cout<<"\u8fd8\u4e66\uff0c\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a";
cin>>readerid;
cout<<"\u8bf7\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1b";
cin>>bookid;
r=ReaderDB.query(readerid);
if(r==NULL)
{
cout<<"\u4e0d\u5b58\u5728\u8be5\u8bfb\u8005\uff01"<<endl;
break;
}
b->retbook();
r->retbook(b->getno());
break;
cout<<"\u8fd8\u4e66\u6210\u529f\uff01"<<endl;
case 3:
BookDB.bookdata();
break;
case 4:
ReaderDB.readerdata();
break;
}
}
}
\u3010\u8f93\u51fa\u7ed3\u679c\u3011
1\u501f\u4e66
2\u8fd8\u4e66
3\u56fe\u4e66\u7ba1\u7406
4\u8bfb\u8005\u670d\u52a1
0\u9000\u51fa
3
\u56fe\u4e66\u7ba1\u7406 1\u65b0\u589e 2\u66f4\u8be5 3\u5220\u9664 4\u67e5\u627e 5\u663e\u793a 6\u5168\u5220 0\u9000\u51fa
1
\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1a1111
\u8f93\u5165\u56fe\u4e66\u4e66\u540d\uff1a\u6b66\u6797\u5916\u4f20
\u65b0\u589e\u6210\u529f\uff01
\u56fe\u4e66\u7ba1\u7406 1\u65b0\u589e 2\u66f4\u8be5 3\u5220\u9664 4\u67e5\u627e 5\u663e\u793a 6\u5168\u5220 0\u9000\u51fa
1
\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1a2222
\u8f93\u5165\u56fe\u4e66\u4e66\u540d\uff1a\u4eca\u591c\u65e0\u7720
\u65b0\u589e\u6210\u529f\uff01
\u56fe\u4e66\u7ba1\u7406 1\u65b0\u589e 2\u66f4\u8be5 3\u5220\u9664 4\u67e5\u627e 5\u663e\u793a 6\u5168\u5220 0\u9000\u51fa
0
1\u501f\u4e66
2\u8fd8\u4e66
3\u56fe\u4e66\u7ba1\u7406
4\u8bfb\u8005\u670d\u52a1
0\u9000\u51fa
4
\u8bfb\u8005\u670d\u52a1 1\u65b0\u589e 2\u66f4\u8be5 3\u5220\u9664 4\u67e5\u627e 5\u663e\u793a 6\u5168\u5220 0\u9000\u51fa
1
\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a001
\u8bfb\u5165\u8bfb\u8005\u59d3\u540d\uff1a\u5468\u5f3a
\u8bfb\u8005\u670d\u52a1 1\u65b0\u589e 2\u66f4\u8be5 3\u5220\u9664 4\u67e5\u627e 5\u663e\u793a 6\u5168\u5220 0\u9000\u51fa
0
1\u501f\u4e66
2\u8fd8\u4e66
3\u56fe\u4e66\u7ba1\u7406
4\u8bfb\u8005\u670d\u52a1
0\u9000\u51fa
1
\u501f\u4e66\uff0c\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a001
\u56fe\u4e66\u7f16\u53f7\uff1a1111
\u54c8\u54c8\uff0c\u501f\u4e66\u6210\u529f\uff01 1\u501f\u4e66
2\u8fd8\u4e66
3\u56fe\u4e66\u7ba1\u7406
4\u8bfb\u8005\u670d\u52a1
0\u9000\u51fa
2
\u8fd8\u4e66\uff0c\u8bf7\u8f93\u5165\u8bfb\u8005\u7f16\u53f7\uff1a001
\u8bf7\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1b1111
\u8fd8\u4e66\u6210\u529f\uff01
1\u501f\u4e66
2\u8fd8\u4e66
3\u56fe\u4e66\u7ba1\u7406
4\u8bfb\u8005\u670d\u52a1
0\u9000\u51fa
3
\u56fe\u4e66\u7ba1\u7406 1\u65b0\u589e 2\u66f4\u8be5 3\u5220\u9664 4\u67e5\u627e 5\u663e\u793a 6\u5168\u5220 0\u9000\u51fa
2
\u8f93\u5165\u56fe\u4e66\u7f16\u53f7\uff1a2222
\u8f93\u5165\u65b0\u4e66\u540d:\u91d1\u5eb8\u5168\u96c6
\u66f4\u540d\u6210\u529f\uff01
Press any key to continue

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<string.h>
#define N 100 //书籍的最多本数
struct book
{ char title[30];
int number;
char author[30];
float price;
int store;
char borrower_name[20];
char borrower_gender[5];
int borrower_number;
}s[N];
int m=0;
void input(structbook *p); //输入图书信息
void save(structbook *p); //保存图书信息
void read(structbook *p); //读取图书信息
void search(structbook *p); //查找图书信息
void del(structbook *p); //删除图书信息
void borrow(structbook *p); //借阅图书
void retur(structbook *p); //归还图书
void main()
{
int x;
do
{
printf("**************************************菜单**************************************\n"
" *********** 1.输入图书信息 ********** \n"
" *********** 2.查找图书信息 ********** \n"
" *********** 3.删除图书信息 ********** \n"
" *********** 4.借阅图书 ********** \n"
" *********** 5.归还图书 ********** \n"
" *********** 0.退出 ********** \n");
printf("********************************************************************************\n");
printf("请在0-5中选择,以回车键结束\n");
scanf("%d",&x);
switch(x)
{ case 1: input(&s[0]);break;
case 2: search(&s[0]);break;
case 3: del(&s[0]);break;
case 4: borrow(&s[0]);break;
case 5: retur(&s[0]);break;
case 0: break;
}
}while(x!=0);
}
void input(structbook *p)
{ int y;
for(;p<(&s[0]+N);p++)
{ printf("请输入书名:");scanf("%s",p->title);
printf("请输入编号:"); scanf("%d",&p->number);
printf("请输入作者:"); scanf("%s",p->author);
printf("请输入图书价格:"); scanf("%f",&p->price);
printf("请输入图书数量:"); scanf("%d",&p->store);
m++;
printf("第%d个信息已经输入完毕,是否继续?\n按任意键继续,按0键结束.",m);
scanf("%d",&y);//读取是否继续
if(y==0)
{ save(&s[0]);
read(&s[0]);//调用读取文件函数
break;
}
}
}

void search(structbook *p)//查询模块
{ int n;
char name1[20];
char name2[20];
char c[3];
do
{ p=&s[0];
printf("\t请选择查找方式:\n");//打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&n);//读取查找方式
if(n==0) break;
switch(n)
{ case 1: printf("请输入书名:\n");scanf("%s",name1);break;
case 2: printf("请输入作者:\n");scanf("%s",name2);break;
}
for(;p<&s[m];p++)
{ read(&s[0]);//调用读取函数
if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)
{ printf("\n查找图书信息成功!\n");
printf("书名 编号 作者 价格 数量\n");
printf("%-10s%-10d%-10s%-10.2f%-10d\n",p->title,p->number,p->author,p->price,p->store);//打印信息
break;
}
}
printf("是否继续查找?\n“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",c);
}while(strcmp(c,"yes")==0);//判断是否结束
}
void del(structbook *p)//删除模块
{ int i;
struct book *p1,*p2;
char name1[20];
char name2[20];
char c[3];
int n;
do
{ p=&s[0];
printf("请选择删除以方式回车键结束:\n");//打印删除方式菜单
printf( " 1.按书名删除\n 2.按作者删除\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&n);//读取查找方//
if(n==0) break;
switch(n)
{case 1:printf("请输入书名:\n");
scanf("%s",name1);break;
case 2: printf("请输入作者:\n");
scanf("%s",name2);break;
}
read(&s[0]); //调用读取函数
for(i=0;i<m;i++,p++)
{
if(strcmp(p->title,name1)==0||strcmp(p->author,name2)==0)
{ p1=p;
for(p2=p1+1;p2<=&s[m];p1++,p2++)
{
strcpy(p1->title,p2->title);
strcpy(p1->author,p2->author);
p1->number=p2->number;
p1->store=p2->store;
p1->price=p2->price;
m--;
printf("删除成功!!\n");

}
}
else {printf("没有该书记录!!");
break;}
}
printf("是否继续删除?“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",c); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(c,"yes")==0); //判断是否继续删除
}
void borrow(structbook *p)//借书模块
{ int z;
char name3[20],name4[20];
char w[3];
do
{ p=&s[0];
printf("请先查找您要借阅的图书!");
printf("请选择查找方式:\n");//打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n");
scanf("%d",&z);//读取查找方式
if(z==0) break;
switch(z)
{ case 1: printf("请输入书名:\n");scanf("%s",name3);break;
case 2: printf("请输入作者:\n");scanf("%s",name4);break;
}
read(&s[0]);//调用读取函数
for(;p<&s[m];p++)
{ if(strcmp(p->title,name3)==0||strcmp(p->author,name4)==0)
{
printf("\n查找图书信息成功!\n");
printf("书名 编号 作者 价格 数量\n");
printf("%-10s%-10d%-10s%-10.2fs%-10d\n",p->title,p->number,
p->author,p->price,p->store);//打印信息
printf("请输入您的姓名:");scanf("%s",p->borrower_name);
printf("请输入您的性别:");scanf("%s",p->borrower_gender);
printf("请输入您的学号:");scanf("%d",&p->borrower_number);
p->store--;
printf("借书成功!\n");
printf("书名 编号 作者 价格 数量 借书人 性别 学号\n");
printf("%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n",p->title,p->number,p->author,
p->price,p->store,p->borrower_name,p->borrower_gender,p->borrower_number);
break;
}
}

printf("是否继续借书??");
printf("“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",w); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(w,"yes")==0); //判断是否继续借书
}
void retur(structbook *p)//还书模块
{ int e,f;
char name5[20];
char name6[20];
char t[3];
do
{ p=&s[0];
printf("请先查找您要还的图目!");
printf("请选择查找方式:\n"); //打印查询方式菜单
printf(" 1.按书名查找\n 2.按作者查找\n 0.返回\n");
printf("请在0-2中选择:\n\n");
scanf("%d",&e); //读取查找方式
if(e==0) break;
switch(e)
{ case 1: printf("请输入书名:\n");scanf("%s",name5);break;
case 2: printf("请输入作者:\n");scanf("%s",name6);break;
}
read(&s[0]);//调用读取函数
for(;p<&s[m];p++)
{ if(strcmp(p->title,name5)==0||strcmp(p->author,name6)==0)
{ printf("\n查找图书信息成功!\n");
printf("确认还书请按“1”!");//确认是否还书
scanf("%d",&f);
if(f==1)
{ strcpy(p->borrower_name,"0");
strcpy(p->borrower_gender,"0");
p->borrower_number=0;
p->store++;
printf("书名 编号 作者 价格 数量 借书人 性别 学号\n");
printf("%-10s%-10d%-10s%-10.2f%-10d%-10s%-10s%-10d\n",p->title,p->number,p->author,
p->price,p->store,p->borrower_name,p->borrower_gender,p->borrower_number);
//打印信息
}
break;
}
else {printf("没有该书记录!!");
break;}
}
printf("是否继续还书?\n");
printf("“是”请键入“yes”, “否”请按任意键,返回菜单\n");
scanf("%s",t); //读取是否继续
save(&s[0]); //调用保存函数
}while(strcmp(t,"yes")==0); //判断是否继续还书
}
void save(structbook *p)//保存文件
{ FILE *fp,*fp1;
int i;
if((fp=fopen("tushu.txt","wb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
if((fp1=fopen("book.txt","wb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
for(i=0;i<m;i++,p++)
if(fwrite(p,sizeof(structbook),1,fp)==0)//向文件写入数据,并判断是否出错
printf("向文件输入数据失败!\n\n");
fprintf(fp1,"%d",m);
fclose(fp);//关闭文件
fclose(fp1);//关闭文件
}
void read(structbook *p)//从文件读取信息模块
{ FILE *fp,*fp1;
int i;
if((fp=fopen("tushu.txt","rb"))==NULL)//打开文件,并判断是否出错
{ printf("出错,请检查文件是否存在,按任意键返回住菜单");//打印出错提示
getchar();
}
if((fp1=fopen("book.txt","rb"))==NULL)//打开文件并判断是否出错
{ printf("创建文件失败!\n\n");//打印出错提示
getchar(); return;
}
fscanf(fp1,"%d",&m);
fclose(fp1);//关闭文件
for(i=0;i<m;i++,p++)
{ fread(p,sizeof(struct book),1,fp);//从文件中读取信息
}
fclose(fp);//关闭文件
}
你把保存的文件地址自己修改一下就可以了。。希望能帮到你

扩展阅读:图书管理系统java ... 小学生图书管理方法 ... 图书管理系统c语言 ... c#图书馆管理小系统 ... 图书管理系统c++代码 ... 免费图书管理系统软件 ... c#简单图书管理系统 ... 图书管理系统完整代码 ... 图书管理系统ssm免费代码 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网