zoukankan      html  css  js  c++  java
  • 货品的进出库模型

    货品包括货号和重量属性,实现简单的入库出库统计功能,实例用于加深指针和链表的认识以及类的使用。

    #include <iostream>
    #include <string>
    using namespace std;
    class StockWeight
    {
        public:
            StockWeight(int c,int w = 0):weight(w),code(c)
            {
                totalWeight += w;//入库总重量增加
                cout << c << "stock input! total " << totalWeight << endl;
            }
            ~StockWeight()
            {
                totalWeight -= weight;//出库析构总重量减少
                cout << code << "stock output! left " << totalWeight << endl;
            }
            int getCode()
            {
                return code;//返回货号
            }
            static int getTotalWeight()
            {
                return totalWeight;//返回总重量
            }
            StockWeight *next;
        private:
            int weight;//重量
            int code;//货号
            static int totalWeight;//静态成员 总共的重量
    };
    int StockWeight::totalWeight = 0;
    void inputWeight(StockWeight *&head,int code,int w)
    {
        StockWeight *g,*p = new StockWeight(code, w);//新对象结点
        p->next = NULL;
        if (head == NULL){head = p;return;}//链表没有内容
        //循环将新结点插入到最后
        g = head;
        while (g->next != NULL)
        {
            g = g->next;//指针挪动
        }
        g->next = p;
    }
    void outputWeight(StockWeight *&head, int code)
    {
        StockWeight *g,*p;
        if (head == NULL){cout << " there is no goods!" << endl; return;}//链表没有内容
        g = head;//跟踪指针
        while (g->getCode() != code && g->next != NULL)//如果当前指针的code不等于特定的code 或者链表已经没有下一结点便停止循环
        {
            g = g->next;//指针挪动
        }
        if (g->getCode() != code) { cout << " there is no goods code " << code << endl; return; }//没找到货品code
        //找到了code
        //第一个结点特殊处理
        if (g == head){
            head = head->next;//头指针改变
            delete g;//出库析构
            return;
        }
        //遍历找出它的上结点
        p = head;
        while (p->next != g)
        {
            p = p->next;//指针挪动
            break;
        }
        p->next = g->next;//重指向
        delete g;//出库析构
    }
    void main()
    {
        StockWeight *head = NULL;//链表头指针
        int leng,code,weight;//leng是指令。。code是货号。。weight是重量
        do
        {
            cin >> leng;//输入指令
            switch (leng)
            {
                case 1://入货
                {
                    cout << "inputWeight:" << endl;//入库
                    cout << "code:";
                    cin >> code;//输入货号
                    cout << "weight:";
                    cin >> weight;//输入重量
                    inputWeight(head, code, weight);//调用方法入库
                    break;
                }
                case 2://出货
                {
                    cout << "outputWeight:" << endl;//出库
                    cout << "code:";
                    cin >> code;//输入货号
                    outputWeight(head, code);//调用方法出库
                    break;
                }
                case 3://输出总重量
                {
                    cout << "total Weight:" << StockWeight::getTotalWeight() << endl;
                    break;
                }
                default:
                    break;
            }
        } while (leng);//无限循环知道输入0
        getchar();
        getchar();
    }
  • 相关阅读:
    mybatis-cache model
    多线程开发(1)
    正则表达式(3) — 正则表达式库
    正则表达式(2) — 表达式规则
    我在迈瑞工作的两年总结
    正则表达式(1) — 常用的表达式
    C++系列(2) — 智能指针
    C++系列(1) — string
    路径去除前缀
    SIMD性能优化
  • 原文地址:https://www.cnblogs.com/godehi/p/8320862.html
Copyright © 2011-2022 走看看