第二次项目《吃货联盟Plus》

/**
 * 1、创建一个可以更改容量的数组,并创建相应的信息存储数组。
 * 2、建立用户登录账号界面,进入后方可操作,并建立switch来供用户选择。
 * 3、建立我要点餐输入订餐人姓名,存储订餐人的菜单,份数,地址,送餐时间等等。
 * 4、建立查询餐袋选项,用for循环遍历,高级for不能使排版整齐。
 * 5、建立签收选项,先for遍历出菜单信息,在进行变量的声明的if操作。
 * 6、建立删除选项,先for遍历出菜单信息,在判断是否签收,还有强制签收操作,
 * 用for排序使被删除的对应数组索引值覆盖,并清空最后一个索引值。
 * 7、建立点赞选项,for遍历出菜单,更具用户选择,存到对应数组。
 * 8、退出选项。
 * 9、建立非常规操作的提示信息,防止用户不安套路出牌。
 * @author 周太阳
 * @version 1.0
 */
import java.util.Scanner;
public class OrderingMgr {
	// 练习函数 user 用于存储账号密码
	public static String[][] user;
	// arrays 定义数组容量
	public static int arrays = 4;;
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		// 管理员密码
		user = new String[3][2];
		user[2][0] = "aaa";
		System.out.println("请输入密码:");
		// 管理员输入密码
		String password = input.next();
		// 管理员更改数组长度
		if(password.equals(user[2][0])) {
			System.out.println("=====欢迎来到管理员界面=====");
			System.out.print("请输入要更改数组容量的最大值:");
			arrays = input.nextInt();
		}else {
			System.out.println("密码错误!");
		}
		// 存储姓名
		String[] names = new String[arrays];
		// 存储菜单
		String[] menu = new String[arrays];
		// 存储订餐时间
		int[] times = new int[arrays];
		// 存储订餐地址
		String[] addresses = new String[arrays];
		// 存储订餐状态
		int[] states = new int[arrays];
		// 存储订单总金额
		double[] sumPrices = new double[arrays];
		// 存储菜品信息
		String[] dishNames = { "红烧帝王蟹", "炝锅鱿鱼虾", "美洲炒虾尾", "火爆大鱿鱼"};
		// 存储菜品价格
		double[] prices = {202.5, 80.5, 100.66,66.6};
		// 存储点赞数
		int[] praiseNums = {666, 555, 678, 777};
		// 存储时间
		String[] date = new String[arrays];
		// 订单编号,每存储一个订单,i+1
		int i = 0;
		// 定义一个标签,没点餐时限制其他菜单进入
		boolean flag = true;
		// 附加费5元
		double sendPrices = 5;
		// 登陆界面
	start:do {
		System.out.println("今日预计接待" + names.length + "人,加油!!!");
		System.out.println("欢迎使用“☆★☆吃货联盟订餐系统2x v1.0 plus+版☆★☆”");
		System.out.println("1、登陆\n2、注册\n");
		String userChoose = input.next();
		switch(userChoose) {
			// 登陆
			case "1":
				if(user[1][1] == null) {
					System.err.println("未注册,请先注册!");
					break;
				}
				// 输入账号密码
				while(true) {
				System.out.print("请输入账号:");
				user[0][0] = input.next();
				System.out.print("请输入密码:");
				user[0][1] = input.next();
					if(user[0][0].equals(user[1][0]) && user[0][1].equals(user[1][1]) ) {
						System.out.println("登陆成功,下面开始吃货之旅!");
						flag = false;
						break;
					}else {
						System.err.println("账号或密码不正确!请重新输入");
					}
				}
				break;
			case "2":
				// 注册界面
				while(true) {
					System.out.print("请输入账号:");
					user[1][0] = input.next();
					System.out.print("请输入密码:");
					user[1][1] = input.next();
					System.out.println("注册成功,是否进入吃货联盟订餐系统?(y/n)");
					String y = input.next();
					if(y.equalsIgnoreCase("y")) {
						flag = false;
						break start;
					}else {
						break;
					}
				}
				break;			
			default:
				System.err.println("输入错啦,这里只有两个选项啊=_=");	
			}
		}while(flag);
		// 吃货联盟菜单
		do {
			System.out.println("欢迎使用“☆★☆吃货联盟订餐系统2x v1.0 plus+版☆★☆”");
			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("请选择:");
			String choose = input.next();
			switch (choose) {
			// 我要订餐
			case "1":
				// 数组没空位,限制进入
				if(names[names.length - 1] != null) {
					System.out.println("生意太火爆了,订单已满,直接去店里面坐吧");
					break;
				}
				System.out.println("***我要订餐***");
				// 订餐循环
				outer: while (true) {
					System.out.print("请输入订餐人姓名:");
					names[i] = input.next();
					System.out.println("序号\t菜名\t\t单价\t\t好评数");
					// 遍历菜单
					for (int j = 0; j < dishNames.length; j++) {
						System.out.println((j + 1) + "\t" + dishNames[j] + "\t\t" 
						+ prices[j] + "\t\t" + praiseNums[j] + "元");
					}
					System.out.print("请输入要选择的菜品序号(满100元免送餐费):");
					// 点餐序号
					int userNum = 0;
					// 限制用户不安套路出牌
					while(true) {
						// 判断是否输入不为整数
						while (!input.hasNextInt()) {
							System.err.println("别想玩我╮(╯▽╰)╭请按套路出牌!");
							// 再次输入
							input.next();
						}
						// 输入正确给点餐序号赋值
						userNum = input.nextInt();
						// 如果输入的点餐序号不在菜单内且不能使负数,菜品不为空就进入下一环节
						if((userNum - 1) < dishNames.length && (userNum - 1) > -1
							&& dishNames[userNum - 1] != null) {
							break;
						}else {
							System.err.println("╮(╯▽╰)╭你想来盘空气吗?张张嘴就有。");
						}
					}
					// 点餐份数
					int portion = 0;
					System.out.println("请输入份数(满100元免送餐费):");
					// 输入点餐份数,各种骚操作封锁
					while(true){
						// 判断是否输入不为整数
						while (!input.hasNextInt()) {
							System.err.println("别想玩我╮(╯▽╰)╭请按套路出牌!");
							// 再次输入
							input.next();
						}
						// 输入正确给点餐份数赋值
						portion = input.nextInt();
						// 如果份数是负数
						if(portion < 0) {
							System.out.println("负数啊~~~我也想到了,你想给老板钱吗?(ˉ(∞)ˉ)");
						// 如果份数等于0
						}else if(portion == 0){
							System.err.println("不要就算啦(╰_╯)#浪费我来显示!!");
							// 退出订餐
							break outer;
						}else {
							break;
						}
					}
					// 计算菜品和份数存入第i位用户菜单
					menu[i] = dishNames[userNum - 1] + portion + "份"; 
					// 送餐时间循环
					while (true) {
						System.out.println("请输入送餐时间(10点到20点之间送餐):");
						// 判断是否输入不为整数
						while (!input.hasNextInt()) {
							System.out.println("请输入正确的数字:");
							// 再次输入
							input.next();
						}
						// 输入正确给第i为送餐时间赋值
						times[i] = input.nextInt();
						// 送餐时间在10点到20点
						if (times[i] >= 10 && times[i] <= 20) {
							date[i] = times[i] + "点";
							break;
						} else {
							System.out.println("在送餐时间外,我们不配送的,请选择重新选择!");
						}

					}
					System.out.println("请输入您的地址:");
					// 客户地址
					String address = input.next();
					// 存入客户地址到第i个地址数组
					addresses[i] = address;
					// 计算总金额存入第i个金额数组
					sumPrices[i] = prices[userNum - 1] * portion;
					// 未满100元,需要加送餐费5元
					if (sumPrices[i] < 100) {
						System.out.println("未满100元,需要加送餐费5元.");
						sumPrices[i] += 5;
					}
					System.out.println("订餐成功!");
					System.out.println("您的订餐信息为:");
					System.out.println("序号\t订餐人\t餐品信息\t\t送菜时间\t送餐地址\t\t\t总金额\t配送费");
					// 遍历订单
					for (int k = 0; k < names.length; k++) {
						if (names[k] != null) {
							System.out.println((k + 1) + "\t" + names[k] + "\t" + menu[k] + "\t" 
						+ date[i] + "\t"+ addresses[k] + "\t\t\t" + sumPrices[k] + "元" + sendPrices + "元");
						}
					}
					// 是否正确
					System.out.println("确定?<y/n>");
					String yesOrNo = input.next();
					if (yesOrNo.equalsIgnoreCase("y")) {
						// 正确就开启菜单功能
						flag = true;
						i++;
						break outer;
					}
					continue;
				}
				break;
			// 查看餐袋
			case "2":
				// 判断是否有人已经点过餐
				if(flag) {
					// 查看餐袋循环
					while(true) {
					System.out.println("***查看餐袋***");
					System.out.println("序号\t订餐人\t\t餐品信息\t\t送菜时间\t送餐地址\t\t\t总金额\t订单状态\t配送费");
					// 遍历餐袋
					for (int j = 0; j < names.length; j++) {
						// 不遍历空的元素
						if (names[j] != null) {
							// 订单状态0为预定,不等于0为完成
							String state = (states[j] == 0) ? "已预订" : "已完成";
							// 送餐时间
							date[j] = times[j] + "点";
							// 总金额
							String sumPrice = sumPrices[j] + "元";
							System.out.println((j + 1) + "\t" + names[j] + "\t\t" + menu[j] 
							+ "\t" + date[j] + "\t"+ addresses[j] + "\t\t\t" 
							+ sumPrices[j] + "元" + "\t" + state + sendPrices + "元");
						}
					}
					// 是否继续
					if(isContinue()) {
							break;
						}else {
							continue;
						}
					}
				}else {
					System.err.println("关关雎鸠,在河之洲。饿肚吃货,老板好逑~请等等顾客点菜吧-_-|||");
				}
				break;
			// 签收订单
			case "3":
				// 判断是否有人已经点过餐
				if(flag) {
					order: do {
						System.out.println("***签收订单***");
						System.out.println("序号\t订餐人\t\t餐品信息\t\t送菜时间\t送餐地址\t\t\t总金额\t订单状态\t配送费");
						for (int k = 0; k < names.length; k++) {
							// 不遍历空的元素
							if (names[k] != null) {
								// 订单状态0为未签收,不为0为已签收
								String state = (states[k] == 0) ? "未签收" : "已签收";
								System.out.println((k + 1) + "\t" + names[k] + "\t\t" + menu[k] + "\t" 
								+ date[k] + "\t"	+ addresses[k] + "\t\t\t" 
								+ sumPrices[k] + "元" + "\t" + state + sendPrices + "元");
							}
						}
						System.out.println("请选择要签收的订单:");
						// 选择订单标记
						int sign = 0;
						while(true) {
							// 判断是否输入为整数
							while (!input.hasNextInt()) {
								System.err.println("别想玩我╮(╯▽╰)╭请输入正确格式的订单号:");
								// 再次输入
								input.next();
							}
							// 输入正确给予赋值
							sign = input.nextInt();
							// 判断非正常值
							if(sign-1 < names.length && (sign - 1) > -1) {
								break;
							}else {
								System.err.println("别想玩我╮(╯▽╰)╭请输入正确的序号!");
							}
						}
						// 遍历订单
						for (int j = 0; j < names.length; j++) {
							// 不遍历空订单
							if ((sign - 1) < names.length && names[sign - 1] != null) {
								// 判断订单是否签收
								if (states[sign -1] == 1) {
									System.err.println("订单已签收!无需再次签收!");
								} else {
									// 签收成功赋值并退出循环
									states[sign - 1] = 1;
									System.out.println("订单签收成功!");
									break;
								}
							} else {
								System.err.println("订单不存在哎?_?");
								continue order;
							}
						}
					// 判断是否返回主菜单
					} while (!isContinue());
				}else {
					System.err.println("关关雎鸠,在河之洲。败金饿肚,老板好逑~请等等顾客点菜吧-_-|||");
				}
				break;
			// 删除订单
			case "4":
				// 判断是否有人已经点过餐
				if(flag) {
				exit:do {
					System.out.println("***删除订单***");
					System.out.println("序号\t订餐人\t\t餐品信息\t\t送菜时间\t送餐地址\t\t\t总金额\t订单状态\t配送费");
					// 遍历订单
					for (int j = 0; j < names.length; j++) {
						// 不遍历空的订单
						if (names[j] != null) {
							// 查看状态
							String state = (states[j] == 0) ? "已预订" : "已完成";
							// 存订单时间
							date[j] = times[j] + "点";
							String sumPrice = sumPrices[j] + "元";
							System.out.println((j + 1) + "\t" + names[j] + "\t\t" + menu[j] 
							+ "\t" + date[j] + "\t"+ addresses[j] + "\t\t\t" 
							+ sumPrices[j] + "元" + "\t" + state + sendPrices + "元");
						}
					}
					// 删除订单序号
					int num = 0;
					while(true) {
						System.out.println("请输入要删除的订单序号:");
						// 判断非正常输入
						while (!input.hasNextInt()) {
							System.err.println("又开始玩了╮(╯▽╰)╭请输入正确格式的订单号!");
							// 继续输入
							input.next();
						}
						// 输入正确赋值
						num = input.nextInt();
						// 判断是否有此订单
						if((num - 1) < names.length && (num - 1) > -1 && names[num - 1] != null) {
							break;
						}else {
							System.err.println("手抖了吧( ⊙ o ⊙ )啊!╮(╯▽╰)╭无此订单!");
							// 是否继续
							if(isContinue()) {
								break exit;
							}else {
								continue;
							}
						}
					}
					// 判断订单状态是否已签收
					if (states[num - 1] == 1) {
						// 已签收,删除订单且后面订单往前移清空最后一个订单
						for (int j = (num - 1); j < (names.length - 1); j++) {	
							names[j] = names[j + 1];
							menu[j] = menu[j + 1];
							times[j] = times[j + 1];
							date[j] = date[j + 1];
							addresses[j] = addresses[j + 1];
							sumPrices[j] = sumPrices[j + 1];
							states[j] = states[j + 1];
							int endDel = (names.length - 1);
							names[endDel] = null;
							menu[endDel] = null;
							times[endDel] = 0;
							date[endDel] = null;
							addresses[endDel] = null;
							sumPrices[endDel] = 0;
							states[endDel] = 0;
							if(names[0] == null) {
								flag = false;
								break;
							}
						}
						System.out.println("成功删除订单!");
					// 如果订单未签收判断是否强制删除
					} else {
						System.err.println("该订单未被签收!是否强制删除?"
								+ "(强制删除请输入yes,返回请任意输入)");
						String yes = input.next();
						// 输入yes强制删除
						if (yes.equalsIgnoreCase("yes")) {
							// 未签收订单删除,后面订单往前移并清空最后一个订单
							for (int j = (num - 1); j < (names.length - 1); j++) {								
								names[j] = names[j + 1];
								menu[j] = menu[j + 1];
								times[j] = times[j + 1];
								date[j] = date[j + 1];
								addresses[j] = addresses[j + 1];
								sumPrices[j] = sumPrices[j + 1];
								states[j] = states[j + 1];
								int endDel = (names.length - 1);
								names[endDel] = null;
								menu[endDel] = null;
								times[endDel] = 0;
								date[endDel] = null;
								addresses[endDel] = null;
								sumPrices[endDel] = 0;
								states[endDel] = 0;
								// 如果全部删除
								if(names[0] == null) {
									// 提示无菜单
									flag = false;
									break;
								}
							}
							System.out.println("成功删除订单!");
							
						} else {
							break;
						}
					}
					// 是否返回主菜单
					}while(!isContinue());
				}else {
				System.err.println("关关雎鸠,在河之洲。败金饿肚,老板好逑~请等等顾客点菜吧-_-|||");
			}
			break;
			// 我要点赞
			case "5":
				// 判断菜单是否为空
				if(dishNames[0] != null) {
					do {
						System.out.println("***我要点赞***");
						System.out.println("序号\t餐品信息\t\t好评数");
						// 遍历菜品
						for (int j = 0; j < dishNames.length; j++) {
							System.out.println((j+1) +"\t" + dishNames[j] +"\t\t" + praiseNums[j]);
						}
						System.out.print("菜品味道不错吧,来为它点个赞吧:");
						// 点赞选择
						int like = 0;
							while(true) {
								// 判断是否为整数
								while (!input.hasNextInt()) {
									System.err.println("想想别的玩法吧╮(╯▽╰)╭,请重新正确格式的序号!");
									// 继续输入
									input.next();
								}
								// 正确就赋值
								like = input.nextInt();
								// 判断输入菜品是否存在
								if ((like - 1) < praiseNums.length && dishNames[like - 1] != null) {
									// 点赞赋值
									praiseNums[like - 1]++;
									System.out.println("点赞成功!");
									break;
								}else {
										System.err.println("点赞要厚道╮(╯▽╰)╭请输入正确的菜单序号。");
								}
							}
					// 是否继续
					}while(!isContinue());
				}else {
					System.err.println("只有陶醉肚子的美食,才有挣不完的金钱,赶快加菜吧(¯﹃¯)");
				}
				break;
			// 退出
			case "6":
				System.out.println("谢谢使用,欢迎下次光临!");
				System.exit(0);
			default:
				System.err.println("请输入正确的数字");
			}
			System.out.println("*************************************");
		} while (true);
	}
	/**是否继续方法*/
	public static boolean isContinue() {
		Scanner input = new Scanner(System.in);
		System.out.println("是否返回主菜单?(y/n)");
		String yesOrNo = input.next();
		if(yesOrNo.equalsIgnoreCase("y")) {
			return true;
		}else {
			return false;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值