商品管理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.问题描述
商店货架以栈的方式摆放商品。生产日期越近的越靠近栈底,出货时从栈顶
货。一天营业结束,如果货架不满,则需上货。入货直接将商品摆放到货架
,则会使生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期
近的越靠近栈底。
2.基本要求
设计一个算法,保证每一次上货后始终保持生产日期越近的商品越靠近栈。
Select(Q,S,D);
}
return 0;
}
2.主函数的实现
int main()
{
Sqstack Q,S,D; //定义三个栈
Inital(Q,S,D); //栈的初始化
Select(Q,S,D); //功能旋转
return 0;
}
3.运行及调试
输入货架的大小 为4 ,商品号为1001.1002 1003 1004
Init(D,a+1); //记录营业情况
printf("货架已经建立,请输入商品编号(按商品的生产日期从小到大的顺序输入编号)\n");
c=1; //初始化c,使每次输入都有效
for(int i=1;i<=a;i++)
{
scanf("%d",&b);
if(b<c){printf("编号不合法\n");
return 0;
}
7.定义全局变量
int a,b,c;
8.开始函数,建立货架,并存放商品
int Inital(Sqstack &Q,Sqstack &S,Sqstack &D)
{
printf("请确定货架大小\n");
scanf("%d",&a);
Init(Q,a+1); //货架
Init(S,a+1); //辅助货架
实验二 栈和队列的基本操作及其应用(商品货架管理)
一、实验目的与实验内容
1.实验目的
1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。
2、掌握栈和队列的特点,即后进先出和先进先出的原则。
3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序
结构和链式存储结构上的实现
2.实验内容
if(Q.base==Q.top)
printf("商品已经售空\n");
int f=Pop(Q);
Push(D,f);
printf("商品%d已经售出\n",f);
Select(Q,S,D);
return 0;
}
10.查询营业情况
int Selectstate(Sqstack &Q,Sqstack &S,Sqstack &D) //查询营业情况
if (D.top==D.base){
printf("无需进货\n");
Select(Q,S,D);}
elseprintf("需进货%d件\n",Length(D));
for(int i=1;i<=a-Length(D);i++) //倒货到辅助栈
{
int j=Pop(Q);
Push (S,j);
}
Inital(Q,S,D);}
Push(S,b); //入辅助栈
c=b;
}
for(i=1;i<=a;i++)
{
int d;
d=Pop(S);
Push(Q,d);
}
printf("货架已经放满,可以开始营业\n"ห้องสมุดไป่ตู้;
return 0;
}
9.出售商品
int Sell(Sqstack &Q,Sqstack &S,Sqstack &D){
选择1 进行商品出售
选择2 查看营业情况
选择3 查看货架商品
选择4 结束营业并进货
输入商品货号1005
选择5 退出程序
图表1
三、实验心得
运用栈来完成商品的货架管理,需要注意栈的特点,只能从栈顶进,从栈顶弹出。根据事实,新进的货品需要进入栈底,所以需要中转栈来完成具体操作,而且需要完成出售商品,查看营业情况,查看货架商品。结束营业并进货,退出程序一系列动作。在栈中需要完成栈的基本操作,建立顺序栈,栈的初始化,入栈,出栈,求栈的长度等。每一步都需要谨慎小心的完成,从中我获益匪浅。
{
int k=Pop(S);
Push(Q,k);
}
D.top=D.base; //初始化辅助栈
printf("进货完成,可以开始营业\n");
Select(Q,S,D);
return 0;
12.结束营业,并进货
int Select(Sqstack &Q,Sqstack &S,Sqstack &D)
{
{
printf("已经售出的商品%d\n",Length(D));
printf("还有%d件商品可以出售\n",Length(Q));
Select(Q,S,D);
return 0;
}
11.结束营业,并进货
int Getother(Sqstack &Q, Sqstack &S, Sqstack &D ){
3.实现提示3.
可以用一个队列和一个临时栈作为周转。
二、程序设计
1.详细设计
1.建立顺序栈存储结构
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}Sqstack;
2.栈的初始化
int Init(Sqstack &s,int maxsize) //栈的初始化
printf("请输入商品编号\n");
for(i=1;i<=Length(D);i++) //新商品入辅助栈
{
scanf("%d",&b);
if(b<c){
printf("编号有误\n");
Getother(Q,S,D);
}
Push(S,b);
c=b;
}
for(i=1;i<=a;i++) //商品导入货架
p=L.base;
for(int i=0;p!=L.top;i++)p++;
return i;
}
6.显示栈内所有元素
int Showout(Sqstack L) //显示栈内所有元素
{
if(L.top==L.base)printf("货架已空");
SElemType *p;
for(p=L.base;p!=L.top;p++)printf("商品%d\t",*p);
printf("----------------请选择操作----------------\n");
printf("1.出售商品2.查看营业情况\n");
printf("3.查看货架商品4.结束营业并进货\n");
printf("5.退出程序\n");
int n;
scanf("%d",&n);
switch(n)
{
case 1:
Sell(Q,S,D);
break;
case 2:
Selectstate(Q,S,D);
break;
case 3:
Showout(Q);
Select(Q,S,D);
break;
case 4:
Getother(Q,S,D);
break;
case 5:
exit (0);
default:
printf("没有这个操作\n");
{
s.base=new SElemType[maxsize];
if(!s.base)exit(1);
s.top=s.base;
s.stacksize=maxsize;
return 0;
3.入栈
int Push(Sqstack &s,int e)
{
if(s.top-s.base==s.stacksize)return 0;
else{*s.top=e;
s.top++;}
return 0;
}
4.出栈
int Pop(Sqstack &s)
{
int e;
if(s.top==s.base)
return 0;
else
e=*--s.top;
return e;
}
5.求栈的长度
int Length(Sqstack &L)
{
SElemType *p;
商店货架以栈的方式摆放商品。生产日期越近的越靠近栈底,出货时从栈顶
货。一天营业结束,如果货架不满,则需上货。入货直接将商品摆放到货架
,则会使生产日期越近的商品越靠近栈顶。这样就需要倒货架,使生产日期
近的越靠近栈底。
2.基本要求
设计一个算法,保证每一次上货后始终保持生产日期越近的商品越靠近栈。
Select(Q,S,D);
}
return 0;
}
2.主函数的实现
int main()
{
Sqstack Q,S,D; //定义三个栈
Inital(Q,S,D); //栈的初始化
Select(Q,S,D); //功能旋转
return 0;
}
3.运行及调试
输入货架的大小 为4 ,商品号为1001.1002 1003 1004
Init(D,a+1); //记录营业情况
printf("货架已经建立,请输入商品编号(按商品的生产日期从小到大的顺序输入编号)\n");
c=1; //初始化c,使每次输入都有效
for(int i=1;i<=a;i++)
{
scanf("%d",&b);
if(b<c){printf("编号不合法\n");
return 0;
}
7.定义全局变量
int a,b,c;
8.开始函数,建立货架,并存放商品
int Inital(Sqstack &Q,Sqstack &S,Sqstack &D)
{
printf("请确定货架大小\n");
scanf("%d",&a);
Init(Q,a+1); //货架
Init(S,a+1); //辅助货架
实验二 栈和队列的基本操作及其应用(商品货架管理)
一、实验目的与实验内容
1.实验目的
1、掌握栈和队列的顺序存储结构和链式存储结构,以便在实际中灵活应用。
2、掌握栈和队列的特点,即后进先出和先进先出的原则。
3、掌握栈和队列的基本运算,如:入栈与出栈,入队与出队等运算在顺序
结构和链式存储结构上的实现
2.实验内容
if(Q.base==Q.top)
printf("商品已经售空\n");
int f=Pop(Q);
Push(D,f);
printf("商品%d已经售出\n",f);
Select(Q,S,D);
return 0;
}
10.查询营业情况
int Selectstate(Sqstack &Q,Sqstack &S,Sqstack &D) //查询营业情况
if (D.top==D.base){
printf("无需进货\n");
Select(Q,S,D);}
elseprintf("需进货%d件\n",Length(D));
for(int i=1;i<=a-Length(D);i++) //倒货到辅助栈
{
int j=Pop(Q);
Push (S,j);
}
Inital(Q,S,D);}
Push(S,b); //入辅助栈
c=b;
}
for(i=1;i<=a;i++)
{
int d;
d=Pop(S);
Push(Q,d);
}
printf("货架已经放满,可以开始营业\n"ห้องสมุดไป่ตู้;
return 0;
}
9.出售商品
int Sell(Sqstack &Q,Sqstack &S,Sqstack &D){
选择1 进行商品出售
选择2 查看营业情况
选择3 查看货架商品
选择4 结束营业并进货
输入商品货号1005
选择5 退出程序
图表1
三、实验心得
运用栈来完成商品的货架管理,需要注意栈的特点,只能从栈顶进,从栈顶弹出。根据事实,新进的货品需要进入栈底,所以需要中转栈来完成具体操作,而且需要完成出售商品,查看营业情况,查看货架商品。结束营业并进货,退出程序一系列动作。在栈中需要完成栈的基本操作,建立顺序栈,栈的初始化,入栈,出栈,求栈的长度等。每一步都需要谨慎小心的完成,从中我获益匪浅。
{
int k=Pop(S);
Push(Q,k);
}
D.top=D.base; //初始化辅助栈
printf("进货完成,可以开始营业\n");
Select(Q,S,D);
return 0;
12.结束营业,并进货
int Select(Sqstack &Q,Sqstack &S,Sqstack &D)
{
{
printf("已经售出的商品%d\n",Length(D));
printf("还有%d件商品可以出售\n",Length(Q));
Select(Q,S,D);
return 0;
}
11.结束营业,并进货
int Getother(Sqstack &Q, Sqstack &S, Sqstack &D ){
3.实现提示3.
可以用一个队列和一个临时栈作为周转。
二、程序设计
1.详细设计
1.建立顺序栈存储结构
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}Sqstack;
2.栈的初始化
int Init(Sqstack &s,int maxsize) //栈的初始化
printf("请输入商品编号\n");
for(i=1;i<=Length(D);i++) //新商品入辅助栈
{
scanf("%d",&b);
if(b<c){
printf("编号有误\n");
Getother(Q,S,D);
}
Push(S,b);
c=b;
}
for(i=1;i<=a;i++) //商品导入货架
p=L.base;
for(int i=0;p!=L.top;i++)p++;
return i;
}
6.显示栈内所有元素
int Showout(Sqstack L) //显示栈内所有元素
{
if(L.top==L.base)printf("货架已空");
SElemType *p;
for(p=L.base;p!=L.top;p++)printf("商品%d\t",*p);
printf("----------------请选择操作----------------\n");
printf("1.出售商品2.查看营业情况\n");
printf("3.查看货架商品4.结束营业并进货\n");
printf("5.退出程序\n");
int n;
scanf("%d",&n);
switch(n)
{
case 1:
Sell(Q,S,D);
break;
case 2:
Selectstate(Q,S,D);
break;
case 3:
Showout(Q);
Select(Q,S,D);
break;
case 4:
Getother(Q,S,D);
break;
case 5:
exit (0);
default:
printf("没有这个操作\n");
{
s.base=new SElemType[maxsize];
if(!s.base)exit(1);
s.top=s.base;
s.stacksize=maxsize;
return 0;
3.入栈
int Push(Sqstack &s,int e)
{
if(s.top-s.base==s.stacksize)return 0;
else{*s.top=e;
s.top++;}
return 0;
}
4.出栈
int Pop(Sqstack &s)
{
int e;
if(s.top==s.base)
return 0;
else
e=*--s.top;
return e;
}
5.求栈的长度
int Length(Sqstack &L)
{
SElemType *p;