《吃货联盟定餐系统》

代码+需求说明

package cn.bdqn.demo03;

import java.util.Scanner;

public class Work {
	public static void main(String[] ages){
		//数据主体:一组订单信息
		String[] names = new String[4];//订餐人
		String[] dishMegs = new String[4];//所送餐品信息
		int[] times = new int[4];//送餐时间
		String[] addresses = new String[4];//送餐地址
		int[] states = new int[4];//订单状态 0:已预定 1:已完成
		double[] sumPrices = new double[4];//总金额
		
		//初始化2条订单信息
		names[0] = "张晴";
		dishMegs[0] = "鱼香肉丝  1份";
		times[0] = 12;
		addresses[0] = "天成路209号";
		states[0] = 1;
		sumPrices[0] = 24.0;
		
		names[1] = "张晴";
		dishMegs[1] = ""
				+ "鱼香肉丝 2份";
		times[1] = 12;
		addresses[1] = "天成路202号";
		states[1] = 0;//已预定
		sumPrices[1] = 42.0;	
		//数据主体:一组餐品信息
		String[] dishNames = {"红烧带鱼","鱼香肉丝","时令蔬菜"};
		double[] prices = {38.0,18.0,10.0};
		int[] praiseNums = new int[3];
		
		Scanner input = new Scanner(System.in);
		int num = -1;//记录用户输入的数字
		
		System.out.println("\n欢迎使用“吃货联盟订餐系统”");
		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.println("请选择:");
			int choose = input.nextInt();//记录用户选择的功能编号
			
			boolean isAdd = false;//true:记录找到了一个为空的位置,可以用插入false:没有找到
			//根据用户输入的功能编号,执行相应的功能
			switch(choose){
			case 1:
				//1.我要订餐
				System.out.println("*****我要订餐****");
				//1.查找要插入的位置
				for(int  i=0;i<names.length;i++){
					//如果找到为空的位置,记录下来
					if(names[i] == null){
						isAdd = true;//记录已找到一个为空的位置
						//执行插入操作
						//a.显示所有可供选择的信息
						System.out.println("序号\t餐品名\t单价\t点赞数");
						for(int  j=0;j<dishNames.length;j++){
							String price = prices[j]+"元";
							String praise = praiseNums[j]+"赞";
							System.out.println((j+1)+"\t"+dishNames[j]+"\t"+price+"\t"+praise);
						}
						//输入所选餐品编号以及份数
						System.out.println("请选择所定餐品序号:");
						int chooseDish = input.nextInt();
						System.out.println("请选择所定份数:");
						int number = input.nextInt();
						String dishMeg = dishNames[chooseDish-1]+" "+ number+"份";					
						
						//b.输入订餐人姓名
						System.out.println("请输入订餐人姓名:");
						String name = input.next();
						
						//c.输入送餐时间
						System.out.println("请输入送餐时间(10~20整点送餐):");
						int time = input.nextInt();
						
						//如果输错了,重复输入
						while(time<10 || time>20){
							System.out.println("对不起,您的输入哟喂,请重新输入10~20之间的数:");
							time = input.nextInt();
						}
						
						//d.输入送餐地址
						System.out.println("请输入送餐地址:");
						String address= input.next();
						
						//e.计算餐费
						double sumPrice = prices[chooseDish-1]*number;
						//送餐费,当送餐费达到50元时,免6元送餐费
						double deliCharge = sumPrice>=50?0.0:6.0;
						//显示订单信息
						System.out.println("定餐成功!");
						System.out.println("您定的是:"+dishMeg);
						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;
						dishMegs[i] = dishMeg;
						times[i] = time;
						addresses[i] = address;
						sumPrices[i] = sumPrice+ deliCharge;
						
						
						break;
					}
				}
				//如果没有找到为空的位置,则提示信息
				if(!isAdd){
					System.out.println("对不起,您的餐袋已满!");
				}
				break;
			case 2:
				//2.查看餐袋
				System.out.println("****查看餐袋****");
				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 time = times[i]+"点";
						String sumPrice = sumPrices[i]+"元";
						String state = states[i]==0?"已预定":"已完成";
						System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+addresses[i]+"\t"+time+"\t\t"+sumPrice+"\t\t"+state);
					}
				}
				break;
			case 3:
				//3.签收订单
				System.out.println("****签收订单*****"); 
				//要求用户输入一个签收的订单序号
				System.out.println("请输入要签收的订单序号:");
				int sign0rderId = input.nextInt();
				boolean isFind = false;//记录是否找到了这条订单:true:已找到false:没有找到 
				//查找这条订单(循环遍历)
				for(int i=0;i<names.length;i++){
					//1.找到,状态是已完成(已签收完毕):提示不能在次签收
					//2.找到,状态是已预定(没有完成签收):可以签收
					if(names[i]!=null && states[i]==1&& sign0rderId == i+1){
						System.out.println("对不起,您的订单已经完成签收,不能再次签收!");
						isFind = true;
						break;
					}else if(names[i]!=null && states[i]==0 && sign0rderId==i+1){
						states[i]=1;
						System.out.println("订单签收成功!");
						isFind = true;
						break;
					}
				}
				
				//条件判断:如果没有找到这条订单,才去提示没有找到
				if(!isFind){
					System.out.println("对不起,此订单不存在!");
				}
				
				break;
			case 4:
				//4.删除订单
				//1.输入要删除的订单序号(从1开始)
				System.out.println("*********删除订单*******");
				System.out.println("请输入要删除的订单序号:");
				int delId = input.nextInt();
				int delIndex = -1;
				boolean isDelFind = false;//记录是否找到了这条订单:true:已找到false:没有找到 
				//2.循环擦很难找这条订单
				for(int i=0;i<names.length;i++){
					if(names[i]!=null&&states[i]==0&&delId==i+1){
						delIndex = i;
						isDelFind = true;
						break;
					}else if(names[i]!=null&&states[i]==0&&delId==i+1){
						System.out.println("您选择的订单没签收,不能删除!");
						isDelFind = true;
						break;
					}
				}
				
				//没找到此订单:提示信息
				if(!isDelFind){
				System.out.println("对不起,此订单不存在!");
				}
				//执行删除操作
				if(delIndex!=1){
					for(int i=delIndex+1;i<=names.length-1;i++){
						names[i-1]=names[i];
						dishMegs[i-1]=dishMegs[i];
						times[i-1]=times[i] ;
						addresses[i-1]=addresses[i];
						sumPrices[i-1]=sumPrices[i]	;	
						}
					//最后一位清空
					names[names.length-1]=null;
					dishMegs[names.length-1]=null;
					times[names.length-1]=0; 
					addresses[names.length-1]=null;
					states[names.length-1]=0;
					System.out.println("订单删除成功!");
				}
				break;


			case 5:
				//5.我要点赞
				System.out.println("********我要点赞*******");
				//1.显示供点餐的列表
				System.out.println("序号\t餐品名\t单价\t点赞数");
				for(int  j=0;j<dishNames.length;j++){
					String price = prices[j]+"元";
					String praise = praiseNums[j]+"赞";
					System.out.println((j+1)+"\t"+dishNames[j]+"\t"+price+"\t"+praise);
				}
				//2.输入要点餐的餐品序号
				System.out.println("请输入要思安赞的餐品序号:");
				int dishId = input.nextInt();
				//3.该序号的餐品点赞数加1
				praiseNums[dishId-1]++;
						
				//4.显示
				System.out.println("点赞成功!");
				System.out.println(dishNames[dishId-1]+" "+praiseNums[dishId-1]+"赞");
				break;
			case 6:
				//6.退出系统
			default:
				break;
			}
			//当用户输入的功能编号为1~4职位的数字时退出循环,否则会提示输入0返回
			if(choose<1 || choose>5){
				break;
			}else{
				//提示输入0返回
			System.out.println("提示输入0返回:");
			num = input.nextInt();
			}
		}while(num==0);
		System.out.println("谢谢使用,欢迎下次订餐!"); 
		
	}
}

“吃货联盟定餐系统”需求说明

  现今已进入网络时代,网上购物、看新闻、交友等人们的日常生活已离不开网络。“只要点点手指,就能送餐上门”,网上定餐越来越受到都市年轻人的青睐    现要求开发一个网上订餐系统,其具体功能如下:

  • 我要订餐

       完成用户订餐,每条订单包含如下信息:

  1. 订餐人姓名:要求用户输入
  2. 选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要选择的菜品序号及份数
  1. 送餐时间:要求当天10到20点间整点送餐,要求用户输入10~20的整数,输入错误,重复输入。
  1. 送餐地址:要求用户输入
  2. 状态:两种状态:0:已预定(默认状态) 1、已完成(订单已签收)
  3. 总金额:

    总金额 = 菜品单价*份数-送餐费

   (送餐费:当单笔订单金额达到50元时,免送餐费,否则,需交纳6元送餐费)

  订餐成功后,显示订单信息。

  •   查看订单

        遍历显示已有定单

        内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、  状态(已预定或已完成)、总金额

  •   签收定单

        将定单中状态改为已完成

  • 删除定单

    用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提示信息

  • 我要点赞

        显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜品的点赞。

  • 退出系统

退出整个系统,显示“谢谢使用,欢迎下次光临”。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值