吃货联盟订餐系统

欢迎页面

Scanner输入
使用do-while循环
1、控制台输出订餐系统欢迎页面
2、变量接收控制台输入的数字
2、用switch选择进入(1-5),同时判断返回主页面的条件,即重新加载主页面
3、不在1-5范围内break退出系统

        int chose=1;
        Scanner input=new Scanner(System.in);
        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("请选择:");
            chose=input.nextInt();
            switch (chose){
                case 1:
                    System.out.println("***我要订餐***");
                    break;
                case 2:
                    System.out.println("***查看餐袋***");
                    break;
                case 3:
                    System.out.println("***订单签收***");
                    break;
                case 4:
                    System.out.println("***删除订单***");
                    break;
                case 5:
                    System.out.println("***我要点赞***");
                    break;
                    default:
            }
            if (chose>0&&chose<6){//定义重新加载
                System.out.println("输入0返回");
                chose=input.nextInt();
            }else {//不在1-5范围内直接退出系统
                System.out.println("欢迎下次光临!");
                break;
            }
        }while(chose==0);//重新加载的条件

在这里插入图片描述

我要订餐

1、在主页面输入1进入我要订餐页面
2、输入订餐人姓名
3、输入菜品序号前,需要加载餐品信息:序号 菜品 单价 ,因此需要用一维数组存储菜品、单价数据
4、依次输入菜品序号(不能小于1或大于菜品的最大序号)、份数(不能小于1)、时间(10-20)、地址
这里的序号是从1开始,数组下标从0开始
5、计算金额

//餐品信息
        String[] dishes={"油焖茄子","干锅包菜","红烧带鱼","水煮肉片"};
        double[] prices={15,20,22,35};
                    System.out.println("***我要订餐***");
                    System.out.println("请输入订餐人姓名:");
                    String name=input.next();
                    //加载菜品和单价 先定义数组来存储这些数据
                    System.out.println("序号\t\t菜品\t\t单价");
                    for (int i = 0; i < dishes.length; i++) {
                        System.out.println(i+1+"\t\t"+dishes[i]+"\t\t"+prices[i]);
                    }
                    int dishNum=0;
                    do{
                        System.out.println("请选择菜品序号:");
                        dishNum=input.nextInt();
                        if (dishNum<0||dishNum>dishes.length){
                            System.out.println("输入有误,请重新输入:");
                        }
                    }while (dishNum<0||dishNum>dishes.length);
                    int num=0;
                    do{
                        System.out.println("请输入需要的份数:");
                        num=input.nextInt();
                        if (num<1){
                            System.out.println("输入有误,请重新输入:");
                        }
                    }while(num<1);
                    int time=0;
                    do{
                        System.out.println("请输入送餐时间(10-20整点):");
                        time=input.nextInt();
                        if (time<10||time>20){
                            System.out.println("输入错误,请重新输入:");
                        }
                    }while(time<10||time>20);
                    System.out.println("请输入送餐地址:");
                    String address=input.next();
                    double price=prices[dishNum-1]*num;
                    double sent=price>50?6:0;
                    double total=sent+price;
                    System.out.println("餐费:"+price+"元,送餐费:"+sent+"元,总计:"+total+"元");

在这里插入图片描述

查看餐袋

1、查看餐袋前,首先要将我要订餐里面的信息存放在数组里面才能查看到

String[][] information =new String[1024][];
for (int i = 0; i < information.length; i++) {
    if (information[i]==null){
        information[i]=new String[2];
        information[i][0]=name+"\t\t"+dishes[dishNum-1]+num+"份"+"\t\t"+time+"点"+"\t\t"+
        address+"\t\t"+total+"元";
        information[i][1]="已预定";
         break;//不加全都赋值了
     }
}

2、将信息循环遍历出来

System.out.println("***查看餐袋***");
System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t\t送餐地址\t\t总金额\t订单状态");
for (int i = 0; i < information.length; i++) {
    if (information[i]!=null){
        System.out.println(i+1+"\t"+information[i][0]+"\t"+information[i][1]);
     }else{
          break;//不打印null
     }
}

订单签收

1、将订单信息打印出来
2、确定订单的个数
3、条件判断 小于1大于订单个数 状态不是已预定 提示重新输入
其他修改订单状态 同时break

                    int a=0;
                    int b=0;
                    do{
                        for (int i = 0; i < information.length; i++) {
                            if (information[i]==null){
                                a=i;//确定订单的个数  假设012 则3是null a=3
                                break;
                            }
                        }
                        b=input.nextInt();
                        if (b<1||b>a){
                            System.out.println("输入有误");
                        }else if (!"已预定".equals(information[b-1][1])){
                            System.out.println("订单已经签收");
                        }else{
                            information[b-1][1]="已完成";
                            break;
                        }
                    }while(b<1||b>a ||!"已预定".equals(information[b-1][1]));

删除订单

1、将订单信息打印出来
2、确定订单的个数
3、条件判断 小于1大于订单个数 状态不是已完成 提示重新输入
4、如果输入的值n满足条件 则对应的下标是n-1
从n-1开始遍历数组
(1)如果正好是数组的最后一个 直接将值更改为null
(2) 不在最后一个 则将后面的往前移 当i+1赋给i的值为null时,说明后面都是null ,break
5、如果删除的正好是第一个,第二个状态是已预定,
while(d<1||d>c||!“已完成”.equals(information[d-1][1]));
此时会继续循环 因此在更改值之后,应该设置标志位true,同时当标志位是true时 直接跳出while

                    System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t\t送餐地址\t\t总金额\t订单状态");
                    for (int i = 0; i < information.length; i++) {
                        if (information[i]!=null){
                            System.out.println(i+1+"\t"+information[i][0]+"\t"+information[i][1]);
                        }else{
                            break;
                        }
                    }
                    int c=0;
                    int d=0;
                    do{
                        for (int i = 0; i < information.length; i++) {
                            if (information[i]==null){
                                 c=i;
                                 break;
                            }
                        }
                        d=input.nextInt();
                        if (d<1||d>c){
                            System.out.println("输入有误");
                        }else if (!"已完成".equals(information[d-1][1])) {
                            System.out.println("订单状态不是已完成");
                        }else{
                            boolean flag=false;
                            for (int i = d-1; i < information.length; i++) {
                                if (i==information.length-1){
                                    information[i]=null;//删除最后一个 直接将最后一个值改为null
                                    flag=true;
                                }else{
                                    information[i]=information[i+1];
                                    if (information[i]==null){
                                        flag=true;
                                        break;
                                    }
                                }
                            }
                            if (flag){
                                System.out.println("删除成功");
                                break;//跳出while
                            }
                        }
                    }while(d<1||d>c||!"已完成".equals(information[d-1][1]));

我要点赞

1、新建一维数组存储点赞数
2、展示餐品信息
3、如果输入的要点赞的菜品序号在范围内(dishes.length),对应的下标点赞数+1

                    int dianZan=0;
                    do{
                        System.out.println("序号\t\t菜品\t\t\t单价\t点赞数");
                        for (int i = 0; i < dishes.length; i++) {
                            System.out.println(i + 1 + "\t\t" + dishes[i] + "\t\t" + prices[i] + "元" + "\t" + honors[i]);
                        }
                        System.out.println("请输入要点赞的菜品序号:");
                        dianZan=input.nextInt();
                        if (dianZan<1||dianZan>dishes.length){
                            System.out.println("输入有误,重新输入!");
                        }else {
                            honors[dianZan-1]++;
                            System.out.println("点赞成功!");
                        }
                    }while(dianZan<1||dianZan>dishes.length);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值