zoukankan      html  css  js  c++  java
  • C++-------简单的仓库管理系统(链表、静态成员)

    #include <iostream>
    using namespace std;
    class Goods
    {
    public:
        Goods()                  //货物的无参构造
        {
            weight = 0;
            next = NULL;
            cout << "创建了一个重量为" << weight << "的货物" << endl;
        }
        Goods(int w)             //传进一个重量为w的货物,且仓库的总重量加上w
        {
            weight = w;
            next = NULL;         //每创建一个货物,其指针域要为空,否则会出现乱码
            a_weight += w;
            cout << "创建了一个重量为" << weight << "的货物" << endl;
        }
        ~Goods()                //仓库减少这个重量的货物
        {
            cout << "删除了一箱重量为" << weight << "的货物" << endl;
            a_weight -= weight;
        }
        Goods *next;             //定义每个类的指针域,用于链表的连接
        static int sum()        //定义静态统计函数,用于返回私有的静态成员变量
        {
            return a_weight;
        }
    private:
        int weight;
        static int a_weight;     //统计仓库的总重量
    };
    int Goods::a_weight = 0;     //静态成员的初始化
    
    void buy(Goods *&head, int w)  //定义进货函数,形参为引用,或者二级指针,目的是为了能够通过函数修改主函数名为head的链表
    {
        Goods *new_goods = new Goods(w); 
        if (head == NULL)
        {
            head = new_goods;
        }
        else
        {
            new_goods->next = head;    //在表头插入,此步骤意为新传入的w的next指向头指针head所指向的地址,即原链表的第一个元素
            head = new_goods;          //修改表头指针使表头指针指向新添加的w的地址空间
        }
    }
    
    void sale(Goods *&head)        //定义出货函数,形参为引用,目的是为了能够通过函数修改主函数名为head的链表
    {
        if (head == NULL)
        {
            cout << "仓库已经没有货物了" << endl;
        }
        else {
            Goods *temp = head;       //建立一个临时temp,使其指向Head指向的第一个元素的地址
            head = head->next;        //修改头指针,使其指向第二个元素
            delete temp;
            cout << "saled..." << endl;
        }
    }
    int main()
    {
        int choice;
        int w;             //定义需要进货的货物的重量的变量w
        Goods *head = NULL;
        do {
            cout << "------------------------" << endl;
            cout << "          1.进货        " << endl;
            cout << "          2.出货        " << endl;
            cout << "          0.退出        " << endl;
            cout << "------------------------" << endl;
            cin >> choice;
            switch (choice)
            {
            case 1:
                //进货
                cout << "请输入需要进货的货物的重量" << endl;
                cin >> w;
                buy(head, w);    //传进链表和重量w
                break;
            case 2:
                //出货
                sale(head);      //传进链表
                break;
            case 0:
                return 0;
            default:
                break;
            }
            cout << "当前仓库的总重量为" << Goods::sum() << endl;
        } while (1);
    
        system("pause");
        return 0;
    }
  • 相关阅读:
    第2章 创建基础框架
    目录
    工厂方法模式(Factory Method)
    petshop4.0 详解之七(PetShop表示层设计)
    第1章 启动电子商务网站
    第3章 创建商品目录:第Ⅰ部分
    编写一个JAVA应用程序,用户从键盘只能输入整数,程序输出这些整数的乘积
    书上例题练习第一章
    java与C/C++的区别
    安装JDK遇到的问题
  • 原文地址:https://www.cnblogs.com/god-for-speed/p/10925862.html
Copyright © 2011-2022 走看看