一、使用技術
javaSE
二、實作功能
外賣訂餐系統
具體要求如下:
使用選擇結構,循環結構,數組的知識實作一個外賣訂餐系統
三、運作效果圖如下:
1.訂餐功能

2.檢視餐袋
3.簽收訂單
4.删除訂單
5.點贊
6.退出
分析圖檔資訊,可以看出我們需要建立一個菜單類,檢視餐帶類和點贊菜單類
1.首先我們建立一個菜單類,用來定義菜單的屬性,使用到封裝,構造方法,和toString方法。
public class Food {//菜單
@Override
public String toString() {
return "Food{" +
"num=" + num +
", name='" + name + '\'' +
", price=" + price +
'}';
}
private int num;
private String name;
private double price;
public Food() {
}
public Food(int num, String name, double price) {
this.num = num;
this.name = name;
this.price = price;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
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;
}
}
2.其次,我們在建立一個檢視餐袋類
public class SeeFood {//檢視餐帶
private int num;//序号
private String name;//訂餐人
//private String information;//資訊
private String food;//菜品
private int num1;//份數
private int date;//送餐日期
private String address;//送餐位址
private double money;//金額
private String state;//訂單狀态
@Override
public String toString() {
return "SeeFood{" +
"num=" + num +
", name='" + name + '\'' +
", food='" + food + '\'' +
", num1=" + num1 +
", date='" + date + '\'' +
", address='" + address + '\'' +
", money=" + money +
", state='" + state + '\'' +
'}';
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFood() {
return food;
}
public void setFood(String food) {
this.food = food;
}
public int getNum1() {
return num1;
}
public void setNum1(int num1) {
this.num1 = num1;
}
public int getDate() {
return date;
}
public void setDate(int date) {
this.date = date;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public SeeFood() {
}
public SeeFood(int num, String name, String food,
int num1, int date, String address,
double money, String state) {
this.num = num;
this.name = name;
this.food = food;
this.num1 = num1;
this.date = date;
this.address = address;
this.money = money;
this.state = state;
}
}
3.再建立一個點贊菜單類
public class FabulousFood {//點贊菜單
private int num;//序号
private String name;
private double price;
private int numfabulous;//點贊序号
private String fabulous;
@Override
public String toString() {
return "FabulousFood{" +
"num=" + num +
", name='" + name + '\'' +
", price=" + price +" "+
numfabulous +
fabulous + '\'' +
'}';
}
public FabulousFood() {
}
public FabulousFood(int num, String name, double price, int numfabulous, String fabulous) {
this.num = num;
this.name = name;
this.price = price;
this.numfabulous = numfabulous;
this.fabulous = fabulous;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
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 int getNumfabulous() {
return numfabulous;
}
public void setNumfabulous(int numfabulous) {
this.numfabulous = numfabulous;
}
public String getFabulous() {
return fabulous;
}
public void setFabulous(String fabulous) {
this.fabulous = fabulous;
}
}
4.建立點餐系統實作其功能,每個功能都使用方法來實作
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class OrderFood {//點餐
static Scanner sc=new Scanner(System.in);
static int date;//送餐時間
static int number=0;//餐帶序号
public static void main(String[] args) {
ArrayList<Food> list = new ArrayList<>();
list.add(new Food(1, "紅燒茄子", 24));
list.add(new Food(2, "紅燒排骨", 36));
list.add(new Food(3, "魚香肉絲", 32));
ArrayList<FabulousFood> list2 = new ArrayList<>();
list2.add(new FabulousFood(1, "紅燒茄子", 24,0,"贊"));
list2.add(new FabulousFood(2, "紅燒排骨", 36,0,"贊"));
list2.add(new FabulousFood(3, "魚香肉絲", 32,0,"贊"));
ArrayList<SeeFood> list1 = new ArrayList<>();
System.out.println(" 歡迎使用“外賣點餐系統”");
System.out.println("*******************************");
orderFood(list,list1,list2);
}
public static void orderFood(ArrayList<Food> list1,ArrayList<SeeFood> list2,ArrayList<FabulousFood> list3){//點餐系統界面
// System.out.println(" 歡迎使用“外賣點餐系統”");
//System.out.println("*******************************");
System.out.println("1、我要點餐");
System.out.println("2、檢視餐帶");
System.out.println("3、簽收訂單");
System.out.println("4、删除訂單");
System.out.println("5、我要點贊");
System.out.println("6、退出系統");
System.out.println("*******************************");
System.out.println("請選擇:");
String num=sc.next();
if (num.equals("1")){
orderingFood(list1,list2,list3);
}else if (num.equals("2")){
seeFood(list1, list2,list3);
}else if (num.equals("3")){
signFor(list1, list2,list3);
}else if (num.equals("4")){
deletFood(list1,list2,list3);
}else if (num.equals("5")){
fabulousFood(list1,list2,list3);
}else if (num.equals("6")){
System.out.println("謝謝使用,歡迎下次光臨!");
return;
}else {
System.out.println("輸出錯誤,請重新輸入!");
orderFood(list1,list2,list3);
}
}
public static void fabulousFood(ArrayList<Food> list,ArrayList<SeeFood> list2,ArrayList<FabulousFood> list3){//點贊
System.out.println("******我要點贊******");
System.out.println("序号 菜名 單價");
Iterator<FabulousFood> it = list3.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
System.out.println("請選擇您要點贊的菜品序号:");
int num=sc.nextInt();
for (int i = 0; i <list.size() ; i++) {
if (num==list.get(i).getNum()){
list3.get(i).setNumfabulous((list3.get(i).getNumfabulous()+1));
}
}
System.out.println("點贊成功!");
System.out.println("輸入0傳回");
int b=sc.nextInt();
if (b==0){
orderFood(list,list2,list3);
}
}
public static void deletFood(ArrayList<Food> list,ArrayList<SeeFood> list2,ArrayList<FabulousFood> list3){//删除訂單
System.out.println("請輸入要删除的訂單序号");
int a=sc.nextInt();
for (int i = 0; i <list2.size() ; i++) {
if (a==list2.get(i).getNum()){
list2.remove(list2.get(i));
}
}
System.out.println("删除訂單成功!");
System.out.println("輸入0傳回");
int b=sc.nextInt();
if (b==0){
orderFood(list,list2,list3);
}
}
public static void signFor(ArrayList<Food> list,ArrayList<SeeFood> list2,ArrayList<FabulousFood> list3){//簽收訂單
System.out.println("請輸入要簽收的的訂單序号:");
int sign=sc.nextInt();
for (int i = 0; i <list.size() ; i++) {
if (sign==(list.get(i).getNum())){
list2.get(i).setState("已簽收");
}
}
System.out.println("訂單簽收成功!");
System.out.println("輸入0傳回");
int a=sc.nextInt();
if (a==0){
orderFood(list,list2,list3);
}
}
public static void seeFood(ArrayList<Food> list,ArrayList<SeeFood> list2,ArrayList<FabulousFood> list3){//檢視餐帶
System.out.println("******檢視餐帶******");
System.out.println(" 序号 訂餐人 餐品資訊 送餐日期 " +
" 送餐位址 總金額 訂單狀态");
Iterator<SeeFood> it = list2.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
System.out.println("輸入0傳回");
int a=sc.nextInt();
if (a==0){
orderFood(list,list2,list3);
}
}
public static void orderingFood(ArrayList<Food> list1,ArrayList<SeeFood> list2,ArrayList<FabulousFood> list3){//訂餐
System.out.println("我要訂餐");
System.out.println("請輸入訂餐人的姓名:");
String name=sc.next();
System.out.println("序号 菜名 單價");
Iterator<Food> it = list1.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
System.out.println("請輸入您要點的菜品編号");
int num=sc.nextInt();
System.out.println("請選擇您需要的份數");
int num1=sc.nextInt();
foodDelilvery();
int num3=date;//送餐時間
System.out.println("請輸入送餐位址");
String address=sc.next();
System.out.println("訂餐成功!");
number++;//餐帶序号
System.out.print("您訂的是:");
String food=list1.get(num-1).getName();//菜品
System.out.println(food+" "+num1+"份");
System.out.println("送餐時間:"+date+"點");
double money=list1.get(num-1).getPrice()*num1;//餐費
System.out.println("餐費:"+money
+"元,送餐費6.0元,總計:"+(money+6)+"元");
//姓名,份數,時間,位址,菜品,餐費
list2.add(new SeeFood(number,name,food,num1,num3,address,(money+6),"已預定"));
System.out.println("輸入0傳回:");
String input=sc.next();
if (input.equals("0")){
orderFood(list1,list2,list3);
}else {
System.out.println("歡迎下次光臨");
}
}
static public void foodDelilvery(){//送餐時間
System.out.println("請輸入送餐的時間(送餐時間是10點至20點間整點送餐):");
int num2=sc.nextInt();
date=num2;
if (num2<10||num2>20){
System.out.println("不在送餐時間!");
foodDelilvery();
}
}
}
1.點餐功能
2.檢視餐帶
3.簽收訂單
4.删除訂單
5.我要點贊
6.退出系統