同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++/python/Java,结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
用时2周。
基本要求:
- 程序设计风格良好,控制台界面友好,最多两人一组完成任务。
- 实现功能测试代码,确保程序的健壮性。
- 画出使用的设计模式图。
源代码:
#include <iostream>
using namespace std;
#include <string>
class kfc
{
public:
string drink;//饮品
string food;//主食
float xuebi; //雪碧
float cola;//可乐
float water; //矿物质水
float naicha; //奶茶
float doujiang; //豆浆
float shutiao;//薯条
float maixiangji; //麦香鸡
float mailajichi;//麦辣鸡翅
float jituihanbao;//鸡腿汉堡
float xiarenhanbao;//虾仁汉堡
kfc() //定义构造函数
{
xuebi=9.00; //雪碧
cola=5.50;//可乐
water=5.00; //矿物质水
naicha=9.00; //奶茶
doujiang=8.50; //豆浆
shutiao=7.00;//薯条
maixiangji=9.00; //麦香鸡
mailajichi=16.00;//麦辣鸡翅
jituihanbao=16.50;//鸡腿汉堡
xiarenhanbao=10.00;//虾仁汉堡
}
void display()//显示本店信息
{
cout<<"--------------------------"<<endl;
cout<<"以下是本店的饮品信息:"<<endl;
cout<<"--------------------------"<<endl;
cout<<"1.雪碧(单价:9.00/杯)"<<endl;
cout<<"2.可乐(单价:5.50/杯)"<<endl;
cout<<"3.矿物质水(单价:5.50/杯)"<<endl;
cout<<"4.奶茶(单价:9.90/杯)"<<endl;
cout<<"5.豆浆(单价:8.50/杯)"<<endl;
cout<<"---------------------------"<<endl;
cout<<"以下是本店的主食信息:"<<endl;
cout<<"---------------------------"<<endl;
cout<<"6.薯条(单价:7.00/份)"<<endl;
cout<<"7.麦香鸡(单价:9.00/份)"<<endl;
cout<<"8.麦辣鸡翅(单价:16.00/份)"<<endl;
cout<<"9.鸡腿汉堡(单价:16.50/份)"<<endl;
cout<<"10.虾仁汉堡(单价:10.00/份)"<<endl;
cout<<"11.劲爆鸡米花(单价:7.00/份)"<<endl;
cout<<"----------------------------"<<endl;
cout<<"以下是本店的套餐信息:"<<endl;
cout<<"----------------------------"<<endl;
cout<<"1.麦香鸡超值套餐(单价:20.00/份)"<<endl;
cout<<"2.鸡腿汉堡超值套餐(单价:18.00/份)"<<endl;
cout<<"3.麦辣鸡翅超值套餐(单价:11.00/份)"<<endl;
cout<<"----------------------------"<<endl;
}
};
class commonpay //: public mfc 正常餐品结算和找零
{
public:
void paymoney(int x)
{
float price,sum=0.0,sum1,money;
int j;
while(x>0&&x<12)
{
switch(x)
{
case 1:cout<<"雪碧:(price:9.00)";price=9.00;break;
case 2:cout<<"可乐:(price:5.50)";price=5.50;break;
case 3:cout<<"矿物质水:(price:5.00)";price=5.00;break;
case 4:cout<<"奶茶:(price:9.90)";price=9.90;break;
case 5:cout<<"豆浆:(price:8.50)";price=8.50;break;
case 6:cout<<"薯条:(price:7.00)";price=7.00;break;
case 7:cout<<"麦香鸡:(price:9.00)";price=9.00;break;
case 8:cout<<"麦辣鸡翅:(price:16.00)";price=16.00;break;
case 9:cout<<"鸡腿汉堡:(price:16.00)";price=16.50;break;
case 10:cout<<"虾仁汉堡:(price:10.00)";price=10.00;break;
case 11:cout<<"劲爆鸡米花:(price:7.00)";price=7.00;break;
}
sum+=price;
cout<<"如果您想继续点,请在1到11选择。否则,按1以下或11以上数退 出"<<endl;
cin>>x;
}
cout<<"如果您没有优惠券请选择1,有优惠券请选择2"<<endl;
cin>>j;
switch(j)
{
case 1:cout<<"您本次消费的总费用为:"<<sum<<endl;
case 2:sum=sum*0.8;cout<<"您本次消费的总费用为:"<<sum<<endl;
}
cout<<"请您付款(输入付款金额)"<<endl;
cin>>money;
sum1=money-sum;
cout<<"找零:"<<sum1<<endl;
}
};
class basepay //: public mfc基本套餐结算和找零
{
public:
void paymoney1(int m)
{
float price,sum=0.0,sum1,money;
int j;
while(m>0&&m<4)
{
switch(m)
{
case 1:cout<<"麦香鸡超值套餐:麦香鸡+薯条+可乐(单价:20.00/份)";price=20.00;break;
case 2:cout<<"鸡腿汉堡超值套餐:鸡腿汉堡+薯条+可乐(单价:18.00/份)";price=18.00;break;
case 3:cout<<"麦辣鸡翅超值套餐:麦辣鸡翅+可乐(单价:11.00/份)";price=11.00;break;
}
sum+=price;
cout<<"如果您想继续点,请在1到3选择。否则,按1以下或3以上数字"<<endl;
cin>>m;
}
cout<<"如果您没有优惠券请选择1,有优惠券请选择2"<<endl;
cin>>j;
switch(j)
{
case 1:cout<<"您本次消费的总费用为:"<<sum<<endl;
case 2:sum=sum*0.9;cout<<"您本次消费的总费用为:"<<sum<<endl;
}
cout<<"请您付款(输入付款金额)"<<endl;
cin>>money;
sum1=money-sum;
cout<<"找零:"<<sum1<<endl;
}
};
void main()
{
kfc kfc1;
commonpay commonpay1;
basepay basepay1;
int y,n,k;
kfc1.display ();
cout<<"请您选择1(正常餐品)或2(套餐)"<<endl;
cin>>k;
switch(k)
{
case 1:cout<<"请输入您要点的食品编号(1到11选择餐品)"<<endl;
cin>>y;
commonpay1.paymoney (y);
break;
case 2:cout<<"请输入您所需要的套餐编号(1到3选择餐品)"<<endl;
cin>>n;
basepay1.paymoney1(n);
break;
}
}
调试截屏: