java实现简单的订餐系统(面向对象+数组)

14 篇文章 0 订阅

        本文章做的是一个简易版的订餐系统,主要使用了java面向对象的思想和数组来实现的,非常适合刚入门儿的小伙伴拿来练手,快来一起看看吧!

        这里首先先看一下实现效果是啥样的,然后在一步步的去实现。

1、订餐首页,通过键盘键入序号进入子功能

 2、我要订餐

3、签收订单

4、删除订单

 5、我要点赞

 6、退出系统

         效果看起来是不是很简单?没错,下面就来硬货,直接上代码!!!

首先创建四个类:

                        

         这里我们将菜单和订单的属性和方法分别用Cuisine和Order两个类封装起来,在OrderManager去实现系统的各个功能,Test类是程序的入口,这样就体现了面向对象的思想。

        Cuisine类中代码:

public class Cuisine {
    private String disName;  //餐品名
    private double price;  //价格
    private int praseNums;  //点赞数

    //无参构造器
    public Cuisine() {
    }
    
    //有参构造器
    public Cuisine(String disName, double price, int praseNums) {
        this.disName = disName;
        this.price = price;
        this.praseNums = praseNums;
    }
    
   //get、set方法
    public String getDisName() {
        return disName;
    }

    public void setDisName(String disName) {
        this.disName = disName;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getPraseNums() {
        return praseNums;
    }

    public void setPraseNums(int praseNums) {
        this.praseNums = praseNums;
    }
    
    //重写toString方法,输出信息
    @Override
    public String toString() {
        return  disName +"\t\t" + price +"\t\t"+ praseNums ;
    }
}

Order类代码:

public class Order {
    private String name;  //订单人姓名
    private String disMegs;  //餐品信息
    private int time;  //送餐时间
    private String address;  //送餐地址
    private int states;  //送餐状态
    private double sumPrices;  //总金额

    //无参构造
    public Order() {
    }
    
    //有参构造
    public Order(String name, String disMegs, int time, String address, double sumPrices, int states) {
        this.name = name;
        this.disMegs = disMegs;
        this.time = time;
        this.address = address;
        this.states = states;
        this.sumPrices = sumPrices;
    }
    
    //get、set方法
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDisMegs() {
        return disMegs;
    }

    public void setDisMegs(String disMegs) {
        this.disMegs = disMegs;
    }

    public int getTime() {
        return time;
    }

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

    public String getAddress() {
        return address;
    }

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

    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;
    }

    //重写toString方法,输出信息
    @Override
    public String toString() {
        return name + "\t\t"+ disMegs +"\t" + time +"\t\t"+ address + "\t"+sumPrices+ "\t"+states ;
    }
}

 OrderManager类(存放程序各个功能的方法,核心代码就在这) :   

import java.util.Scanner;
public class OrderManager {
    Scanner scanner = new Scanner(System.in);
    //创建长度为4的订单数组
    Order[] orders = new Order[4];
    //创建长度为3餐品数组
    Cuisine[] cuisine = new Cuisine[3];

    
    public void start() {
        //定义num变量记录键盘键入的值
        int num = -1;
        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.println("请选择:");
            int choose = scanner.nextInt();

            boolean isAdd = false;//true:记录找到为空的位置,可以插入;false:没有找到
            switch (choose) {
                case 1:
                    //我要订餐
                    Ordering();
                    break;
                case 2:
                    //查看订单
                    check();
                    break;
                case 3:
                    //删除订单
                    del();
                    break;
                case 4:
                    //签收订单
                    signIn();
                    break;
                case 5:
                    praise();
                    break;
                case 6:
                    //退出系统
                    break;
                default:
                    break;

            }
            if (choose < 1 || choose > 5) {
                break;
            } else {
                System.out.println("输入0返回");
                num = scanner.nextInt();
            }
        } while (num == 0);   //num为0时,进入循环体
        System.out.println("谢谢使用,欢迎下次光临");
    }

    //定义初始化方法,一开始给数组添加了两个订单信息和三个菜品信息
    public void init() {
        Order order1 = new Order("张强", "红烧带鱼1份", 12, "天成路209号", 24.0, 0);
        Order order2 = new Order("李广", "红烧带鱼2份", 14, "天成路219号", 48.0, 0);
        orders[0] = order1;
        orders[1] = order2;
        Cuisine cuisine1 = new Cuisine("红烧带鱼", 38, 0);
        Cuisine cuisine2 = new Cuisine("鱼香肉丝", 22, 0);
        Cuisine cuisine3 = new Cuisine("时令蔬菜", 20, 0);
        cuisine[0] = cuisine1;
        cuisine[1] = cuisine2;
        cuisine[2] = cuisine3;

    }

    //订单功能
    public void Ordering() {
        boolean isAdd = false;  //true:记录找到为空的位置,可以插入;false:没有找到
        int num = -1;

        System.out.println("*****我要订餐*****");
        //查找要插入的位置
        for (int i = 0; i < orders.length; i++) {
            //如果找到为空的位置,记录下来
            if (orders[i] == null) {
                isAdd = true;//记录已找到一个为空的位置
                System.out.println("序号\t商品名\t单价\t\t点赞数");
                for (int j = 0; j < cuisine.length; j++) {
                    System.out.println((j + 1) + cuisine[j].toString());
                }
                System.out.println("请选择所定餐品序号:");
                int chooseDish = scanner.nextInt();
                System.out.println("请选择所定份数:");
                int number = scanner.nextInt();

                String disMeg = cuisine[chooseDish - 1].getDisName() + "" + number + "份";

                System.out.println("请输入订餐人的姓名:");
                String name = scanner.next();
                System.out.println("请输入送餐时间(10-20点整点送餐):");
                int time = scanner.nextInt();

                while (time < 10 || time > 20) {
                    System.out.println("对不起,您输入的信息有误,请输入(10-20)的整数");
                    time = scanner.nextInt();
                }
                System.out.println("请输入送餐地址:");
                String address = scanner.next();

                //计算餐费
                double sumPrice = cuisine[chooseDish - 1].getPrice() * number;
                //送餐费>=50元时,免6元送餐费
                double delicharge = sumPrice >= 50 ? 0.0 : 6.0;

                //显示订单信息
                System.out.println("订单成功");
                System.out.println("您订的是" + disMeg);
                System.out.println("订餐人:" + name);
                System.out.println("送餐时间:" + time + "点");
                System.out.println("送餐地址:" + address);
                System.out.println("餐费:" + sumPrice + ",送餐费:" + delicharge + "元");
                System.out.println("总金额:" + (sumPrice + delicharge) + "元");

                //保存数据
                Order order = new Order(name, disMeg, time, address, (sumPrice + delicharge), 0);
                orders[i] = order;
                break;

            }
        }
        //如果没有找到为空的位置,则提示信息
        if (!isAdd) {
            System.out.println("对不起,您的餐袋已满!");
        }
    }
   
     //签收订单
    public void signIn() {
        System.out.println("*****签收订单*****");
        System.out.println("请输入要签收的订单序号:");
        int signOrderId = scanner.nextInt();
        boolean isFind = false;//记录是否找到订单
        for (int i = 0; i < orders.length; i++) {
            if (orders[i] != null && orders[i].getStates() == 1 && signOrderId == i + 1) {
                System.out.println("对不起,您选择的订单已经完成签收,不能再次签收");
                isFind = true;
                break;
            } else if (orders[i] != null && orders[i].getStates() == 0 && signOrderId == i + 1) {
                orders[i].setStates(1);
                System.out.println("订单签收成功");
                isFind = true;
                break;
            }
        }
        //条件判断,如果没有找到这条订单,提示没有找到
        if (!isFind) {
            System.out.println("订单不存在");
        }
    }

    //查看餐袋
    public void check() {
        System.out.println("*****查看餐袋*****");
        System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t送餐地址\t\t总金额\t状态");

        //遍历数组
        for (int i = 0; i < orders.length; i++) {
            if (orders[i] != null) {
                String orderState = (orders[i].getStates() == 0)?"未签收":"已签收";
                System.out.println((i + 1) + "\t" +orders[i].getName() + "\t\t"+ orders[i].getDisMegs() +"\t" + orders[i].getTime() +"\t\t"+ orders[i].getAddress() + "\t"+orders[i].getSumPrices()+ "\t"+orderState);
            }
        }
    }


    //删除订单
    public void del() {
        System.out.println("*****删除订单*****");
        System.out.println("请输入要删除的订单序号");
        int delId = scanner.nextInt();
        int delIndex = -1;
        boolean isDelFind = false;
        //循环查找这条订单
        for (int i = 0; i < orders.length; i++) {
            if (orders[i] != null && orders[i].getStates() == 1 && delId == i + 1) {
                delIndex = i;
                isDelFind = true;
                break;
            } else if (orders[i] != null && orders[i].getStates() == 0 && delId == i + 1) {
                System.out.println("您选择的订单未签收,不能删除");
                isDelFind = true;
                break;
            }
        }
        if (!isDelFind) {
            System.out.println("对不起,此条订单不存在");
        }
        //执行删除操作
        if (delIndex != -1) {
            for (int i = delIndex + 1; i < orders.length; i++) {
                orders[i - 1] = orders[i];
            }
            //清空最后一位
            orders[orders.length - 1] = null;
            System.out.println("删除成功");
        }
    }

    //我要点赞
    public void praise(){
        System.out.println("*****我要点赞*****");
        System.out.println("序号\t菜品\t单价\t点赞数");
        for (int j = 0; j < cuisine.length; j++) {
            String price=cuisine[j].getPrice()+"元";
            String praise=cuisine[j].getPraseNums()+"赞";
            System.out.println((j+1)+"\t"+cuisine[j].getDisName()+"\t"+price+"\t"+praise);
        }
        System.out.println("请输入要点赞的餐品序号:");
        int dishId = scanner.nextInt();
        int num=cuisine[dishId-1].getPraseNums();
        num++;
        System.out.println("点赞成功!");
        System.out.println(cuisine[dishId-1].getDisName()+num+"赞");
        cuisine[dishId-1].setPraseNums(num);
    }
}

 Test类(测试类):

public class Test {
    public static void main(String[] args) {
        //创建OrderManager对象 
        OrderManager orderManager = new OrderManager();
        //调用初始化方法
        orderManager.init();
        //调用start方法
        orderManager.start();
    }
}

         到这里整个项目就完成啦,是不是很简单!!!如果觉得还不错,记得点个关注哦!

  • 18
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Java点餐系统是一种基于Java编程语言开发的系统,用于方便顾客进行点餐并管理餐厅菜单和订单信息。 首先,Java点餐系统需要有一个用户界面,其中包含菜单选项供顾客选择。顾客可以浏览菜单,查看菜品的详细信息,例如名称、价格、口味、配料等。顾客可以将所选菜品添加到购物车中。 其次,购物车中显示所选菜品的清单和总价。顾客可以随时更改购物车中的选项,增加或减少数量,或者删除某个菜品。购物车中的总价将通过实时计算进行更新。 当顾客完成点餐后,他们可以选择结账并支付订单。Java点餐系统可以提供多种支付方式,如信用卡、支付宝或微信支付等。支付完成后,系统会生成一张订单,并将订单信息记录在数据库中。 餐厅管理员可以通过Java点餐系统来管理菜单和订单。管理员可以添加、编辑或删除菜品,例如更新菜品价格、添加或删除菜品分类等。管理员还可以查看订单列表,包括订单的详细信息,例如顾客姓名、联系方式、菜品清单和支付情况等。 Java点餐系统还可以提供一些额外的功能,如顾客评价和反馈、促销活动推送等。顾客可以对菜品进行评分和评论,以提供反馈和建议。管理员可以根据顾客的评价和需求,制定相应的促销活动计划,并通过系统向顾客发送推送消息或优惠券。 综上所述,Java点餐系统是一个方便实用的系统,它通过提供用户友好的界面、管理菜单和订单、提供支付方式和其他附加功能,使顾客在点餐过程中更加便捷和愉快。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值