一、题目名称:模拟肯德基收银系统
二、题目内容:
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。
2.实现功能测试代码,确保程序的健壮性。
3.画出使用的设计模式图。
提高要求:
1.实现可视化界面(使用MFC)。
2.实现会员储值卡功能,完成储值卡消费。
实现当天营业额和餐品销量计算和统计,用数据库记录。
三、算法设计:
四、代码
1.点餐系统代码
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Food
{
protected:
string name;
double price;
int num;
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
virtual void set_name(string name)
{
this->name = name;
}
virtual string get_name()
{
return name;
}
virtual void set_price(double price)
{
this->price = price;
}
virtual double get_price()
{
return price;
}
virtual void set_num(int num)
{
this->num = num;
}
virtual int get_num()
{
return num;
}
};
class Hamburger :public Food
{
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
};
class Snack :public Food
{
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
};
class Drink :public Food
{
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
};
class Set :public Food
{
public:
virtual double get_sum()
{
double sum = price * num;
return sum;
}
};
class Factory
{
public:
virtual Food* food() = 0;
};
class Factory_Hamburger :public Factory
{
public:
Food* food()
{
return new Hamburger;
}
};
class Factory_Snack :public Factory
{
public:
Food* food()
{
return new Snack;
}
};
class Factory_Drink :public Factory
{
public:
Food* food()
{
return new Drink;
}
};
class Factory_Set :public Factory
{
public:
Food* food()
{
return new Set;
}
};
class xiaopiao
{
public:
virtual void output() = 0;
} ;
class H1 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "巨无霸--" << num << "份" <<endl;
outfile << "巨无霸--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class H2 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "双层吉士汉堡--" << num << "份" <<endl;
outfile << "双层吉士汉堡--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class H3 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "麦辣鸡腿汉堡--" << num << "份" <<endl;
outfile << "麦辣鸡腿汉堡--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class S1 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "大薯条--" << num << "份" <<endl;
outfile << "大薯条--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class S2 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "麦乐鸡--" << num << "份" <<endl;
outfile << "麦乐鸡--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class D1 : public xiaopiao
{
public:
void get_num(int n)
{
num = n;
}
void output()
{
if(0 != num)
{
ofstream outfile("receipt.dat", ios::out);
cout << "可口可乐--" << num << "份" <<endl;
outfile << "可口可乐--" << num << "份" << endl;
outfile.close();
}
}
protected:
int num;
};
class D2