其他分享
首页 > 其他分享> > 第一个项目:吃货联盟点餐系统

第一个项目:吃货联盟点餐系统

作者:互联网

package com.kgc;

import java.util.Scanner;

/**
*

*/
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