#include <iomanip.h>
#include <stdlib.h>
typedef struct
{
int no
char name[5]
int number
}Data
typedef struct node
{
Data inform
struct node* next
}LNode,*LinkList
void Onit_LinkList(LinkList L)
LinkList Creat_LinkList(LinkList L)
void Print_LinkList(LNode* L)
LinkList Search_Data(int No,LinkList L)
LinkList In_Data(Data d,LinkList L)
void Out_Data(int No,int number,LinkList L)
LinkList Sort_LinkList(LinkList L)
LNode* Compare_NO(LinkList L)
LNode* Mix(LinkList L)
int main()
{
int option
LNode* L
L=(LNode*)malloc(sizeof(LNode))
Onit_LinkList(L)
do
{
cout<<"\n----------------------------------"
<<"请选择相应的操作"
<<"------------------------------\n"
<<"1.........录入货物信息"<<endl
<<"2.........查找货物并输出相应信息"<<endl
<<"3.........加入货物"<<endl
<<"4.........提取货物"<<endl
<<"5.........输出货物信息"<<endl
<<"0.........退出仓库管理系统"<<endl
cin>>option
switch(option)
{
case 0:
break
case 1: L=Creat_LinkList(L)
break
case 2:
{
int n1
LinkList L1
L1=(LNode*)malloc(sizeof(LNode))
cout<<"\n键入0退出查找。\n"
do
{
cout<<"\n输入要查找的货号:"
cin>>n1
if(n1==0)break
L1=Search_Data(n1, L)
if(L1==NULL)
{
cout<<"\n找不到指定的货物!!!!\n"
}
else
{
cout<<"------------------------------------\n"
<<"货物代号"<<setw(15)
<<"货物名称"<<setw(15)
<<"货物数量"<<endl
<<L1->inform.no<<setw(18)
<<L1->inform.name<<setw(18)
<<L1->inform.number<<endl
}
}while(n1)
break
}
case 3:
{
LinkList L1
L1=(LNode*)malloc(sizeof(LNode))
cout<<"键入0退出加入货物。\n"
do
{
Data d
cout<<"\n输入加入的货号:"
cin>>d.no
L1=Search_Data(d.no,L)
if(d.no==0)break
if(L1!=NULL)
{
cout<<"\n仓库中已存在要加入的货物,\n"
<<"只需输入加入的数量:"
cin>>d.number
}
else
{
cout<<"\n输入货物名称及数量:"
cin>>d.name>>d.number
}
L=In_Data(d,L)
}while(1)
break
}
case 4:
{
LinkList L1
L1=(LNode*)malloc(sizeof(LNode))
cout<<"\n键入0退出提取货物。\n"
do
{
int No,number
cout<<"\n输入要提取货号:"
cin>>No
if(No==0)break
L1=Search_Data(No,L)
if(L1==NULL)
{
cout<<"该货物信息不存在!!!\n"
continue
}
cout<<"------------------------------------\n"
<<"货物代号"<<setw(15)
<<"货物名称"<<setw(15)
<<"货物数量"<<endl
<<L1->inform.no<<setw(18)
<<L1->inform.name<<setw(18)
<<L1->inform.number<<endl
cout<<"\n输入提取货物的数量:"
cin>>number
Out_Data( No,number,L)
}while(1)
break
}
case 5:
{
Print_LinkList(L)
break
}
default:
cout<<"无效操作!!"
break
}
}while(option)
return 0
}
void Onit_LinkList(LinkList L)
{
L->next=NULL
}
LinkList Creat_LinkList(LinkList L)
{
LNode *s,*r=L
cout<<"键入0退出录入。\n"
do
{
cout<<"\n输入货号:"
s=(LNode*)malloc(sizeof(LNode))
cin>>s->inform.no
if(s->inform.no==0)
{
free(s)
break
}
if(r->inform.no==s->inform.no)
{
cout<<"\n货号重复!!!!\n"
continue
}
cout<<"\n输入货物名称及数量:"
cin>>s->inform.name
>>s->inform.number
r->next=s
r=s
}while(1)
if(r!=NULL)r->next=NULL
L=Sort_LinkList(L)
return L
}
void Print_LinkList(LNode* L)
{
LNode *r=L
if(L->next==NULL)cout<<"仓库中无货物\n"
else
{
cout<<"------------------------------------\n"
<<"货物代号"<<setw(15)
<<"货物名称"<<setw(15)
<<"货物数量"<<endl
do
{
r=r->next
cout<<r->inform.no<<setw(18)
<<r->inform.name<<setw(18)
<<r->inform.number
<<endl
}while(r->next!=NULL)
}
}
LinkList Search_Data(int No,LinkList L)
{
LinkList r
r=L->next
while(r!=NULL &&r->inform.no!=No)
r=r->next
return r
}
LinkList In_Data(Data d,LinkList L)
{
LinkList L1
L1=(LNode*)malloc(sizeof(LNode))
L1=Search_Data(d.no,L)
if(L1==NULL)
{
LNode *r,*p,*s
r=L->next
s=L
p=(LNode*)malloc(sizeof(LNode))
p->inform.no=d.no
for(int i=0i<6i++)
{
p->inform.name[i]=d.name[i]
}
p->inform.number=d.number
while(r->inform.no<d.no)r=r->next
while(s->next!=r)s=s->next
p->next=s->next
s->next=p
}
else
L1->inform.number +=d.number
return L
}
LinkList Sort_LinkList(LinkList L)
{
LinkList new_list
LNode *r,*p,*mix
new_list=(LNode*)malloc(sizeof(LNode))
new_list->next=NULL
r=new_list
mix=Mix(L)
do
{
p=(LNode*)malloc(sizeof(LNode))
p=Compare_NO(L)
r->next=p
r=p
}while(p->inform.no<mix->inform.no)
if(r!=NULL)r->next=NULL
L=new_list
return L
}
void Out_Data(int No,int number,LinkList L)
{
LinkList L1
L1=(LNode*)malloc(sizeof(LNode))
L1=Search_Data(No,L)
if(L1->inform.number>=number)
L1->inform.number-=number
else
{
char p
cout<<"\n该货物库存不足,是否提取(Y/N):"
cin>>p
if(p=='y'||p=='Y')
{
cout<<"\n货物"<<L1->inform.name<<endl
<<"提取了"<<L1->inform.number
<<"件,还需"<<number-L1->inform.number
<<"件才能满足您的要求~~"<<endl
L1->inform.number=0
}
}
}
LNode* Compare_NO(LinkList L)
{
LNode *r,*p,*s
s=(LNode*)malloc(sizeof(LNode))
p=L->next
if(p->next==NULL)return p
r=p->next
while(r!=NULL)
{
if(p->inform.no>r->inform.no)p=r
r=r->next
}
*s=*p
while(L->next!=p)L=L->next
if(p->next==NULL)L->next=NULL
else L->next=p->next
free(p)
return s
}
LNode* Mix(LinkList L)
{
LNode *r,*p,*s
s=(LNode*)malloc(sizeof(LNode))
p=L->next
if(p->next==NULL)return p
r=p->next
while(r!=NULL)
{
if(p->inform.no<r->inform.no)p=r
r=r->next
}
return p
}
看看能用不
商品与买家必须是一对多的关系,因为商品最终只能被一个买家买走,商品应该有一个状态表示是否已出售。
每个商品都是一个特定的商品类,而不是泛型。例如每个商品都拥有独一无二的二维码。
你可能会考虑到购物车的关系,但是注意,即时买家把商品加入购物车,那也只是把这个商品添加的买家购物车的session之类的东西里,是临时的。如果这期间商品被买走了,那么这个买家在付款的时候就会得到提示,商品已卖出。
望采纳。