Java基础部分综合练习:吃货联盟订餐系统项目实操

奉天承运,博主诏曰:

项目需求:

在这里插入图片描述

项目拆解:

在这里插入图片描述

项目细分:

吃货联盟数据主图分析:

姓名:输入String
餐品信息:序号、餐品名 String、价格 double、点赞数 int 3个一维数组
份数:输入 int 大于0的整数
时间:输入 int 10~20点之间的整数
地址:输入 String

订单信息:

String 二维数组
序号、姓名、餐品名、份数、价格(总价)、地址、时间、状态

签收订单:

改变订单的状态 如果已完成则不能再次签收

删除订单:

不能删除未完成的订单,序号要对应变动

我要点赞:

对应菜品的点赞数++

程序控制分析:

1、欢迎页循环:do-while
2、Scanner控制输入

代码参考:

import java.util.Scanner;

public class Eat {
    
    
    public static void main(String[] args) {
    
    
        Scanner sc=new Scanner(System.in);
        String[] dishes={
    
    "清蒸鲑鱼","红烧鸡腿","麻婆豆腐","糖醋里脊"};
        double[] prices={
    
    45,32,18,22};
        int[] honors={
    
    15,66,48,12};
        String[][] orders=new String[1024][];
        int choose=0;
        do{
    
    
            System.out.println("吃货联盟欢迎你,请开始你的表演");
            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("请选择");
            choose=sc.nextInt();
            switch(choose){
    
    
                case 1:
                    System.out.println("*****我要订餐*****");
                    System.out.print("请输入订餐人姓名");
                    String name=sc.next();
                    System.out.println("序号\t菜品\t\t价格\t\t点赞数");
                    for (int i = 0; i < dishes.length; i++) {
    
    
                        System.out.println(i+1+"\t"+dishes[i]+"\t"+prices[i]+"元\t"+"获得"+honors[i]+"个赞");
                    }

                    int dishNum =0;
                    do{
    
    
                        System.out.print("请输入需要的菜品编号:");
                        dishNum =sc.nextInt();
                        if(dishNum<1 || dishNum>dishes.length){
    
    
                            System.out.println("输入有误,请重新输入!");
                        }
                    }while(dishNum<1 || dishNum>dishes.length);

                    int pcs=0;
                    do{
    
    
                        System.out.print("请输入份数:");
                        pcs=sc.nextInt();
                        if(pcs<1){
    
    
                            System.out.println("请至少选择1份!");
                        }
                    }while(pcs<1);

                    int time=0;
                    do{
    
    
                        System.out.print("请输入送餐时间(10-20整点):");
                        time=sc.nextInt();
                        if(time<10 || time>20){
    
    
                            System.out.print("不在配送时间内!");
                        }
                    }while(time<10 || time>20);

                    System.out.print("请输入配送地址:");
                    String address=sc.next();
                    System.out.println("订餐成功!");
                    System.out.println("您定的是:"+dishes[dishNum-1]+"\t"+pcs+"份");
                    System.out.println("配送时间是:"+time+"点");
                    System.out.println("配送地址是:"+address);
                    double cost=prices[dishNum-1]*pcs;
                    double sent=cost>50?0:6;
                    double total=cost+sent;
                    System.out.println("餐费:"+cost+"元,配送费:"+sent+"元,总价:"+total+"元。");
                    for (int i = 0; i < orders.length; i++) {
    
    
                        if(orders[i]==null){
    
    
                            orders[i]=new String[3];
                            orders[i][0]=name+"\t"+dishes[dishNum-1]+"\t"+pcs+"份\t"+time+"点\t"+address+"\t"+total+"元";
                            orders[i][1]="已预定";
                            break;
                        }
                    }
                    break;
                case 2:
                    System.out.println("*****查看餐袋*****");
                    System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t总金额\t订单状态");
                    for (int i = 0; i < orders.length; i++) {
    
    
                        if(orders[i]!=null){
    
    
                            System.out.println(i+1+"\t"+orders[i][0]+"\t"+orders[i][1]);
                        }else{
    
    
                            break;
                        }
                    }
                    break;
                case 3:
                    System.out.println("*****签收订单*****");
                    System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t总金额\t订单状态");
                    for (int i = 0; i < orders.length; i++) {
    
    
                        if(orders[i]!=null){
    
    
                            System.out.println(i+1+"\t"+orders[i][0]+"\t"+orders[i][1]);
                        }else{
    
    
                            break;
                        }
                    }

                    int num=0;
                    int end=0;
                    do{
    
    
                        System.out.println("请选择要签收的订单序号:");
                        for (int i = 0; i < orders.length; i++) {
    
    
                            if(orders[i]==null){
    
    
                                end=i;
                                break;
                            }
                        }
                        num=sc.nextInt();
                        if(num<1 || num>end){
    
    
                            System.out.println("输入有误,请重新输入!");
                        }else if(!"已预定".equals(orders[num-1][1])){
    
    
                            System.out.println("已完成的订单无需再次签收");
                        }else{
    
    
                            orders[num-1][1]="已完成";
                            System.out.println("签收成功!");
                            break;
                        }
                    }while(num<1 || num>end ||!"已预定".equals(orders[num-1][1]));
                    break;
                case 4:
                    System.out.println("*****删除订单*****");
                    System.out.println("序号\t订餐人\t餐品信息\t送餐时间\t送餐地址\t总金额\t订单状态");
                    for (int i = 0; i < orders.length; i++) {
    
    
                        if(orders[i]!=null){
    
    
                            System.out.println(i+1+"\t"+orders[i][0]+"\t"+orders[i][1]);
                        }else{
    
    
                            break;
                        }
                    }

                    int n=0;
                    int e=0;
                    do{
    
    
                        for (int i = 0; i < orders.length; i++) {
    
    
                            if(orders[i]==null){
    
    
                                e=i;
                                break;
                            }
                        }
                        System.out.println("请输入要删除的订单序号:");
                        n=sc.nextInt();
                        if(n<1 || n>e){
    
    
                            System.out.println("输入有误,请重新输入!");
                        }else if(!"已完成".equals(orders[n-1][1])){
    
    
                            System.out.println("未完成的订单不能删除!");
                        }else {
    
    
                            boolean isDelete=false;
                            for (int i = n-1; i < orders.length; i++) {
    
    
                                if(i==orders.length){
    
    
                                    orders[i]=null;
                                    System.out.println("删除成功!");
                                    isDelete=true;
                                }else{
    
    
                                    orders[i]=orders[i+1];
                                    if(orders[i]==null){
    
    
                                        System.out.println("删除成功!");
                                        isDelete=true;
                                        break;
                                    }
                                }
                            }
                            if(isDelete){
    
    
                                break;
                            }
                        }
                    }while(n<1 || n>e || !"已完成".equals(orders[n-1][1]));
                    break;
                case 5:
                    System.out.println("*****我要点赞*****");
                    System.out.println("序号\t菜品\t\t价格\t\t点赞数");
                    for (int i = 0; i < dishes.length; i++) {
    
    
                        System.out.println(i+1+"\t"+dishes[i]+"\t"+prices[i]+"元\t"+"获得"+honors[i]+"个赞");
                    }

                    int num1=0;
                    do{
    
    
                        System.out.println("请输入你要点赞的菜品");
                        num1=sc.nextInt();
                        if(num1<1 || num1>dishes.length){
    
    
                            System.out.println("输入有误,请重新输入:");
                            num1=sc.nextInt();
                        }else{
    
    
                            honors[num1-1]++;
                            System.out.println("点赞成功!");
                            break;
                        }
                    }while(num1<1 || num1>dishes.length);


                    break;
                default:
            }
            if(choose>0 && choose<6){
    
    
                System.out.println("请输入0返回:");
                choose=sc.nextInt();
            }else{
    
    
                break;
            }
        }while(choose==0);
        System.out.println("谢谢光临,欢迎下次再来");
    }
}

功能较多,请自行复制到IDEA中运行查看效果。

钦此。

猜你喜欢

转载自blog.csdn.net/weixin_50266519/article/details/112633067