package com;
import java.util.Scanner;
public class Test {
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]; //保存订单的总金额
//供选择的菜品信息
String[] dishNames ={"宫保鸡丁","蒸熊掌","红烧鲍鱼","佛跳墙","麻婆豆腐"};
//菜品单价
double[] prices={23,56,43,88,15};
int[] praiseNums =new int[5];
Scanner input = new Scanner(System.in);
int num = -1; // 用户输入0返回主菜单,否则退出系统
boolean isExit = false; //标志用户是否退出系统,true为退出系统
//=======================================================================================
int choose;
System.out.println("欢迎使用\"吃货联盟订餐系统\"");
//循环:显示菜单,根据用户选择的数字执行相应的功能
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("请选择:");
choose = input.nextInt();
for (; choose>6 || choose<0; ) {
System.out.print("输入有误,请重新输入:");
choose = input.nextInt();
}
switch(choose){
case 1:
System.out.println("***********1、我要订餐**********");
boolean isAdd = false;
for(int i = 0; i<names.length; i++){
if(names[i] == null){ //找到空位,可以添加信息
isAdd = true;//标记位置,可以订餐
/*boolean bool = true;*/
System.out.println("请输入订餐人的姓名:");
String name= input.next();
/*while(bool){*/
//展示菜单:
System.out.println("序号"+"\t"+"菜名"+"\t"+"价格"+"\t"+"点赞数");
for (int j = 0; j < dishNames.length; j++) {
String price = prices[j] +"元";
/*String praiseNum = (praiseNums[j])>0?(praiseNums[j])+"赞":" ";*/
System.out.println((j+1)+"\t"+dishNames[j]+"\t"+price+"\t"+praiseNums[j]);
}
//用户点菜
System.out.print("请选择您要点的菜品序号:");
int chooseDish = input.nextInt(); //餐品序号从一开始
System.out.print("请选择您需要的份数:");
int number = input.nextInt();
String dishMeg = dishNames[chooseDish-1]+""+number+"份"; //序号从一开始,但是索引从0开始,减一
double sumPrice = prices[chooseDish-1]*number;
//餐费满50免配送费,否则+5
double sendmoney = (sumPrice>50)?0:5;
sumPrice += sendmoney; //加上配送费后总的订餐价格
System.out.print("请输入送餐时间(送餐时间是10:00点到20:00点间整点送餐):");
int time = input.nextInt();
while (time<10||time>20) {
System.out.println("您输入有误,请输入10~20间的整数!");
System.out.print("请重新"
+ "输入送餐时间(送餐时间是10:00点到20:00点间整点送餐):");
time = input.nextInt();
}
System.out.print("请输入送餐地址:");
String address =input.next();
//赋值:
names[i] = name;
dishMegs[i] =dishMeg;
times[i] =time;
addresses[i] =address;
sumPrices[i] =sumPrice+sendmoney;
System.out.println("=============订餐成功~============");
System.out.println(name+"您订的是:" + dishNames[chooseDish-1]+" "+number+"份\n"
+"送餐时间是:"+time
+ "\n送餐地址:" + address
+"\n餐费:"+prices[chooseDish-1]*number + "元 配送费:" + sendmoney+ "元 共计:" + sumPrice+"元");
/*System.out.println("是否继续点餐(y继续/n退出)");
String str = input.next();
if("y".equals(str)){
bool = true;
}else{
bool = false;
}
}*/
break;
}
}if(!isAdd){
System.out.println("对不起,您的餐袋已满!");
}
break;
case 2:
System.out.println("***********2、查看餐袋**********");
System.out.println("序号"+"\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 time = times[i]+"点";
String sumPrice = sumPrices[i] + "元";
System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t\t"+time+"\t"+addresses[i]+"\t"+sumPrice+"\t"+state);
}
}
break;
/*1.输入正确的序号且当前状态为未签收,这种情况可以签收
2.输入正确的序号且当前状态为已签收还未删除,这种情况须作出相应的提示
3.输入序号不存在。作出提示。*/
case 3:
System.out.println("***********3、查收订单**********");
boolean isSign = false;
System.out.println("序号"+"\t"+"顾客"+"\t"+"餐品名"+"\t"+"订单状态");
for(int i = 0; i<names.length; i++){
if(names[i] != null){
String state = states[i] == 0?"未签收":"已签收订单";
System.out.println((i + 1) + "\t" + names[i]+ "\t" + dishNames[i] + "\t" + state);
}
}
System.out.println("请选择要签收的订单序号:");
int signOrder = input.nextInt();
for(int i = 0; i<names.length;i++){
if(names[i] != null && states[i]==0 && signOrder==i+1){ //正常未签收
states[i] = 1; //赋值1为订单签收
isSign = true;
System.out.println("订单签收成功!");
}else if(names[i] != null && states[i]==1 && signOrder==i+1){ //已签收
System.out.println("您的订单已签收,请勿重复操作。");
isSign = true;
}
}
if(!isSign){
System.out.println("您输入的编号不存在,签收失败!");
}
break;
case 4:
/*1.输入正确的序号且当前状态为未签收,不可删除
2.输入正确的序号且当前状态为已签收,可删除
3.输入序号不存在。作出提示。*/
System.out.println("***********4、删除订单**********");
boolean isDel = false;
System.out.println("序号"+"\t"+"顾客"+"\t"+"餐品名"+"\t"+"订单状态");
for(int i = 0; i<names.length; i++){
if(names[i] != null){
String state = states[i] == 0?"未签收":"已签收订单";
System.out.println((i + 1) + "\t" + names[i]+ "\t" + dishNames[i] + "\t" + state);
}
}
boolean again3 = true;
while(again3){
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) { //订单签收正常输出
isDel = 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];
sumPrices[j] = sumPrices[j+1];
}
//最后一位清空
names[names.length-1] = null;
dishMegs[dishMegs.length-1] = null;
times[names.length-1] = 0;
addresses[names.length-1] = null;
states[names.length-1] = 0;
sumPrices[names.length-1] = 0;
System.out.println("订单删除成功~==============================");
break;
}else if(names[i] != null && states[i]==0 && delID==i+1){ //订单未签收,不可删除
System.out.println("您选择的订单未签收,不能删除!");
isDel = true;
}
}if(!isDel){
System.out.println("订单不存在,删除失败!");
}
System.out.print("是否继续删除(y继续/n退出):");
String str = input.next();
if("n".equals(str)){
again3 = false;
}
}
break;
case 5:
System.out.println("***********5、我要点赞**********");
//展示菜单:
System.out.println("序号"+"\t"+"菜名"+"\t"+"价格"+"\t"+"点赞数");
for (int j = 0; j < dishNames.length; j++) {
String price = prices[j] +"元";
String praiseNum = (praiseNums[j])>0?(praiseNums[j])+"赞":" ";
System.out.println((j+1)+"\t"+dishNames[j]+"\t"+price+"\t"+praiseNum);
}
System.out.print("请选择您要点赞的菜品序号:");
int praiseNum = input.nextInt();
if (praiseNum < 0 || praiseNum > dishNames.length) { //数字不能大于菜品数
System.out.println("您的输入的菜品序号有误,点赞失败!====");
} else {
//在这里输入的序号需要-1,因为数组是从0开始的,所以需要前进一位
praiseNums[praiseNum-1]++;
System.out.println("点赞成功~====");
}
break;
case 6:
System.out.println("***********6、退出系统**********");
isExit = true;
System.out.println("谢谢惠顾,欢迎下次光临");
break;
}
if(isExit = true){
System.out.println();
System.out.print("输入0返回:");
num = input.nextInt();
if(num == 0){
}else{
System.out.println("输入指令错误重新输入");
System.out.print("输入0返回:");
num = input.nextInt();
}
}
}while(true);
}
}