1.項目介紹
該項目能夠實現簡單的餐廳點菜,查看已點菜品,刪除菜品,結賬等基本操作。 顧客進行點餐時首先進入主菜單中,在主菜單中可以選擇相應的操作,用戶可以選擇每項操作前的序號即可進入到相應操作的子菜單,在子菜單中也可以選擇相應的操作。
2.項目設計規划
該項目的實現主要依靠三個類來實現:
1.Dish類,主要作用用於封裝菜品,以及初始化后的菜單
2.DishApp(程序入口方法)主類,點菜的主程序
3.DishInterface類,定義多個方法,顯示各種操作對應的菜單
3.運行效果
4.代碼如下
4.1 Dish類
package com.hao;
import java.util.ArrayList;
import java.util.List;
public class Dish{
/**
* 編號
*/
private int id;
/**
* 菜名
*/
private String name;
/**
* 價格
*/
private double price;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Dish() {
}
public Dish(int id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
/**
* 初始化菜單
*
* @return 初始化后的菜單
*/
public List<Dish> initMenu() {
List<Dish> dishList = new ArrayList<>();
dishList.add(new Dish(1, "爆火牛肉", 58));
dishList.add(new Dish(2, "鮮甲魚湯", 68));
dishList.add(new Dish(3, "鐵板鹵蛋", 38));
dishList.add(new Dish(4, "泡椒炒肉", 48));
dishList.add(new Dish(5, "麻婆豆腐", 18));
dishList.add(new Dish(6, "干煸豆角", 28));
dishList.add(new Dish(7, "清炒時蔬", 25));
dishList.add(new Dish(8, "涼拌黃瓜", 10));
dishList.add(new Dish(9, "胡椒皮蛋", 15));
dishList.add(new Dish(10, "紅燒茄子", 20));
return dishList;
}
/**
* 展示菜單
*
* @param dishList 菜品列表
*/
public void showMenu(List<Dish> dishList) {
System.out.println("------------本店菜單------------");
System.out.println("序號\t\t菜名\t\t\t\t單價");
for (int i = 0; i < dishList.size(); i++) {
System.out.format("%d\t\t%s\t\t\t%.2f\n", dishList.get(i).getId(), dishList.get(i).getName(), dishList.get(i).getPrice());
}
System.out.println("---------------------------");
}
/**
* 刪除對應菜品
*
* @param id 菜品對應序號
* @param dishList 菜品列表
* @param orderedList 已點菜品列表
*/
public void deleteDish(int id, List<Dish> dishList, List<Dish> orderedList) {
if (!orderedList.isEmpty()) {
orderedList.remove(dishList.get(id - 1));
}
}
/**
* 查看已點的菜
*/
public void showOrderedMenu(List<Dish> orderedList) {
if (orderedList.isEmpty()) {
System.out.println("當前您還未點餐,請重新輸入選擇");
} else {
System.out.println("當前您點的菜品如下");
for (int i = 0; i < orderedList.size(); i++) {
System.out.println(orderedList.get(i).getName());
}
}
}
/**
* 結賬
*/
public void checkout(List<Dish> orderedList) {
double money = 0.0d;
if (orderedList.isEmpty()) {
System.out.println("當前您還未點餐,請重新輸入選擇");
} else {
System.out.println("請稍等,正在結算中……");
for (int i = 0; i < orderedList.size(); i++) {
money += orderedList.get(i).getPrice();
}
System.out.format("你此次總共消費:¥ %.2f\n", money);
}
}
}
4.2 DishApp類
package com.hao;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class DishApp {
public static void main(String[] args) {
Dish dish = new Dish();
// 初始化菜單
List<Dish> dishList = dish.initMenu();
Scanner scanner = new Scanner(System.in);
List<Dish> orderedList = new ArrayList<>();
while (true) {
System.out.println("----------歡迎使用點餐系統--------");
System.out.println("----------【1】點菜--------------");
System.out.println("----------【2】查看已點菜品-------");
System.out.println("----------【3】刪除菜品-----------");
System.out.println("----------【4】結賬--------------");
System.out.println("----------【0】返回上一級/退出-----");
System.out.println("輸入你的選擇");
String choice = scanner.next();
switch (choice) {
case "1":
while (true) {
dish.showMenu(dishList);
System.out.println("請輸入菜品序號進行點菜,輸入 0 則返回上一級菜單");
int id = scanner.nextInt();
if (id == 0) {
break;
}
System.out.println("輸入菜品序號:" + id);
System.out.println("你點的菜是:" + dishList.get(id - 1).getName());
// 把已點的菜加入已點菜單
orderedList.add(dishList.get(id - 1));
}
break;
case "2":
dish.showOrderedMenu(orderedList);
break;
case "3":
if (orderedList.isEmpty()) {
System.out.println("當前還未點菜,請重新輸入你的選擇");
} else {
System.out.println("輸入要刪除菜品的序號");
int id = scanner.nextInt();
dish.deleteDish(id, dishList, orderedList);
}
break;
case "4":
dish.checkout(orderedList);
break;
case "0":
System.exit(0);
default:
break;
}
}
}
}
4.3 DishInterface類
package com.hao;
import java.util.List;
public interface DishInterface {
/**
* 初始化菜單
*
* @return 返回餐廳當前所提供的菜品列表
*/
public List<Dish> initMenu();
/**
* 顯示菜單
*
* @param dishList 菜品列表
*/
public void showMenu(List<Dish> dishList);
/**
* 顯示已經點過的菜品
*
* @param orderedList 當前已點菜品
*/
public void showOrderedMenu(List<Dish> orderedList);
/**
* 移除菜品
*
* @param id 菜品對應序號
* @param dishList 菜品列表
* @param orderedList 已點菜品列表
*/
public void deleteDish(int id, List<Dish> dishList, List<Dish> orderedList);
/**
* 結賬
*
* @param orderedList
*/
public void checkout(List<Dish> orderedList);
}