吃货联盟订餐系统(变量+数组)

import java.util.Scanner;

public class OrderFood {

	public static void main(String[] args) {
		// 创建数组用于存放一组订单信息
		String[] names = new String[5];// 订餐人姓名
		String[] foods = new String[5];// 所选菜品
		int[] times = new int[5];// 送餐时间
		String[] addresses = new String[5];// 送餐地址
		int[] states = new int[5];// 订单状态
		double[] sumPrices = new double[5];// 餐品总金额

		// 初始化一条订单信息
		names[0] = "**涛";
		foods[0] = "小炒肉1份";
		times[0] = 3;
		addresses[0] = "幸福家园1001号";
		sumPrices[0] = 11.0;
		states[0] = 1;
		// 初始化一条订单信息
		names[1] = "**涛";
		foods[1] = "小炒肉2份";
		times[1] = 12;
		addresses[1] = "幸福家园1001号";
		sumPrices[1] = 22.0;
		states[0] = 0;

		String[] foodNames = { "小炒肉", "红烧肉", "黄焖鸡" };// 餐品名称
		double[] prices = { 11.0, 15.0, 16.0 };// 餐品单价
		int[] praiseNums = new int[3];// 点赞数量
		// 创建Scanner类对象
		Scanner sc = new Scanner(System.in);
		int index;
		do {
			// 菜单栏
			System.out.println("欢迎使用“吃货联盟订餐系统”");
			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.println("请选择:");

			// 手动输入菜单栏选项
			index = sc.nextInt();

			boolean isAdd = false;// true:记录找到一个为空的位置,可以插入,false:没有找到

			switch (index) {
			case 1:
				// 我要点餐页面
				System.out.println("********我要点餐********");
				// 查找要插入的位置
				for (int i = 0; i < names.length; i++) {
					// 如果找到了为空的位置就标记下来
					if (names[i] == null) {
						isAdd = true;// 记录一下,已经找到一个为空的位置
						// 执行插入操作
						
						//显示所有餐品信息
						System.out.println("序号\t菜名\t单价\t点赞数");
						for (int j = 0; j < foodNames.length; j++) {
							System.out.println((j + 1) + "\t" + foodNames[j]
									+ "\t" + prices[j]+"元\t"+praiseNums[j]+"赞");
						}
						//输入所选餐品编号,份数,订餐人姓名,送餐时间,送餐地址
						System.out.print("请选择您要点的菜品编号:");
						int foodId = sc.nextInt();
						System.out.print("请选择您要点的菜品份数:");
						int foodNums = sc.nextInt();
						System.out.print("请输入订餐人姓名:");
						String name = sc.next();
						System.out.print("请输入送餐时间(送餐时间为10点到20点准时送餐):");
						int time = sc.nextInt();
						while (time > 20 || time < 10) {
							System.out.println("对不起您输入的时间不在送餐时间范围内,请输入10~20之间的整数:");
							time = sc.nextInt();
						}
						System.out.print("请输入送餐地址:");
						String address = sc.next();
						
						//计算餐费
						double sumPrice = prices[foodId -1]*foodNums;
						//送餐费,餐费达到50元免6元送餐费
						double deliCharge = sumPrice>=50?0.0:6.0;
						
						//显示订单信息
						System.out.println("订餐成功!");
						System.out.println("您订的是:"+foodNames[foodId-1]+" "+foodNums+"份");
						System.out.println("订餐人:"+name);
						System.out.println("送餐时间:"+time+"点");
						System.out.println("送餐地址:"+address);
						System.out.println("餐费:"+sumPrice+",送餐费:"+deliCharge+"元");
						System.out.println("订单总金额:"+(sumPrice+deliCharge)+"元");
						
						//保存数据
						names[i] = name;
						foods[i] = foodNames[foodId-1]+foodNums+"份";
						times[i] = time;
						addresses[i] = address;
						sumPrices[i] = sumPrice+deliCharge;
						
						break;

					}

				}
				// 如果没有找到为空的位置,则提示信息
				if (!isAdd) {
					System.out.println("对不起,您的餐袋已满!");
				}
				break;
			case 2:
				// 查看餐袋
				System.out.println("********查看餐袋********");
				System.out.println("序号\t订餐人\t所订餐品信息\t送餐时间\t送餐地址\t\t总金额\t状态");
				//遍历数组
				for (int j = 0; j < names.length; j++) {
					if(names[j]!=null){
						String state = states[j]==0?"已预订":"已完成";
						System.out.println((j+1)+"\t"+names[j]+"\t"+foods[j]+"\t"+times[j]+"点\t"+addresses[j]+"\t"+sumPrices[j]+"\t"+state);
					}
				}
				break;
			case 3:
				// 签收订单
				System.out.println("********签收订单********");
				System.out.println("请输入要签收的订单编号:");
				int signOrderId =sc.nextInt();
				boolean isFind = false;//记录这条订单true:表示找到,false:表示没有找到
				//查找这条订单
				for (int j = 0; j < names.length; j++) {
					//找到是已完成;提示不能签收,状态是预定:可以签收
					if(names[j]!=null&&states[j]==1&&signOrderId==j+1){
						isFind = true;
						System.out.println("对不起,您的订单已经完成签收,不能再次签收!");
						break;
					}else if(names[j]!=null&&states[j]==0&&signOrderId==j+1){
						isFind = true;
						states[j] = 1;//状态值改为已完成状态
						System.out.println("订单签收成功!");
						break;
					}
				}
				//没找到订单
				if(!isFind){
					System.out.println("对不起,此订单不存在!");
				}
				break;
			case 4:
				// 删除订单
				System.out.println("********删除订单********");
				System.out.println("请输入要删除的订单号:");
				int delId = sc.nextInt();
				int delIndex = -1;//删除订单的下标
				boolean isDelFind = false;
				//循环查找这条订单
				for (int i = 0; i < names.length; i++) {
					//找到此订单,已签收:执行删除操作,未签收:输出提示信息
					if(names[i] !=null&&states[i] == 1&&delId == i +1){
						delIndex = i;
						isDelFind = true;
						break;
					}else if(names[i] !=null&&states[i] == 0&&delId == i +1){
						isDelFind = true;
						System.out.println("您选择的订单未签收,不能删除!");
						break;
					}
					
				}
				//未找到此订单
				if(!isDelFind){
					System.out.println("对不起,此条订单不存在!");
				}
				//执行删除操作
				if(delIndex!=-1){
					//循环移位(从前往后)
					for (int i = delIndex+1; i <= names.length-1; i++) {
						names[i-1] = names[i];
						foods[i-1] = foods[i];
						times[i-1] = times[i];
						addresses[i-1] = addresses[i];
						states[i-1] = states[i];
					}
					//最后一位清空
					names[names.length-1] = null;
					foods[foods.length-1] = null;
					times[times.length-1] = 0;
					addresses[addresses.length-1] = null;
					states[states.length-1] = 0;
					System.out.println("订单删除成功!");
				}
				break;
			case 5:
				// 我要点赞
				System.out.println("********我要点赞********");
				//显示所有餐品信息
				System.out.println("序号\t菜名\t单价\t点赞数");
				for (int j = 0; j < foodNames.length; j++) {
					System.out.println((j + 1) + "\t" + foodNames[j]
							+ "\t" + prices[j]+"元\t"+praiseNums[j]+"赞");
				}
				//输入要点赞的餐品序号
				System.out.println("请输入要点赞的餐品序号:");
				int dishId = sc.nextInt();
				//该序号的餐品点赞数加一
				praiseNums[dishId-1]++;
				//显示
				System.out.println("点赞成功!");
				System.out.println(foodNames[dishId-1]+" "+praiseNums[dishId-1]+"赞");		
				break;
			case 6:
				// 退出系统
				// System.out.println("谢谢使用,欢迎下次光临!");
				// System.exit(0);
				break;

			default:

				break;
			}
			if (index < 1 || index > 5) {
				break;
			} else {
				// 提示输入0返回
				System.out.println("输入0返回");
				index = sc.nextInt();
			}
		} while (index == 0);
		System.out.println("谢谢使用,欢迎下次光临!");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值