商品货架管理C++程序.docx
- 文档编号:6711649
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:15
- 大小:17.47KB
商品货架管理C++程序.docx
《商品货架管理C++程序.docx》由会员分享,可在线阅读,更多相关《商品货架管理C++程序.docx(15页珍藏版)》请在冰豆网上搜索。
商品货架管理C++程序
#include
#include
#include
//定义结构体
typedefstructnode
{
intn;//商品代号
charname[20];//商品名称
intdate;//生产日期
intvalidity;//保质期(天)
intnum;//商品数量
structnode*next;
}LiStack,*sqstack;
//输出所有商品p的名字、生产日期、保质期。
voidprint(sqstackp)
{
sqstackL=(LiStack*)malloc(sizeof(LiStack));
L=p->next;
if(L==NULL)
printf("货架为空。
\n");
else
{
printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n");
while(L!
=NULL)
{
printf("%d",L->n);
printf("\t%s\t\t",L->name);
printf("%d\t\t",L->date);
printf("%d\t\t",L->validity);
printf("%d\t\t\n",L->num);
p=L;
L=p->next;
}
printf("\t***************************************\n");
}
}
//增加商品
sqstackpush(LiStack*top)
{
intvalidity,num,n;
intdate;
charname[20];
LiStack*temp=(LiStack*)malloc(sizeof(LiStack));
printf("\t\t\t-----欢迎进入商品添加界面!
-----\n");
temp=(LiStack*)malloc(sizeof(LiStack));
printf("\t增加商品的代号是:
");
scanf("%d",&n);
printf("\t增加的商品名称是:
");
scanf("%s",name);
printf("\t生产日期(年月日,如:
20131215:
)是:
");
scanf("%d",&date);
printf("\t保质期(天)是:
");
scanf("%d",&validity);
printf("\t数量(个):
");
scanf("%d",&num);
temp->date=date;strcpy(temp->name,name);
temp->num=num;temp->validity=validity;
temp->n=n;
if(top->next==NULL)
{
temp->next=NULL;
top->next=temp;
}
else
{
temp->next=top->next;
top->next=temp;
}
printf("\t商品添加成功!
\n");
return(top);
}
//创建一个存放商品信息的栈
sqstackcreat()
{
intn,validity,num;
charname[20];
intdate;
LiStack*p;
LiStack*top=(LiStack*)malloc(sizeof(LiStack));
top->next=NULL;
while
(1)
{
printf("\t请输入商品代号(int),代号为'-1'表示输入结束:
");
scanf("%d",&n);
if(n<0)break;
else
{
printf("\t请输入%d号——商品名称:
",n);
scanf("%s",name);
printf("\t请输入%d号——生产日期(年月日,如20131215):
",n);
scanf("%d",&date);
printf("\t请输入%d号——保质期(天):
",n);
scanf("%d",&validity);
printf("\t请输入%d号——数量(个):
",n);
scanf("%d",&num);
p=(LiStack*)malloc(sizeof(LiStack));
p->date=date;
p->validity=validity;
strcpy(p->name,name);
p->num=num;p->n=n;
if(top->next==NULL)
{
p->next=NULL;
top->next=p;
}
else
{
p->next=top->next;
top->next=p;
}
}
}
return(top);
}
//出售商品
sqstackpop(LiStack*top)
{
intn,num;
LiStack*p,*L;
p=(LiStack*)malloc(sizeof(LiStack));
L=(LiStack*)malloc(sizeof(LiStack));
printf("\t\t\t-----欢迎进入商品出售界面!
-----\n");
printf("\t----目前商品有:
\n");
print(top);
printf("出售的商品代号是:
");
scanf("%d",&n);
printf("出售的商品数量(个):
");
scanf("%d",&num);
p=top->next;
if(top->next==NULL)
{
printf("货架为空,请先添加货物!
\n");
}
else
{
while(p->next!
=NULL)
{
if(p->next->n==n)
{
if(p->next->num {printf("出售商品数量小于原有数量,出售商品失败。 ");} else { if(p->next->num==num) { if(p->next->next==NULL) { p->next=NULL; printf("商品出售成功! "); free(L);break;} else { L=p->next; p->next=L->next; free(L); printf("商品出售成功! ");break;} } else { p->next->num-=num; printf("商品出售成功! ");break; } } } p=p->next; } if(p==NULL) printf("输入的商品序号有误,请重新操作。 \n"); } return(top); } //按序号查找商品 voidSequenceNumberF(LiStack*top) { intn,x=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品代号是: "); scanf("%d",&n); p=top; while(p->next! =NULL) { if(p->next->n==n) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1;break; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有您要查询的商品。 \n"); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //按商品名字查询商品 voidNameF(LiStack*top) { charname[20]; intx=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品名称是: "); scanf("%s",name); p=top; while(p->next! =NULL) { if(strcmp(p->next->name,name)==0) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1;break; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有您查询的商品。 \n"); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //按商品生产日期查找商品 voidProductionDateF(LiStack*top) { intx=0; intdate; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的生产日期是: "); scanf("%d",&date); p=top; printf("需要查询的生产日期%d的商品有: \n",date); printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); while(p->next! =NULL) { if(date==p->next->date) { printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有商品的生产日期在%d之前商品。 \n",date); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //按商品数量查找商品,查找小于该数量的商品 voidNumberF(LiStack*top) { intnum,x=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品数量是: "); scanf("%d",&num); p=top; printf("商品数量低于%d的商品有: \n",num); printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); while(p->next! =NULL) { if(p->next->num<=num) { printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有商品低于%d的商品。 \n",num); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //date加validity,并返回date,到期时间。 intDateF(intdate,intvalidity) { inti=0,j=0,k=0; intc=0; i=date/10000; j=(date-10000*i)/100; k=date-10000*i-100*j; k=k+validity; if(k>30) { c=k/30; k=k%30; } j=j+c; c=0; if(j>12) { c=j/12; j=j%12; } i=i+c; date=i*10000+j*100+k; return(date); } //查询过期商品信息 voidOverdueF(LiStack*top) { intvalidity,x=0; LiStack*p; intdate,date2,date1; p=(LiStack*)malloc(sizeof(LiStack)); printf("请输入目前的日期是: "); scanf("%d",&date); p=top; printf("需要查询目前日期(%d)的过期的商品有: \n",date); while(p->next! =NULL) { validity=p->next->validity; date1=p->next->date; date2=DateF(date1,validity); if(date2 { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有过期商品。 \n"); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //查询商品 voidfind(LiStack*top) { inti; printf("\t\t\t-----欢迎进入商品查询界面! -----\n"); printf("tips: \t【按商品代号查询输入1】\t【按名称查询输入2】\n"); printf("\t【按生产日期查询输入3】\t【按个数查询输入4】\n"); printf("\t【查询过期商品信息输入5】\n"); printf("输入按什么方式查询(1-5): "); scanf("%d",&i); switch(i) { case1: SequenceNumberF(top);break; case2: NameF(top);break; case3: ProductionDateF(top);break; case4: NumberF(top);break; case5: OverdueF(top);break; default: printf("\t\t\t输入查询方式错误。 \n"); } } //修改商品 sqstackupdate(LiStack*top) { intn,validity,num,i,x; charname[20]; intdate; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("\t\t\t-----欢迎进入商品修改界面! -----\n"); printf("需要查询的商品代号是: "); scanf("%d",&i); p=top; while(p->next! =NULL) { if(p->next->n==i) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); printf("\t修改为: "); n=p->next->n; printf("\t请输入%d号——商品名称: ",n); scanf("%s",name); printf("\t请输入%d号——生产日期(年月日,如20131215): ",n); scanf("%d",&date); printf("\t请输入%d号——保质期(天): ",n); scanf("%d",&validity); printf("\t请输入%d号——数量(个): ",n); scanf("%d",&num); p->next->date=date; p->next->validity=validity; strcpy(p->next->name,name); p->next->num=num;p->next->n=n; x=1; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有您要修改的商品。 \n"); printf("\t修改成功,欢迎再次使用查询系统.\n"); return(top); } voidmain() { LiStack*top; chari,j; top=(LiStack*)malloc(sizeof(LiStack)); top->next=NULL; printf("\n\n\t\t------------欢迎使用商品货架管理系统------------\n"); while (1){ printf("\t\t******************************************\n"); printf("\t\t-----------1.建立目前商品信息--------\n"); printf("\t\t-----------2.添加商品--------\n"); printf("\t\t-----------3.出售商品--------\n"); printf("\t\t-----------4.查询商品--------\n"); printf("\t\t-----------5.修改商品--------\n"); printf("\t\t-----------6.显示所有商品信息--------\n"); printf("\t\t-----------0.退出系统--------\n"); printf("\t\t******************************************\n\n"); printf("\t\t\t请输入您的操作: "); scanf("%s",&i); scanf("%c",&j); printf("\n\n"); if(i=='0'){ printf("\t\t\t退出成功,欢迎下次使用! \n"); break; }else{ switch(i) { case'1': top=creat();break; case'2': top=push(top);break; case'3': top=pop(top);break; case'4': find(top);break; case'5': top=update(top);break; case'6': print(top);break; default: printf("\t\t\t输入错误,请选择正确的功能\n"); } } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商品 货架 管理 C+ 程序