小实战项目之——吃货联盟订餐系统

系统概述:

  1. 我要订餐
  2. 查看餐袋
  3. 签收订单
  4. 删除订单
  5. 我要点赞
  6. 退出系统

 

 下面是实例代码:



import java.util.Scanner;

public class OrderFoodSys {

	public static void main(String[] args) {
//		定义数据主体:订单   菜品
		String[] dishNames ={"红烧带鱼","鱼香肉丝","时令蔬菜"};//菜品名称
		double[] prices = {38.0,20.0,10.0};//菜品的单价
		int[] praiseNums = new int[3];//点赞数
//		定义数据主体: 订单-订餐人    餐品信息    送餐时间    送餐地址   总金额  订单状态
		 String[] names = new String[4];
		 String[] dishMsg = new String[4];//菜品名称+订份数
		 int[] times = new int[4];
		 String[] adresses = new String[4];
		 double[] sumPrices = new double[4];
		 int[] states = new int[4];//0:已预定 1:已完成
		 
//		 初始化2个订单信息
		 names[0]="张三";
		 dishMsg[0]="红烧带鱼 2份";
		 times[0]=10;
		 adresses[0]="知春路223号";
		 sumPrices[0]=76;//餐费》50免费送,不然,配送费6元
		 states[0]=0;
		 
		 names[1]="李四";
		 dishMsg[1]="鱼香肉丝 1份";
		 times[1]=13;
		 adresses[1]="天成路207号";
		 sumPrices[1]=26;//餐费》50免费送,不然,配送费6元
		 states[1]=1;
		 
//		 搭建项目整体流程框架
		 Scanner input = new Scanner(System.in);
		 int num = -1;//用户输入0返回时的输入数字,num=0时重复显示主菜单;num在用户每次订餐操作后进行提示重新赋值
//		 System.out.println("欢迎使用“吃货联盟订餐系统”");
		 System.out.println("欢迎使用\"吃货联盟系统\"");
		 boolean flag=false;//ture 退出 flase 不退出
		 
		 do{
			 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("请选择:");
			 int choose = input.nextInt();
			 switch(choose){
			 	case 1:
			 		System.out.println("\n******我要订餐***********");
			 		//订单前提是订单未满,boolean变量来标识订单是否满了的结果,满了false不可订单
			 		boolean isAdd = false;
			 		for (int i = 0; i < names.length; i++) {
						if(names[i]==null){
							//订单未满,可以订餐
							isAdd = true;
							//订餐。
							System.out.print("请输入订餐人姓名:");
							String name = input.next();
							//循环输出菜品信息
							System.out.println("序号\t菜品\t单价");
							for(int j =0;j<dishNames.length;j++){
								String praise =(praiseNums[j]==0)?"":praiseNums[j]+"赞";
								System.out.println((j+1)+"\t"+dishNames[j]+"\t"+prices[j]+"\t"+praise);
							}
							//菜品编号的输入及判断
								System.out.print("请输入您要点的菜品编号:");
								int no = input.nextInt();
								while(no<1||no>dishNames.length){
									System.out.print("本店没有这个菜品,请重新选择:");
									no=input.nextInt();
								
								}
								//点菜份数
								System.out.print("请输入您需要的份数:");
								int number = input.nextInt();
								//送餐时间的输入及判断
								System.out.print("请输入送餐时间(送餐时间只能在10-20之间的整点):");
								int time = input.nextInt();
								while(time <10|| time>20){
									System.out.println("您输入有误,请输入10-20之间的整数:");
									time = input.nextInt();
								}
								//送餐地址
								System.out.print("请输入送餐地址:");
								String address = input.next();
								//添加到订单,输出订单信息给用户看
								System.out.println("订餐成功!");
								//菜品信息:菜品名称 份数
								String dishInfo = dishNames[no-1]+" "+number+"份";
								System.out.println("您订的是:"+dishInfo);
								System.out.println("送餐时间:"+time+"点");
								//餐费  配送费  总计
								//餐费 prices数组下标 比用户选择 的菜品编号小1
								double dishPrice = prices[no-1]*number;
								double peiSong = (dishPrice>50)?0:6;
								double sumPrice = dishPrice +peiSong;
								System.out.println("餐费:"+dishPrice+"元; 配送费:"+peiSong+";总计:"+sumPrice+"元");
								//把订餐信息添加到订餐信息,插入订单的位置是关键:i
								names[i]=name;
								dishMsg[i]=dishInfo;
								times[i]=time;
								adresses[i]=address;
								sumPrices[i]=sumPrice;
								// 
								break;
								}
						}
						if(!isAdd){
							System.out.println("对不起,您的餐袋已满!");
						}
					
			 		break;
			 		
			 	case 2:
			 		System.out.println("\n******查看餐袋***********");
			 		System.out.println("序号\t订餐人\t订餐食品\t\t配送时间\t配送地址\t\t订餐金额\t订单状态");
			 		for (int i = 0; i < names.length; i++) {
						if(names[i]!=null){
							String time = times[i]+"点";
							String state = (states[i]==0)?"已预定":"已完成";
							System.out.println((i+1)+"\t"+names[i]+"\t"+dishMsg[i]+"\t"+time+"\t"+adresses[i]+"\t"+sumPrices[i]+"\t"+state);
						}
					}
			 		break;
			 	case 3:
			 		System.out.println("\n******签收订单***********");
			 		//签收之前,要先判断订单是否存在,boolean
			 		//false 不存在,不能签收:true-存在,且预定状态,能签收;存在,完成状态,不能签收
			 		boolean isSign = false;
			 		System.out.println("输入你要签收的订单编号:");
			 		int signNo = input.nextInt();
			 		for(int i = 0;i<names.length;i++){
			 			if(names[i]!=null&&states[i]==0&&i==signNo-1){
			 				//有订单信息,并且用户输入的订单编号我能找到
			 				isSign = true;
			 				//并且订单状态为已预定,能签收
			 				states[i]=1;
			 				System.out.println("订单签收成功!");
			 			}
			 			else if(names[i]!=null&&states[i]==1 && i==signNo-1){
			 				//有订单信息,并且用户输入的订单编号我能找到
			 				isSign=true;
			 				//但是订单状态为已完成,不能签收
			 				System.out.println("您选择的订单已经完成签收,不能再次签收!");
			 			}
			 		}
			 		if(!isSign){
			 			System.out.println("您选择的订单不存在!");
			 		}
			 		break;
			 	case 4:
			 		System.out.println("\n******删除订单***********");
			 		//删除之前,要先判断订单是否存在,boolean
			 		//false 不存在,不能删除:true-存在,且预定状态,不能删除;存在,完成状态,能删除
			 		boolean isDelete = false;
			 		System.out.print("输入你要删除的订单编号:");
			 		int deleteNo = input.nextInt();
			 		for(int i = 0;i<names.length;i++){
			 			if(names[i]!=null&&states[i]==0&&i==deleteNo-1){
			 				//有订单信息,并且用户输入的订单编号我能找到
			 				isDelete = true;
			 				//并且订单状态为已预定,不能删除
			 				
			 				System.out.println("您选择的订单未签收,不能删除!");
			 			}
			 			else if(names[i]!=null && states[i]==1 && i==deleteNo-1){
			 				//有订单信息,并且用户输入的订单编号我能找到
			 				isDelete=true;
			 				//但是订单状态为已完成,能删除
			 				//找到删除订单位置下标i,把i后面元素依此向前移动,最后一个元素置空
			 				//注意:移动的过程其实是把后一个元素往前一个元素复制的过程
			 				//最后一个元素一定要置空,置空就可以下新订单了
			 				for (int j = i; j < names.length-1; j++) {
			 					names[j]=names[j+1];
			 					dishMsg[j]=dishMsg[j+1];
			 					times[j]=times[j+1];
			 					adresses[j]=adresses[j+1];
			 					sumPrices[j]=sumPrices[j+1];
			 					states[j]=states[j+1];
							}
			 				names[names.length-1]=null;
		 					dishMsg[names.length-1]=null;
		 					times[names.length-1]=0;
		 					adresses[names.length-1]=null;
		 					sumPrices[names.length-1]=0;
		 					states[names.length-1]=0;
		 					
		 					System.out.println("删除订单成功!");
			 			}
			 		}
			 		if(!isDelete){
			 			System.out.println("您选择的订单不存在!");
			 		}
			 		break;
			 	case 5:
			 		System.out.println("\n******我要点赞***********");
			 		//循环输出菜品信息
			 		System.out.println("序号\t菜名\t单价");
			 		for (int j = 0; j < dishNames.length; j++) {
						String praise=(praiseNums[j]==0)?"":praiseNums[j]+"赞";
						System.out.println((j+1)+"\t"+dishNames[j]+"\t"+praise);
					}
			 		//点赞
			 		System.out.println("请输入您要点赞的菜品序号:");
			 		int praiseNo= input.nextInt();
			 		while(praiseNo<1||praiseNo>dishNames.length){
			 			System.out.print("本店没有这个菜品,无法点赞!请重新输入一个菜品序号:");
			 			praiseNo = input.nextInt();
			 		}
			 		//关键点:把那个位置菜品点赞数加1
			 		praiseNums[praiseNo-1]++;
			 		break;
			 	case 6:
			 		flag = true;
			 		break;
			 	default:
			 		flag = true;
			 		break;
			 		
			 }
			 if(!flag){//!flag 等同于 flag==false
			 System.out.print("请输入0返回:");
			 num = input.nextInt();
			 }else{
				 break;
			 }
			 
		 }while(num==0);
		 System.out.println("谢谢使用,欢迎下次光临!");
		 
	}

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值