请给我写一个Java面向对象点餐系统 要求用到面向对象的相关知识点内容,用到ArrayList或者HashMap

时间: 2024-01-21 11:18:02 浏览: 29
好的,以下是一个简单的Java面向对象点餐系统的代码示例: Menu.java 文件: ``` import java.util.ArrayList; public class Menu { private ArrayList<MenuItem> items; public Menu() { items = new ArrayList<>(); } public void addItem(MenuItem item) { items.add(item); } public ArrayList<MenuItem> getItems() { return items; } } ``` MenuItem.java 文件: ``` public class MenuItem { private String name; private double price; public MenuItem(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public double getPrice() { return price; } } ``` Order.java 文件: ``` import java.util.HashMap; public class Order { private HashMap<MenuItem, Integer> items; public Order() { items = new HashMap<>(); } public void addItem(MenuItem item, int quantity) { items.put(item, quantity); } public HashMap<MenuItem, Integer> getItems() { return items; } public double getTotal() { double total = 0; for (MenuItem item : items.keySet()) { total += item.getPrice() * items.get(item); } return total; } } ``` Restaurant.java 文件: ``` import java.util.Scanner; public class Restaurant { private Menu menu; private Order currentOrder; public Restaurant() { menu = new Menu(); currentOrder = new Order(); } public void start() { initializeMenu(); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("Please select an option:"); System.out.println("1. View Menu"); System.out.println("2. Add Item to Order"); System.out.println("3. View Current Order"); System.out.println("4. Submit Order"); System.out.println("5. Exit"); int option = scanner.nextInt(); switch (option) { case 1: displayMenu(); break; case 2: addItemToOrder(); break; case 3: displayOrder(); break; case 4: submitOrder(); break; case 5: return; } } } private void initializeMenu() { menu.addItem(new MenuItem("Hamburger", 5.99)); menu.addItem(new MenuItem("Cheeseburger", 6.99)); menu.addItem(new MenuItem("French Fries", 2.99)); menu.addItem(new MenuItem("Onion Rings", 3.99)); menu.addItem(new MenuItem("Soda", 1.99)); } private void displayMenu() { System.out.println("Menu:"); for (MenuItem item : menu.getItems()) { System.out.println(item.getName() + " - $" + item.getPrice()); } } private void addItemToOrder() { Scanner scanner = new Scanner(System.in); System.out.println("Enter the name of the item:"); String itemName = scanner.nextLine(); System.out.println("Enter the quantity:"); int quantity = scanner.nextInt(); for (MenuItem item : menu.getItems()) { if (item.getName().equalsIgnoreCase(itemName)) { currentOrder.addItem(item, quantity); System.out.println(quantity + " " + itemName + "(s) added to order."); return; } } System.out.println("Item not found."); } private void displayOrder() { System.out.println("Current Order:"); for (MenuItem item : currentOrder.getItems().keySet()) { int quantity = currentOrder.getItems().get(item); System.out.println(quantity + " " + item.getName() + "(s) - $" + item.getPrice() * quantity); } System.out.println("Total: $" + currentOrder.getTotal()); } private void submitOrder() { System.out.println("Order submitted."); currentOrder = new Order(); } } ``` 这个点餐系统使用了以下面向对象的知识点: - 类和对象:Menu、MenuItem、Order、Restaurant - 封装:将数据(items、name、price、quantity)封装在类中,并提供公共方法来访问它们。 - 继承(没有在这个示例中使用):如果需要,可以创建子类来继承父类的属性和方法。 - 多态(没有在这个示例中使用):如果需要,可以使用多态来允许不同类型的对象对相同的方法进行不同的操作。 - ArrayList:用于存储 MenuItem 对象的集合。 - HashMap:用于存储 Order 中 MenuItem 和数量之间的映射关系。 这个点餐系统可以通过以下方式使用: ``` Restaurant restaurant = new Restaurant(); restaurant.start(); ``` 这将启动点餐系统并开始循环提示用户进行操作。用户可以选择查看菜单、向订单添加项目、查看当前订单、提交订单或退出系统。

相关推荐

最新推荐

recommend-type

Java中ArrayList去除重复元素(包括字符串和自定义对象)

本文主要介绍了Java中ArrayList去除重复元素(包括字符串和自定义对象)的方法。具有很好的参考价值。下面跟着小编一起来看下吧
recommend-type

java ArrayList集合中的某个对象属性进行排序的实现代码

主要介绍了java ArrayList集合中的某个对象属性进行排序的实现代码,需要的朋友可以参考下
recommend-type

Java中ArrayList的removeAll方法详解

主要给大家介绍了关于Java中ArrayList的removeAll方法的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来看看吧。
recommend-type

java的arraylist排序示例(arraylist用法)

主要介绍了java的arraylist排序示例,学习一下arraylist的用法,需要的朋友可以参考下
recommend-type

Java针对ArrayList自定义排序的2种实现方法

主要介绍了Java针对ArrayList自定义排序的2种实现方法,结合实例形式总结分析了Java操作ArrayList自定义排序的原理与相关实现技巧,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

get() { return this.photoState },

这是一个 JavaScript 中的方法定义,它定义了一个名为 `get` 的方法。这个方法没有参数,它返回了 `this.photoState`。在这个方法中,`this` 是指当前对象,而 `photoState` 是该对象的一个属性。通常情况下,`get` 方法用于获取对象的属性值,并且可以在获取属性值之前进行一些逻辑操作。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。