简易KFC点餐系统

一:题目要求

同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:

1.正常餐品结算和找零。

2.基本套餐结算和找零。

3.使用优惠劵购买餐品结算和找零。

4.可在一定时间段参与店内活动(自行设计或参考官网信息)。

5.模拟打印小票的功能(写到文件中)。

基本要求:

  1. 程序设计风格良好,控制台界面友好,最多两人一组完成任务。
  2. 实现功能测试代码,确保程序的健壮性。
  3. 画出使用的设计模式图。

提高要求:

  1. 实现可视化界面(使用MFC)。
  2. 实现会员储值卡功能,完成储值卡消费。
  3. 实现当天营业额和餐品销量计算和统计,用数据库记录。

二:题目分析及算法实现

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();

     }

三:主要类图

简易KFC点餐系统

四:运行截图

主要菜单

简易KFC点餐系统

对付款金额的判断

简易KFC点餐系统

简易KFC点餐系统

点餐及小票的存储

简易KFC点餐系统

简易KFC点餐系统