金拱门快餐店主要出售汉堡、小吃、饮料和甜品等类型的快餐食品,每种类型的食品有不同的产品,例如饮料类食品有可乐、咖啡、茶饮料等。现在让你担任吉珠金拱门连锁门店的经理,负责销售产品的选定和套餐的设计,你需要使用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;
}
}