注意:此項目爲剛學完Java基礎至數組的入門程序。
喫貨聯盟訂餐系統Version1.0是在數組的基礎上完成的一個小項目,由於只是運用數組實現了一些簡單的功能,
所以我管它叫Version1.0,即1.0版本。
後續我還會用Java的面向對象的思想,來對這個喫貨聯盟訂餐系統Version1.0進行升級和完善。
希望我們的喫貨聯盟訂餐系統更多版本的升級,慢慢努力!
初出茅廬,如有不足之處,還請指正,謝謝!!
筆芯!!!
package im.meetly.ordersys;
import java.util.Scanner;
/**
* 喫貨聯盟訂餐管理系統Version1.0
* Author KarlChu
*/
public class OrderSys {
public static void main(String[] args) {
// 數據主體:一組訂單信息
String[] names = new String[4]; // 訂餐人名稱
String[] dishMegs = new String[4]; // 所選菜品
int[] times = new int[4]; // 送餐日期
String[] addresses = new String[4]; // 送餐地址
int[] states = new int[4]; // 訂單狀態: 0:已預定 1:已完成
double[] sumPrices = new double[4]; // 總金額
// 初始化2個訂單信息
names[0] = "張晴";
dishMegs[0] = "紅燒帶魚 2份";
times[0] = 3;
addresses[0] = "天成路207號";
sumPrices[0] = 76.0;
states[0] = 1;
names[1] = "張晴";
dishMegs[1] = "魚香肉絲 2份";
times[1] = 10;
addresses[1] = "天成路207號";
sumPrices[1] = 20.0;
// 供選擇的菜品信息
String[] dishNames = { "紅燒帶魚", "魚香肉絲", "時令鮮蔬" }; // 菜品名稱
double[] prices = new double[] { 38.0, 20.0, 10.0 }; // 菜品單價
int[] praiseNums = new int[3];
Scanner input = new Scanner(System.in);
int num = -1; // 用戶輸入0返回主菜單,否則退出系統
boolean isExit = false; // 標誌用戶是否退出系統: true:退出系統
System.out.println("\n歡迎使用“喫貨聯盟訂餐系統”");
// 循環:顯示菜單,根據用戶選擇的數字執行相應功能
do {
// 顯示菜單
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.print("請選擇:");
int choose = input.nextInt(); // 記錄用戶選擇的功能編號
boolean isAdd = false; // 記錄是否可以訂餐
boolean isSignFind = false; // 找到要簽收的訂單
boolean isDelFind = false; // 找到要刪除的訂單
// 根據用戶選擇的功能編號執行相應功能
switch (choose) {
case 1:
// 我要訂餐
System.out.println("***我要訂餐***");
for (int j = 0; j < names.length; j++) {
if (names[j] == null) { // 找到第一個空位置,可以添加訂單信息
isAdd = true; // 置標誌位,可以訂餐
System.out.print("請輸入訂餐人姓名:");
String name = input.next();
// 顯示供選擇的菜品信息
System.out.println("序號" + "\t" + "菜名" + "\t" + "單價");
for (int i = 0; i < dishNames.length; i++) {
String price = prices[i] + "元";
String priaiseNum = (praiseNums[i]) > 0 ? praiseNums[i]
+ "贊"
: "";
System.out.println((i + 1) + "\t" + dishNames[i]
+ "\t" + price + "\t" + priaiseNum);
}
// 用戶點菜
System.out.print("請選擇您要點的菜品編號:");
int chooseDish = input.nextInt();
System.out.print("請選擇您需要的份數:");
int number = input.nextInt();
String dishMeg = dishNames[chooseDish - 1] + " "
+ number + "份";
double sumPrice = prices[chooseDish - 1] * number;
// 餐費滿50元,免送餐費10元
double deliCharge = (sumPrice >= 50) ? 0 : 6;
System.out.print("請輸入送餐時間(送餐時間是10點至20點間整點送餐):");
int time = input.nextInt();
while (time < 10 || time > 20) {
System.out.print("您的輸入有誤,請輸入10~20間的整數!");
time = input.nextInt();
}
System.out.print("請輸入送餐地址:");
String address = input.next();
// 無需添加狀態,默認是0,即已預定狀態。
System.out.println("訂餐成功!");
System.out.println("您訂的是:" + dishMeg);
System.out.println("送餐時間:" + time + "點");
System.out.println("餐費:" + sumPrice + "元,送餐費"
+ deliCharge + "元,總計:"
+ (sumPrice + deliCharge) + "元。");
// 添加數據
names[j] = name;
dishMegs[j] = dishMeg;
times[j] = time;
addresses[j] = address;
sumPrices[j] = sumPrice + deliCharge;
break;
}
}
if (!isAdd) {
System.out.println("對不起,您的餐袋已滿!");
}
break;
case 2:
// 查看餐袋
System.out.println("***查看餐袋***");
System.out.println("序號\t訂餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t總金額\t訂單狀態");
for (int i = 0; i < names.length; i++) {
if (names[i] != null) {
String state = (states[i] == 0) ? "已預定" : "已完成";
String date = times[i] + "日";
String sumPrice = sumPrices[i] + "元";
System.out
.println((i + 1) + "\t" + names[i] + "\t"
+ dishMegs[i] + "\t" + date + "\t"
+ addresses[i] + "\t" + sumPrice + "\t"
+ state);
}
}
break;
case 3:
// 簽收定單
System.out.println("***簽收定單***");
System.out.print("請選擇要簽收的訂單序號:");
int signOrderId = input.nextInt();
for (int i = 0; i < names.length; i++) {
// 狀態爲已預定,序號爲用戶輸入的訂單序號:可簽收
// 狀態爲已完成,序叼爲用戶輸入胡訂單序號:不可簽收
if (names[i] != null && states[i] == 0
&& signOrderId == i + 1) {
states[i] = 1; // 將狀態值置爲已完成
System.out.println("訂單簽收成功!");
isSignFind = true;
} else if (names[i] != null && states[i] == 1
&& signOrderId == i + 1) {
System.out.println("您選擇的訂單已完成簽收,不能再次簽收!");
isSignFind = true;
}
}
// 未找到的訂單序號:不可簽收
if (!isSignFind) {
System.out.println("您選擇的訂單不存在!");
}
break;
case 4:
// 刪除訂單
System.out.println("***刪除訂單***");
System.out.print("請輸入要刪除的訂單序號:");
int delId = input.nextInt();
for (int i = 0; i < names.length; i++) {
// 狀態值爲已完成 序號值爲用戶輸入的序號:可刪除
// 狀態值爲已預定 序號值爲用戶輸入的序號:不可刪除
if (names[i] != null && states[i] == 1 && delId == i + 1) {
isDelFind = true;
// 執行刪除操作:刪除位置後的元素依次前移
for (int j = delId - 1; j < names.length - 1; j++) {
names[j] = names[j + 1];
dishMegs[j] = dishMegs[j + 1];
times[j] = times[j + 1];
addresses[j] = addresses[j + 1];
states[j] = states[j + 1];
}
// 最後一位清空
names[names.length - 1] = null;
dishMegs[names.length - 1] = null;
times[names.length - 1] = 0;
addresses[names.length - 1] = null;
states[names.length - 1] = 0;
System.out.println("刪除訂單成功!");
break;
} else if (names[i] != null && states[i] == 0
&& delId == i + 1) {
System.out.println("您選擇的訂單未簽收,不能刪除!");
isDelFind = true;
break;
}
}
// 未找到該序號的訂單:不能刪除
if (!isDelFind) {
System.out.println("您要刪除的訂單不存在!");
}
break;
case 5:
// 我要點贊
System.out.println("***我要點贊***");
// 顯示菜品信息
System.out.println("序號" + "\t" + "菜名" + "\t" + "單價");
for (int i = 0; i < dishNames.length; i++) {
String price = prices[i] + "元";
String priaiseNum = (praiseNums[i]) > 0 ? praiseNums[i]
+ "贊" : "";
System.out.println((i + 1) + "\t" + dishNames[i] + "\t"
+ price + "\t" + priaiseNum);
}
System.out.print("請選擇您要點讚的菜品序號:");
int priaiseNum = input.nextInt();
praiseNums[priaiseNum - 1]++; // 贊數加1
System.out.println("點贊成功!");
break;
case 6:
// 退出系統
isExit = true;
break;
default:
// 退出系統
isExit = true;
break;
}
if (!isExit) {
System.out.print("輸入0返回:");
num = input.nextInt();
} else {
break;
}
} while (num == 0);
System.out.println("謝謝使用,歡迎下次光臨!");
}
}