流程圖我就不畫了,大致流程:開始-> 定義商店結構變量->調用入庫函數錄入庫存商品信息->循環調用打印商品信息的函數及購買函數,顯示庫存商品菜單,用戶輸入購買信息完成購買
->單個水果購買數量不足,購買失敗重新選擇。
->總水果數量不足,提示關店結束程序。
#include?<stdio.h>#include?<string.h>
#define?goodsNum?10//商品總類最大個數
struct?shop
{
char?goodsName[goodsNum][11];
int?goods[goodsNum];
int?sum;
}sp;
int?gn=0;//實際入庫的商品總類個數
void?storage();//入庫函數
void?updateSum();//更新總數
void?printfGoods();//展示庫存信息
int?buy();//購買函數,返回1購買成功,返回0超出商品庫存
int?main()
{
storage();
while(1)
{
printfGoods();
if(sp.sum==0)
{
printf("所有水果已售空,關店休息!\n");
return?0;
}
if(buy())
printf("購買成功!\n");
}
return?0;
}
void?printfGoods()
{
int?i;
printf("--當前庫存信息--\n");
printf("編號?名稱?個數個\n");
for(i=0;i<gn;i++)
printf("%d、?%s?%d個\n",i+1,sp.goodsName[i],sp.goods[i]);
}
void?updateSum()
{
int?i;
sp.sum=0;
for(i=0;i<gn;i++)
sp.sum=sp.sum+sp.goods[i];
}
void?storage()
{
char?name[10];
int?n;
printf("--商品入庫--\n");
while(1)
{
printf("請錄入商品%d的名稱及個數(名稱不超10個字符,輸入0結束錄入):",gn+1);
scanf("%s",name);
if(name[0]=='0'?&&?name[1]==0)
break;
scanf("%d",&n);
strcpy(sp.goodsName[gn],name);
sp.goods[gn]=n;
gn++;
}
updateSum();
}
int?buy()
{
int?id,n;
printf("請輸入要購買的商品編號及數量:\n");
scanf("%d%d",&id,&n);
if(n>sp.goods[id-1])
{
printf("購買失敗,數量超出庫存!\n");
return?0;
}
sp.goods[id-1]=sp.goods[id-1]-n;
updateSum();
return?1;
}