puts(str);
for(i=0;i<N;i++)
printf("%-4d%-16s%-18s%-12s%-24s%-4d%-8.2f\n",books[i].no,books[i].cla,books[i].name,books[i].author,books[i].press,books[i].num,books[i].price);
}
/*按种类排序,采用冒泡排序,升序*/
void order_press()
{
int i,j;
int no;
char cla[20];
char name[50];
char author[12];
char press[80];
int num;
float price;
/*变量用来在交换数据存放中间变量的数据*/
for(j=1;j<N;j++) /*总共的比较趟数N-1趟*/
for(i=0;i<N-j;i++)
if(strcmp(books[i].press,books[i+1].press )>0)
{
no=books[i].no ; books[i].no=books[i+1].no ;books[i+1].no=no;
strcpy(cla,books[i].cla ); strcpy(books[i].cla ,books[i+1].cla );strcpy(books[i+1].cla,cla );
strcpy(name,books[i].name); strcpy(books[i].name ,books[i+1].name );strcpy(books[i+1].name,name );
strcpy(author,books[i].author); strcpy(books[i].author ,books[i+1].author );strcpy(books[i+1].author,author);
strcpy(press,books[i].press); strcpy(books[i].press ,books[i+1].press );strcpy(books[i+1].press,press);
num=books[i].num; books[i].num=books[i+1].num ;books[i+1].num=num;
price=books[i].price; books[i].price=books[i+1].price ;books[i+1].price=price;
} /*相互交换位置*/
printf("\n*************************排序后的图书信息***************************\n");
puts(str);
for(i=0;i<N;i++)
printf("%-4d%-16s%-18s%-12s%-24s%-4d%-8.2f\n",books[i].no,books[i].cla,books[i].name,books[i].author,books[i].press,books[i].num,books[i].price);
}
/* 按出版社排序*/
void fun2()
{
int i;
loop1:
printf("\n*******1 按种类排序 2 按出版社排序 3 返回****************\n");
printf("*********请选择(1~3):");
scanf("%d",&i);
switch(i)
{
case 1: order_cla();goto loop1;
case 2: order_press();goto loop1;
case 3: break;
default:printf("选择错误,请重新选择!\n");goto loop1;
}
}
/*功能2:排序*/
void fun3()
{
FILE *fp;
int i;
float sum=0;
if((fp=fopen("d:\\CK0103.txt","w"))==NULL)
{
printf("can not open file");
exit(0);
}
fprintf(fp,"编号 分类 书名 作者 出版社 数量 单价 总价\n");
for(i=0;i<N;i++)
{
books[i].sumprice=books[i].price*books[i].num;
sum+=books[i].sumprice;
}
for(i=0;i<N;i++)
fprintf(fp,"%-4d%-16s%-18s%-12s%-24s%-4d%-8.2f%-8.2f\n",books[i].no,books[i].cla,books[i].name,books[i].author,books[i].press,books[i].num,books[i].price,books[i].sumprice);
fprintf(fp,"\t\t\t\t\t\t\t\t总价%8.2f",sum);
fclose(fp);
printf("****** 结果已写入CK0103文本文件中!*********\n");
}
/*功能3:统计每种书目的总价及所有书目的总价*/
void fun4()
{
int kno[N],knum[N]={0},i,j,t=0,flag[N]={0};
char kcla[N][20];
FILE *fp;
if((fp=fopen("d:\\CK0103.txt","w"))==NULL)
{
printf("can not open file");
exit(0);
}
for(i=0;i<N;i++)
if(flag[i]==0) /*标记为0说明之前没有与该图书类别相同的书目*/
{
for(j=0;j<N;j++)
if(strcmp(books[i].cla,books[j].cla)==0) /*类别相同*/
{
knum[t]+=books[j].num; /*累加*/
flag[j]=1; /*是相同类别的书目做标记为1*/
}
kno[t]=t+1;
strcpy(kcla[t],books[i].cla);
t++;
}
fprintf(fp," 编号 出版社 总数量 \n");
for(i=0;i<t;i++)
fprintf(fp,"%4d%18s%6d\n",kno[i],kcla[i],knum[i]);