java基础综合案例—java吃货联盟订餐项目

  1. 在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public static void main(String[] args) {
        //声明加初始化  定义数据主体:菜品
        String[] dishName = {"红烧带鱼","鱼香肉丝","时令蔬菜"};
        double[] prices = {38.0,26.0,10.0};
        int[] praiseName = 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:已经完成

        // 初始化订单信息,初始化两个订单信息
        names[0] = "张三";
        dishMsg[0] = "红烧带鱼2份";
        times[0] = 10;
        adresses[0] = "卓飞路001号";
        sumPrices[0] = 76;//餐费>50免配送费  。否则配送费六元
        states[0] = 0;

        names[1] = "李六";
        dishMsg[1] = "鱼香肉丝1份";
        times[1] = 26;
        adresses[1] = "卓飞路002号";
        sumPrices[1] = 26;//餐费>50免配送费  。否则配送费六元
        states[1] = 1;

        Scanner sc = new Scanner(System.in);

        //用户输入0 返回时的输入数字,num=0 时重复显示主菜单;
        //num 在用户每次订单操作后进行提示 重新赋值
        int num = -1;

        System.out.println("欢迎使用“吃货联盟订餐系统”");

        // true:不退出   false:退出
        boolean flag = true;  // 默认不退出

        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 orderXuHao = sc.nextInt();
            switch (orderXuHao){
                case 1:
                    System.out.println("*********我要订餐************");
                    // 是否能订单的标识符,默认是false 不能订餐
                    boolean flagOrder = false;
                    for (int i = 0; i < names.length; i++) {
                        // 判断订单是否满了,如果不满可以订餐
                        if(names[i] == null){
                            flagOrder = true;
                            // 订餐
                            System.out.print("请输入订餐人姓名:");
                            String orderUserName = sc.next();
                            //循环输出菜品信息
                            System.out.println("序号\t菜名\t单价");
                            for (int j = 0; j < dishName.length; j++) {
                                // +"赞"  需要写否则类型不同
                                String praise = (praiseName[j] == 0)?"":praiseName[j]+"赞";
                                System.out.println((j+1)+"\t"+dishName[j]+"\t\t"+prices[j]+praise);
                            }
                            //菜品信息输入以及判断
                            System.out.print("请输入您要点的菜品编号:");
                            int dishNameNumber = sc.nextInt();
                            while (dishNameNumber < 1 || dishNameNumber > dishName.length){
                                System.out.print("本店没有这个菜品请重新输入:");
                                dishNameNumber =sc.nextInt();
                            }
                            // 点餐分数
                            System.out.print("请输入您需要的份数:");
                            int dishNameSum = sc.nextInt();
                            //送餐时间输入以及判断
                            System.out.print("请输入送餐时间(只能是10-20直接之间的整点):");
                            int dishNameTime = sc.nextInt();
                            while (dishNameTime < 10 || dishNameTime > 20){
                                System.out.println("您的输入有误,请输入10-20之间的整点");
                                dishNameTime = sc.nextInt();
                            }
                            //送餐地址
                            System.out.print("请输入您的送餐地址:");
                            String dishNameAddress = sc.next();
                            // 输出订餐信息给用户看,
                            System.out.println("订餐成功!");
                            String dishInfo =dishName[dishNameNumber-1]+""+dishNameSum+"份";
                            System.out.println("您订的是"+dishInfo);
                            System.out.println("送餐时间:"+dishNameTime+"点");
                            // 餐费 配送费 总计
                            //总价= 单价*份数
                            double dishPrise = prices[dishNameNumber-1]*dishNameSum;// 菜的总价
                            double peiSong = (dishPrise > 50)?0 : 6;
                            double sumPrise = dishPrise + peiSong;
                            System.out.println("餐费:"+dishPrise+"元,配送费:"+peiSong+"元,总计:"+sumPrise);
                            //  把订餐信息 添加 到订单信息
                            names[i] = orderUserName;
                            dishMsg[i] = dishInfo;
                            times[i] = dishNameTime;
                            adresses[i] = dishNameAddress;
                            sumPrices[i] = sumPrise;
                            //本次订餐结束 跳出循环
                            break;
                        }
                    }
                    if (!flagOrder){// 此处 flagOrder==false 等价于 !flagOrder
                        System.out.println("对不起,您的餐袋已经满了!");
                    }
                    break;
                case 2:
                    System.out.println("*********查看餐袋************");
                    System.out.println("序号\t订餐人\t订餐菜品\t\t\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 state = (states[i]==0)?"已预定":"已完成";
                           System.out.println((i+1)+"\t\t"+names[i]+"\t"+dishMsg[i]+"\t\t"+time+"\t\t"+adresses[i]+"\t\t\t"+sumPrices[i]+"\t\t"+state);
                       }
                    }
                    break;
                case 3:
                    System.out.println("*********签收订单************");
                    // 签收之前 要先判断订单是否存在
                    // false:订单不存在   true:订单存在 且预定状态能签收,完成状态不能签收
                    boolean orderFlag = false;
                    System.out.print("请输入您要签收的订单编号:");
                    int orderNumber = sc.nextInt();
                    for (int i = 0; i < names.length; i++) {
                        if((names[i]!=null) && states[i] == 0 && (i == orderNumber-1)){
                            // 有订单信息 且 根据用户输入的订单编号能找到订单
                                orderFlag = true;
                            // 订单状态已预定 ,能签收
                                states[i] = 1;
                            System.out.println("订单签收成功!");
                        }else if ((names[i]!=null) && states[i] == 1 && (i == orderNumber-1)){
                            // 有订单信息 且 用户输入的订单编号我能找到
                            orderFlag = true;
                            //订单已完成,不能签收
                            System.out.println("您选择的订单已经完成签收,不能再次签收!");
                        }
                    }
                    if(!orderFlag){
                        System.out.println("订单不存在");
                    }
                    break;
                case 4:
                    System.out.println("*********删除订单************");
                    // 删除之前,要先判断订单是否存在
                    // false:不存在,不能删除  true:订单存在 且预定状态不能删, 存在且完成状态能删除
                    boolean deleteFlag = false;
                    System.out.print("请输入您要删除订单的编号:");
                    int deleteNumber = sc.nextInt();
                    for (int i = 0; i < names.length; i++) {
                        if(names[i] != null && states[i] ==0  && i ==deleteNumber-1 ){
                            // 有订单 并且用户输入的订单编号我能找到与之对应的订单
                            deleteFlag = true;
                            // 有订单 且 预定状态的订单不能删除
                            System.out.println("您选择的订单未签收,不能删除!");
                        }else if (names[i] != null && states[i] ==1 && i == deleteNumber-1){
                            // 有订单 并且用户输入的订单编号我能找到与之对应的订单
                            deleteFlag = true;
                            // 有订单 且 完成状态可以删除
                            // 所谓的删除就是 i 后面的元素往前移动 , 最后一个数组元素置空
                            for (int j = i; j < names.length; j++) {
                                names[j-1] = names[j];
                                dishMsg[j-1] = dishMsg[j];
                                times[j-1] = times[j];
                                adresses[j-1] = adresses[j];
                                sumPrices[j-1] = sumPrices[j];
                                states[j-1] = states[j];
                            }
                            // 最后一个元素置空,置空后就可以下新订单
                            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(deleteFlag == false){
                        System.out.println("您选择的订单不存在");
                    }
                    break;
                case 5:
                    System.out.println("*********我要点赞************");
                    // 循环输出菜品信息
                    System.out.println("序号\t 菜名 \t 单价");
                    for (int j = 0; j < dishName.length; j++) {
                        String praise = (praiseName[j] == 0)?"":praiseName[j]+"赞";
                        System.out.println((j+1)+"\t"+dishName[j]+"\t\t"+prices[j]+"\t"+praise);
                    }
                    // 点赞
                    System.out.print("请输入您要点赞的菜品序号:");
                    int praiseNum = sc.nextInt();
                    while (praiseNum < 1 || praiseNum > dishName.length){
                        System.out.print("本店没有这个菜品,无法点赞,请重新输入一个菜品序号:");
                        praiseNum = sc.nextInt();
                    }
                    praiseName[praiseNum-1]++;
                    break;
                case 6:
                    flag = false;
                    break; // 退出系统
                default:
                    flag = false;
                    break;//退出系统
            }
            if (flag == true){
                System.out.print("请输入0 返回:");
                num = sc.nextInt();
            }else {
                break;
            }

        }while (num == 0);
        System.out.println("谢谢使用,欢迎下次光临!");

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔚一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值