栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java点餐系统--数组、选择结构、集合(控制台实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java点餐系统--数组、选择结构、集合(控制台实现)

创建Order实体类

package ordermsg;

public class Order {
    private int orderId;
    private String userName;
    private String foodName;
    private int foodNum;
    private double totalPrice;
    private String address;
    private String time;
    private int state;

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public int getOrderId() {
        return orderId;
    }

    public void setOrderId(int orderId) {
        this.orderId = orderId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getFoodName() {
        return foodName;
    }

    public void setFoodName(String foodName) {
        this.foodName = foodName;
    }

    public int getFoodNum() {
        return foodNum;
    }

    public void setFoodNum(int foodNum) {
        this.foodNum = foodNum;
    }


    public double getTotalPrice() {
        return totalPrice;
    }

    public void setTotalPrice(double totalPrice) {
        this.totalPrice = totalPrice;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    @Override
    public String toString() {
        return "Order{" +
                "orderId=" + orderId +
                ", userName='" + userName + ''' +
                ", foodName='" + foodName + ''' +
                ", foodNum=" + foodNum +
                ", totalPrice=" + totalPrice +
                ", address='" + address + ''' +
                ", time='" + time + ''' +
                '}';
    }
}

创建OrderMsg类

package ordermsg;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;

public class OrderMsg {

    public static void main(String[] args) {
        ArrayList ordersList = new ArrayList<>();
        //打印功能
        OrderMsg.printFunction();
        Scanner scanner = new Scanner(System.in);
        //存储所获得的赞
        int[] goods = {3, 2, 5, 1};
        int userNum = 0;
        do {
            userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
            ordersList = OrderMsg.mainFunction(userNum, ordersList, goods);
        } while (userNum != 6);
    }

    //输入对应数字,调用相应功能
    public static ArrayList mainFunction(int num, ArrayList ordersList, int[] goods) {
        Scanner scanner = new Scanner(System.in);
        //创建订单数组
        switch (num) {
            case 1:
                //打印菜单
                OrderMsg.printMenu(goods);
                //是否继续订餐标识
                String flag = "";
                //初始化订单编号
                int orderId = 1;
                do {
                    //实例化订单类
                    Order order = new Order();
                    order.setOrderId(orderId++);
                    //获取合法的数字范围
                    int foodId = OrderMsg.inputValidInt(scanner, "请输入菜品序号:", 1, 4);
                    //根据序号获取所点菜名
                    String foodName = OrderMsg.getFoodName(foodId);
                    order.setFoodName(foodName);
                    //获取所点菜的份数
                    int foodNum = OrderMsg.inputValidInt(scanner, "输入份数:", 1, Integer.MAX_VALUE);
                    order.setFoodNum(foodNum);
                    System.out.print("请输入您的姓名:");
                    String userName = scanner.next();
                    order.setUserName(userName);
                    //获取收货地址
                    System.out.print("请输入您的收货地址:");
                    String address = scanner.next();
                    order.setAddress(address);
                    //根据菜品序号与所点数量获取所需支付总价钱
                    double totalPrice = OrderMsg.getTotalPrice(foodId, foodNum);
                    order.setTotalPrice(totalPrice);
                    order.setTime(OrderMsg.getTime());
                    //设定刚下的订单为未签收
                    order.setState(0);
                    //将订单添加到订单列表
                    ordersList.add(order);
                    System.out.print("还要继续点单吗?(y/n):");
                    String stopYN = scanner.next();
                    if (stopYN.equalsIgnoreCase("n")) {
                        OrderMsg.printFunction();
                        int userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
                        OrderMsg.mainFunction(userNum, ordersList, goods);
                    } else if (stopYN.equalsIgnoreCase("y")) {
                        OrderMsg.printMenu(goods);
                        flag = stopYN;
                    } else {
                        System.out.println("您输入不合法!");
                    }
                } while (flag.equalsIgnoreCase("y"));
                break;
            case 2:
                System.out.println("历史订单详情:");
                //打印订单信息
                OrderMsg.printOrder(ordersList);
                //打印系统功能
                OrderMsg.printFunction();
                int userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
                OrderMsg.mainFunction(userNum, ordersList, goods);
                break;
            case 3:
                //打印订单
                OrderMsg.printOrder(ordersList);
                int oid = inputValidInt(scanner, "请输入要签收的订单编号:", 1, ordersList.size());
                //签收订单
                ordersList = OrderMsg.signOrder(oid , ordersList);
                OrderMsg.printFunction();
                userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
                OrderMsg.mainFunction(userNum, ordersList, goods);
                break;
            case 4:
                //打印订单信息
                OrderMsg.printOrder(ordersList);
                //获取用户要删除的订单编号
                int delId = inputValidInt(scanner, "请输入要删除的订单编号:", 1, ordersList.size());
                //删除订单
                ordersList = OrderMsg.deleteOrder(delId, ordersList);
                OrderMsg.printFunction();
                userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
                OrderMsg.mainFunction(userNum, ordersList, goods);
                break;
            case 5:
                OrderMsg.printMenu(goods);
                int foodId = OrderMsg.inputValidInt(scanner, "请输入要点赞的菜品序号:", 1, 4);
                System.out.println("点赞成功!" + OrderMsg.getFoodName(foodId) + "获得1个赞!");
                goods[foodId - 1] += 1;
                OrderMsg.printFunction();
                userNum = inputValidInt(scanner, "请输入1-6数字选择对应功能:", 1, 6);
                OrderMsg.mainFunction(userNum, ordersList, goods);
                break;
            case 6:
                System.out.println("欢迎下次光临!");
                System.exit(0);
                break;
            default:
                System.out.println("暂未开通该功能--------");
        }
        return ordersList;
    }

    //删除订单,提供订单编号与订单集合,删除订单
    public static ArrayList deleteOrder(int oid, ArrayList list) {
        list.remove(oid - 1);//编号从0开始删除
        System.out.println(oid + "号订单删除成功");
        return list;
    }

    //根据订单编号签收订单
    public static ArrayList signOrder(int oid, ArrayList lists) {
            Order o = (Order) lists.get(oid-1);
            if (o.getOrderId() == 0) {
                o.setState(1);
                System.out.println("签收" + (oid + 1) + "号订单成功!");
            } else if (o.getOrderId() == 1) {
                o.setState(1);
                System.out.println(oid + "号订单已签收!");
            }
        return lists;
    }

    //打印订单信息
    public static void printOrder(ArrayList ordersList) {
        if (ordersList.size() == 0) {
            System.out.println("您的订单列表空空如也!");
        }
        for (int i = 0; i < ordersList.size(); i++) {
            System.out.println("**************第" + (i + 1) + "单******************");
            Order o = (Order) ordersList.get(i);
            int oid = o.getOrderId();
            String userName = o.getUserName();
            String fName = o.getFoodName();
            int fNum = o.getFoodNum();
            double tPrice = o.getTotalPrice();
            String address = o.getAddress();
            String time = o.getTime();
            String state = "";
            if (o.getState() == 1) {
                state = "已签收";
            } else {
                state = "未签收";
            }
            System.out.println("订单编号:" + (i + 1) + "   用户姓名:" + userName + "   菜品名称:" + fName + "   下单数量:X" + fNum + "   支付金额:" + tPrice +
                    "¥   收货地址:" + address + "   下单时间:" + time + "   订单状态:" + state);
        }
    }

    //根据菜品序号与所点数量获取单个菜品所需支付总价钱
    public static double getTotalPrice(int foodId, int foodNum) {
        if (foodId == 1) {
            return 38 * foodNum;
        } else if (foodId == 2) {
            return 52 * foodNum;
        } else if (foodId == 3) {
            return 48 * foodNum;
        } else if (foodId == 4) {
            return 8 * foodNum;
        } else {
            return 0;
        }
    }
    
    //根据菜品序号返回菜品名称
    public static String getFoodName(int id) {
        String name = "";
        switch (id) {
            case 1:
                name = "黄焖鸡";
            case 2:
                name = "金汤鱼";
                break;
            case 3:
                name = "红烧肉";
                break;
            case 4:
                name = "辣椒炒蛋";
                break;
            default:
                System.out.println("没有该菜--------");
        }
        return name;
    }

    //返回当前时间
    public static String getTime() {
        Date date = new Date();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        return simpleDateFormat.format(date);
    }

    
    //判断用户输入是否在指定范围
    private static int inputValidInt(Scanner scanner, String msg, int start, int end) {
        int ret = 0;
        while (true) {
            System.out.print(msg);
            if (scanner.hasNextInt()) {
                ret = scanner.nextInt();
                if (ret >= start && ret <= end) {
                    break;
                }
            } else {
                System.out.print("输入不合法!");
                scanner.next();
            }
        }
        return ret;
    }

    //打印功能列表
    public static void printFunction() {
        System.out.println("================欢迎光临订餐系统====================");
        String[] function = {"1、我要订餐", "2、查看订单", "3、签收订单", "4、删除订单", "5、我要点赞", "6、退出系统"};
        for (String s : function) {
            System.out.println(s);
        }
    }

    //打印菜单列表
    public static void printMenu(int[] goods) {
        System.out.println("=================特色本店===================");
        String[] menu = {"1号--黄焖鸡---38元", "2号--金汤鱼---52元", "3号--红烧肉---48元", "4号--辣椒炒蛋---8元"};
        for (int i = 0; i < menu.length; i++) {
            System.out.println(menu[i] + "---" + goods[i] + "人觉得很赞");
        }
    }
}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530536.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号