zoukankan      html  css  js  c++  java
  • java10---点餐系统

    public class OrderMsg {
    
        public static void main(String[] args) throws Exception {
            /**
             * 订餐人姓名、选择菜品、送餐时间、送餐地址、订单状态、总金额
             * 01.创建对应的数组
             * 02.数组的初始化
             * 03.显示菜单
             * 04.根据用户的选择进去指定的模块
             */
            String[] names = new String[6]; // 订餐人姓名
            String[] dishMsgs = new String[6];// 选择菜品
            int[] numbers = new int[6];// 菜品份数
            Date[] dates = new Date[6]; // 送餐时间
            String[] times = new String[6]; // 送餐时间对应的String类型的日期
            String[] addresses = new String[6];// 送餐地址
            int[] states = new int[6];// 订单状态 0:已经预定 1:已经完成
            double[] sumPrices = new double[6];// 总金额
    
            // 初始化数据
            names[0] = "小黑";
            dishMsgs[0] = "八仙过海";
            numbers[0] = 3;
            dates[0] = new Date();
            SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
            times[0] = sdf.format(dates[0]);
            addresses[0] = "天堂路1号院";
            states[0] = 1;
            sumPrices[0] = 5000;
    
            names[1] = "小白";
            dishMsgs[1] = "佛跳墙";
            numbers[1] = 5;
            dates[1] = new Date();
            times[1] = sdf.format(dates[1]);
            addresses[1] = "地域路2号院";
            states[1] = 1;
            sumPrices[1] = 500;
    
            // 初始化用户可以选择的菜
            String[] dishNames = { "八仙过海", "佛跳墙", "松鼠鱼", "红烧带鱼", "时令蔬菜", "辣土豆丝" };
            // 定义每个菜的单价
            double[] prices = { 88, 78.8, 58.0, 28.5, 50, 80 };
            // 定义点赞 的数组
            int[] praiseNums = new int[6];
            praiseNums[0] = 5;
            praiseNums[1] = 10;
    
            System.out.println("***********欢迎进入《吃货联盟》点餐系统***********");
            Scanner scanner = new Scanner(System.in);
            int num = -1; // 如果用户输入的是0 默认返回主菜单
            boolean isExit = false;// 定义一个标记 来标识 用户是否退出系统 true:退出
            do {
                // 显示菜单供用户选择
                System.out.println("当前系统时间是:" + sdf.format(new Date()));
                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 = scanner.nextInt(); // 根据用户的选择执行不同的功能
                switch (choose) {
                case 1:
                    System.out.println("************我要订餐************");
                    // 定义一个标记判断餐带是否已满
                    boolean addFlag = false;
                    for (int i = 0; i < names.length; i++) { // 订餐人的集合
                        if (names[i] == null) {
                            addFlag = true;
                            System.out.println("请输入订餐人的姓名:");
                            names[i] = scanner.next(); // 获取订餐人的姓名
                            System.out.println("您可以选择下列的菜品:");
                            System.out.println("序号			菜名			单价			点赞数");
                            for (int j = 0; j < dishNames.length; j++) { // 遍历菜品
                                String praiseNum = (praiseNums[j] > 0) ? praiseNums[j]
                                        + "个赞"
                                        : "";
                                System.out.println(j + 1 + "			" + dishNames[j]
                                        + "			" + prices[j] + "			"
                                        + praiseNum);
                            }
                            // 用户开始点菜
                            System.out.println("请您选择菜品的编号:");
                            int chooseDishName = scanner.nextInt();
                            System.out.println("请您输入点餐的份数:");
                            int number = scanner.nextInt();
                            System.out.println("请您输入送餐的地址:");
                            String address = scanner.next();
                            System.out.println("请您输入送餐的时间:(时:分:秒)");
                            String time = scanner.next();
    
                            /**
                             * 根据用户的餐费 判断是否收取送餐费   大于60免送餐费 
                             * 01.获取用户点的菜的单价
                             * 02.获取总金额
                             * 03.判断
                             */
                            double sumPrice = prices[chooseDishName - 1] * number;
                            double price = (sumPrice > 60) ? 0 : 6;
                            System.out.println("恭喜您订餐成功!");
                            System.out.println("您定的菜品是:"
                                    + dishNames[chooseDishName - 1] + "	" + number
                                    + "份");
                            System.out.print("餐费:" + sumPrice);
                            System.out.print("	送餐费:" + price);
                            System.out.println("	总费用:" + (price + sumPrice));
                            // 向数组中增加数据
                            times[i] = sdf.format(sdf.parse(time)); // 时间
                            addresses[i] = address; // 地址
                            sumPrices[i] = (sumPrice + price); // 总金额
                            dishMsgs[i] = dishNames[chooseDishName - 1]; // 定的菜品
                            states[i] = 0; // 订餐的状态
                            numbers[i] = number; // 份数
                            break;
                        }
                    }
                    if (!addFlag) {// 餐袋已经满了
                        System.out.println("餐袋已经满了");
                    }
                    break;
                case 2:
                    System.out.println("************查看餐袋************");
                    /**
                     * 显示
                     *   编号  订餐人  菜品(份数)   送餐时间   送餐地址   总金额     状态
                     */
                    System.out
                            .println("编号		订餐人		菜品(份数)		送餐时间 		送餐地址		总金额		状态		点赞数量");
                    for (int i = 0; i < names.length; i++) {
                        if (names[i] != null) { // 有人订餐 的显示
                            String state = (states[i] == 0) ? "已经预定" : "已经完成"; // 获取状态
                            String time = times[i]; // 获取时间
                            String sumPrice = sumPrices[i] + "元"; // 总金额
                            String address = addresses[i]; // 地址
                            String dishMsg = dishMsgs[i]; // 菜品
                            int count = numbers[i];
                            System.out.println(i + 1 + "		" + names[i] + "		"
                                    + dishMsg + "(" + count + ")" + "		" + time
                                    + " 		" + address + "		" + sumPrice
                                    + "		" + state + "		" + praiseNums[i]);
                        }
                    }
                    break;
                case 3:
                    System.out.println("************签收订单************");
                    /**
                     * 01.状态为已经完成!不需要签收
                     * 02.状态为已经预定!需要签收
                     * 03.没有指定的订单,不能签收
                     */
                    System.out.println("请您输入需要签收的订单编号:");
                    int sign = scanner.nextInt();
                    // 定义一个标记 来判断订单是否被签收
                    int flag = 0;
                    for (int i = 0; i < names.length; i++) {
                        if (names[i] != null && states[i] == 0) {// 01.有订单 可以签收
                            states[i] = 1;// 改变状态
                            flag = 1;
                            break; // 必须退出 否则 后续的都会变成签收
                        } else if (names[i] != null && states[i] == 1) {// 02.有订单
                            flag = 2;
                        }
                    }
                    if (flag == 1) {
                        System.out.println("订单已经签收!");
                    } else if (flag == 2) {
                        System.out.println("订单不需要重复签收!");
                    } else {
                        System.out.println("没有指定的订单!请您核实!");
                    }
    
                    break;
                case 4:
                    System.out.println("************删除订单************");
                    System.out.println("请您输入需要删除的订单编号:");
                    int delNum = scanner.nextInt();
                    // 定义一个标记 来判断订单是否被签收以及是否存在
                    int delFlag = 0;
                    for (int i = 0; i < names.length; i++) {
                        if (names[i] != null && states[delNum - 1] == 1) { // 可以删除
                                                                            // 有指定的订单
                            // 状态是已经完成
                            // 删除位置 之后的所有元素 依次前移
                            for (int j = delNum - 1; j < names.length - 1; j++) {
                                names[j] = names[j + 1]; // 订餐人
                                dishMsgs[j] = dishMsgs[j + 1];// 菜品
                                times[j] = times[j + 1];// 时间
                                addresses[j] = addresses[j + 1];// 地址
                                states[j] = states[j + 1];// 状态
                                numbers[j] = numbers[j + 1];// 份数
                            }
                            delFlag = 1;
                            break;
                        } else if (names[i] != null && states[i] == 0) { // 订单还没有签收
                            delFlag = 2;
                        }
                    }
                    if (delFlag == 1) {
                        System.out.println("订单已经被删除");
                    } else if (delFlag == 2) {
                        System.out.println("订单还没有签收 不允许删除!");
                    } else {
                        System.out.println("没有找到指定的订单!");
                    }
                    break;
                case 5:
                    System.out.println("************我要点赞***************");
                    System.out.println("编号			菜名			价格");
                    for (int i = 0; i < dishNames.length; i++) { // 遍历所有的菜名
                        String price = prices[i] + "元"; // 获取价格
                        String name = dishNames[i];
                        System.out.println(i + 1 + "			" + name + "			"
                                + price);
                    }
                    System.out.println("请您输入点赞的菜品编号:");
                    int chooseNum = scanner.nextInt();
                    praiseNums[chooseNum - 1]++;// 点赞数加+1
                    System.out.println("谢谢参与!点赞成功!");
                    break;
                case 6:
                    // 退出系统
                    isExit = true;
                    break;
                default:
                    // 退出系统
                    isExit = true;
                    break;
                }
                if (!isExit) { // 默认这是不退出
                    System.out.println("输入0返回主菜单!");
                    num = scanner.nextInt();
                } else {
                    break; // 退出系统
                }
    
            } while (num == 0);
            System.out.println("谢谢您的光临!!!!!");
        }
    }
  • 相关阅读:
    Java 第十一届 蓝桥杯 省模拟赛 洁净数
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 第十层的二叉树
    Java 第十一届 蓝桥杯 省模拟赛 70044与113148的最大公约数
    Java 第十一届 蓝桥杯 省模拟赛 70044与113148的最大公约数
    20. Valid Parentheses
    290. Word Pattern
    205. Isomorphic Strings
    71. Simplify Path
  • 原文地址:https://www.cnblogs.com/999-/p/6552388.html
Copyright © 2011-2022 走看看