• 吃货联盟订餐系统---添加注释


    package com.shuzu;
    
    
    import java.util.Scanner;
    
    
    public class Chihuolianmeng_3 {
    //吃货订餐联盟---老师版
    
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            System.out.println("欢迎使用“吃货联盟订餐系统”");
            String choose = "";//菜单选择的变量
            //初始化数据
            int length = 5;
            String[] names = new String[length];//订餐人
            String[] descs = new String[length];//订单餐品信息
            int[] dates =new int[length];//送餐日期
            String[] addresses = new String[length];//送餐地址
            double[] moneys = new double[length];//总价
            boolean[] status = new boolean[length];//订餐状态:true:完成;false未完成
            int[] nums = new int[length];//订餐数量
            double[] prices = new double[10];//单价
            String[] foods = new String[10];//菜品信息
            int[] zan = new int[10];//点赞数量
            zan[0] = 12;zan[2] = 5;zan[4]=25;
            foods[0] = "黄焖鸡";foods[1] = "东坡肉";foods[2] = "蛋炒饭";foods[3] = "北京烤鸭";foods[4] = "大肘子";
            prices[0] = 16.0;prices[1] = 15.5;prices[2] = 8.0;prices[3] = 49.9;prices[4] = 18.8;
    
            names[0] = "陈明";
            descs[0] = "黄焖鸡";
            nums[0] = 2;
            moneys[0] = 32.0;
            dates[0] = 7;
            addresses[0] = "北大青鸟";
            status[0] = true;
    
            names[1] = "刘铭辉";
            descs[1] = "东坡肉";
            nums[1] = 3;
            moneys[1] = 46.5;
            dates[1] = 8;
            addresses[1] = "机房8";
            status[1] = false;
    
            do {
                System.out.println("******************************");
                System.out.println("1、我要订餐  2、查看餐袋  3、签收订单  4、删除订单  5、我要点赞  6、退出系统");
                System.out.println("请选择:");
                choose = sc.next();
                switch (choose) {
                case "1":
                    System.out.println("****我要订餐****");
                    int index = -1;//定义要添加的位置下标
                    for(int i = 0 ;i<length;i++) {                                            //循环找到为空的数组下标
                        if(names[i]==null) {                                                //如果i数组上的值为空 
                            index = i;                                                        //把i赋值给index
                            break;                                                          //跳出if
                        }
                    }
                    if(index<0) {                                                            //如果index小于0,说明上个循环未找到为空的数组,则
                        System.out.println("当前餐袋已满!!!");                                //提示
                    }else {
                        System.out.println("请输入订餐人姓名:");                                    //如果index不小于0,提示输入姓名
                        names[index] = sc.next();                                            //订餐人数组index接收控制台输入的值
                        System.out.println("序号	菜名	单价	点赞数量");                            //输出菜名  单价  点赞数量
                        int max = foods.length;                                                //定义max 把菜品数组最大的下标赋值给它
                        for(int i = 0;i<foods.length;i++) {                                    //循环找到不为空的菜品数组下标
                            if(foods[i]==null) {                                            //如果数组下标为空了  把i赋值给max,跳出循环
                                max = i;
                                break;
                            }
                            System.out.println((i+1)+"	"+foods[i]+"	"+prices[i]+"元	"+zan[i]+"次");
                        }
                        System.out.println("请选择您要点的菜品编号:");
                        int id = 0;                                                            //定义输入的菜品id
                        do {
                            id = sc.nextInt();                                                //接收控制台输入的值
                            if(id<1||id>max) {                                                //如果输入的值小于0或者大于菜品数组不为空的最大下标
                                System.out.println("不存在此编号菜品,请重新输入:");                //提示
                            }
                        } while (id<1||id>max);                                                //
                        descs[index] = foods[id-1];                                            //把菜品数组下标为输入的值减一上的值,赋值给餐品信息数组index上的
                        System.out.println("请选择您需要的份数:");
                        int num = sc.nextInt();                                                //定义份数num 接收控制台输入的数据
                        nums[index] = num;                                                    //把控制台上的数据赋值给数组下标为index的值
                        System.out.println("请输入送餐时间(送餐时间是10点至20点间整点送餐)");
                        int date = 0;                                                        //定义输入的时间date
                        do {
                            date = sc.nextInt();                                            //接收
                            if(date<10||date>20) {                                            //如果输入的时间小于10或者大于20
                                System.out.println("您的输入有误,请输入10~20间的整数!:");            //提示
                            }
                        } while (date<10||date>20);                                            //
                        dates[index] = date;                                                //把输入的时间辅助给时间数组下标为index上
                        System.out.println("请输入送餐地址:");                                    //
                        addresses[index] = sc.next();                                        //把输入地址赋值给地址数组下标为index上
                        double money = prices[id-1]*num;                                    //把菜品的价格乘于份数 赋值给定义的money
                        System.out.println("订餐成功:");
                        System.out.println("您订的是:"+foods[id-1]+" "+num+"份");
                        System.out.println("送餐时间:"+date+"点");
                        double song = 0.0;                                                    //定义送餐费
                        if(money<20) {                                                        //如果订餐的价格小于20
                            song = 3.0;                                                        //送餐费增加3.0元
                        }
                        moneys[index] = money+song;                                            //把定餐的价格和送餐费赋值给总价格数组下标为index上的值
                        System.out.println("餐费:"+money+"。送餐费:"+song+"元,总计:"+(money+song)+"元");
                    }
    
                    break;
                case "2":
                    System.out.println("****查看餐袋****");
                    System.out.println("序号	订餐人	餐品信息		送餐日期		送餐地址		总金额	订单状态");
                    for(int i = 0;i<length;i++) {                                            //循环变量输出订餐的信息
                        if(names[i]==null) {                                                //如果订餐人数组为空则跳出循环
                            break;
                        }
                        String canpin = descs[i]+" "+nums[i]+"份";
                        String zhuangtai = status[i]?"已完成":"已预订";
                        System.out.println((i+1)+"	"+names[i]+"	"+canpin+"		"+dates[i]+"点		"+addresses[i]+"		"+moneys[i]+"元	"+zhuangtai);
                    }
                    break;
                case "3":
                    System.out.println("****签收订单****");
                    System.out.println("请输入要签收的订单编号:");
                    boolean isTrue = false;                                                    //
                    int id = -1;                                                            //定义签收订单的编号
                    do {
                        id = sc.nextInt();                                                    //接收输入的要签收的值
                        if(id<1||id>descs.length) {                                            //如果订单编号小于1,且大于订餐信息数组的最大下标
                            isTrue = true;                                                    //
                        }else {
                            if(descs[id-1]==null) {                                            //如果订餐信息数组下标“要签收订单编号减一”上的值为空
                                isTrue = true;
                            }else {
                                isTrue = false;                                                //否则
                            }
                        }
    
                        if(isTrue) {
                            System.out.println("不存在此编号的订单信息,请重新输入:");
                        }
                    } while (isTrue);
                    status[id-1] = true;                                                    //把true赋值给  状态数组下标为要签收的订单序号减一
                    System.out.println("签收完成");                                            //提示
                    break;
                case "4":
                    System.out.println("****删除订单****");
                    System.out.println("请输入要删除的订单编号:");
                    int big = length;                                                        //定义下标
                    for(int i = 0;i<length;i++) {                                            //循环找到订餐信息为空的数组下标
                        if(descs[i]==null) {                                                //如果订餐信息数组为空
                            big = i;                                                        //把下标i赋值给big 跳出
                            break;
                        }
                    }
    
                    int no = 0;                                                                //输入的值
                    do {
                        no = sc.nextInt();                                                    //接收输入的要删除的序号
                        if(no<1||no>big) {                                                    //如果输入的值小于1 或大于订餐信息数组不为空的最大的下标
                            System.out.println("不存在此编号菜品,请重新输入:");                    //提示
                        }
                    } while (no<1||no>big);
    
                    if(status[no-1]==false) {                                                //如果状态数组下标为要删除的序号减一的值==未完成
                        System.out.println("订单未完成,不能删除");                                //提示
                    }else {
                        for(int i=no-1;i<length-1;i++) {                                    //循环让要删除的序号减一的下标开始,到最大数组下标减一,依次把后面的值移到前一个数组上
                            names[i] = names[i+1];
                            descs[i] = descs[i+1];
                            nums[i] = nums[i+1];
                            dates[i] = dates[i+1];
                            addresses[i] = addresses[i+1];
                            moneys[i] = moneys[i+1];
                            status[i] = status[i+1];
                        }
                        //最后把最后一个数组上的值清空
                        names[length-1] = null;
                        descs[length-1] = null;
                        nums[length-1] = 0;
                        dates[length-1] = 0;
                        addresses[length-1] = null;
                        moneys[length-1] = 0.0;
                        status[length-1] = false;
                        System.out.println("删除订单成功");
                    }
    
                    break;
                case "5":
                    System.out.println("****我要点赞****");
                    System.out.println("序号	菜名	单价	点赞数量");
                    int max = foods.length;                                                    //循环遍历菜名 单价 点赞数
                    for(int i = 0;i<foods.length;i++) {
                        if(foods[i]==null) {
                            max = i;
                            break;
                        }
                        System.out.println((i+1)+"	"+foods[i]+"	"+prices[i]+"元	"+zan[i]+"次");
                    }
                    System.out.println("请选择您要点赞的菜品编号:");
                    int bianhao = 0;                                                        //定义
                    do {
                        bianhao = sc.nextInt();                                                //接收
                        if(bianhao<1||bianhao>max) {                                        //如果编号为小于1或大于菜单不为空的最大数组下标时
                            System.out.println("不存在此编号菜品,请重新输入:");
                        }
                    } while (bianhao<1||bianhao>max);
                    zan[bianhao-1]++;                                                        //点赞数组下标输入的编号减一的值自加
                    System.out.println("点赞成功,谢谢您的反馈");
                    break;
                case "6":
                    System.out.println("****退出系统****");
                    System.out.println("谢谢使用");
                    break;
    
                default:
                    System.out.println("选择错误,请重新选择:");
                    choose = sc.next();
                    break;
                }
            }while(!"6".equals(choose));
        }
    }
  • 相关阅读:
    JSON入门之二:org.json的基本用法
    Eclipse下设置tomcat,修改Java代码不必重启tomcat
    maven仓库快速镜像
    ORA-06413连接未打开的错误的原因和解决方法
    .NET WIN7 64位 连接Oracle数据库
    5种方法解除开机密码
    精美的贴子挂件
    同学,同事,KTV聚会的小游戏
    QQ分组图案
    WIN7 XP 已达到计算机的连接数最大值,无法再同此远程计算机连接
  • 原文地址:https://www.cnblogs.com/qq993411626------/p/10241028.html
Copyright © 2020-2023  润新知