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邮件开发(JavaMail)
    SQL删除所有表和数据
    Hyper-V由于虚拟机监控程序未运行
    .NET CORE IIS PUT和DELETE请求失败 405
    ReSharper 快捷键调试
    hyper-v提示监控未运行
    c#定义Ilist集合
    WindowsFormsApp1设置开机自启动
    SQL查询总数和分页数
    EF执行SQL语句
  • 原文地址:https://www.cnblogs.com/jmsjh/p/7249658.html
Copyright © 2011-2022 走看看