(Java)模拟肯德基点餐系统

问题描述

参考肯德基官网的信息模拟肯德基快餐店的收银系统,结合设计模式(2种以上)至少实现系统的以下功能:

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

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

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

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

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

问题分析

要产生不同的食物类,不难想到要用到抽象工厂模式,即定义抽象工厂类,具体工厂类生产对应的具体产品。

要根据不同的结账方式实现餐品结算,就可以用到策略模式,即用每一个结账类封装不同的结账方式。

UML类图

工厂模式

策略模式

方法说明

本系统的层级结构如下:

本系统的菜单层级关系如下:

以下就每个方法进行具体说明。

(食物基本信息类baseFood)

因为要在主菜单打印食物信息,所以需要一个食物信息类和打印食物信息的基类。

public class baseFood {
    // 类别
    protected String kind;
    // 数量
    protected int num;
    // 价格
    protected float price;
    // 合计
    public float totalPrice()
    {
        return this.num * this.price;
    }
}

 

(打印食物信息接口)

public interface IFood {
    String printMessage();
}

(抽象肯德基工厂接口类)

抽象工厂类,定义了如下抽象方法。

createHamburg()制作汉堡包;

createIceCream()制作冰激凌;

createBeverage()制作饮料;

createChicken()制作炸鸡;

其中的参数kind传入食品的代号,num传入食品的数量。

public interface KFCFactoryImpl {
    public Hamburg createHamburg(int kind,int num);
    public IceCream createIceCream(int kind, int num);
    public Beverage createBeverage(int kind, int num);
    public Chicken createChicken(int kind, int num);
}

(具体肯德基厨房类)

具体肯德基厨房实现抽象接口生产所需的食物。本程序实现了四个抽象产品:

汉堡包Hamburg

冰激凌IceCream

饮料Beverage

炸鸡 Chicken

//具体肯德基厨房工厂
public class KFCFoodFactory implements KFCFactoryImpl {
    @Override
    //制作汉堡包
    public Hamburg createHamburg(int kind, int num) {
        if(1 == kind){
            return new BigMacHam(num);//巨无霸
        }else if(2 == kind){
            return new SpicyChickenHam(num);//香辣鸡腿堡
        }else if(3 == kind){
            return new OrleansChickenHam(num);//奥尔良鸡腿堡
        }else{
            return null;
        }
    }

    //制作冰激凌
    @Override
  
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值