public class OrderMsg {

    public static void main(String[] args) throws Exception {
/**
* 订餐人姓名、选择菜品、送餐时间、送餐地址、订单状态、总金额
* 01.创建对应的数组
* 02.数组的初始化
* 03.显示菜单
* 04.根据用户的选择进去指定的模块
*/
String[] names = new String[6]; // 订餐人姓名
String[] dishMsgs = new String[6];// 选择菜品
int[] numbers = new int[6];// 菜品份数
Date[] dates = new Date[6]; // 送餐时间
String[] times = new String[6]; // 送餐时间对应的String类型的日期
String[] addresses = new String[6];// 送餐地址
int[] states = new int[6];// 订单状态 0:已经预定 1:已经完成
double[] sumPrices = new double[6];// 总金额 // 初始化数据
names[0] = "小黑";
dishMsgs[0] = "八仙过海";
numbers[0] = 3;
dates[0] = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
times[0] = sdf.format(dates[0]);
addresses[0] = "天堂路1号院";
states[0] = 1;
sumPrices[0] = 5000; names[1] = "小白";
dishMsgs[1] = "佛跳墙";
numbers[1] = 5;
dates[1] = new Date();
times[1] = sdf.format(dates[1]);
addresses[1] = "地域路2号院";
states[1] = 1;
sumPrices[1] = 500; // 初始化用户可以选择的菜
String[] dishNames = { "八仙过海", "佛跳墙", "松鼠鱼", "红烧带鱼", "时令蔬菜", "辣土豆丝" };
// 定义每个菜的单价
double[] prices = { 88, 78.8, 58.0, 28.5, 50, 80 };
// 定义点赞 的数组
int[] praiseNums = new int[6];
praiseNums[0] = 5;
praiseNums[1] = 10; System.out.println("***********欢迎进入《吃货联盟》点餐系统***********");
Scanner scanner = new Scanner(System.in);
int num = -1; // 如果用户输入的是0 默认返回主菜单
boolean isExit = false;// 定义一个标记 来标识 用户是否退出系统 true:退出
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 addFlag = false;
for (int i = 0; i < names.length; i++) { // 订餐人的集合
if (names[i] == null) {
addFlag = true;
System.out.println("请输入订餐人的姓名:");
names[i] = scanner.next(); // 获取订餐人的姓名
System.out.println("您可以选择下列的菜品:");
System.out.println("序号\t\t\t菜名\t\t\t单价\t\t\t点赞数");
for (int j = 0; j < dishNames.length; j++) { // 遍历菜品
String praiseNum = (praiseNums[j] > 0) ? praiseNums[j]
+ "个赞"
: "";
System.out.println(j + 1 + "\t\t\t" + dishNames[j]
+ "\t\t\t" + prices[j] + "\t\t\t"
+ praiseNum);
}
// 用户开始点菜
System.out.println("请您选择菜品的编号:");
int chooseDishName = scanner.nextInt();
System.out.println("请您输入点餐的份数:");
int number = scanner.nextInt();
System.out.println("请您输入送餐的地址:");
String address = scanner.next();
System.out.println("请您输入送餐的时间:(时:分:秒)");
String time = scanner.next(); /**
* 根据用户的餐费 判断是否收取送餐费 大于60免送餐费
* 01.获取用户点的菜的单价
* 02.获取总金额
* 03.判断
*/
double sumPrice = prices[chooseDishName - 1] * number;
double price = (sumPrice > 60) ? 0 : 6;
System.out.println("恭喜您订餐成功!");
System.out.println("您定的菜品是:"
+ dishNames[chooseDishName - 1] + "\t" + number
+ "份");
System.out.print("餐费:" + sumPrice);
System.out.print("\t送餐费:" + price);
System.out.println("\t总费用:" + (price + sumPrice));
// 向数组中增加数据
times[i] = sdf.format(sdf.parse(time)); // 时间
addresses[i] = address; // 地址
sumPrices[i] = (sumPrice + price); // 总金额
dishMsgs[i] = dishNames[chooseDishName - 1]; // 定的菜品
states[i] = 0; // 订餐的状态
numbers[i] = number; // 份数
break;
}
}
if (!addFlag) {// 餐袋已经满了
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点赞数量");
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] + "元"; // 总金额
String address = addresses[i]; // 地址
String dishMsg = dishMsgs[i]; // 菜品
int count = numbers[i];
System.out.println(i + 1 + "\t\t" + names[i] + "\t\t"
+ dishMsg + "(" + count + ")" + "\t\t" + time
+ " \t\t" + address + "\t\t" + sumPrice
+ "\t\t" + state + "\t\t" + praiseNums[i]);
}
}
break;
case 3:
System.out.println("************签收订单************");
/**
* 01.状态为已经完成!不需要签收
* 02.状态为已经预定!需要签收
* 03.没有指定的订单,不能签收
*/
System.out.println("请您输入需要签收的订单编号:");
int sign = scanner.nextInt();
// 定义一个标记 来判断订单是否被签收
int flag = 0;
for (int i = 0; i < names.length; i++) {
if (names[i] != null && states[i] == 0) {// 01.有订单 可以签收
states[i] = 1;// 改变状态
flag = 1;
break; // 必须退出 否则 后续的都会变成签收
} else if (names[i] != null && states[i] == 1) {// 02.有订单
flag = 2;
}
}
if (flag == 1) {
System.out.println("订单已经签收!");
} else if (flag == 2) {
System.out.println("订单不需要重复签收!");
} else {
System.out.println("没有指定的订单!请您核实!");
} break;
case 4:
System.out.println("************删除订单************");
System.out.println("请您输入需要删除的订单编号:");
int delNum = scanner.nextInt();
// 定义一个标记 来判断订单是否被签收以及是否存在
int delFlag = 0;
for (int i = 0; i < names.length; i++) {
if (names[i] != null && states[delNum - 1] == 1) { // 可以删除
// 有指定的订单
// 状态是已经完成
// 删除位置 之后的所有元素 依次前移
for (int j = delNum - 1; j < names.length - 1; j++) {
names[j] = names[j + 1]; // 订餐人
dishMsgs[j] = dishMsgs[j + 1];// 菜品
times[j] = times[j + 1];// 时间
addresses[j] = addresses[j + 1];// 地址
states[j] = states[j + 1];// 状态
numbers[j] = numbers[j + 1];// 份数
}
delFlag = 1;
break;
} else if (names[i] != null && states[i] == 0) { // 订单还没有签收
delFlag = 2;
}
}
if (delFlag == 1) {
System.out.println("订单已经被删除");
} else if (delFlag == 2) {
System.out.println("订单还没有签收 不允许删除!");
} else {
System.out.println("没有找到指定的订单!");
}
break;
case 5:
System.out.println("************我要点赞***************");
System.out.println("编号\t\t\t菜名\t\t\t价格");
for (int i = 0; i < dishNames.length; i++) { // 遍历所有的菜名
String price = prices[i] + "元"; // 获取价格
String name = dishNames[i];
System.out.println(i + 1 + "\t\t\t" + name + "\t\t\t"
+ price);
}
System.out.println("请您输入点赞的菜品编号:");
int chooseNum = scanner.nextInt();
praiseNums[chooseNum - 1]++;// 点赞数加+1
System.out.println("谢谢参与!点赞成功!");
break;
case 6:
// 退出系统
isExit = true;
break;
default:
// 退出系统
isExit = true;
break;
}
if (!isExit) { // 默认这是不退出
System.out.println("输入0返回主菜单!");
num = scanner.nextInt();
} else {
break; // 退出系统
} } while (num == 0);
System.out.println("谢谢您的光临!!!!!");
}
}

java10---点餐系统的更多相关文章

  1. [课程设计]Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计)

    Scrum 3.8 多鱼点餐系统开发进度(留言反馈系统设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统 ...

  2. [课程设计]Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案)

    Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统W ...

  3. [课程设计]Scrum 3.6 多鱼点餐系统开发进度(用户测试反馈页面构思&留言板设计)

    Scrum 3.6 多鱼点餐系统开发进度(用户测试反馈页面构思&留言板设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团 ...

  4. [课程设计]Scrum 3.5 多鱼点餐系统开发进度(修复Bug&美化页面)

    Scrum 3.5 多鱼点餐系统开发进度(修复Bug&美化页面) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅 ...

  5. [课程设计]Scrum 3.4 多鱼点餐系统开发进度(下单详细信息页面&会员信息页面)

    Scrum 3.4 多鱼点餐系统开发进度(下单详细信息页面&会员信息页面) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队 ...

  6. [课程设计]Scrum 3.3 多鱼点餐系统开发进度(下单详细信息页面设计)

    Scrum 3.3 多鱼点餐系统开发进度(下单详细信息页面设计)  1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点 ...

  7. [课程设计]Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)

    Scrum 3.2 多鱼点餐系统开发进度(页面优化&下单详细信息页面)  1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选 ...

  8. [课程设计]Scrum 1.6 多鱼点餐系统开发进度

    [课程设计]Scrum 1.6 多鱼点餐系统开发进度(点餐页面按钮添加&修复) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4. ...

  9. [课程设计]Scrum 1.7 多鱼点餐系统开发进度

    [课程设计]Scrum 1.7 多鱼点餐系统开发进度(点餐菜式内容添加及美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...

  10. [课程设计]Scrum 1.5 多鱼点餐系统开发进度

    1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统WEB 5.Sprint 1时间:11.14-11.23 重案 ...

随机推荐

  1. npm更新和nodejs更新

    npm更新和nodejs更新 更新你已经安装的NPM库,这个很简单,只需要运行. npm update -g 更新Nodejs自身.一直依赖我都是下载最新版的源码,然后make install,及其繁 ...

  2. 用仿ActionScript的语法来编写html5——第五篇,Graphics绘图

    用仿ActionScript的语法来编写html5——第五篇,Graphics绘图 canvas本身就是一个Graphics,可以直接进行绘图在actionscript里面,每个Sprite都有一个G ...

  3. 华为大数据项目fusionInsight

    项目简述:基于开源Hadoop2.0架构的集群网络,进行海量数据的分布式计算.由于Hadoop集群规模不断扩大,而搭建一个同等规模的测试集群需要一笔昂贵的开销.目前有100台左右物料,期望预测计算节点 ...

  4. python16_day09【Select多路复用】

    一.select多路复用 句柄列表11, 句柄列表22, 句柄列表33 = select.select(句柄序列1, 句柄序列2, 句柄序列3, 超时时间) 参数: 可接受四个参数(前三个必须) 返回 ...

  5. vue-cli中config目录下的index.js文件详解

    vue-cli脚手架工具config目录下的index.js解析 转载自:http://www.cnblogs.com/ye-hcj/p/7077796.html // see http://vuej ...

  6. PAT 天梯赛 L1-041. 寻找250 【水】

    题目链接 https://www.patest.cn/contests/gplt/L1-041 AC代码 #include <iostream> #include <cstdio&g ...

  7. Django学习笔记之Django中间件

    准备 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...

  8. 20162305李昱兴 2016-2017-2 《Java程序设计》第2周学习总结

    20162305 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 教材的第二章以数据和表达式为主.在第二章的学习中,我了解了print以及println的用法 ...

  9. Book Review of "The Practice of Programming" (Ⅰ)

    The Practice of Programming In the preface, the author illustrates four basic principles of programm ...

  10. JavaWeb HTTP

    1. Http协议 1.1. 什么是Http协议 Http的全称为HyperText Transfer Protocol,译为超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通 ...