第一本书 第九章

package com.homework.cn.syf.eating;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class EatingHappy {
public static void main(String[] args) throws ParseException {
/*
* 订餐人姓名、选择菜品、送餐时间、送餐地址、订单状态、需支付金额
* 1.创建对应的数组
* 2.数组的初始化
* 3.显示菜单
* 4.根据用户的选择进去指定的模块
*/
Scanner scanner = new Scanner(System.in);

// 订餐人姓名
String[] names = new String[5];
// 菜品
String[] menus = new String[5];
// 份数
int[] numbers = new int[5];
// 送餐时间
Date[] dates = new Date[5];
// 送餐日期
String[] times = new String[5];
// 送餐地址
String[] addresses = new String[5];
// 送餐状态 true已完成订单 false 订单配送中
int[] states = new int[5];
// 支付金额
double[] money = new double[5];


// 初始化数组
names[0] = "小明";
menus[0] = "地三鲜";
numbers[0] = 1;
dates[0] = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
times[0] = sdf.format(dates[0]);
addresses[0] = "暂安处北大青鸟楼";
states[0] = 1;
money[0] = 50;

names[1] = "小虹";
menus[1] = "八仙过海";
numbers[1] = 10;
dates[1] = new Date();
times[1] = sdf.format(dates[1]);
addresses[1] = "暂安处2号楼";
states[1] = 1;
money[1] = 500;


// 初始化用户可以选择的菜
String[] menuNames = {"地三鲜", "仙人指路", "清蒸鱼翅", "菠萝古老肉", "八仙过海"};

// 菜的单价
double[] prices = {30.5, 50.8, 200.0, 40.5, 88.8};

// 点赞数
int[] pNums = new int[5];
pNums[0] = 66;
pNums[1] = 188;


// 欢迎
System.out.println("*****************欢迎使用吃货联盟订餐系统*****************");
// 如果用户输入的是0,默认返回主餐单
int number;
boolean isExit = false;
do {
// 显示菜单供用户选择
System.out.println("当前时间:" + sdf.format(new Date()));
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 choose = scanner.nextInt();
switch (choose) {
case 1:
System.out.println("*****************我要订餐*****************");

// 用布尔类型定义标记判断餐带是否到达上限
boolean flag = false;

// 遍历订餐人
for (int i = 0; i < names.length; i++) {
if (names[i] == null) {
//未达到上限
flag = true;
System.out.println("请输入您的姓名:");
// 订餐人姓名
names[i] = scanner.next();
System.out.println("请选择您想订购的美食:");
System.out.println("编号\t\t\t餐名\t\t\t\t单价\t\t\t点赞数");
// 遍历
for (int j = 0; j < menuNames.length; j++) {
String n = pNums[j] > 0 ? pNums[j]
+ "个赞"
: "";
System.out.println(j + 1 + "\t\t\t" + menuNames[j]
+ "\t\t\t" + prices[j] + "\t\t\t" + n);
}
// 用户开始点餐
System.out.println("请您点餐:(选择菜单号)");
int chooseMenuName = scanner.nextInt();
System.out.println("请您输入点餐的份数:");
int Number = scanner.nextInt();
System.out.println("请输入您的地址:");
String address = scanner.next();
System.out.println("请输入您需要的送餐时间:(时:分:秒)");
String time = scanner.next();

// 判断订单的金额是否满50元,如果不满足,则送餐费5元,满足则免运费

double sumPrice = prices[chooseMenuName - 1] * Number;
double price = (sumPrice > 50) ? 0 : 5;
System.out.print("订餐成功,");
System.out.println("您的订单为:" + menuNames[chooseMenuName - 1]
+ "\t" + Number + "份");
System.out.println("您的费用为:" + sumPrice);
System.out.println("您的运费为:" + price);
System.out.println("您的订单费用为:" + (price + sumPrice));
// 将数据带入数组

times[i] = sdf.format(sdf.parse(time));
addresses[i] = address;
money[i] = (sumPrice + price);
menus[i] = menuNames[chooseMenuName - 1];
states[i] = 0;
numbers[i] = Number;
break;
}
}
if (!flag) {
System.out.println("购物车已经满了");
}
break;

case 2:

// 查看购物车 显示 序号 订餐人 餐品信息 送餐时间 送餐地址 总金额 订单状态
System.out.println("*****************查看购物车*****************");
System.out.println("编号\t\t\t订餐人\t\t菜品(份数)\t\t\t送餐时间 " +
"\t\t\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 time = times[i];
String sumPrice = money[i] + "元";
String address = addresses[i];
String menu = menus[i];
int count = numbers[i];
System.out.println(i + 1 + "\t\t\t" + names[i] + "\t\t\t" + menu + "\t"
+ count + "\t\t\t" + time + "\t\t\t" + address
+ "\t\t\t" + sumPrice + "\t\t\t" + state + "\t\t\t" + pNums[i]);
}
}
break;
case 3:
// 签收订单
System.out.println("*****************签收订单*****************");
// 三种状态 1 已经签收的 不需要重复签收 2 在配送中 即将达到 可以签收 3 已经送达签收完毕 不能重复签收
System.out.println("请您输入需要签收的订单编号:");
int sign = scanner.nextInt();
int flag1 = 0;
for (int i = 0; i < names.length; i++) {
if (names[i] != null && states[i] == 0) {
states[i] = 1;
flag1 = 1;
break;
} else if (names[i] != null && states[i] == 1) {
flag1 = 2;
}
}
if (flag1 == 1) {
System.out.println("订单已经签收!");
} else if (flag1 == 2) {
System.out.println("订单不需要重复签收");
} else {
System.out.println("没有指定的订单!");
}
break;

case 4:
// 删除订单
System.out.println("*****************删除订单*****************");
System.out.println("请您输入要删除订单的编号");
int ddNum = scanner.nextInt();
// 定标记 判断是否被签 是否存在
int flag2 = 0;
for (int i = 0; i < names.length; i++) {
if (names[i] == null && states[ddNum - 1] == 1) {
for (int j = ddNum - 1; j < names.length - 1; j++) {
names[j] = names[j + 1];
menus[j] = menus[j + 1];
times[j] = times[j + 1];
addresses[j] = addresses[j + 1];
states[j] = states[j + 1];
numbers[j] = numbers[j + 1];
}
flag2 = 1;
break;
} else if (names[i] != null && states[i] == 0) {
flag2 = 2;
}
}
if (flag2 == 1) {
System.out.println("订单已经被删除");
} else if (flag2 == 2) {
System.out.println("订单尚未签收,无法删除!");
} else {
System.out.println("未找到指定订单");
}
break;
case 5:
// 我要点赞
System.out.println("*****************我要点赞*****************");
System.out.println("序号 餐名 价格");
for (int i = 1; i < menuNames.length+1; i++) {
String price = prices[i-1] + "元";
String name = menuNames[i-1];
System.out.println(i + "\t\t\t" + name + "\t\t\t" + price);
}
System.out.println("请您输入点赞菜的序号:");
int chooseNum = scanner.nextInt();
pNums[chooseNum - 1]++;
System.out.println("点赞成功");
break;
case 6:
// 退出系统
isExit = true;
break;

default:
// 退出系统
isExit = true;
break;
}
if (!isExit) {
System.out.println("输入0返回菜单");
number = scanner.nextInt();
} else {
break;
}

}
while (number == 0);
System.out.println("谢谢惠顾,欢迎下次光临!");
}
}

如果有一天,能做到让程序自学习就好了;发呆发呆(`・ω・´);

猜你喜欢

转载自www.cnblogs.com/yunfeioliver/p/9074186.html