import java.util.Scanner;
public class OrderFood {
public static void main(String[] args) {
// 创建数组用于存放一组订单信息
String[] names = new String[5];// 订餐人姓名
String[] foods = new String[5];// 所选菜品
int[] times = new int[5];// 送餐时间
String[] addresses = new String[5];// 送餐地址
int[] states = new int[5];// 订单状态
double[] sumPrices = new double[5];// 餐品总金额
// 初始化一条订单信息
names[0] = "**涛";
foods[0] = "小炒肉1份";
times[0] = 3;
addresses[0] = "幸福家园1001号";
sumPrices[0] = 11.0;
states[0] = 1;
// 初始化一条订单信息
names[1] = "**涛";
foods[1] = "小炒肉2份";
times[1] = 12;
addresses[1] = "幸福家园1001号";
sumPrices[1] = 22.0;
states[0] = 0;
String[] foodNames = { "小炒肉", "红烧肉", "黄焖鸡" };// 餐品名称
double[] prices = { 11.0, 15.0, 16.0 };// 餐品单价
int[] praiseNums = new int[3];// 点赞数量
// 创建Scanner类对象
Scanner sc = new Scanner(System.in);
int index;
do {
// 菜单栏
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("请选择:");
// 手动输入菜单栏选项
index = sc.nextInt();
boolean isAdd = false;// true:记录找到一个为空的位置,可以插入,false:没有找到
switch (index) {
case 1:
// 我要点餐页面
System.out.println("********我要点餐********");
// 查找要插入的位置
for (int i = 0; i < names.length; i++) {
// 如果找到了为空的位置就标记下来
if (names[i] == null) {
isAdd = true;// 记录一下,已经找到一个为空的位置
// 执行插入操作
//显示所有餐品信息
System.out.println("序号\t菜名\t单价\t点赞数");
for (int j = 0; j < foodNames.length; j++) {
System.out.println((j + 1) + "\t" + foodNames[j]
+ "\t" + prices[j]+"元\t"+praiseNums[j]+"赞");
}
//输入所选餐品编号,份数,订餐人姓名,送餐时间,送餐地址
System.out.print("请选择您要点的菜品编号:");
int foodId = sc.nextInt();
System.out.print("请选择您要点的菜品份数:");
int foodNums = sc.nextInt();
System.out.print("请输入订餐人姓名:");
String name = sc.next();
System.out.print("请输入送餐时间(送餐时间为10点到20点准时送餐):");
int time = sc.nextInt();
while (time > 20 || time < 10) {
System.out.println("对不起您输入的时间不在送餐时间范围内,请输入10~20之间的整数:");
time = sc.nextInt();
}
System.out.print("请输入送餐地址:");
String address = sc.next();
//计算餐费
double sumPrice = prices[foodId -1]*foodNums;
//送餐费,餐费达到50元免6元送餐费
double deliCharge = sumPrice>=50?0.0:6.0;
//显示订单信息
System.out.println("订餐成功!");
System.out.println("您订的是:"+foodNames[foodId-1]+" "+foodNums+"份");
System.out.println("订餐人:"+name);
System.out.println("送餐时间:"+time+"点");
System.out.println("送餐地址:"+address);
System.out.println("餐费:"+sumPrice+",送餐费:"+deliCharge+"元");
System.out.println("订单总金额:"+(sumPrice+deliCharge)+"元");
//保存数据
names[i] = name;
foods[i] = foodNames[foodId-1]+foodNums+"份";
times[i] = time;
addresses[i] = address;
sumPrices[i] = sumPrice+deliCharge;
break;
}
}
// 如果没有找到为空的位置,则提示信息
if (!isAdd) {
System.out.println("对不起,您的餐袋已满!");
}
break;
case 2:
// 查看餐袋
System.out.println("********查看餐袋********");
System.out.println("序号\t订餐人\t所订餐品信息\t送餐时间\t送餐地址\t\t总金额\t状态");
//遍历数组
for (int j = 0; j < names.length; j++) {
if(names[j]!=null){
String state = states[j]==0?"已预订":"已完成";
System.out.println((j+1)+"\t"+names[j]+"\t"+foods[j]+"\t"+times[j]+"点\t"+addresses[j]+"\t"+sumPrices[j]+"\t"+state);
}
}
break;
case 3:
// 签收订单
System.out.println("********签收订单********");
System.out.println("请输入要签收的订单编号:");
int signOrderId =sc.nextInt();
boolean isFind = false;//记录这条订单true:表示找到,false:表示没有找到
//查找这条订单
for (int j = 0; j < names.length; j++) {
//找到是已完成;提示不能签收,状态是预定:可以签收
if(names[j]!=null&&states[j]==1&&signOrderId==j+1){
isFind = true;
System.out.println("对不起,您的订单已经完成签收,不能再次签收!");
break;
}else if(names[j]!=null&&states[j]==0&&signOrderId==j+1){
isFind = true;
states[j] = 1;//状态值改为已完成状态
System.out.println("订单签收成功!");
break;
}
}
//没找到订单
if(!isFind){
System.out.println("对不起,此订单不存在!");
}
break;
case 4:
// 删除订单
System.out.println("********删除订单********");
System.out.println("请输入要删除的订单号:");
int delId = sc.nextInt();
int delIndex = -1;//删除订单的下标
boolean isDelFind = false;
//循环查找这条订单
for (int i = 0; i < names.length; i++) {
//找到此订单,已签收:执行删除操作,未签收:输出提示信息
if(names[i] !=null&&states[i] == 1&&delId == i +1){
delIndex = i;
isDelFind = true;
break;
}else if(names[i] !=null&&states[i] == 0&&delId == i +1){
isDelFind = true;
System.out.println("您选择的订单未签收,不能删除!");
break;
}
}
//未找到此订单
if(!isDelFind){
System.out.println("对不起,此条订单不存在!");
}
//执行删除操作
if(delIndex!=-1){
//循环移位(从前往后)
for (int i = delIndex+1; i <= names.length-1; i++) {
names[i-1] = names[i];
foods[i-1] = foods[i];
times[i-1] = times[i];
addresses[i-1] = addresses[i];
states[i-1] = states[i];
}
//最后一位清空
names[names.length-1] = null;
foods[foods.length-1] = null;
times[times.length-1] = 0;
addresses[addresses.length-1] = null;
states[states.length-1] = 0;
System.out.println("订单删除成功!");
}
break;
case 5:
// 我要点赞
System.out.println("********我要点赞********");
//显示所有餐品信息
System.out.println("序号\t菜名\t单价\t点赞数");
for (int j = 0; j < foodNames.length; j++) {
System.out.println((j + 1) + "\t" + foodNames[j]
+ "\t" + prices[j]+"元\t"+praiseNums[j]+"赞");
}
//输入要点赞的餐品序号
System.out.println("请输入要点赞的餐品序号:");
int dishId = sc.nextInt();
//该序号的餐品点赞数加一
praiseNums[dishId-1]++;
//显示
System.out.println("点赞成功!");
System.out.println(foodNames[dishId-1]+" "+praiseNums[dishId-1]+"赞");
break;
case 6:
// 退出系统
// System.out.println("谢谢使用,欢迎下次光临!");
// System.exit(0);
break;
default:
break;
}
if (index < 1 || index > 5) {
break;
} else {
// 提示输入0返回
System.out.println("输入0返回");
index = sc.nextInt();
}
} while (index == 0);
System.out.println("谢谢使用,欢迎下次光临!");
}
}
吃货联盟订餐系统(变量+数组)
于 2022-07-29 19:58:25 首次发布