java 案例 吃货联盟

我要订餐

 

查看订单

 

签收订单

 

删除订单

 

我要点赞(1)

 

我要点赞(2)

 

程序思路

  1. 搭建平台

  2. 输出欢迎语句

  3. 用户输入姓名

  4. 创建 Food 类

  5. 变量 Food 数组

  6. 询问份数和地址等

  7. 定义订单项对象数组

  8. 把订单信息存入订单数组

  9. 遍历订单

  10. 修改订单状态

后面依次类推,可以实现后面的功能

代码

搭建平台

import java.util.Scanner;

public class Game {
    //扫描仪
    Scanner input = new Scanner(System.in);

    //点赞数
    int[] dz = new int[10];

    //用户姓名
    String username;
    //定义菜品数组
    Food[] foods = new Food[10];
    //定义餐带对象数组
    OrderItem[] orderItems = new OrderItem[10];
    //实例化类
    Food food = new Food();

    //平台
    public void game() {
        //初始化数据
        init();

        //显示欢迎语句
        welcome();
        //显示主菜单
        run();
    }

    private void init() {
        //创建对象数组
        System.out.println("数据初始化中...");
        //新建对象
        Food no1 = new Food();
        no1.foodname = "红烧带鱼";
        no1.foodmoney = 38;
        no1.foodNumberOflikes += dz[0];
        //把对象存储进数组
        foods[0] = no1;

        Food no2 = new Food();
        no2.foodname = "鱼香肉丝";
        no2.foodmoney = 20;
        no2.foodNumberOflikes += dz[1];
        foods[1] = no2;

        Food no3 = new Food();
        no3.foodname = "时令鲜菜";
        no3.foodmoney = 10;
        no3.foodNumberOflikes += dz[2];
        foods[2] = no3;
    }

    private void run() {
        while (true) {
            runMain();
        }

    }


    //显示主菜单
    private void runMain() {
        System.out.println("1.我要订餐");
        System.out.println("2.查看订单");
        System.out.println("3.签收订单");
        System.out.println("4.删除订单");
        System.out.println("5.我要点赞");
        System.out.println("6.退出系统");
        //接受用户输入
        userChoice();
    }

    //接收用户输入的功能
    private void userChoice() {
        System.out.println("请输入您要得功能:");
        int userInput = input.nextInt();
        switch (userInput) {
            case 1:
                //我要订餐
                orderAMeal();
                break;
            case 2:
                //查看订餐
                checkOrderAMeal();
                break;
            case 3:
                //签收订单
                signForOrderAMeal();
                break;
            case 4:
                //删除订单
                delOrderAMeal();
                break;
            case 5:
                //我要点赞
                giveTheThumbsUp();
                break;
            case 6:
                System.out.println("谢谢使用,欢迎下次光临!");
                System.exit(0);
                break;
        }
    }

    //我要点赞
    private void giveTheThumbsUp() {
        System.out.println("***我要点赞***");
        //询问用户要点赞的 订单或者菜品
        System.out.println("请输入您要点赞的是订单还是菜品(1是菜品/2是订单):");
        int userInput = input.nextInt();
        // switch 分支
        switch (userInput) {
            case 1:
                //显示菜品
                System.out.println("显示菜品");
                TheMenu();
                //用户输入要点赞的菜品
                System.out.print("请输入您要点赞的菜品:");
                int caiPian = input.nextInt();
                //修改菜品状态
                dz[caiPian-1] += 1;
                //更新数据
                init();
                System.out.println("点赞成功!");
                break;
            case 2:
                System.out.println("显示订单");
                //判断是否有数据
                int i = getnum(orderItems, 1);
                //判断 i 如果等于 0 就结束次方法
                if (i == 0) {
                    return;
                }
                //显示订单状态为 2(已完成) 的订单
                show(1);
                //用户输入要点赞的订单
                System.out.print("请输入要点赞的订单序号:");
                int dianZan = input.nextInt();
                //让用户输入的订单序列号减一
                //让用户输入的订单的状态变成已点赞
                orderItems[dianZan - 1].status = 2;
                System.out.println("点赞成功!");
                break;
        }
    }

    //删除订单
    private void delOrderAMeal() {
        int k = getnum(orderItems, 1);
        if (k == 0) {
            return;
        }
        show(1);
        System.out.print("请输入要删除的订单序号:");
        int deleOrder = input.nextInt();
        dele(orderItems, deleOrder);
        System.out.println("删除完成");

    }

    private void show(int o) {
        //打印表头
        System.out.println("序号\t\t订餐人\t\t\t餐品信息\t\t\t送餐时间\t\t送餐地址\t\t总金额\t\t订餐状态");
        //循环输出对象数组
        for (int i = 0; i < orderItems.length; i++) {
            OrderItem item = orderItems[i];
            if (orderItems[i] == null) {
                break;
            }

            //判断订单状态
            String stat = null;
            if (item.status == 0) {
                stat = "已预订";
            } else if (item.status == 1) {
                stat = "已完成";
            } else if (item.status == 2) {
                stat = "已点赞";
            }

            //判断订单是否为已预订
            if (item.status == o) {
                //输出订单
                System.out.println((i + 1) + "\t\t" + item.orderMan + "\t\t\t\t" + item.food.foodname + " " + item.foodNum + "份"
                        + "\t\t" + item.deliveryDate + "\t\t\t" + item.address + "\t\t" + item.coast + "\t\t" + stat);
            }
        }

    }

    //签收订单
    private void signForOrderAMeal() {
        int k = getnum(orderItems, 0);
        if (k == 0) {
            return;
        }
        show(0);
        //询问用户要修改的订单
        System.out.print("请选择要签收的订单序号:");
        int orderNumber = input.nextInt();

        //修改订单状态
        orderItems[orderNumber - 1].status = 1;

        //订单签收
        System.out.println("订单签收完成!");

    }

    public void dele(OrderItem[] orderItems, int index /*下标*/) {
        //定义一个变量来计算数组的真实长度
        int l = 0;

        //遍历 求数组真实长度
        for (int i = 0; i < orderItems.length; i++) {//如果数组真实长度 不等于 数组长度 将执行下列代码
            OrderItem system = orderItems[i];
            if (system != null) {
                l++;
            } else {
                break;
            }
        }

        //循环;     删除数据并数据前移
        //数据前移
        for (int i = index; i <= l - 1; i++) {
            orderItems[i] = orderItems[i + 1];
        }
        //删除最后一个数据    用数组 真实长度-1 得到数组最后一位数,然后让他等于null
        orderItems[l - 1] = null;
    }

    public int trueLength(OrderItem[] orderItems) {
        //定义一个变量来计算数组的真实长度
        int l = 0;

        //遍历 求数组真实长度
        for (int i = 0; i < orderItems.length; i++) {//如果数组真实长度 不等于 数组长度 将执行下列代码
            OrderItem system = orderItems[i];
            if (system != null) {
                l++;
            } else {
                break;
            }
        }
        return l;
    }

    //查看订餐
    private void checkOrderAMeal() {
        //输出
        showOrderlist();

    }

    private void showOrderlist() {
        int t = trueLength(orderItems);
        if (t == 0) {
            return;
        }
        //输出表头
        System.out.println("序号\t\t订餐人\t\t菜品信息\t\t\t送餐时间\t\t送餐地址\t\t总金额\t\t订单状态");

        // data
        for (int i = 0; i <= orderItems.length; i++) {
            OrderItem item = orderItems[i];
            if (orderItems[i] == null) {
                break;
            }

            String stat = null;
            if (item.status == 0) {
                stat = "已预定";
            } else if (item.status == 1) {
                stat = "已完成";
            } else if (item.status == 2) {
                stat = "已点赞";
            }

            System.out.println((i + 1) + "\t\t" + item.orderMan + "\t\t\t" + item.food.foodname + " " + item.foodNum + "份"
                    + "\t\t" + item.deliveryDate + "\t\t" + item.address + "\t\t" + item.coast + "\t\t" + stat);
        }
    }

    public int getnum(OrderItem[] orderItems, int k) {
        int num = 0;
        // data
        for (int i = 0; i <= orderItems.length; i++) {
            OrderItem item = orderItems[i];
            if (orderItems[i] == null) {
                break;
            }

            if (item.status == k) {
                num++;
            }
        }
        return num;
    }

    //我要订餐
    private void orderAMeal() {
        System.out.println("***我要订餐***");
        System.out.println("输入0返回,其他键继续:");
        //用户选择是否返回
        int userChioes = input.nextInt();
        //判断用户输入
        if (userChioes == 0) {
            run();
        }
        //显示菜品
        userinput();

        //询问用户菜品编号
        InquiryNumber();
    }

    //询问用户菜品编号
    private void InquiryNumber() {
        boolean loop = true;

        int Num = 0;
        int shareNum = 0;
        String time = null;
        String where = null;

        while (loop) {
            //询问用户的菜品编号
            System.out.print("请输入您要点的菜品编号是:");
            Num = input.nextInt();

            //询问用户份数
            System.out.print("请选择您需要的份数:");
            shareNum = input.nextInt();

            //询问用户时间
            System.out.print("请输入送餐的时间(送餐时间是10点至20点整点):");
            time = input.next();

            //送餐时间
            System.out.print("请输入送餐地址:");
            where = input.next();

            System.out.println("订餐成功!");

            //输出菜品
            //菜品
            System.out.print("您定的是:" + foods[Num - 1].foodname);
            //送餐时间
            System.out.println("送餐时间:" + time);
            //餐费
            System.out.println("餐费:" + foods[Num - 1].foodmoney * shareNum + "元,送餐费0.0元" + "总计:" +
                    foods[Num - 1].foodmoney * shareNum);

            loop = false;
        }

        //实例化对象
        OrderItem orderItem = new OrderItem();
        //订餐人
        orderItem.orderMan = username;
        //菜品对象
        orderItem.food = foods[Num - 1];
        //菜品数量
        orderItem.foodNum = shareNum;
        //送餐时间
        orderItem.deliveryDate = time;
        //送餐地址
        orderItem.address = where;
        //更新总金额
        orderItem.update();

        storeOrder(orderItems, orderItem);
    }

    private void storeOrder(OrderItem[] orderItems, OrderItem orderItem) {
        //存进对象数组
        for (int i = 0; i < orderItems.length; i++) {
            //判断数组是否为空
            if (orderItems[i] == null) {
                orderItems[i] = orderItem;
                break;
            }

        }

    }


    private void userinput() {
        System.out.print("请输入订餐人姓名:");
        username = input.next();
        //显示点菜单
        TheMenu();
    }

    private void TheMenu() {
        //打印表头
        System.out.println("序号\t\t菜品\t\t\t单价\t\t点赞数");
        //遍历对象数组
        for (int i = 0; i < foods.length; i++) {
            //判断这个数组为空就退出
            if (foods[i] == null) {
                break;
            }

            //打印数据
            System.out.println((i + 1) + "\t\t" + foods[i].foodname + "\t\t" + foods[i].foodmoney + "\t\t" + foods[i].foodNumberOflikes);

        }

    }

    //欢迎语句
    private void welcome() {
        System.out.println("欢迎使用“吃货联盟订餐系统”");
        System.out.println("*****************************");
    }

}

食物类

public class Food {
    //菜名
    String foodname;
    //单价
    double foodmoney;
    //点赞数
    int foodNumberOflikes;
}

订单类

public class OrderItem {
    //属性
    //订餐人
    String orderMan;
    //菜品对象
    Food food;
    //菜品数量
    int foodNum;
    //送餐日期
    String deliveryDate;
    //送餐地址
    String address;
    //总金额
    double coast;
    //订单状态
    int status;

    public void update() {
        coast = food.foodmoney * foodNum;
    }

}

系统运行

public class Test {
    //系统开始
    public static void main(String[] args) {
        //新建对象
        Game game = new Game();
        //实例化对象
        game.game();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SSOA6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值