📄 2337-书籍信息管理系统(子图版).c
字号:
if(tmp==1)
{
printf("\n你要查找的所有书籍资料:");
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
if(stu[i].kucun==stu[i1].kucun||stu[i].kucun==stu[i2].kucun)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);
}
}
printf("\n库存最大值是%d\n",stu[i1].kucun);
printf("库存最小值是%d\n",stu[i2].kucun);
}
printf("\n查找完毕!\n" );
if(tmp==0)
{
printf("\n没有查找到你要的书籍!\n" );
}
printf("\n按1继续,按0返回上级菜单:" );
while( 1 )
{
char c3;
scanf("%1s",&c3);
if( c3=='1')
goto loop13;
else break;
}
}
void chaxun6() /*6.查询给定书名的书籍信息的函数*/
{
int i,tmp;
char x[50];
loop14:
if(number==0)
{
printf("\n还未有书籍信息!\n");
return;
}
tmp=0;
printf("\n请输入要查找书籍的书名:");
scanf("%s",&x);
printf("\n你要查找的所有书籍资料:");
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
if(strcmp(stu[i].name,x)==0)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);
tmp=1;
}
}
printf("\n查找完毕!\n" );
if(tmp==0)
{
printf("\n没有查找到你要的书籍!\n" );
}
printf("\n按1继续,按0返回上级菜单:" );
while( 1 )
{
char c3;
scanf("%1s",&c3);
if( c3=='1')
goto loop14;
else break;
}
}
void chaxun7() /*7.查询所有最值的书籍信息的函数*/
{
if(number==0)
{
printf("\n还未有书籍信息!\n");
return;
}
int x,y,i,i1,i2,i3,i4,i5,i6,tmp,sum,sum1,sum2,min1,max1,min2,max2,min3,max3;
max1=0;
max2=0;
max3=0;
tmp=0;
y=0;
min1=stu[0].kucun;
min2=stu[0].jiage;
min3=stu[0].year*365+stu[0].month*30+stu[0].day;
for(i=0;i<number;i++)
{
sum=stu[i].year*365+stu[i].month*30+stu[i].day;
if(stu[i].kucun>=max1)
{
max1=stu[i].kucun;
i1=i;
tmp=1;
}
if(stu[i].kucun<=min1)
{
min1=stu[i].kucun;
i2=i;
tmp=1;
}
if(stu[i].jiage>=max2)
{
max2=stu[i].jiage;
i3=i;
tmp=1;
}
if(stu[i].jiage<=min2)
{
min2=stu[i].jiage;
i4=i;
tmp=1;
}
if(sum>=max3)
{
max3=sum;
i5=i;
tmp=1;
}
if(sum<=min3)
{
min3=sum;
i6=i;
tmp=1;
}
}
if(tmp==1)
{
sum1=stu[i5].year*365+stu[i5].month*30+stu[i5].day;
sum2=stu[i6].year*365+stu[i6].month*30+stu[i6].day;
printf("\n你要查找的所有书籍资料:");
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
sum=stu[i].year*365+stu[i].month*30+stu[i].day;
if(stu[i].kucun==stu[i1].kucun||stu[i].kucun==stu[i2].kucun||stu[i].jiage==stu[i3].jiage||stu[i].jiage==stu[i4].jiage||sum==sum1||sum==sum2)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);
}
}
printf("\n库存最大值是%d\n",stu[i1].kucun);
printf("库存最小值是%d\n",stu[i2].kucun);
printf("价格最大值是%.1f\n",stu[i3].jiage);
printf("价格最小值是%.1f\n",stu[i4].jiage);
printf("出版时间最晚是%d-%d-%d\n",stu[i5].year,stu[i5].month,stu[i5].day);
printf("出版时间最早是%d-%d-%d\n",stu[i6].year,stu[i6].month,stu[i6].day);
}
printf("\n查找完毕!\n" );
if(tmp==0)
{
printf("\n没有查找到你要的书籍!\n" );
}
}
void paixu1() /*1.根据库存对书籍内容进行排序输出的函数*/
{
if(number==0)
{
printf("\n还未有书籍信息!\n");
return;
}
int i,j;
struct book tmp;
for(i=0;i<number-1;i++) /*冒泡法*/
{
for(j=number-2;j>=i;j--)
{
if(stu[j+1].kucun<stu[j].kucun)
{
tmp=stu[j+1];
stu[j+1]=stu[j];
stu[j]=tmp;
}
}
}
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);
}
}
void paixu5() /*2.根据价格对书籍内容进行排序输出的函数*/
{
if(number==0)
{
printf("\n还未有书籍信息!\n");
return;
}
int i,j,k;
struct book tmp;
for(i=0;i<number-1;i++) /*选择法*/
{
k=i;
for(j=i+1;j<number;j++)
if(stu[j].jiage<stu[k].jiage)
k=j;
if(k!=i)
{
tmp=stu[i];
stu[i]=stu[k];
stu[k]=tmp;
}
}
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);
}
}
void paixu2() /*2.根据价格对书籍内容进行排序输出的函数*/
{
if(number==0)
{
printf("\n还未有书籍信息!\n");
return;
}
int i1,i,j;
struct book tmp,tmp1[number]; /*快速法*/
for(i1=0;i1<number;i1++)
{
i=0;
j=number-1;
tmp=stu[i1];
do
{
while((stu[j].jiage>tmp.jiage)&&(i<j))
j--;
if(i<j)
{
i++;
}
while((stu[i].jiage<=tmp.jiage)&&(i<j))
i++;
if(i<j)
{
j--;
}
}while(i!=j);
tmp1[i]=tmp;
}
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",tmp1[i].num,tmp1[i].name,tmp1[i].zuozhe,tmp1[i].leibie,tmp1[i].jiage,tmp1[i].year,tmp1[i].month,tmp1[i].day,tmp1[i].kucun);
}
}
void sift(struct book *stu,int i,int m) /*筛选算法*/
{
int j,sum,sum1,sum2;
struct book tmp;
tmp=stu[i];
sum=tmp.year*365+tmp.month*30+tmp.day;
j=2*i;
while(j<=m)
{
sum1=stu[j].year*365+stu[j].month*30+stu[j].day;
sum2=stu[j+1].year*365+stu[j+1].month*30+stu[j+1].day;
if(j<m&&(sum1<sum2))
j++;
if(sum<sum1)
{
stu[i]=stu[j];
i=j;
j=2*i;
}
else break;
}
stu[i]=tmp;
}
void paixu3() /*3.根据出版时间对书籍内容进行排序输出的函数*/
{
if(number==0)
{
printf("\n还未有书籍信息!\n");
return;
}
int i;
struct book tmp;
for(i=number/2;i>=1;i--) /*堆排序法*/
sift(stu,i,number);
for(i=number;i>=2;i--)
{
tmp=stu[1];
stu[1]=stu[i];
stu[i]=tmp;
sift(stu,1,i-1);
}
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);
}
}
void paixu6() /*3.根据出版时间对书籍内容进行排序输出的函数*/
{
if(number==0)
{
printf("\n还未有书籍信息!\n");
return;
}
int i,j,sum1,sum2;
struct book tmp;
for(i=0;i<number-1;i++) /*冒泡法*/
{
for(j=number-2;j>=i;j--)
{
sum1=stu[j].year*365+stu[j].month*30+stu[j].day;
sum2=stu[j+1].year*365+stu[j+1].month*30+stu[j+1].day;
if(sum2<sum1)
{
tmp=stu[j+1];
stu[j+1]=stu[j];
stu[j]=tmp;
}
}
}
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);
}
}
void paixu4() /*4.按照库存、价格组合进行排序输出的函数*/
{
if(number==0)
{
printf("\n还未有书籍信息!\n");
return;
}
int i,j;
struct book tmp;
for(i=0;i<number-1;i++) /*冒泡法*/
{
for(j=number-2;j>=i;j--)
{
if(stu[j+1].kucun<stu[j].kucun)
{
tmp=stu[j+1];
stu[j+1]=stu[j];
stu[j]=tmp;
}
else if(stu[j+1].kucun==stu[j].kucun)
{
if(stu[j+1].jiage<stu[j].jiage)
{
tmp=stu[j+1];
stu[j+1]=stu[j];
stu[j]=tmp;
}
}
}
}
printf("\n编号\t书名\t作者\t类别\t价格\t出版日期\t库存\n");
for(i=0;i<number;i++)
{
printf(" %d\t%s\t%s\t%s\t%.1f\t%d-%d-%d\t%d\n",stu[i].num,stu[i].name,stu[i].zuozhe,stu[i].leibie,stu[i].jiage,stu[i].year,stu[i].month,stu[i].day,stu[i].kucun);
}
}
void bao() /*8.保存文件的函数*/
{
if(number==0)
{
printf("\n\t\t\t还未有书籍信息!\n");
return;
}
FILE *fp;
int i;
char ch,file[20];
printf("\n\t\t\t请给文件命名(格式*.txt):");
scanf("%s",file);
if((fp=fopen(file,"wb+"))==NULL)
{
printf("此文件打不开");
return;
}
for (i=0;i<number;i++)
if(fwrite(&stu[i],sizeof(struct book),1,fp)!=1)
printf ("文件书写错误!");
fclose (fp);
printf("\n\t\t\t保存成功!\n");
}
void du() /*9.读取文件的函数*/
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -