商品货架管理

/*

*尚品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。

*上货时,需要倒货架,以保证生产日期较新的商品在较靠里的位置

*针对一种特定商品,实现上述管理过程

*测试数据:由学生自己确定一组测试数据。注意测试边界数据,如空栈。

*/

shelf.h

#include <iostream>

#include <string>
using namespace std;

struct Goods{
    int number;
    string name;
    char date[10];
};

class GoodsShelf{

public: 

    GoodsShelf(int size); 

     ~GoodsShelf();            
    bool goodsShelfEmpty();     
    bool goodsShelfFull();   
    bool push(Goods goods);  
    bool pop(Goods &goods);  
    void goodsShelfTraverse();  
private:
    int m_iTop;
    Goods *m_pBuffer;      
    int m_iSize;
};

GoodsShelf::GoodsShelf(int size){
    m_iSize = size;
    m_pBuffer = new Goods[size];
    m_iTop = 0;  
}

GoodsShelf::~GoodsShelf(){
    delete [] m_pBuffer;

     
bool GoodsShelf::goodsShelfEmpty(){
    if(m_iTop == 0)
        return true;
    return false;
}   

bool GoodsShelf::goodsShelfFull(){
    if(m_iTop == m_iSize)
        return true;
    return false;
}  

bool GoodsShelf::push(Goods goods){

     if(goodsShelfFull())

        return false;
    m_pBuffer[m_iTop] = goods;
    m_iTop++;
    return true;



bool GoodsShelf::pop(Goods &goods){
    if(goodsShelfEmpty())
        return false;
    m_iTop--;
    goods = m_pBuffer[m_iTop];
    return true;
}


void GoodsShelf::goodsShelfTraverse(){
    for(int i = m_iTop-1;i>=0;i--)
        cout<<m_pBuffer[i].number<<"  "<<m_pBuffer[i].name<<"  "<<m_pBuffer[i].date<<endl;;

}


demo.cpp

#include <iostream>
#include "shelf.h"
using namespace std;
int main(){
//指定货架容量
    GoodsShelf s1(10),s2(10);
    Goods goods;
    int n;
    cout<<"请输入货架上现有商品数量:";
    cin>>n;
    cout<<"请输入货架上现有商品的编号,商品名,日期(从货架最里端到最外端依次输入):"<<endl;
    for(int i=1;i<=n;i++){
        cin>>goods.number;
        cin>>goods.name;
        cin>>goods.date;
        s1.push(goods);
    }
    while(!s1.goodsShelfEmpty()){    
        s1.pop(goods);
        s2.push(goods);
    }
    cout<<"请输入新上货架商品的数量:";
    cin>>n;
    cout<<"请输入新上货架商品的编号,商品名,日期:(日期从新到旧依次输入)"<<endl;
    for( i=1;i<=n;i++){
        cin>>goods.number;
        cin>>goods.name;
        cin>>goods.date;
        s1.push(goods);
    }
    while(!s2.goodsShelfEmpty()){
        s2.pop(goods);
        s1.push(goods);
    }
    cout<<"放入新货品后货架上的所有商品的编号,商品名,日期(从货架最外端到最里端依次输出):"<<endl;
    s1.goodsShelfTraverse();
    return 0;
}

  • 9
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值