#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct _sp {
int djid;
char name[50];
double price;
int stock;
char desc[100];
}SP;
typedef struct _bb {
int wjid;
int count;
int max;
SP prs[8];
}BB;
typedef struct _wj{
int id;
char name[50];
char pass[50];
BB bbao;
double gold;
double yuanbao;
}WJ;
SP* spzz=NULL;
WJ* wjzz=NULL;
int sps=0;
int wjs=0;
void init();
void showsp();
void showwj();
void jy(WJ *wj,int spid );
int main()
{
init();
showsp();
showwj();
system("pause");
jy(&wjzz[1],3);
showsp();
showwj();
return 0;
}
void jy(WJ* wj, int spid)
{
int i;
SP* pdzz = NULL;
for (i = 0; i< spid; i++) {
if (spid == spzz[i].djid)
{
pdzz = &spzz[i];
break;
}
}
if (pdzz->stock <= 0)
{
printf("库存不足\n");
return;
}
if (wjzz->gold < pdzz->price)
{
printf("余额不足\n");
return;
}
if (wjzz->bbao.count >= wjzz->bbao.max&& wjzz->bbao.count!=0)
{
printf("背包已满,交易失败!\n");
return;
}
pdzz->stock--;
wjzz->gold -= pdzz->price;
for (i = 0; i < wjzz->bbao.count; i++)
{
if (pdzz == wjzz->bbao.prs[i].djid)
{
wjzz->bbao.prs[i].stock++;
break;
}
}
if (i == wjzz->bbao.count)
{
int djwz = wjzz->bbao.count;
wjzz->bbao.prs[djwz].djid = pdzz->djid;
wjzz->bbao.prs[djwz].price = pdzz->price;
wjzz->bbao.prs[djwz].stock = 1;
strcpy(wjzz->bbao.prs[djwz].name, pdzz->name);
strcpy(wjzz->bbao.prs[djwz].desc, pdzz->desc);
wjzz->bbao.count++;
}
}
void init()
{
static SP SPall[] = {
{1,"经验卡",3000,10,"双倍经验"},
{2,"龙泉剑",7000,8,"攻击带魔法伤害200+"},
{3,"轩辕剑",6000,6,"攻击力+200"},
{4,"复活甲",9000,2,"60秒复活一次"},
{5,"饮血剑",8000,3,"吸血+200"},
};
sps = sizeof(SPall)/sizeof(SP);
spzz = SPall;
static WJ WJall[] = {
{1,"张三","123456",.gold = 50000,.bbao.max=8},
{2,"李四","123456",.gold = 150000,.bbao.max = 8},
{3,"王五","123456",.gold = 5000,.bbao.max = 8},
{4,"刘六","123456",.gold = 0,.bbao.max = 8},
};
wjs = sizeof(WJall) / sizeof(WJ);
wjzz = WJall;
}
void showsp()
{
int i;
if (spzz == NULL) return;
printf("编号\t名称\t单价\t库存\t商品介绍\n");
for (i = 0;i<sps;i++)
{
printf("%d\t%s\t%.2lf\t%d\t%s\n",spzz[i].djid,spzz[i].name,spzz[i].price,spzz[i].stock,spzz[i].desc);
}
}
void showwj()
{
int i,j;
if (wjzz == NULL)return;
printf("编号\t名称\t金币\n");
for (i = 0; i < wjs; i++)
{
printf("%d\t%s\t%.2lf\n", wjzz[i].id, wjzz[i].name, wjzz[i].gold);
for (j = 0; j < wjzz[i].bbao.count;j++) {
printf("%s\t%d", wjzz[i].bbao.prs[j].name, wjzz[i].bbao.prs[j].stock);
}
printf("\n");
}
}
cs