📄 bookshop.c
字号:
#include"Source.h"
unsigned long BookShopID=1;
//----------------------function complete begin----------------------------
TBookShop *BookShopCreate(char *name)
{
TBookShop *temp=NULL;
int i;
temp=malloc(sizeof(TBookShop));
if(temp==NULL)
{
printf("create bookshop fail!\n");
return NULL;
}
temp->BookShopID=BookShopID++;
temp->OrderList=NULL;
for(i=0; i<7; i++)
temp->BookList[i]=NULL;
strcpy(temp->BookShopName,name);
temp->bill_buy=NULL;
temp->bill_sell=NULL;
for(i=0; i<7; i++)
temp->typenum[i]=0;
if(strcmp(name,"C")==0)
{
temp->typenum[0]=500;
temp->typenum[1]=200;
temp->typenum[6]=200;
}
else
if(strcmp(name,"D")==0)
{
temp->typenum[0]=200;
temp->typenum[1]=500;
temp->typenum[2]=200;
temp->typenum[6]=200;
}
else
{
for(i=0; i<7; i++)
temp->typenum[i]=200;
}
return temp;
}
int BuyNewBook(TPublisher *p,TBookShop *b)
{
TBook *temp=NULL,*temp1=NULL;
TBill_Pub *bill_pub=NULL;
TBill_BookShop_Buy *bill_buy=NULL;
int i;
TBookShopInFo *ptr=NULL;
ptr=p->registedshop;
while(ptr!=NULL)
{
if(ptr->BookShopID==b->BookShopID)
break;
ptr=ptr->next;
}
for(i=0; i<7; i++)
{
if(ptr->type[i]>0)
{
temp=p->BookList[i];
while(temp!=NULL)
{
temp1=malloc(sizeof(TBook));
if(temp1==NULL)
{
printf("bookshop's create book fail!\n");
return 0;
}
memcpy(temp1,temp,sizeof(TBook));
if(temp->Num>=ptr->type[i])
{
temp->Num-=ptr->type[i];
temp1->Num=ptr->type[i];
fprintf(work,"%s have buy new books %-10s %d from %s\n",b->BookShopName,temp->BookName,ptr->type[i],p->PublisherName);
printf("%s have buy new books %-10s %d from %s\n",b->BookShopName,temp->BookName,ptr->type[i],p->PublisherName);
bill_pub=malloc(sizeof(TBill_Pub));
bill_buy=malloc(sizeof(TBill_BookShop_Buy));
if(bill_pub==NULL || bill_buy==NULL)
return 0;
strcpy(bill_pub->bookname,temp->BookName);
strcpy(bill_pub->bookshopname,b->BookShopName);
bill_pub->num=ptr->type[i];
bill_pub->next=NULL;
strcpy(bill_buy->bookname,temp->BookName);
strcpy(bill_buy->publishername,p->PublisherName);
bill_buy->num=ptr->type[i];
bill_buy->next=NULL;
}
else
{
temp1->Num=temp->Num;
temp->Num=0;
}
temp1->next=b->BookList[i];
b->BookList[i]=temp1;
bill_pub->next=p->bill;
p->bill=bill_pub;
bill_buy->next=b->bill_buy;
b->bill_buy=bill_buy;
temp=temp->next;
}
}
}
return 1;
}
int OrderFromPub(TPublisher *p,TBookShop*bp,TBook *b,int num)
{
TOrderFromPub *temp=NULL;
temp=malloc(sizeof(TOrderFromPub));
if(temp==NULL)
{
printf("create OrderFromPub Node fail!\n");
return 0;
}
temp->type=b->type;
strcpy(temp->BookName,b->BookName);
temp->BookShopID=bp->BookShopID;
temp->number=num;
temp->CallBack=BuyBook;
temp->ptr=b;
temp->bp=bp;
temp->next=p->OrderList;
p->OrderList=temp;
fprintf(work,"bookshop %s order book %s %d from publisher %s\n",bp->BookShopName,b->BookName,num,p->PublisherName);
printf("bookshop %s order book %s %d from publisher %s\n",bp->BookShopName,b->BookName,num,p->PublisherName);
return 1;
}
int BuyBook(TPublisher *p,BookClass type,int number,TBookShop *bp,TBook *ptr)
{
TBook *temp=NULL;
TOrderFromShop *order=NULL;
TBill_Pub *bill_pub=NULL;
TBill_BookShop_Buy *bill_buy=NULL;
temp=p->BookList[type];
while(temp!=NULL)
{
if(strcmp(temp->BookName,ptr->BookName)==0)
{
//printf("111111111111111111111111111111111111111111");
temp->Num-=number;
ptr->Num+=number;
fprintf(work,"%s rebuy book %s %d from %s\n",bp->BookShopName,ptr->BookName,number,p->PublisherName);
printf("%s rebuy book %s %d from %s\n",bp->BookShopName,ptr->BookName,number,p->PublisherName);
bill_pub=malloc(sizeof(TBill_Pub));
bill_buy=malloc(sizeof(TBill_BookShop_Buy));
if(bill_pub==NULL || bill_buy==NULL)
return 0;
strcpy(bill_pub->bookname,temp->BookName);
strcpy(bill_pub->bookshopname,bp->BookShopName);
bill_pub->num=number;
bill_pub->next=NULL;
strcpy(bill_buy->bookname,temp->BookName);
strcpy(bill_buy->publishername,p->PublisherName);
bill_buy->num=number;
bill_buy->next=NULL;
bill_pub->next=p->bill;
p->bill=bill_pub;
bill_buy->next=bp->bill_buy;
bp->bill_buy=bill_buy;
break;
}
temp=temp->next;
}
order=bp->OrderList;
if(order!=NULL)
{
bp->OrderList=order->next;
order->CallBack(bp,ptr,order->user,order->number);
free(order); order=NULL;
}
return 1;
}
int FreeBookShop(TBookShop *bookshop)
{
TBook *book=NULL;
TOrderFromShop *orderlist=NULL;
TBill_BookShop_Buy *bill_buy=NULL;
TBill_BookShop_Sell *bill_sell=NULL;
int i;
for(i=0; i<7; i++)
{
book=bookshop->BookList[i];
while(book!=NULL)
{
bookshop->BookList[i]=book->next;
free(book);
book=bookshop->BookList[i];
}
}
orderlist=bookshop->OrderList;
while(orderlist!=NULL)
{
bookshop->OrderList=orderlist->next;
free(orderlist);
orderlist=bookshop->OrderList;
}
bill_buy=bookshop->bill_buy;
while(bill_buy!=NULL)
{
bookshop->bill_buy=bill_buy->next;
free(bill_buy);
bill_buy=bookshop->bill_buy;
}
bill_sell=bookshop->bill_sell;
while(bill_sell!=NULL)
{
bookshop->bill_sell=bill_sell->next;
free(bill_sell);
bill_sell=bookshop->bill_sell;
}
free(bookshop);
bookshop=NULL;
return 1;
}
//----------------------function complete end-------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -