📄 user.c
字号:
#include"Source.h"
TUser *CreateUser(char *name)
{
TUser *temp=NULL;
temp=malloc(sizeof(TUser));
if(temp==NULL)
return NULL;
strcpy(temp->name,name);
temp->bill=NULL;
return temp;
}
TBook *QueryBookShop(TBookShop *bp,BookClass type1,BType type2)
{
TBook *temp=NULL;
temp=bp->BookList[type1];
while(temp!=NULL)
{
if(temp->type==type2)
return temp;
temp=temp->next;
}
return NULL;
}
int UserOrderBook(TBookShop *bp,TBook *b,TUser *u,int num)
{
TOrderFromShop *temp=NULL;
temp=malloc(sizeof(TOrderFromShop));
if(temp==NULL)
{
printf("create OrderFromShop Node fail!\n");
return 0;
}
temp->type=b->type;
strcpy(temp->BookName,b->BookName);
temp->user=u;
temp->number=num;
temp->CallBack=UserBuyBook;
temp->next=bp->OrderList;
bp->OrderList=temp;
fprintf(work,"%s order book %s %d from %s\n",u->name,b->BookName,num,bp->BookShopName);
printf("%s order book %s %d from %s\n",u->name,b->BookName,num,bp->BookShopName);
return 1;
}
int UserBuyBook(TBookShop *bp,TBook *b,TUser *u,int num)
{
TBill_User *bill_user=NULL;
TBill_BookShop_Sell *bill_sell=NULL;
bill_user=malloc(sizeof(TBill_User));
bill_sell=malloc(sizeof(TBill_BookShop_Sell));
if(bill_user==NULL || bill_sell==NULL)
return 0;
strcpy(bill_user->bookname,b->BookName);
strcpy(bill_user->bookshopname,bp->BookShopName);
bill_user->next=NULL;
strcpy(bill_sell->bookname,b->BookName);
strcpy(bill_sell->username,u->name);
bill_sell->next=NULL;
if(b->Num>=num)
{
b->Num-=num;
fprintf(work,"user %s buy book %s %d from %s\n",u->name,b->BookName,num,bp->BookShopName);
printf("user %s buy book %s %d from %s\n",u->name,b->BookName,num,bp->BookShopName);
bill_user->num=num;
bill_sell->num=num;
bill_sell->next=bp->bill_sell;
bp->bill_sell=bill_sell;
bill_user->next=u->bill;
u->bill=bill_user;
return 1;
}
else if(b->Num>0)
{
fprintf(work,"user %s buy book %s %d from %s\n",u->name,b->BookName,b->Num,bp->BookShopName);
printf("user %s buy book %s %d from %s\n",u->name,b->BookName,b->Num,bp->BookShopName);
bill_user->num=b->Num;
bill_sell->num=b->Num;
bill_sell->next=bp->bill_sell;
bp->bill_sell=bill_sell;
bill_user->next=u->bill;
u->bill=bill_user;
UserOrderBook(bp,b,u,num-b->Num);
b->Num=0;
return 2;
}
}
int FreeUser(TUser *user)
{
TBill_User *temp=NULL;
if(user==NULL) return 0;
temp=user->bill;
while(temp!=NULL)
{
user->bill=temp->next;
temp=temp->next;
free(temp);
temp=user->bill;
}
free(user);
user=NULL;
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -