生产者与消费者问题 ~

金拱门快餐店主要出售汉堡、小吃、饮料和甜品等类型的快餐食品,每种类型的食品有不同的产品,例如饮料类食品有可乐、咖啡、茶饮料等。现在让你担任吉珠金拱门连锁门店的经理,负责销售产品的选定和套餐的设计,你需要使用C/C++的console模式开发一个软件,包含所有销售产品的信息(包括单品和套餐信息),通过一个菜单系统实现顾客的点餐和结算过程,通过管理员权限统计当前结算周期的销售信息(如各产品的销售量、销售额等)
功能需求:
(1) 根据面向对象的设计思想,设计一个抽象类作为基类,封装所有具体产品的共有属性和运算。根据你的产品列表,从基类派生出各具体类,包括单品和套餐产品。
(2) 设计一个菜单类,应该包含但不限定下述多层菜单选项
i. 顾客点餐子菜单:商品列表,顾客可一次购买多种产品
ii. 结算子菜单:顾客点餐完毕自动转入结算界面,现实顾客点餐内容及总金额。要求可以返回点餐菜单进行修改。
iii. 管理员子菜单:密码管理,销售统计,退出系统。
(3) 设计一个订单类,封装每一个售出的订单信息,以供数据统计使用。
(4) 使用外部文件存取数据,方便数据的输入输出。

一般来说,生产者消费者是指并发多线程/多任务同步类型的程序,你这个就是一个一般的C++课程设计

可以参考:https://download.csdn.net/download/lkhack1/3082601
https://download.csdn.net/download/king3200/1460548
https://download.csdn.net/download/lijianquanxue/1719254
https://download.csdn.net/download/u011028630/6560571
https://download.csdn.net/download/Wweichaodeng2009/2627941

采纳本回答,可以代下以上资料。并且另外送你100个c语言程序

一般来说,生产者消费者是指并发多线程/多任务同步类型的程序,你这个就是一个一般的C++课程设计

你这个答案实在太长了,先贴一部分吧:

 class Product {
public:
    Product(const string& aName, double aPrice ) : name(aName), price(aPrice)
    {}
    double getPrice() { return price; }
    string getName() { return name; }
    virtual void wrap() = 0; 
    virtual ~Product() {}

private: 
    double price; 
    string name; 
};

class Hamburg : public Product {
public:
    Hamburg(const string& aName, double aPrice) : Product(aName, aPrice) {}
    virtual void wrap() {
        // use paper or box
    }
};

class Drink : public Product {
public:
    Drink(const string& aName, double aPrice, bool aAddIce = true) : Product(aName, aPrice), addIce(aAddIce) {}
    virtual void wrap() {
        // use cup
    }
private:
    bool addIce; 
};

class Snack : public Product {
public:
    Snack(const string& aName, double aPrice) : Product(aName, aPrice) {}
    virtual void wrap() {
        // use paper
    }
};

class Package : public Product {
public:
    Package(const string& aName, double aPrice) : Product(aName, aPrice) {
    }

    void addProduct(Product *product) {
        products.push_back(product); 
    }

    virtual void wrap() {
        for (int i = 0; i < products.size(); i++) {
            products[i]->wrap(); 
        }
    }

    virtual ~Package() {
        for (int i = 0; i < products.size(); i++) {
            delete(products[i]); 
        }
    }

private:
    vector<Product*> products; 
};

enum ProductType {
    eFires, eCocaCola, eBigMac, ePackageA
};

Product* createProduct(ProductType aProductType) {
    switch (aProductType) {
    case eFires:
        return new Snack("fires", 7.0);
    case eCocaCola:
        return new Drink("cocaCola", 5.0);
    case eBigMac:
        return new Hamburg("bigMac", 11.5);
    case ePackageA:
        Package *p = new Package("packcageA", 23.0);
        p->addProduct(new Snack("fires", 7.0));
        p->addProduct(new Drink("cocaCola", 5.0));
        p->addProduct(new Hamburg("bigMac", 11.5));
        return p; 
    }
}