第一个项目:吃货联盟点餐系统
作者:互联网
package com.kgc;
import java.util.Scanner;
/**
*
- 吃货联盟订餐系统主程序
- @author 19878
*/
public class Chihuo02 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 是否需要返回主菜单标识 只有0退出,其他值退出系统
int back = -1;
// 是否 退出系统标识,(只有选择退出系统,或者输入序号非法,判定为退出)
boolean outFlag = false;
// 数据初始化: 同一条数据,分多个数组,相同下标位置存放在同一条数据的内容
// 系统菜品信息
// 菜品名称
String[] caiDan = { "红烧带鱼", "鱼香肉丝", "时令鲜蔬" };
// 菜品价格
double[] danJia = { 38, 20, 10 };
// 菜品点赞数
int[] zan = new int[3];
// 系统初始化订单,方便查看餐袋
// 订餐姓名
String[] name = new String[5];
// 订餐详情
String[] choseCai = new String[5];
// 订餐配送时间
int[] time = new int[5];
// 订餐配送地址
String[] address = new String[5];
// 订餐状态(0是已预定,1是已完成)
int[] states = new int[5];
// 订餐价格(餐费+配送费(满50不用配送费,否则加5元)
double[] zongE = new double[5];
// 初始化订单
name[0] = "张晴";
choseCai[0] = "红烧带鱼2份";
time[0] = 12;
address[0] = "天成路207号";
states[0] = 1;
zongE[0] = 45.0;
// 初始化菜单
name[1] = "张晴";
choseCai[1] = "鱼香肉丝2份";
time[1] = 18;
address[1] = "天成路207号";
states[1] = 0;
zongE[1] = 45.0;
// 初始化菜单
name[2] = "张晴";
choseCai[2] = "时令鲜蔬2份";
time[2] = 18;
address[2] = "天成路207号";
states[2] = 0;
zongE[2] = 45.0;
// 循环展示主菜单
do {
// 主菜单导航
System.out.println("\n欢迎使用“吃货联盟订餐系统”\n");
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("请输入菜单序号(1-6):");
// 定义序号菜单变量
int choose = input.nextInt();
// 根据用户选择,切换菜单
switch (choose) {
case 1:
System.out.println("---------我要点餐------------");
// 定义一个标识位,判断是否可以订餐,如果满了不能订餐
boolean ding = false;
// 循环遍历数组,查找可以存放订当位置(首次出现null)
for (int i = 0; i < name.length; i++) {
// 确定位置
if (name[i] == null) {
// 可以订餐
ding = true;
// 执行订单操作
System.out.print("请输入订餐人姓名:");
String namess = input.next();
// 循环展示菜品
System.out.println("序号\t菜名\t单价\t点赞数");
for (int j = 0; j < caiDan.length; j++) {
System.out.println(j + 1 + "\t" + caiDan[j] + "\t" + danJia[j] + "\t" + zan[j] + "赞");
}
// 选择菜品序号(注意:从1开始,从数组中获取值的时候要拿序号建议
System.out.print("请选择菜品序号:");
int chose1 = input.nextInt();
while (chose1 > caiDan.length || chose1 < 1) {
System.out.println("你输入的序号不在现有菜品中,请重新输入");
chose1 = input.nextInt();
}
// 选择菜品份数
System.out.print("请输入订餐份数:");
int fen = input.nextInt();
// 选择配送时间
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
int times = input.nextInt();
// 判断时间是否在送餐时间内
while (!(times >= 10 && times <= 20)) {
System.out.println("该时间无法送餐,请修改时间");
System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
times = input.nextInt();
}
// 输入配送地址
System.out.println("请输入订餐地址:");
String address1 = input.next();
// 价格计算和生成订单
// 订单价格
double jiaGe = danJia[chose1 - 1] * fen;
// 配送费用
double song = jiaGe >= 50 ? 0 : 5;
// 生成系统订单
System.out.println("=================");
System.out.println("订餐成功!!!");
System.out.println("订餐信息为:" + caiDan[chose1 - 1] + fen + "份");
System.out.println("配送时间为:" + times + "点");
System.out.println("订餐费用为:" + "餐费:" + jiaGe + "送餐费:" + song + "总计:" + (song + jiaGe));
System.out.println("=================");
// 系统订单赋值
name[i] = namess;
choseCai[i] = caiDan[chose1 - 1] + fen + "份";
time[i] = times;
address[i] = address1;
states[i] = 0;
zongE[i] = song + jiaGe;
// 需要结束订餐
break;
}
}
// 根据标识给出提示
if (!ding) {
System.out.println("系统不支持继续订餐,请删除已完成订单后,继续订餐");
}
break;
case 2:
System.out.println("---------查看餐袋------------");
// 展示标题
System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t\t总金额\t订单状态");
// 循环输出订餐信息(由于长度统一,随便选择一个作循环
for (int i = 0; i < name.length; i++) {
// 只展示存在的订单信息,没有订餐信息不显示
if (name[i] == null) {
break;
}
// 配送时间
String times = time[i] + "点";
// 订餐金额
String zongEs = zongE[i] + "元";
// 订餐状态
String state = states[i] == 0 ? "已预定" : "已完成";
// 拼接菜品信息
System.out.println((i + 1) + "\t" + name[i] + "\t" + choseCai[i] + "\t" + times + "\t" + address[i]
+ "\t" + zongEs + "\t" + state);
}
break;
case 3:
System.out.println("---------签收订单------------");
// 定义变量,保存已有订餐数
int count = 0;
// 展示所有的订单,方便签收
System.out.println("序号\t订餐人\t订餐信息\t\t订餐状态");
for (int j = 0; j < name.length; j++) {
if (name[j] == null) {
break;
}
System.out.println(
j + 1 + "\t" + name[j] + "\t" + choseCai[j] + "\t\t" + (states[j] == 0 ? "已预定" : "已完成"));
count++;
}
// 输入序号
System.out.print("请选择签收的订单编号:");
int xunHao = input.nextInt();
// 选择序号有误,不能继续,直到输入正确结束
while (xunHao > count || xunHao < 1) {
System.out.print("输入的订单编号不存在,请重新输入:");
xunHao = input.nextInt();
}
// 说明输入的序号有效可以进行订单签收,注意:只能签收已预定的订单
if (states[xunHao - 1] == 0) {
states[xunHao - 1] = 1;
System.out.println("订单签收成功");
} else if (states[xunHao - 1] == 1) {
System.out.println("订单已签收过了,无需再签收!");
} else {
System.out.println("订单状态异常,无法签收订单,请联系客服!");
}
break;
case 4:
System.out.println("---------删除订单------------");
// 定义变量,保存已有订餐数
int outcount = 0;
// 展示所有的订单,方便签收
System.out.println("序号\t订餐人\t订餐信息\t\t订餐状态");
for (int j = 0; j < name.length; j++) {
if (name[j] == null) {
break;
}
System.out.println(
j + 1 + "\t" + name[j] + "\t" + choseCai[j] + "\t\t" + (states[j] == 0 ? "已预定" : "已完成"));
outcount++;
}
// 输入序号
System.out.print("请选择删除的订单编号:");
int xunHao1 = input.nextInt();
// 选择序号有误,不能继续,直到输入正确结束
while (xunHao1 > outcount || xunHao1 < 1) {
System.out.print("输入的订单编号不存在,请重新输入:");
xunHao1 = input.nextInt();
}
// 删除订单:只能删除已完成的订单,如果预定,不能删除
// 原理 是用后面的覆盖前面的
if (states[xunHao1 - 1] == 1) {
for (int i = xunHao1 - 1; i < name.length - 1; i++) {
name[i] = name[i + 1];
choseCai[i] = choseCai[i + 1];
time[i] = time[i + 1];
address[i] = address[i + 1];
states[i] = states[i + 1];
zongE[i] = zongE[i + 1];
}
// 将最后一笔订单删除
name[name.length - 1] = null;
choseCai[name.length - 1] = null;
time[name.length - 1] = 0;
address[name.length - 1] = null;
states[name.length - 1] = 0;
zongE[name.length - 1] = 0;
System.out.println("删除订单成功");
} else {
System.out.println("您还未签收订单,不可删除,请先签收订单");
}
break;
case 5:
System.out.println("---------我要点赞------------");
System.out.println("序号\t菜名\t单价\t点赞数");
for (int j = 0; j < caiDan.length; j++) {
System.out.println(j + 1 + "\t" + caiDan[j] + "\t" + danJia[j] + "\t" + zan[j] + "赞");
}
// 选择菜品序号(注意:从1开始,从数组中获取值的时候要拿序号建议
System.out.print("请选择菜品序号:");
int chose2 = input.nextInt();
while (chose2 > caiDan.length || chose2 < 1) {
System.out.println("你输入的序号不在现有菜品中,请重新输入");
chose2 = input.nextInt();
}
//
zan[chose2 - 1]++;
System.out.println("给" + caiDan[chose2 - 1] + "点赞成功!!!");
break;
case 6:
System.out.println("---------退出系统------------");
outFlag = true;
break;
default:
outFlag = true;
break;
}
// 判断是否选择了退出系统
if (outFlag) {
break;
} else {
System.out.print("请输入0返回主菜单:");
back = input.nextInt();
}
} while (back == 0);
System.out.println("谢谢使用吃货联盟,欢迎下次光临!!!");
input.close();
}
}
标签:联盟,name,int,吃货,System,订餐,println,点餐,out 来源: https://blog.csdn.net/weixin_49376698/article/details/110879565