简单的饮料贩卖系统

饮料贩卖系统(java)

要求:接收用户输入的信息,选择购买的饮料。可供选择的饮料有:咖啡、矿泉水和可乐。其中,购买咖啡时可以选择:加糖、加奶还是什么都不加。购买可乐时可以选择:买可口可乐还是百事可乐。为了模拟的更加真实一点,我给每个饮料都增加了数量和价格。
分析

  1. 共包含四个实体类,饮料为父类,其余三种饮料为子类。一个管理类,用于进行饮料的购买。
  2. 因为咖啡可以选择加糖加奶什么都不加,可乐又分为百事和可口,所以在主菜单下分了几个子菜单。

代码如下:
饮料类

public class Drink {
	private String name;
	private double prise;
	private int num;

	public Drink(String name, double prise,int num) {
		super();
		this.name = name;
		this.prise = prise;
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public double getPrise() {
		return prise;
	}

	public void setPrise(double prise) {
		this.prise = prise;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

}

咖啡类

public class Coffee extends Drink{

	public Coffee(String name, double prise, int num) {
		super(name, prise, num);
	}
	
}

矿泉水类

public class Writer extends Drink{

	public Writer(String name, double prise, int num) {
		super(name, prise, num);
	}

}

可乐类

public class Coke extends Drink{

	public Coke(String name, double prise, int num) {
		super(name, prise, num);
	}

}

管理类

public class BuyDrink {
	Drink coffee;
	Drink coco;
	Drink bcoco;
	Drink writer;
	Scanner sc = new Scanner(System.in);
	{
		// 利用游离块初始化数据
		coffee = new Coffee("咖啡", 10, 1);
		coco = new Coke("百事可乐", 3, 1);
		bcoco = new Coke("可口可乐", 3, 1);
		writer = new Writer("矿泉水", 2, 1);
	}

	// 主菜单
	public void manu() {
		System.out.println("=================饮料购买系统===============");
		System.out.println("[1]购买饮料================================");
		System.out.println("[0]退出系统================================");
		System.out.println("=========================================");

		System.out.println("请输入");
		int i = sc.nextInt();
		switch (i) {
		case 1:
			// 跳到一号菜单
			manu1();
			break;
		case 0:
			return;
		default:
			System.out.println("输入有误,请重新输入:");
			manu();
			break;
		}
	}

	private void manu1() {
		System.out.println("[1]咖啡====[2]矿泉水====[3]可乐====[任意键]返回上一级");
		int i = sc.nextInt();
		switch (i) {
		case 1:
			// 判断咖啡数量是否大于零,是就跳到2号菜单,否则返回1号菜单
			if (coffee.getNum() > 0)
				manu2();
			else {
				System.out.println("咖啡已售罄,请重新选择");
				manu1();
			}
			break;
		case 2:
			// 判断咖啡数量是否大于零,是就数量减一回到主菜单,不是就回到1号菜单
			if (writer.getNum() > 0) {
				writer.setNum(writer.getNum() - 1);
				System.out.println("购买成功!");
				manu();
			} else {
				System.out.println("矿泉水已售罄,请重新选择");
				manu1();
			}
			break;
		case 3:
			manu3();
			break;
		default:
			manu();
			break;
		}
	}

	private void manu2() {
		System.out.println("[1]加奶====[2]加糖====[3]都不加====[任意键]返回上一级");
		int i = sc.nextInt();
		switch (i) {
		// 选择123咖啡数量都是减一,所以不用break
		case 1:
		case 2:
		case 3:
			System.out.println("购买成功!");
			coffee.setNum(coffee.getNum() - 1);
			manu();
			break;
		default:
			manu1();
			break;
		}
	}

	private void manu3() {
		System.out.println("[1]可口可乐====[2]百事可乐====[任意键]返回上一级");
		int i = sc.nextInt();
		switch (i) {
		case 1:
			if (coco.getNum() > 0) {
				coco.setNum(coco.getNum() - 1);
				System.out.println("购买成功!");
				manu();
			} else {
				System.out.println("可口可乐已售罄,请重新选择");
				manu3();
			}
			break;
		case 2:
			if (bcoco.getNum() > 0) {
				bcoco.setNum(bcoco.getNum() - 1);
				System.out.println("购买成功!");
				manu();
			} else {
				System.out.println("百事可乐已售罄,请重新选择");
				manu3();
			}
			break;
		default:
			manu1();
			break;
		}
	}

}

测试类

public class TestDrink {
	public static void main(String[] args) {
		BuyDrink b = new BuyDrink();
		b.manu();
	}
}

部分测试结果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值