吃货联盟的俩种写法

一.直接使用数组

public class OrderingMgr{
    /**
     * 吃货联盟订餐系统
     *
     * @author CJ
     * @param
     */
    public static void main(String[] args) {
        //在main()方法中定义6个数组分别存储6类订单信息
        String[] names=new String[5];//保存订餐人姓名
        String[] dishMegs=new String[5];// 保存所选菜品名
        int[] dishNums = new int[5];// 保存所选菜品份数
        int[] times=new int[5];// 保存送餐时间
        String[] addresse=new String[5];// 保存送餐地址
        int[] states=new int[5];// 保存订单状态:0表示已预订,1表示已完成
        double[] sumPrices=new double[5];// 保存订单的总金额
        //创建3个数组,用来存储3种菜品的名称、单价和点赞数等信息。
        //供选择的菜品信息
        String[] dishNames = {"红烧带鱼","鱼香肉丝","时令鲜蔬"};	//菜品名称
        double[] prices = {40.0,20.0,10.0};					//菜品单价
        int[] praiseNums = new int[3];						//点赞数
        //初始化订单信息

        names[0]="小方";
        dishMegs[0]="鱼香肉丝 3份";
        times[0] = 12;
        addresse[0] = "207";
        sumPrices[0] = 60.0;
        states[0] = 0;

        names[1]="小李";
        dishMegs[1]="红烧带鱼 3份";
        times[1] = 12;
        addresse[1] = "207";
        sumPrices[1] =120.0 ;
        states[1] = 0;

        // 实现菜单切换
        int num = 1;// 用户输入0返回主菜单否则退出系统
        boolean isExit = false;// 标记用户是否退出系统,true为退出
        Scanner sc=new Scanner(System.in);
        System.out.println("欢迎使用“吃货联盟订餐系统”");
        // 循环控制用户输入选择并执行
        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("请选择:");
            num=sc.nextInt();

            switch (num){
                case 1://我要订餐
                    System.out.println("***我要订餐***");
                    boolean isAdd = false;// 记录是否可以点餐
                    for (int i=0;i<names.length;i++){
                        if (names[i]==null){

                            System.out.println("序号" + "\t" + "菜名" + "\t\t" + "单价" + "\t" + "点赞数");

                            for (int j=0;j<dishNames.length;j++){
                                System.out.println((j + 1) + "\t" + dishNames[j] + "\t\t" + prices[j] + "元" + "\t" + praiseNums[j]);
                            }
                            System.out.print("请输入订餐人姓名:");
                            String name=sc.next();
                            System.out.print("请选择您要点的菜品编号:");
                            int chooseDish = sc.nextInt();
                            String dishMeg = dishNames[chooseDish - 1];
                            System.out.print("请选择您需要的份数:");
                            int number = sc.nextInt();
                            System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
                            int time = sc.nextInt();
                            while (time < 10 || time > 20) {
                                System.out.print("您的输入有误,请输入10-20间的整数");
                                time = sc.nextInt();
                            }
                            System.out.print("请输入送餐地址:");
                            String address = sc.next();
                            // 默认可以预定,不用写订单状态
                            System.out.println("订餐成功!");
                            System.out.println("您定的是:" + dishNames[chooseDish - 1] + number + "份");
                            System.out.println("送餐时间:" + time + "点");
                            double sumPrice = prices[chooseDish - 1] * number;// 计算餐费
                            double sendMoney = (sumPrice >= 50) ? 0 : 5;// 计算送餐费
                            System.out.println("餐费:" + sumPrice + "元," + "送餐费" + sendMoney + "元," + "总计:"
                                    + (sumPrice + sendMoney) + "元。");

                            names[i]=name;
                            dishMegs[i]=dishMeg;
                            times[i] = time;
                            addresse[i] = address;
                            sumPrices[i] = sumPrice ;
                            break;
                        }
                        if (i>= names.length){
                            isAdd=true;
                        }
                        if (isAdd) {
                            System.out.println("对不起,您的餐袋已满!");
                        }
                    }
                    break;
                case 2:
                    System.out.println("***查看餐袋***");
                    System.out.println("序号\t订餐人\t餐品名称\t餐品数量\t送餐时间\t送餐地址\t总金额\t订单状态");
                    for (int i = 0; i < names.length; i++) {
                        if (names[i] != null) {
                            String state = (states[i] == 0) ? "已预订" : "已完成";
                            System.out.println((i + 1) + "\t" + names[i] + "\t" + dishMegs[i] + "\t" + dishMegs[i] + "份"
                                    + "\t" + times[i] + "\t" + addresse[i] + "\t" + sumPrices[i] + "元" + "\t" + state);
                        }
                    }
                    break;
                case 3:// 签收订单
                    System.out.println("***签收订单***");
                    boolean isSignFind = false;
                    System.out.print("请选择要签收的订单序号:");
                    int sign = sc.nextInt();
                    for (int i = 0; i < names.length; i++) {
                        if (names[i] != null && states[i] == 0 && sign == i + 1) {
                            states[i] = 1;
                            System.out.println("订单签收成功!");
                            isSignFind = true;// 标记已找到的订单
                        } else if (names[i] != null && states[i] == 1 && sign == i + 1) {
                            System.out.println("您选择的订单已完成签收,不能再次签收!");
                            isSignFind = true;// 标记已找到的订单
                        }
                    }
                    if (!isSignFind) {
                        System.out.println("您选择的订单不存在!");
                    }
                    break;
                case 4:// 删除订单
                    System.out.println("***删除订单***");
                    boolean isDelFind = false;
                    System.out.print("请输入要删除的订单序号:");
                    int delID = sc.nextInt();
                    for (int i = 0; i < names.length; i++) {
                        // 根据状态值判断能不能删除,只有已完成的才能删除
                        if (names[i] != null && states[i] == 1 && delID == i + 1) {
                            isDelFind = true;
                            for (int j = delID - 1; j < names.length - 1; j++) {
                                names[j] = names[j + 1];
                                dishMegs[j] = dishMegs[j + 1];
                                dishMegs[j] = dishMegs[j + 1];
                                times[j] = times[j + 1];
                                addresse[j] = addresse[j + 1];
                                states[j] = states[j + 1];
                                sumPrices[j] = sumPrices[j + 1];
                            }
                            // 将最后一位清空
                            names[names.length - 1] = null;
                            dishMegs[names.length - 1] = null;
                            dishNums[names.length - 1] = 0;
                            times[names.length - 1] = 0;
                            addresse[names.length - 1] = null;
                            states[names.length - 1] = 0;
                            sumPrices[names.length - 1] = 0;
                            System.out.println("删除订单成功!");
                            break;
                        } else if (names[i] != null && states[i] == 0 && delID == i + 1) {
                            isDelFind = true;
                            System.out.println("您选择的订单未签收,不能删除!");
                            break;
                        }
                    } // 未找到的订单不能删除
                    if (!isDelFind) {
                        System.out.println("您要删除的订单不存在!");
                    }
                    break;
                case 5:// 我要点赞
                    System.out.println("***我要点赞***");
                    // 显示菜品信息
                    System.out.println("序号\t菜名\t单价");
                    for (int i = 0; i < dishNames.length; i++) {
                        String priaiseNum = (praiseNums[i] > 0) ? praiseNums[i] + "赞" : "";
                        System.out.println((i + 1) + "\t" + dishNames[i] + "\t" + prices[i] + "元" + priaiseNum);
                    }
                    System.out.print("请选择您要点赞的菜品序号:");
                    int number = sc.nextInt();
                    if (number> names.length||number<0){
                        System.out.println("输入错误");
                        break;
                    }else {
                        praiseNums[number - 1]++;
                        System.out.println("点赞成功");
                    }
                    break;
                case 6:// 退出系统
                    isExit = true;
                    break;
            }
            // 返回主界面
            if (!isExit) {
                System.out.print("输入0返回:");
                num = sc.nextInt();
            } else {
                break;
            }
        }while (num==0);
        System.out.println("谢谢惠顾,欢迎您再次使用!");
        sc.close();
    }

}

二.对象+数组

1.创建菜单类

public class Menu {
    private String dishNames;	            //菜品名称
    private double prices ;					//菜品单价
    private int praiseNums;					//点赞数


    public Menu(String dishNames, double prices, int praiseNums) {
        this.dishNames = dishNames;
        this.prices = prices;
        this.praiseNums = praiseNums;
    }

    public Menu() {
    }

    public String getDishNames() {
        return dishNames;
    }

    public void setDishNames(String dishNames) {
        this.dishNames = dishNames;
    }

    public double getPrices() {
        return prices;
    }

    public void setPrices(double prices) {
        this.prices = prices;
    }

    public int getPraiseNums() {
        return praiseNums;
    }

    public void setPraiseNums(int praiseNums) {
        this.praiseNums = praiseNums;
    }
}

2.创建订餐类

public class Order {
    private String names;//保存订餐人姓名
    private String dishMegs;// 保存所选菜品名
    private int dishNums;// 保存所选菜品份数
    private int times;// 保存送餐时间
    private String addresse;// 保存送餐地址
    private int states;// 保存订单状态:0表示已预订,1表示已完成
    private double sumPrices;// 保存订单的总金额

    public Order() {
    }

    public Order(String names, String dishMegs, int dishNums, int times, String addresse, int states, double sumPrices) {
        this.names = names;
        this.dishMegs = dishMegs;
        this.dishNums = dishNums;
        this.times = times;
        this.addresse = addresse;
        this.states = states;
        this.sumPrices = sumPrices;
    }


    public String getNames() {
        return names;
    }

    public void setNames(String names) {
        this.names = names;
    }

    public String getDishMegs() {
        return dishMegs;
    }

    public void setDishMegs(String dishMegs) {
        this.dishMegs = dishMegs;
    }

    public int getDishNums() {
        return dishNums;
    }

    public void setDishNums(int dishNums) {
        this.dishNums = dishNums;
    }

    public int getTimes() {
        return times;
    }

    public void setTimes(int times) {
        this.times = times;
    }

    public String getAddresse() {
        return addresse;
    }

    public void setAddresse(String addresse) {
        this.addresse = addresse;
    }

    public int getStates() {
        return states;
    }

    public void setStates(int states) {
        this.states = states;
    }

    public double getSumPrices() {
        return sumPrices;
    }

    public void setSumPrices(double sumPrices) {
        this.sumPrices = sumPrices;
    }
    
}

3.方法类

public class Method {


    public Method() {
    }

    Scanner sc = new Scanner(System.in);

    //初始化信息
    public void csh(Order[] order, Menu[] menu) {
//        Order[] order = new Order[10];
        order[0] = new Order("小方", "鱼香肉丝", 3, 10, "207", 0, 60);
        order[1] = new Order("小方", "鱼香肉丝", 3, 10, "207", 0, 60);


//        Menu[] menu = new Menu[3];

        menu[0] = new Menu("红烧带鱼", 40, 0);
        menu[1] = new Menu("鱼香肉丝", 20, 0);
        menu[2] = new Menu("时令鲜蔬", 10, 0);

    }

    //功能菜单
    public void gncd() {
        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("请选择:");
    }

    //循环控制
    public void loopKZ(Order[] order, Menu[] menu) {
        int num = 1;// 用户输入0返回主菜单否则退出系统
        boolean isExit = false;// 标记用户是否退出系统,true为退出

        Scanner sc = new Scanner(System.in);
        System.out.println("欢迎使用“吃货联盟订餐系统”");
        // 循环控制用户输入选择并执行
        do {
            gncd();
            num = sc.nextInt();

            switch (num) {
                case 1://我要订餐
                    CustomerOrders(order, menu);

                    break;
                case 2://查看餐袋
                    show(order);

                    break;
                case 3:// 签收订单
                    signIn(order);
                    break;
                case 4:// 删除订单
                    delete(order);

                    break;
                case 5:// 我要点赞
                    wellReceived(menu);
                    break;
                case 6:
                    isExit = true;
                    break;
            }
            num = loop(isExit, num);
        } while (num == 0);
    }

    //判断是否循环
    public int loop(boolean isExit, int num) {
        int x = num;
        if (!isExit) {
            System.out.print("输入0返回:");
            x = sc.nextInt();
        }
        return x;
    }

    //显示菜品信息
    public void showMenu(Menu[] menu) {
        System.out.println("序号" + "\t" + "菜名" + "\t\t\t" + "单价" + "\t\t" + "点赞数");
        for (int j = 0; j < menu.length; j++) {
            System.out.println((j + 1) + "\t" + menu[j].getDishNames() + "\t\t" + menu[j].getPrices() + "元" + "\t" + menu[j].getPraiseNums());
        }
    }

    //订餐功能
    public void CustomerOrders(Order[] order, Menu[] menu) {
        System.out.println("***我要订餐***");
        boolean isAdd = false;
        for (int i = 0; i < order.length; i++) {
            if (order[i] == null) {
                isAdd=true;
                showMenu(menu);
                System.out.print("请输入订餐人姓名:");
                String name = sc.next();
                System.out.print("请选择您要点的菜品编号:");
                int chooseDish = sc.nextInt();
//                if (chooseDish+1>3){
//                    break;
//                }
                String dishMeg = menu[chooseDish - 1].getDishNames();
                System.out.print("请选择您需要的份数:");
                int number = sc.nextInt();
                System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
                int time = sc.nextInt();
                while (time < 10 || time > 20) {
                    System.out.print("您的输入有误,请输入10-20间的整数");
                    time = sc.nextInt();
                }
                System.out.print("请输入送餐地址:");
                String address = sc.next();


                // 默认可以预定,不用写订单状态
                System.out.println("订餐成功!");
                System.out.println("您定的是:" + menu[chooseDish - 1].getDishNames() + number + "份");
                System.out.println("送餐时间:" + time + "点");
                double sumPrice = menu[chooseDish - 1].getPrices() * number;// 计算餐费
                double sendMoney = (sumPrice >= 50) ? 0 : 5;// 计算送餐费
                System.out.println("餐费:" + sumPrice + "元," + "送餐费" + sendMoney + "元," + "总计:"
                        + (sumPrice + sendMoney) + "元。");

                //将客户输入信息录入订单中

                order[i] = new Order();
                order[i].setNames(name);
                order[i].setDishMegs(dishMeg);
                order[i].setTimes(time);
                order[i].setAddresse(address);
                order[i].setSumPrices(sumPrice);
                break;
            }
            if (!isAdd) {
                System.out.println("您的餐带已满");
            }

        }

    }


    //查看餐袋

    public void show(Order[] order) {
        System.out.println("***查看餐袋***");
        System.out.println("序号\t订餐人\t餐品名称\t餐品数量\t送餐时间\t送餐地址\t总金额\t订单状态");
        for (int i = 0; i < order.length; i++) {
            if (order[i] != null) {
                String state = (order[i].getStates() == 0) ? "已预订" : "已完成";
                System.out.println((i + 1) + "\t" + order[i].getNames() + "\t\t" + order[i].getDishMegs() + "\t" + order[i].getDishMegs() + "份"
                        + "\t" + order[i].getTimes() + "\t" + order[i].getAddresse() + "\t\t" + order[i].getSumPrices() + "元" + "\t" + state);

            }
        }
    }

    // 签收订单
    public void signIn(Order[] order) {
        System.out.println("***签收订单***");
        System.out.print("请选择要签收的订单序号:");
        int sign = sc.nextInt();
        if (order[sign - 1] == null && sign < order.length ) {
            System.out.println("未找到订单信息");
        } else if (order[sign - 1].getStates() == 0 && sign < order.length && sign > 0) {
            order[sign - 1].setStates(1);
            System.out.println("订单签收成功!");
        } else if (order[sign - 1].getStates() == 1 && sign < order.length && sign > 0) {
            System.out.println("您选择的订单已完成签收,不能再次签收!");
        }

    }

    // 删除订单

    public void delete(Order[] order) {
        System.out.println("***删除订单***");
        System.out.print("请输入要删除的订单序号:");
        int delID = sc.nextInt();
        if (order[delID - 1] == null && delID < order.length && delID > 0) {
            System.out.println("未找到订单信息");
        } else if (order[delID - 1] != null && delID < order.length && delID > 0 && order[delID - 1].getStates() == 1) {
            int js = 0;
            for (int i = order.length - 1; i >= delID; i--) {
                if (order[i] != null) {
                    if (js == 0) {
                        js = i;
                    }
                    for (int j = delID; j <= js; j++) {
                        order[i - 1] = order[i];
                    }
                    break;
                }
//                System.out.println(js);
            }


            order[js] = null;
            show(order);
            System.out.println("删除订单成功!");

        } else if (order[delID - 1] != null && delID < order.length && delID > 0 && order[delID - 1].getStates() == 0) {
            System.out.println("您选择的订单未签收,不能删除!");
        }
    }

    //菜品点赞
    public void wellReceived(Menu[] menus) {
        System.out.println("***我要点赞***");
        showMenu(menus);
        System.out.print("请选择您要点赞的菜品序号:");
        int number = sc.nextInt();
        if (number > menus.length || number < 0) {
            System.out.println("输入错误");
        } else {
            menus[number - 1].setPraiseNums(menus[number - 1].getPraiseNums() + 1);
            System.out.println("点赞成功");
        }
    }

    public void end() {
        System.out.println("谢谢惠顾,欢迎您再次使用!");
        sc.close();
    }


}

4.测试类

public class OrderingMgr {
    public static void main(String[] args) {
        Order[] order = new Order[10];
        Menu[] menu = new Menu[3];
        //功能对象
        Method method = new Method();
        method.csh(order,menu);
        // 实现菜单切换
        method.loopKZ(order,menu);
        //结束控制
        method.end();
    }


}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值