📄 book.c
字号:
k++;
else if(k==count-1)
{
system("cls");
printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
if(t==2)
if(k>0)
k--;
else if(k==0)
{
system("cls");
printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
}
}
if (choice==3) return;
}
/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞图书排序函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void sequence()
{
FILE *fp;
struct book temp;
int choice,i,j,k,l,t;
if((fp=fopen("book.dat","rb")) == NULL)
{
system("cls");
printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
getchar();
getchar();
return ;
}
fseek(fp,0,2);
j=ftell(fp)/sizeof(struct book);
rewind(fp);
if(j==0)
{
system("cls");
printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
getchar();
getchar();
return;
}
for(i=0;i<j;i++)
fread(&bk[i],sizeof(struct book),1,fp);
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 排 序 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n\n");
printf("\t\t\t ◇ 1 .按 图 书 编 号 排 序 ◇\n\n\n");
printf("\t\t\t ◇ 2 .按 价 格 排 序 ◇\n\n\n");
printf("\t\t\t ◇ 3 .返 回 主 界 面 ◇\n\n\n");
printf("\n\n\n\n\n\n\n\t\t\t\t\t\t请输入 :");
scanf("%d",&choice);
if (choice==1)
{
for(k=0;k<j-1;k++)
for(l=k+1;l<j;l++)
if(bk[k].num>bk[l].num)
{
temp=bk[k];
bk[k]=bk[l];
bk[l]=temp;
}
i=0;
while(t!=3)
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 排 序 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("\n \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",j,i+1);
xingxi(i);
printf("\n\n\t1.下一本");
printf("\t2.上一本");
printf("\t3.返回主界面\n");
printf("\n\n\n\t 请 输 入:");
scanf("%d",&t);
if(t==1)
if(i<j-1)
i++;
else if(i==j-1)
{
system("cls");
printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
if(t==2)
if(i>0)
i--;
else if(i==0)
{
system("cls");
printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
}
}
if (choice==2)
{
for(k=0;k<j-1;k++)
for(l=k+1;l<j;l++)
if(bk[k].price>bk[l].price)
{
temp=bk[k];
bk[k]=bk[l];
bk[l]=temp;
}
i = 0;
while(t!=3)
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 排 序 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("\n \t\t⊙共 有 %d 本 书⊙第 %d 本 书⊙\n",j,i+1);
xingxi(i);
printf("\n\n\t1.下一本");
printf("\t2.上一本");
printf("\t3.返回主界面\n");
printf("\n\n\n\t 请 输 入:");
scanf("%d",&t);
if(t==1)
if(i<j-1)
i++;
else if(i==j-1)
{
system("cls");
printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
if(t==2)
if(i>0)
i--;
else if(i==0)
{
system("cls");
printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
}
}
if (choice==3) return;
}
/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义图书修改/删除函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void del()
{
FILE *fp; FILE *fp2;
int i,j,k=0,l,bianhao;
int choice,choice1;
int ab[50];
if((fp=fopen("book.dat","rb"))== NULL)
{
system("cls");
printf("\n\n\n\t\t 图 书 库 没 有 图 书,请 先 录 入!");
getchar();
getchar();
return ;
}
fp=fopen("book.dat","rb");
fseek(fp,0,2);
i=ftell(fp)/sizeof(struct book);
rewind(fp);
do{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 修 改/删 除☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("请输入将要修改或删除的图书编号 :");
scanf("%d",&bianhao);
for (j=0;j<i;j++)
fread(&bk[j],sizeof(struct book),1,fp);
for (j=0;j<i;j++)
{
if (bianhao==bk[j].num)
continue;
ab[j]=bk[j].num;
}
for (j=0;j<i;j++)
if (bk[j].num==bianhao)
{
k++;
break;
}
if (k==0)
{
system("cls");
printf("\n\n\t\t不存在的编号,请按任意键返回主界面!");
getchar();getchar();return;
}
printf("\n\n");
fclose(fp);
xingxi(j);
printf("\n\n \t\t 1 . 修改 2 . 删除 3 . 返回主界面\t");
scanf("%d",&choice);
if (choice==1)
{
do
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆图 书 信 息 修 改/删 除☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
printf("图书编号:");
scanf("%d",&bk[j].num);
for(l=0;l<i;l++)
{
if(bk[j].num==ab[l])
{
printf("\t输入的图书编号已有,请重新输入!");
getchar();getchar();
break;
}
}
}while(bk[j].num==ab[l]);
printf("书名:"); getchar();
gets(bk[j].bname);
printf("作者:");
gets(bk[j].author);
printf("分类号:");
scanf("%d",&bk[j].clanum); getchar();
printf("出版单位:");
gets(bk[j].pubcom);
printf("出版时间 年:");
scanf("%d",&bk[j].bk_dt.year);
printf(" 月:");
scanf("%d",&bk[j].bk_dt.month);
printf(" 日:");
scanf("%d",&bk[j].bk_dt.day);
printf("价格:");
scanf("%d",&bk[j].price);
fp=fopen("book.dat","wb");
for(j=0;j<i;j++)
fwrite(&bk[j],sizeof(struct book),1,fp);
fclose(fp);
printf("\n\n\n\t 图 书 信 息 已 修 改 成 功 !任 意 键 返 回 !");
getchar();getchar();
}
if (choice==2)
{
printf("\n\n\t\t 确 定 是 否 删 除 ! 1 . 是\t 2 . 否 ");
scanf("%d",&choice1);
if (choice1==1)
{
fp2=fopen("bookhs.txt","ab");
fseek(fp2,0,2);
fwrite(&bk[j],sizeof(struct book),1,fp2);
fclose(fp2);
fp=fopen("book.dat","wb");
for(l=0;l<i;l++)
if(l!=j)
fwrite(&bk[l],sizeof(struct book),1,fp);
printf("\n\n\n\t 图 书 信 息 已 删 除 成 功 !任 意 键 返 回 !");
getchar();
getchar();
fclose(fp);
}
}
else return;
}while (choice1==2);
}
/*∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞定义回收站功能函数∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞*/
void reclaim()
{
FILE *fp; FILE *fp2; FILE *fp3;
int t=0,i=0,j=0,k,l;
fp2=fopen("bookhs.txt","a+b");
fseek(fp2,0,2);
j=ftell(fp2)/sizeof(struct book);
rewind(fp2);
for(i=0;i<j;i++)
{
fread(&bk[i],sizeof(struct book),1,fp2);
}
i = 0;
while(t!=5)
{
system("cls");
printf("\n\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 回 收 站 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n\n");
if (j==0)
{
printf("\n \t\t⊙回收站当前有%d本图书⊙\n",j);
printf("\n\n\n\n\t\t\t5.返回主界面");
}
else
{
printf("\n \t\t⊙回收站当前有%d本图书⊙第%d本书⊙\n",j,i+1);
xingxi(i);
printf("\n\n\t1.下一本");
printf("\t2.上一本");
printf("\t3.恢复当前图书\n\n");
printf("\t4.全部清空");
printf("\t\t5.返回主界面");
}
printf("\n\n\n\t\t\t\t\t\t 请 输 入:");
scanf("%d",&t);
if(t==1)
if(i<j-1)
i++;
else if(i==j-1)
{
system("cls");
printf("\n\n\n\t\t\t这 是 最 后 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
if(t==2)
if(i>0)
i--;
else if(i==0)
{
system("cls");
printf("\n\n\n\t\t\t这 是 第 一 本 书! 任 意 键 继 续");
getchar();
getchar();
}
if(t==3)
{
printf("\n\t\t 确 定 是 否 恢 复 ! 1 . 是\t 2 . 否 ");
scanf("%d",&k);
if(k==1)
{
fp=fopen("book.dat","ab");
fseek(fp,0,2);
fwrite(&bk[i],sizeof(struct book),1,fp);
fclose(fp);
fp2=fopen("bookhs.txt","wb");
for(l=0;l<j;l++)
if(l!=i)
fwrite(&bk[l],sizeof(struct book),1,fp2);
fclose(fp);
printf("\t\t该图书信息已经恢复! 任意键退回主界面!");
getchar();getchar();
break;
}
else if(k==2) continue;
}
if(t==4)
{
fp3=fopen("bookhs.txt","wb");
fclose(fp3);
printf("\n\t\t回收站内容已经清空!");
getchar();getchar();
break;
}
}
fclose(fp2);
}
void xingxi(int x)
{
printf("图书编号:%d\n",bk[x].num);
printf("书名:");puts(bk[x].bname);
printf("作者:");puts(bk[x].author);
printf("分类号:%d\n",bk[x].clanum);
printf("出版单位:");puts(bk[x].pubcom);
printf("出版时间(年/月/日):%d/%d/%d\n",bk[x].bk_dt.year,bk[x].bk_dt.month,bk[x].bk_dt.day);
printf("价格:%d\n",bk[x].price);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -