Java吃货联盟订餐系统

package com.company;

import java.util.Scanner;

public class Administrator {
    public static void main(String[] args) {
        //吃货联盟订餐系统
        //定义数据主体 菜品
        String[] dishNames = {"红烧带鱼", "鱼香肉丝", "时令鲜蔬"};//菜品
        double[] prices = {38.0, 20.0, 10.0};//价格
        int[] likeCount = new int[4];//点赞数

        //定义数据主体
       // 订餐人	所订餐及份数	时间	送餐地址	状态	价格
        String[] names = new String[4];//订餐人
        String[] dishMsg = new String[4];//所订餐 份数
        int[] times = new int[4];//10点-20点
        String[] addresses = new String[4];//送餐地址
        int[] states = new int[4];//已预定 0   已完成 1
        double[] sum = new double[4];//满50,没有配送费,否则6元1配送费

        //初始化订单信息
        names[0] = "张三";
        dishMsg[0] = "红烧带鱼 2份";
        times[0] = 10;
        addresses[0] = "幸福路232号";
        states[0] = 0;
        sum[0] = 76.0;
        //
        names[1] = "李四";
        dishMsg[1] = "鱼香肉丝 1份";
        times[1] = 13;
        addresses[1] = "区努路123号";
        states[1] = 1;
        sum[1] = 26.0;

        //构建主体流程框架
        Scanner input = new Scanner(System.in);
        int num = -1; //当num=0时返回到主菜单,每次重新赋值
        //利用一个状态,来记录用户是否退出系统
        boolean flag = false;//退出 true  继续false
        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("请选择:");
            int choose = input.nextInt();
            switch (choose) {
                case 1:
                    System.out.println("\n******我要订餐*******");
                    //利用boolean 来表示订单满不满
                    boolean order = false;// 满false  不满true
                    for (int i = 0; i < names.length; i ++) {
                        if (names[i] == null) {
                            order = true;
                            System.out.print("请输入订餐人姓名:");
                            String orderName = input.next();
                            //循环输出菜单
                            System.out.println("序号\t菜品\t单价");
                            for (int j = 0; j < dishNames.length; j ++) {
                                System.out.println((j + 1) + "\t" + dishNames[j] + "\t" + prices[j]);
                            }
                            //选择菜品
                            System.out.print("请选择您要点的菜品编号:");
                            int dishNumber = input.nextInt();
                            while (dishNumber < 1 || dishNumber > dishMsg.length) {
                                System.out.print("您输入的编号有误,请重新输入:");
                                dishNumber = input.nextInt();
                            }
                            //定几份
                            System.out.print("请输入订单份数:");
                            int dishNum = input.nextInt();
                            //送达时间
                            System.out.print("请选择配送时间(10-20的整数):");
                            int dishTime = input.nextInt();
                            while (dishTime< 10 || dishTime > 20) {
                                System.out.print("您输入的配送时间有误,请重新输入:");
                                dishTime = input.nextInt();
                            }
                            //地址
                            System.out.print("请输入配送地址:");
                            String dishAddress = input.next();
                            //打印订单信息给用户看
                            System.out.println("订餐成功!");
                            System.out.print("您订的是:");
                            String dishInfo = dishNames[dishNumber - 1] + " " + dishNum + "份";
                            System.out.println(dishInfo);

                            System.out.print("送餐时间:");
                            String dishTimes = dishTime + "点";
                            System.out.println(dishTimes);

                            double meals = prices[dishNumber - 1] * dishNum;
                            double delivery = (meals < 50) ? 6.0: 0.0;
                            double sumPrice = meals + delivery;
                            System.out.println("餐费:" + meals + "\t配送费:" + delivery + "元" + "\t总计:" + sumPrice);

                            //存入订单信息
                            names[i] =orderName;
                            dishMsg[i] = dishInfo;
                            times[i] = dishTime;
                            addresses[i] = dishAddress;
                            sum[i] = sumPrice;
                            break;
                        }
            }
                    if (!order) {
                        System.out.println("餐袋已满");
                    }
                    break;
                case 2:
                    System.out.println("\n******查看餐袋*******");
                    System.out.println("序号\t订餐人\t所订餐及份数\t\t时间\t送餐地址\t状态\t价格");
                    for (int i = 0; i < names.length; i ++) {
                        if (names[i] != null) {//输出非空订单
                            String time = times[i] + "点";
                            String state = (states[i] == 0)? "已预定":"已完成";
                            //第一次调试错把单价当成商品总价一直错误,自己写的数组一定要记清楚
                            System.out.println((i + 1) + "\t\t" + names[i] + "\t" + dishMsg[i] + "\t\t" + time + "\t" + addresses[i] + "\t" +state + "\t\t" +sum[i]);// );
                        }
                    }
                    break;
                case 3:
                    System.out.println("\n******签收订单*******");
                    //定义一个Boolean变量来表示能不能签收
                    boolean sign = false;//false--不存在   true存在 两种情况  已签收和未签收
                    System.out.print("请输入要签收的订单编号:");
                    int signNo = input.nextInt();
                    for (int i = 0; i < names.length; i ++) {

                        //判断 是否存在   是否已签收   是否找到
                        if (names[i] != null && states[i] == 0 && i == signNo -1) {
                            //false改为true 表示存在
                            sign = true;
                            states[i] = 1;
                            System.out.println("签收成功");
                            break;
                        } else if (names[i] != null && states[i] == 1 && i == signNo- 1) {
                            sign = true;
                            System.out.println("订单已签收");break;
                        }
                    }
                    if (!sign) {
                        System.out.println("订单不存在");
                    }
                    break;
                case 4:
                    System.out.println("\n******删除订单*******");
                    //定义一个Boolean变量来表示能不能签收
                    boolean delete = false;//false--不存在   true存在 两种情况  已签收和未签收
                    System.out.print("请输入要删除的订单编号:");
                    int deleteNo = input.nextInt();
                    for (int i = 0; i < names.length; i ++) {

                        //判断 是否存在   是否已签收   是否找到
                        if (names[i] != null && states[i] == 0 && i == deleteNo -1) {

                            //false改为true 表示存在
                            delete = true;
                            System.out.println("该订单未签收,不能删除");
                        } else if (names[i] != null && states[i] == 1 && i == deleteNo- 1) {
                            delete = true;
                            //因为有j + 1 的存在所以循环的次数要进行减一,不然会超出
                            for (int j = i; j < names.length -1; j ++) {
                                names[j] = names[j + 1];
                                dishMsg[j] = dishMsg[j + 1];
                                times[j] = times[j + 1];
                                addresses[j] = addresses[j + 1];
                                states[j] = states[j + 1];
                                sum[j] = sum[j + 1];
                            }

                                //最后一个要置空
                                names[names.length -1] = null;
                                dishMsg[names.length -1] =  null;
                                times[names.length -1] = 0;
                                addresses[names.length -1] = null;
                                states[names.length -1] = 0;
                                sum[names.length -1] =  0;
                                System.out.println("订单签收成功");
                        }
                    }
                    if (!delete) {
                        System.out.println("订单不存在");
                    }
                    break;
                case 5:
                    System.out.println("\n******我要点赞*******");
                    System.out.println("序号\t菜品\t点赞数");
                    for (int j = 0; j < dishNames.length; j ++) {
                        String like = (likeCount[j] == 0) ? " ": likeCount[j] + "赞";
                        System.out.println((j + 1) + "\t" + dishNames[j] + "\t" + like);
                    }
                    System.out.print("请输入您要点赞的单号:");
                    int dishNumberNo = input.nextInt();
                    while (dishNumberNo < 1 || dishNumberNo > dishNames.length) {
                        System.out.print("没有这个订单,请重新输入:");
                        dishNumberNo = input.nextInt();
                    }
                    //哪个订单的赞数加一,是序号减一
                    likeCount[dishNumberNo - 1] ++;
                    System.out.println("点赞成功");
                    break;
                case 6:
                  //退出系统
                    flag = true;
                    break;
                default :
                    //退出系统
                    flag = true;
                    break;
            }
            //利用if解决case 6 不能退出系统的问题
            if (!flag) {  //flag = false
                System.out.print("输入0返回:");
                num = input.nextInt();
            } else
                break;
        } while(num == 0);
        System.out.println("谢谢使用,欢迎下次光临!");
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

134明目

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

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

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

打赏作者

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

抵扣说明:

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

余额充值