import java.util.Scanner;
import com.sun.org.apache.xml.internal.security.algorithms.implementations.IntegrityHmac;
public class Demo13 {
public static void main(String[] args) {
// 创建数据主体部分---------订单信息,菜品信息
String[] names = new String[4]; // 订单人
String[] dishMegs = new String[4]; // 订餐信息
int[] time = new int[4];// 送餐时间
String[] diZhi = new String[4];// 送餐地址
int[] states = new int[4];// 订单状态
double[] sumPrices = new double[4];// 总金额
Scanner input = new Scanner(System.in);
// 创建两个假数据,两套订单
names[0] = "张晴";
dishMegs[0] = "红烧带鱼 2份";
time[0] = 13;
diZhi[0] = "天成路207号";
states[0] = 1;
sumPrices[0] = 76.0;
names[1] = "张晴";
dishMegs[1] = "鱼香肉丝 2份";
time[1] = 10;
diZhi[1] = "天成路207号";
states[1] = 0;
sumPrices[1] = 20.0;
// 菜品---
String[] caiName = new String[4];// 餐品名
double[] prices = new double[4];// 单价
int[] dianZan = new int[4];// 点赞数
caiName[0] = "红烧鳗鱼";
prices[0] = 38.0;
caiName[1] = "鱼香肉丝";
prices[1] = 20.0;
caiName[2] = "时令鲜蔬";
prices[2] = 10.0;
int num = 0;
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.println("请选择:");
int xuan = input.nextInt();
// 标记
boolean kaiGuan = false;
boolean qianShou = false;
boolean isDel = false;
int xiaBiao = 0;
switch (xuan) {
case 1:
// 在订餐前先判断餐袋是否没有满----如果满了不能订餐,如果没有满才能进行订餐操作
for (int j = 0; j < names.length; j++) {
if (names[j] == null) {
kaiGuan = true;
xiaBiao = j;
break;
}
}
if (kaiGuan) {
System.out.println("***我要订餐***");
System.out.println("请输入订餐人姓名:");
String name = input.next();
System.out.println("序号\t菜名\t单价");
// 判断数组中存在菜品信息就输出,不然不输出
for (int i = 0; i < caiName.length; i++) {
if (caiName[i] != null) {
String cl = "";
cl += i + 1 + "\t" + caiName[i] + "\t" + prices[i] + "\t";
if (dianZan[i] != 0) {
cl += dianZan[i] + "赞";
}
System.out.println(cl);
}
}
// 选择菜品编号
System.out.println("请选择你要点的菜品编号:");
int a = input.nextInt();
// 选择份数
System.out.println("请选择您需要的份数:");
int b = input.nextInt();
String dingDan = caiName[a - 1] + b + "份";// 订单
// 选择送餐的时间
System.out.println("请输入送餐的时间(送餐的时间是10点到20点间整点送餐):");
int c = input.nextInt();
while (c < 10 || c > 20) {
System.out.println("请输入10-20之间的整数");
c = input.nextInt();
}
// 选择送餐地址
System.out.println("请输入送餐地址:");
String d = input.next();
// 经费计算
double zjf;// 总经费
double xf;// 小费
double noxf = prices[a - 1] * b;// 没有小费的价格
xf = noxf > 50 ? 0 : 6;// 判断是否有小费
zjf = noxf + xf;
// 餐费信息
String cfxx = "";
System.out.println("订餐成功");
cfxx += "您的订单是:" + dingDan + "\n送餐时间:" + c + "点\n地址:" + d + "\n餐费:" + noxf + "元,送餐费:" + xf + "元,总计:"
+ zjf + "元。";
System.out.println(cfxx);
names[xiaBiao] = name;
dishMegs[xiaBiao] = dingDan;
time[xiaBiao] = c;
diZhi[xiaBiao] = d;
states[xiaBiao] = 0;
sumPrices[xiaBiao] = zjf;
break;
} else {
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++) {
String canDai = "";
if (names[i] != null) {
String state = states[i] == 0 ? "已预订" : "已完成";
canDai += i + 1 + "\t" + names[i] + "\t" + dishMegs[i] + "\t" + time[i] + "\t" + diZhi[i] + "\t"
+ sumPrices[i] + "\t" + state;
System.out.println(canDai);
}
}
break;
case 3:
System.out.println("***签收订单***");
System.out.println("请选择签收的订单序号:");
int dingDan = input.nextInt();
for (int i = 0; i < names.length; i++) {
// 3.你输入的订单可以签收----改变状态 给我出提示 签收完成
if (names[i] != null && i == dingDan - 1 && states[i] == 0) {
qianShou = true;
states[i] = 1;
System.out.println("订单签收完成");
break;
}
// 2.你输入的订单号是已完成状态--------不能签收给出提示
else if (names[i] != null && i == dingDan - 1 && states[i] == 1) {
qianShou = true;
System.out.println("您的订单已签收,不能再次签收");
}
// 签收订单可能出现的情况;1 你输出的订单号不存在---给你提示(一种数组是空,另一种输入的订单号码超过数组范围)
// 表示输入的订单数字不能进行签收
if (!qianShou) {
System.out.println("您选择的订单不存在");
}
}
break;
case 4:
System.out.println("***删除订餐***");
// 分析 1.你输入的订单需要存在
// 3删除需要将六个数组里面对应位置元素删除掉。
System.out.println("请输入删除订单的序列号:");
int xuLie = input.nextInt();
for (int i = 0; i < names.length; i++) {
// 2并且是可以删除的状态 states = 1 才可以删除
if (names[i] != null && i == xuLie - 1 && states[i] == 1) {
isDel = true;
// 找出删除的位置 -----xuLie-1===i
// 索引后面元素的位置往前移
for (int j = i + 1; j <= names.length - 1; j++) {
names[j - 1] = names[j];
dishMegs[j - 1] = dishMegs[j];
time[j - 1] = time[j];
diZhi[j - 1] = diZhi[j];
states[j - 1] = states[j];
sumPrices[j - 1] = sumPrices[j];
}
// 最后一位空位
int kong = names.length - 1;
names[kong] = null;
dishMegs[kong] = null;
time[kong] = 0;
diZhi[kong] = null;
states[kong] = 0;
sumPrices[kong] = 0.0;
System.out.println("订单已删除");
break;
} else if (names[i] != null && i == (xuLie - 1) && states[i] == 0) {
isDel = true;
System.out.println("您选择的订单未签收,不能删除!");
}
}
if (!isDel) {
System.out.println("不存在此订单");
}
break;
case 5:
System.out.println("***我要点赞***");
System.out.println("序号\t菜名\t单价");
System.out.println("1\t红烧带鱼\t38.0元");
System.out.println("2\t鱼香肉丝\t20.0元");
System.out.println("3\t时令鲜蔬\t10.0元");
System.out.println("请选择点赞的序列:");
int dian = input.nextInt();
switch (dian) {
case 1:
dianZan[0] += 1;
System.out.println("点赞成功");
break;
case 2:
dianZan[1] += 1;
System.out.println("点赞成功");
break;
case 3:
dianZan[2] += 1;
System.out.println("点赞成功");
break;
}
break;
case 6:
System.out.println("***退出系统***");
num = -1;
break;
default:
System.out.println("请输入真确的数字!");
break;
}
if (xuan >= 1 && xuan <= 5) {
System.out.println("请输入0返回:");
num = input.nextInt();
if (num != 0) {
break;
}
}
} while (num == 0);
System.out.println("谢谢惠顾");
}
}
初学者习题练习。用之前学过的知识,完成吃货联盟我上课讲的部分内容 1.创建数据 2.简单框架实现 3.退出功能 4.订单功能 5.查询餐袋的功能
原文:https://www.cnblogs.com/ztzz/p/12924793.html