KFC收银系统

一.同学们应该都去麦当劳或肯德基吃过快餐吧?请同学们参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能:1.正常餐品结算和找零。2.基本套餐结算和找零。3.使用优惠劵购买餐品结算和找零。4.可在一定时间段参与店内活动(自行设计或参考官网信息)。5.模拟打印小票的功能(写到文件中)。基本要求:1.程序设计风格良好,控制台界面友好,最多两人一组完成任务。2.实现功能测试代码,确保程序的健壮性。画出使用的设计模式图。
二.设计模式本题采用的单例模式和策略模式:在所有的肯德基店中,收银系统只有一台,将所有的功能都置于收银系统中,即可完成收银系统的功能。在收钱在一部分,不管是普通支付,优惠券支付和折扣支付都是完成支付这一功能,只是采用了不同的形式而已,因此选择策略模式。
三.UML类图
在这里插入图片描述
四.代码

public static void main(String[] args) {
  Scanner scan = new Scanner(System.in);
  ArrayList<Integer> list = new ArrayList<>();
  CollectMoneySystem ms = CollectMoneySystem.getInstance();
  System.out.println("欢迎来到肯德基");
  menu();
  System.out.println("请输入你想执行的操作:");
  int choice  = scan.nextInt();
  while(true) {
   switch(choice) {
   case(1):foodMenu();
           break;
   case(2):System.out.println("请输入你想要的相应食物编号:(请以-1结束输入)");
        while(true) {
         int num = scan.nextInt();
         if(num == -1) {
           break;
         }
         list.add(num);
        }
        break;
   case(3):double sum = totalMoney(list);
           System.out.println("您的账单是" + sum + "元");
           System.out.println("请选择您所有支付的类型:");
           System.out.println("1.普通支付");
           System.out.println("2.优惠卷支付");
           System.out.println("3.折扣支付");
           int answer = scan.nextInt();
           ms.getPayWay(answer);
           System.out.println("请支付您的账单:");
           double cash = scan.nextDouble();
           double money = ms.cm.collectMoney(sum, cash);
           System.out.println("找您的零钱为:" + money);
           break;
   case(4):System.out.println("请输入活动类型的数字:");
           System.out.println("1.Activity1");
           System.out.println("2.Activity2");
           answer = scan.nextInt();
           ms.getActWay(answer);
           ms.oa.showActivityInfo();
   case(5):ms.pr.print(list);
   }
   if(choice == 6) {
    System.out.println("感谢使用肯德基自主选餐系统");
    break;
   }
   menu();
         System.out.println("请输入你想执行的操作:");
         choice = scan.nextInt();
  }
  
   
 }
 //功能菜单
 public static void menu() {
  System.out.println("1.查看菜单");
  System.out.println("2.开始选餐");
  System.out.println("3.结算账单");
  System.out.println("4.查看最近活动信息");
  System.out.println("5.打印小票");
  System.out.println("6.退出");
 }
 //食物菜单
 public static void foodMenu() {
  System.out.println("*****************************************");
  System.out.println("主食系列:");
  System.out.println("1.香辣鸡腿堡..........12.5元");
  System.out.println("2.劲脆鸡腿堡..........12.5元");
  System.out.println("3.新奥尔良烤鸡腿堡......13.5元");
  System.out.println("4.鸡米花.............7.5元");
  System.out.println("5.黑椒鸡块............7元");
  System.out.println("6.上校鸡块(6块).......11元");
  System.out.println("饮品系列:");
  System.out.println("7.牛奶...............5元");
  System.out.println("8.百事可乐/美年达.......6元");
  System.out.println("9.珍珠奶茶............7元");
  System.out.println("套餐系列:");
  System.out.println("10.套餐A:劲脆鸡腿堡+中杯可乐.....13.5元");
  System.out.println("11.套餐B:上校鸡块(四块)+土豆泥+美年达...15元");
  System.out.println("12.套餐C:香辣鸡腿堡+黑椒鸡块+小杯可乐....18元");
  System.out.println("*****************************************");
 }
 //计算顾客所选食物的总价钱  
    public static double totalMoney(ArrayList<Integer> list) {
      double sum = 0.0;
   for(int i = 0 ;i<list.size();i++) {
    int food = list.get(i);
    switch(food) {
    case(1):sum += 12.5;
      break;
    case(2):sum += 12.5;
            break;
    case(3):sum += 13.5;
            break;
    case(4):sum += 7.5;
                  break;
    case(5):sum += 7;
                  break;
    case(6):sum += 11;
                        break;
    case(7):sum += 5;
                        break;
    case(8):sum += 6;
                        break;
    case(9):sum += 7;
                        break;
       case(10):sum += 13.5;
                        break;
    case(11):sum += 15;
                        break;
    case(12):sum += 18;
                        break;
      }
   }
    
      return sum;
   }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值