java编程 吃货联盟订餐系统

最近呢,奥密克绒出现了,疫情防控严格起来了,我的线下Java程序课程暂时改成了线上了,这两天上了面向对象,对于零基础的我来说还是比较难的,唉 只能说这个进程的速度我来不及消化,趁着周五复习一下也是很老的吃货联盟订餐项目吧(欢迎有伙伴一起交流哦,尽力而为啦)。

import java.util.Scanner;

public class order02 {

	public static void main(String[] args) {
//		扫描器布置,导包!
		Scanner scanner = new Scanner(System.in);
		
		
//		声明变量
		int choice = 0;
		int dishNum = 0;
		boolean isFull = true;
		boolean isFind = true;
		boolean isExit = false;
		/* 定义菜单以及其他变量数组来存储数据信息*/
		String[] menu = { "红烧鸡翅", "开水白菜", "红烧猪蹄", "农家炒肉" };/* 菜单 */
		double[] price = { 24, 15, 36, 5 }; /* 单价 */
		String[] DishName = new String[4];/* 顾客选的菜 */
		int[] copies = new int[4];/* 菜品份数 */
		String[] names = new String[4];/* 顾客姓名 */
		String[] address = new String[4];/* 顾客地址 */
		int[] like = new int[4];/* 点赞数 */
		int[] times = new int[4]; /* 送达时间 */
		double[] money = new double[4];/* 菜品份数 */
		int[] con = new int[4];/* 订单状态  0代表 已订餐,1代表 已完成*/
		
		
		
//		do while 大循环结构包含订餐首页!
		do {
			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("我要:");
			 choice = scanner.nextInt();
			 
			 
//			在do-while循环中,利用switch case语句执行不同的功能页.
			 switch (choice) {
				case 1:/* 订单界面 */
					System.out.println("*******我要订餐*******");
					for (int i = 0; i < names.length; i++) {
						if (names[i]== null) {
							isFull = false;
							System.out.println("请输入订餐人姓名:");
							String name = scanner.next();
				
							System.out.println("序号\t菜品\t\t单价\t点赞数");
//	利用for循环遍历菜单数组!
							for (int j = 0; j < menu.length; j++) {
								System.out.println((j+1)+"\t"+menu[j]+"\t"+price[j]+"\t  "+like[j]);
							}
//	利用dowhile循环判断输入菜品序号是否合法!
								do {
									System.out.println("请输入1~4之间的整数,选择相应菜品:");
									 dishNum = scanner.nextInt();
								} while ( dishNum > 4||dishNum < 1);
								System.out.println("请输入份数:");
								int copy = scanner.nextInt();
								System.out.println("请输入地址:");
								String address1 = scanner.next();
								System.out.println("请选择送达时间(输入8-20之间的整数):");
								int time = scanner.nextInt();
								while ( time>20||time<8) {
									System.out.println("请选择送达时间(输入8-20之间的整数):");
									time = scanner.nextInt();
								}
								int deli = (price[dishNum-1]*copy) > 50 ? 0 : 6;
								double money1 = price[dishNum-1]*copy+deli ;
								System.out.println("订餐成功!");
								System.out.println("******订单信息确认******");
								System.out.println("您选择的是:"+menu[dishNum-1]+copy+"份.");
								System.out.println("您的送餐地址是:"+address1);
								System.out.println("送达时间为:"+time);
								System.out.println("餐费:"+price[dishNum-1]*copy+",配送费:"+deli+",总金额:"+money1+".");
//							将这些局部变量赋值给开辟好空间的全局变量数组!
								DishName[i] = menu[dishNum-1];
								names[i] = name;
								copies[i] = copy;
								address[i] = address1;
								times[i] = time;
								money[i] = money1;
								break;
						}
						
						if (isFull) {
							System.out.println("对不起,餐袋已满,请删除订单再来订餐!");
							
						}
					}
					
				break;
	
				
				
			case 2:/* 查看餐袋界面 */
				System.out.println("*******查看餐袋*******");
//				利用for循环遍历dishName数组!
				System.out.println("序号"+"\t"+"菜品"+"\t"+"\t"+"份数"+"\t"+"\t"+"订餐人"+"\t"+"地址"+"\t"+"送达时间"+"\t"+"总金额"+"\t"+"订单状态");
				for (int i = 0; i < names.length; i++) {
					if (names[i]!= null) {
						String  state = (con[i] == 0) ? "已预订":"已完成";
						System.out.println((i+1)+"\t"+DishName[i]+"\t"+copies[i]+"份"+"\t"+"\t"+names[i]+"\t"+address[i]+"\t"+times[i]+"\t"+"\t"+money[i]+"\t"+state);
					}
				}
				break;
				
				
			case 3:/* 签收订单界面 */
				System.out.println("*******签收订单*******");
//				首先 要判断输入要签收的订单序号是否合法,其次是订单是否存在,最后订单是否已经被签收。
				System.out.println("请输入要签收的订单号:");
				int SignNum = scanner.nextInt();
				while(SignNum<1||SignNum>4) {
					System.out.println("请输入正确的签收订单号:");
					 SignNum = scanner.nextInt();
				}
				for (int j = 0; j < con.length; j++) {
					if (names[j] != null&&con[j] == 0&& SignNum ==j+1) {
						con[j] = 1;
						System.out.println("签收成功!");
						isFind = false;
						break;
						
					}
					if (names[j] != null&&con[j] == 1&& SignNum ==j+1) {
						System.out.println("该订单已被签收,请勿重复签收");
						isFind = false;
						break;
					}
					if (isFind) {
						System.out.println("该订单不存在!");
					}
				}
			    break;
			    
			    
			case 4:/* 删除订单界面 */
				System.out.println("*******删除订单*******");
//				首先判断要删除的订单是否合法,其次判断该订单是否存在,最后判断该订单是否还未被签收。
				System.out.println("请输入要删除的订单序号:");
				int delNum = scanner.nextInt();
				while(delNum<1||delNum>4) {
					System.out.println("请输入正确的删除订单号:");
					delNum = scanner.nextInt();
				}
				for (int j = 0; j < names.length;j++) {
					if (names[j]!= null&&con[j] == 1&& delNum ==j+1) {
						/* 利用for循环将要删除的订单后面的订单去覆盖前一位的订单 */
						for (int k = delNum -1; k < names.length-1; k++) {
							
							names[k] = names[k+1];
							address[k] = address[k+1];
							times[k] =times[k+1];
							DishName[k] =DishName[k+1];
							copies[k] = copies[k+1];
							con[k] = con[k+1];
							money[k] = money[k+1];
						}
						/* 并将最后一位数据清零 */
						names[names.length-1] = "null";
						address[names.length-1] = "null";
						times[names.length-1] =0;
						DishName[names.length-1] ="null";
						copies[names.length-1] = 0;
						con[names.length-1] = 0;
						money[names.length-1] =0;
						
						System.out.println("删除成功!");
						isFind = false;
						break;
					}
					if (names[j]!= null&&con[j] == 0&& delNum ==j+1) {
						System.out.println("该订单还未被签收,无法删除。");
						isFind = false;
						break;
					}
					if (isFind) {
						System.out.println("该订单不存在!");
					}
				}	
				break;
				
				
				
				
			case 5:/* 点赞界面 */
				System.out.println("*******我要点赞*******");
				System.out.println("序号\t菜品\t\t单价\t点赞数");
//				利用for循环遍历菜单数组!
				for (int j = 0; j < menu.length; j++) {
						System.out.println((j+1)+"\t"+menu[j]+"\t"+price[j]+"\t  "+like[j]);
				}
					System.out.println("请输入要点赞的菜品序号:");
					int likeNum = scanner.nextInt();
//					while循环判断输入的序号是否合法
					while(likeNum<1||likeNum>4) {
						System.out.println("请输入正确的点赞订单号:");
						likeNum = scanner.nextInt();
					}
					like[likeNum-1]++;
				break;
				
				
				
				
				
				
			case 6:/* 退出系统 */
				System.out.println("*******退出系统*******");
				isExit = true;
				break;
					
			default:
				System.out.println("*******输入有误,退出系统*******");
				isExit = true;
				break;
			}
			 if(!isExit) {
					System.out.println("请输入0返回");
					choice = scanner.nextInt();
			 }
			 
			 
			 
			
		} while (choice == 0);
//	当choice 这个变量变为0时执行首页这个循环体.
		

		System.out.println("谢谢使用,欢迎下次光临!");
		scanner.close();
	
	}

}

里面的双斜杠和斜杠+*所标识的汉字都是我自个的标注,不写进代码不会影响的哦,写的还有些许瑕疵,欢迎伙伴找我讨论相互学习!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值