createfile.c
来自「很有用的一个图书管理系统方面的源代码!不用改错直接运用」· C语言 代码 · 共 407 行
C
407 行
//nclude "Struct.c"
//-----------------------------书库全部图书输出//
void print()
{
int j;
system("cls");
printf("以下为库存图书:\n>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<\n");
for (j = 0 ;j<i ;j ++)
{
if (Dbasehead.BookDbase[j].storenum == -1)
continue;
printf("书号: %s\n",Dbasehead.BookDbase[j].bno);
printf("书名: %s\n",Dbasehead.BookDbase[j].bname );
printf("作者: %s\n",Dbasehead.BookDbase[j].author);
printf("出版社: %s\n",Dbasehead.BookDbase[j].press);
printf("此书馆藏: %d本\n",Dbasehead.BookDbase[j].storenum);
printf("此书可借本数: %d本\n",Dbasehead.BookDbase[j].canborrownum);
printf(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<\n");
}
}
//----------------------------输出读者信息//
void printauthor()
{
int j;
system("cls");
printf("以下为书库读者:\n>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<\n");
for (j = 0; j<p ;j++)
{
printf("学号: %d\n",File4.ReadRec[j].rno);
printf("姓名: %s\n",File4.ReadRec[j].name);
printf("允许借书数: %d\n",File4.ReadRec[j].bn1);
printf("还剩借书数: %d\n",File4.ReadRec[j].bn2);
printf(">>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<\n");
}
}
//----------------------------进行删除操作//
void DelBook(char j[10])
{
int m,k;
BookRecType *lhead;
for (m=0;m<i;m++)
{
if ((k=strcmp(j,IdxFile.BnoIdx[m].bno)) == 0)
break;
}
if (m==i)
{
printf("该书不存在!\n");
goto Exit;
}
else
{
IdxFile.len--;
File1.len1--;
File2.len2--;
File3.len3--;
lhead = IdxFile.BnoIdx[m].lhead;
book[a] = (lhead - Dbasehead.BookDbase)/80;
lhead->storenum = -1;
//IdxFile.BnoIdx[m].bno
a++;
printf("删除书号为%s完成!\n",j);
}
Exit:;
}
//---------------------------追加一条图书主数据库记录//
void AppeDBaseRec( BookDbaseFile *df )
{
}
//---------------------------修改书号索引表//
void ChangeBnoIdxF(int j)
{
int z =0,m,n;
strcpy(IdxFile.BnoIdx[i].bno,Dbasehead.BookDbase[i].bno);
IdxFile.BnoIdx[i].lhead = &Dbasehead.BookDbase[i];
IdxFile.len = i;
if ( j > 1 )
{
for (;z < j-1; z++)
{
if(IdxFile.BnoIdx[ z ].bno[0] <= IdxFile.BnoIdx[ j ].bno[0] && IdxFile.BnoIdx[ j ].bno[0]<= IdxFile.BnoIdx[ z + 1 ].bno[0])
{
__asm
{
mov ecx,8h
push ecx
mov eax,j
mul ecx
lea esi,IdxFile
push esi
add esi,eax
mov edi,esi
add edi,8h
rep movsb
pop esi
pop ecx
mov ebx,j
dec ebx
sub ebx,z
Next: push esi
push ecx
sub eax,8h
add esi,eax
mov edi,esi
add edi,8h
rep movsb
pop ecx
pop esi
sub ebx,1
jnz Next
mov eax,z
inc eax
mul ecx
mov edi,esi
add edi,eax
mov eax,j
inc eax
mul ecx
add esi,eax
rep movsb
}
}
else if (IdxFile.BnoIdx[ 0 ].bno[0] > IdxFile.BnoIdx[ j ].bno[0])
{
__asm
{
mov ecx,8h
push ecx
mov eax,j
mul ecx
lea esi,IdxFile
push esi
add esi,eax
mov edi,esi
add edi,8h
rep movsb
pop esi
pop ecx
mov ebx,j
Next1: push esi
push ecx
sub eax,8h
add esi,eax
mov edi,esi
add edi,8h
rep movsb
pop ecx
pop esi
sub ebx,1
jnz Next1
mov edi,esi
mov eax,j
inc eax
mul ecx
add esi,eax
rep movsb
}
}
}
}
else if( j==1 )
{
if( IdxFile.BnoIdx[ 0 ].bno[0] > IdxFile.BnoIdx[ 1 ].bno[0] )
{
__asm
{
mov ebx,2
mov ecx,8h
push ecx
lea eax,IdxFile
push eax
mov esi,eax
add eax,10h
mov edi,eax
rep movsb
pop eax
pop ecx
Next2: push ecx
mov edi,eax
add eax,8h
mov esi,eax
rep movsb
pop ecx
sub ebx,1
jnz Next2
}
}
}
}
//---------------------------修改书名索引以及书名链头索引表//
void ChangeLinkHeadF1()
{
int j=0,k,m=0,n=0;
for (k=0;k<r;k++)
{
m = strcmp(Dbasehead.BookDbase[i].bname,File1.LHFrec1[k].bname);
if( m==0 )
{
File1.LHFrec1[k].RecNum++;
Dbasehead.BookDbase[i].namenext = File1.LHFrec1[k].lhead ;
File1.LHFrec1[k].lhead = &Dbasehead.BookDbase[i];
goto Exit;
}
}
strcpy(File1.LHFrec1[r].bname,Dbasehead.BookDbase[i].bname);
File1.LHFrec1[r].lhead = &Dbasehead.BookDbase[i];
File1.LHFrec1[r].RecNum = 1;
r++;
Exit:
File1.len1++;
}
//---------------------------修改作者索引以及作者链头索引表//
void ChangeLinkHeadF2()
{
int j=0,k,m=0,n=0;
for (k=0;k<s;k++)
{
m = strcmp(Dbasehead.BookDbase[i].author,File2.LHFrec2[k].author);
if( m==0 )
{
File2.LHFrec2[k].RecNum++;
Dbasehead.BookDbase[i].authnext = File2.LHFrec2[k].lhead ;
File2.LHFrec2[k].lhead = &Dbasehead.BookDbase[i];
goto Exit;
}
}
strcpy(File2.LHFrec2[s].author,Dbasehead.BookDbase[i].author);
File2.LHFrec2[s].lhead = &Dbasehead.BookDbase[i];
File2.LHFrec2[s].RecNum = 1;
s++;
Exit:
File2.len2++;
}
//----------------------------修改出版社索引以及出版社链头索引表//
void ChangeLinkHeadF3()
{
int j=0,k,m=0,n=0;
for (k=0;k<t;k++)
{
m = strcmp(Dbasehead.BookDbase[i].press,File3.LHFrec3[k].press);
if( m==0 )
{
File3.LHFrec3[k].RecNum++;
Dbasehead.BookDbase[i].prenext = File3.LHFrec3[k].lhead ;
File3.LHFrec3[k].lhead = &Dbasehead.BookDbase[i];
goto Exit;
}
}
strcpy(File3.LHFrec3[t].press,Dbasehead.BookDbase[i].press);
File3.LHFrec3[t].lhead = &Dbasehead.BookDbase[i];
File3.LHFrec3[t].RecNum = 1;
t++;
Exit:
File3.len3++;
}
//-----------------------------建立图书多重表主索引及相关索引链头文件//
void CreateBook()
{
char del_num[10];
int x,v,w,u,y,z,m,n,k;
FILE *fp;
do
{
system("cls");
printf(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>图书管理菜单<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
printf(" 1 - 新书入库\n");
printf(" 2 - 旧书删除\n");
printf(" 3 - 查询库内图书\n");
printf(" 4 - 退出\n");
Exit3:
printf("\n请输入选择:");
scanf("%d",&v);
if (v!=4)
{
if(v==1)
{
Exit1:
printf("是否进行新书入库操作?1.是2.否\n");
scanf("%d",&w);
if(w==1)
{
do
{
book[a] = i;
i = book[0];
printf("请输入新书数据:\n\n");
printf("请输入书号:");
scanf("%s",&Dbasehead.BookDbase[i].bno);
for (x=0 ; x<i; x++)
{
if ( (k=strcmp(Dbasehead.BookDbase[i].bno,IdxFile.BnoIdx[x].bno))== 0)
{
printf("输入的书号已经存在,请重新输入!\n");
x = 0;
printf("请输入书号:");
scanf("%s",&Dbasehead.BookDbase[i].bno);
}
}
printf("请输入书名:");
scanf("%s",&Dbasehead.BookDbase[i].bname);
printf("请输入作者:");
scanf("%s",&Dbasehead.BookDbase[i].author);
printf("请输入出版社:");
scanf("%s",&Dbasehead.BookDbase[i].press);
for (x = 0; x<i; x++)
{
n = strcmp(Dbasehead.BookDbase[x].bname,Dbasehead.BookDbase[i].bname);
if ( n!=0 )
break;
n = strcmp(Dbasehead.BookDbase[x].author,Dbasehead.BookDbase[i].author);
if ( n!=0 )
break;
n = strcmp(Dbasehead.BookDbase[x].press,Dbasehead.BookDbase[i].press);
if ( n!=0 )
break;
Dbasehead.BookDbase[x].storenum++;
Dbasehead.BookDbase[x].canborrownum++;
goto Exit;
}
ChangeBnoIdxF(i);
ChangeLinkHeadF1();
ChangeLinkHeadF2();
ChangeLinkHeadF3();
Dbasehead.BookDbase[i].storenum = 1;
Dbasehead.BookDbase[i].canborrownum = 1;
if ( i == book[a] )
{
i++;
}
else
{
for (x = 0; x<a; x++)
{
book[x]=book[x+1];
}
a--;
i = book[a];
}
Exit:
printf("是否继续进行新书入库操作?1.是2.否\n");
scanf("%d",&w);
}while(w==1);
}
else if (w != 2)
{
printf("无效输入,请重新输入!\n");
goto Exit1;
}
}
else
{
if (v==2)
{
printf("是否进行删除操作?1.是2.否\n");
Exit2:
scanf("%d",&y);
if(y==1)
{
do
{
printf("请输入要删除的书号:\n");
scanf("%s",del_num);
DelBook(del_num);
printf("是否继续进行删除操作?1.是2.否\n");
scanf("%d",&z);
}while(z==1);
}
else if ( y!=2)
{
printf("无效输入,请重新输入!\n");
goto Exit2;
}
}
else if (v==3)
{
printf("库内图书资料:\n");
print();
}
else
{
printf("无效输入,请重新输入!\n");
goto Exit3;
}
}
}
else
break;
printf("是否继续进行书库管理操作?1.是2.否\n");
scanf("%d",&u);
}while(u==1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?