简易KFC点餐系统
一:题目要求
同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:
1.正常餐品结算和找零。
2.基本套餐结算和找零。
3.使用优惠劵购买餐品结算和找零。
4.可在一定时间段参与店内活动(自行设计或参考官网信息)。
5.模拟打印小票的功能(写到文件中)。
基本要求:
- 程序设计风格良好,控制台界面友好,最多两人一组完成任务。
- 实现功能测试代码,确保程序的健壮性。
- 画出使用的设计模式图。
提高要求:
- 实现可视化界面(使用MFC)。
- 实现会员储值卡功能,完成储值卡消费。
- 实现当天营业额和餐品销量计算和统计,用数据库记录。
二:题目分析及算法实现
1 以drink为例, 其他汉堡(hamburger),套餐(setmeal),主食(Staplefood),小吃(snack)均于其相似。
建立drink接口
public interface drink {
int price(int num);
}
各类饮料以drink类为父类,如
class kele implements drink{
public int price(int num){
int price=6;
return price*num;
}
}
class chengzhi implements drink{
public int price(int num){
int price=8;
return price*num;
};
}
class kafei implements drink{
public int price(int num){
int price=10;
return price*num;
}
}
建立抽象工厂drinkfactory
class drinkfactory{
drink producedrink(int n){
if(n==11)
return new kele();
else if(n==12)
return new chengzhi();
else if(n==13)
return new naicha();
else if(n==14)
return new kafei();
else
return null;
}
}
建立Mainapp类,实现点餐菜单和文件存储,主要使用Switch语句对已有餐品进行编号,并选购。进行付款时为防止支付金额不足添加了判断如下:
System.out.println("总价为:"+sumprice+"元");
System.out.print("是否使用优惠券(1.是 2.否):");
Scanner in=new Scanner(System.in);
int s2=in.nextInt();
int s4=0,s5=0;
if(s2==1)
{System.out.print("请输入优惠券金额:");
int s3=in.nextInt();
yingfu=sumprice-s3;
System.out.println("应付金额为:"+yingfu+"元");
System.out.print("实付金额:");
s4=in.nextInt();
if(s4<yingfu) {
System.out.print("支付金额不足,请重新支付");
System.out.print("实付金额:");
s4=in.nextInt();
}
zhaoling=s4-yingfu;
}
else {
System.out.println("应付金额:"+sumprice+"元");
System.out.print("实付金额:");
s5=in.nextInt();
if(s5<sumprice) {
System.out.print("支付金额不足,请重新支付");
System.out.print("实付金额:");
s5=in.nextInt();
}
zhaoling=s5-sumprice;
}
System.out.print("找零:"+zhaoling+"元");
小票打印实现为:
try {
FileWriter out=new FileWriter("小票.txt");
out.write("产品清单:"+"\r\n"+st);
out.write("\r\n");
out.write("总价:"+sumprice+"元");
out.write("\r\n");
out.write("应付金额:"+yingfu+"元");
out.write("\r\n");
if(s2==1) {
out.write("实付金额:"+s4+"元");
}
out.write("实付金额:"+s5+"元");
out.write("\r\n");
out.write("找零:"+zhaoling+"元");
out.write("\r\n");
out.write("谢谢惠顾!");
out.close();
}catch(Exception e) {
e.printStackTrace();
}
三:主要类图
四:运行截图
主要菜单
对付款金额的判断
点餐及小票的存储