JAVA实例练习--餐厅点菜

/*

餐厅点菜。顾客到一家餐馆去吃饭,他可以点餐厅菜单中有的菜。

设计:(在上次实验基础上改造)

(1)将菜品类作为抽象的父类:属性包括菜品名称、配料列表两个属性,包括构造方法和属性的getXxx()/setXxx()方法,包括烹饪过程的抽象方法。

(2)定义至少两种菜品的子类,如川菜、东北菜等,并定义该类自己的独有特性,实现抽象方法。

(3)厨师类:包含姓名属性和对应的getXxx()/setXxx()方法、构造方法。包含菜品准备方法,接收菜品作为参数,能够输出哪位厨师正在准备哪些材料。包含烹饪方法,接收菜品作为参数,能够输出哪位厨师正在烹饪什么菜品,输出烹饪过程。

(4)餐厅类:包含餐厅名称、厨师、菜单三个属性及构造方法和getXxx()/setXxx()方法,厨师可以有若干个(数组),菜单应包含很多菜品(数组)。包含欢迎方法,输出欢迎信息。包含点餐方法,该方法可以接收菜品名称,并指定一个厨师去烹饪。

(5)主类:初始化若干不同的菜品对象和厨师对象,初始化餐厅对象,模拟点菜过程。

*/

1,Canteen类

package restaurant;
import restaurant.*;
public class Canteen {
	private String name;
	private Cooker[] chef;
	private Menu[] menu;
	public Canteen() {
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name=name;
	}
	public Cooker[] getChef() {
		return chef;
	}
	public void setChef(Cooker[] chef) {
		this.chef=chef;
	}
	public Menu[] getMenu() {
		return menu;
	}
	public void setMenu(Menu[] menu) {
		this.menu=menu;
	}
	public void welcome() {
		System.out.println("欢迎你来到"+name+"餐厅!");
	}
	public void byeBye() {
		System.out.println("欢迎下次光临");
	}
	public void order(String dishName) {
		Menu orderName=null;
		for(Menu dish:menu) {
			if(dish.getName().equals(dishName)) {
				orderName=dish;
				break;
			}
		}
		if(orderName!=null) {
			orderName.printFood(dishName);
			 Random random = new Random();  
	         Cooker assignedChef = chef[random.nextInt(chef.length)];
	         assignedChef.prepareMenu(orderName);
	         assignedChef.cookMenu(orderName);
		}
		else {
			System.out.println("不好意思,我们没有找到这道菜品。");
		}
	}
}

2,Cooker类

package restaurant;
import restaurant.*;
public class Cooker {
	private String name;
	public Cooker(){
		
	}
	public void setName(String name) {
		this.name=name;
	}
	public String getName() {
		return name;
	}
	public void prepareMenu(Menu dishName) {
		System.out.println("此时是厨师"+name+",正在准备:"+Arrays.toString(dishName.getIngredient()));
	}
	public void cookMenu(Menu dishname) {
		System.out.println("此时是厨师"+name+",正在用:"+dishname.getCookMethod()+"烹饪方法,"+"烹饪菜品是:"+dishname.getName());
	}
}

3,Main类

package restaurant;
import java.util.Scanner;
public class Main {
	public static void main(String[] args) { 
		Scanner sc=new Scanner(System.in);
		boolean  flag=true;
		Menu menu1 = new Menu();
		menu1.setName("宫保鸡丁");
		menu1.setIngredient(new String[]{"鸡肉", "花生", "辣椒"});
		menu1.setCookMethod("炒");
		Menu menu2 = new Menu();  
		menu2.setName("鱼香肉丝");
		menu2.setIngredient(new String[]{"鱼肉", "胡萝卜", "木耳"});
		menu2.setCookMethod("炒");
		Menu menu3 = new Menu();  
		menu3.setName("油焖大虾");
		menu3.setIngredient(new String[]{"大虾", "番茄酱", "辣椒"});
		menu3.setCookMethod("油焖");
		Menu[] menu = {menu1,menu2,menu3};

		Cooker cooker1=new Cooker();
		cooker1.setName("詹妮");
		Cooker cooker2=new Cooker();
		cooker2.setName("丹尼");
		Cooker cooker3=new Cooker();
		cooker3.setName("李明");
		Cooker[] cookers= {cooker1,cooker2,cooker3};
		Canteen canteen=new Canteen();
		canteen.setChef(cookers);
		canteen.setMenu(menu);
		canteen.setName("奇妙之旅");
		canteen.welcome();
		while(flag) {
			System.out.println("请输入你想点的菜:");
			String orderName=sc.next();
			canteen.order(orderName);
			System.out.println("你是否想继续点餐?(1为是,2为否)");
			int choice=sc.nextInt();
			if(choice==1) continue;
			else {
				canteen.byeBye();
				break;
			}
		}
		
		
		
		
	}
}

4,Menu类

package restaurant;

import java.util.Arrays;
public class Menu {
   private String name;
   private String[] ingredients;
   private String cookMethod;
   public String getName() {
	   return name;
   }
   public void setName(String name) {
	   this.name=name;
   }
   public String[] getIngredient() {
			   return ingredients;
		 
   }
   public void setIngredient(String[] ingredients) {
	   this.ingredients=ingredients;
   }
   public String getCookMethod() {
	   return cookMethod;
   }
   public void setCookMethod(String cookMethod) {
	   this.cookMethod=cookMethod;
   }
   public void printFood(String name) {
	   System.out.println("您所点的菜品为"+name+','+"所涉及到的配料列表为:"+Arrays.toString(ingredients));
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值