吃货联盟订餐系统Java代码

本文详细介绍了如何使用Java实现一个简单的吃货联盟订餐系统,包括数据初始化、菜单显示、订餐、查看餐袋、签收订单、删除订单和点赞菜品等功能。系统采用do-while循环和switch结构,确保用户可以方便地进行各种操作,并通过数组存储订单信息。
摘要由CSDN通过智能技术生成

思路

这道题的整体思路就是使用do-while循环把菜单一直可以显示最初页面,然后使用switch选择结构,使每种菜单序号所对应的功能得以实现。

七步骤

第一步:数据初始化

首先定义一些一维数组接受变量,然后根据题意设置两条初始化的信息;

 		int a;//选择菜单
        String []name=new String[3];//订餐人姓名
        String []dishmegs=new String[3];//订餐的信息
        int []time=new int[3];//送餐时间
        String []site=new String[3];//送餐地址
        int []states=new int[3];//订单状态
        Double []sumPrices=new Double[3];//订单总价
        String []dishName={"红烧带鱼","鱼香肉丝","时令鲜蔬"};//菜品名称
        double []unitPrice=new double[]{38.0,20.0,10.0};//菜品单价
        int []praise={0,0,0};//点赞数

        int l=0;
        //第一条订单信息
        name [l]="张晴";
        dishmegs[l]="红烧带鱼 2份";
        time[l]=12;
        site[l]="天成路207号";
        sumPrices[l]=76.0;
        states[l]=1;
        l++;
        //第二条订单信息
        name [l]="张晴";
        dishmegs[l]="红烧带鱼 2份";
        time[l]=18;
        site[l]="天成路207号";
        sumPrices[l]=45.0;
        states[l]=0;

第二步:实现菜单显示与切换

写出基础大概架构,在每个case情况下实现对应的功能。

        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("请选择:");
            a = input.nextInt();
            for (; a > 6 || a < 0; ) {
                System.out.print("输入有误,请重新输入:");
                a = input.nextInt();
            }
            switch (a) {
                case 1:
                    System.out.println("***我要订餐***");
                    System.out.print("输入0返回:");
                    a = input.nextInt();
                    for (; a != 0; ) {
                        System.out.print("输入有误,请重新输入:");
                        a = input.nextInt();
                    }
                    break;
                case 2:
                    System.out.println("***查看餐袋***");

                    System.out.print("输入0返回:");
                    a = input.nextInt();
                    for (; a != 0; ) {
                        System.out.print("输入有误,请重新输入:");
                        a = input.nextInt();
                    }
                    break;
                case 3:
                    System.out.println("***签收订单***");
                    System.out.print("输入0返回:");
                    a = input.nextInt();
                    for (; a != 0; ) {
                        System.out.print("输入有误,请重新输入:");
                        a = input.nextInt();
                    }
                    break;
                case 4:
                    System.out.print("输入0返回:");
                    a = input.nextInt();
                    for (; a != 0; ) {
                        System.out.print("输入有误,请重新输入:");
                        a = input.nextInt();
                    }
                    break;
                case 5:
                    System.out.println("***我要点赞***");
                    System.out.print("输入0返回:");
                    a = input.nextInt();
                    for (; a != 0; ) {
                        System.out.print("输入有误,请重新输入:");
                        a = input.nextInt();
                    }
                    break;
                case 6:
                    System.out.println("谢谢使用,欢迎下次光临!");
                    break;
            }
        }while (a == 0) ;

第三步:实现订餐功能

首先定义一个布尔值来判断是否还有空的餐袋,然后用if选择结构找出null值来存放订餐的信息。这一步的难点是再定义新的变量来接收键盘输入的值。
注意:在case1中编写程序;

 boolean isadd=true;
 for (int i = 0; i <name.length ; i++) {
  if (name[i]==null){
 isadd=false;
System.out.print("请输入订餐人姓名:");
 name[i]=input.next();
 System.out.println("序号\t\t菜品\t\t\t单价\t\t点赞数");
for (int j = 0; j <name.length ; j++) {
System.out.println((j+1)+"\t\t"+dishName[j]+"\t\t"+unitPrice[j]+"元\t"+praise[j]);
                            }
System.out.print("请选择您要点的菜品编号:");
int choose=input.nextInt();
 for (; choose>3||choose<1 ; ) {
System.out.print("输入有误,请重新输入:");
 choose=input.nextInt();
                            }
 System.out.print("请选择您需要的份数:");
int number=input.nextInt();
for (; number<1 ; ) {
System.out.print("输入有误,请重新输入:");
 number=input.nextInt();
                            }
 dishmegs[i]=dishName[choose-1]+" "+number+"份";
sumPrices[i]=unitPrice[choose-1]*number;
int songcan=0;
 double sum=sumPrices[i];
 if (sumPrices[i]<50){
 songcan=5;
 sum=sumPrices[i]+songcan;
                            }
 System.out.print("请输入送餐时间,(送餐时间是10点到20点整点送餐):");
time[i]=input.nextInt();
 for (; time[i] <10||time[i]>20 ; ) {
System.out.print("输入有误,请输入10~20之间的整数:");
 time[i]=input.nextInt();
                            }
System.out.print("请输入送餐地址:"); site[i]=input.next();
System.out.println("订餐成功!");
System.out.println("您订的是:"+dishmegs[i]);
System.out.println("送餐时间:"+time[i]+"点");
System.out.println("餐费:"+sumPrices[i]+"元,送餐费:"+songcan+"元,总计:"+sum+"元");
                        }
                    }
if (isadd){
    System.out.println("对不起,您的餐袋已满!");
                    }

第四步:实现查看餐袋功能

这一步要求输出的不能有null值,所以首先判断name[i]不等于null;其次利用if-else转换数值表达的订餐状态。

注意:在case2中编写程序;

System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t送餐地址\t\t总金额\t订单状态");
                    for (int i = 0; i <name.length ; i++) {
                        if (name[i]!=null){
                            String state;
                            if (states[i]==0){
                                 state="已预订";
                            }else {
                                state="已完成";
                            }
                            String date=time[i]+"点";
                            String sum=sumPrices[i]+"元";
                            System.out.println((i+1)+"\t"+name[i]+"\t\t"+dishmegs[i]+"\t"+date+"\t"+site[i]+"\t"+sum+"\t"+state);
                        }
                    }

第五步:实现订餐签收功能

首先这一步和第一步一样定义新变量接收键盘输入,然后就是判断订单签收的条件:

  1. 订单状态为’已完成’;如果订单状态是已完成,进入else-if 提示用户不能签收。
  2. 不是null值;如果是null值就是订单不存在。
  3. 要签收的订单序号等于目标数组元素的下标加一;通过这个式子找到要删除的数组元素。

注意:在case3中编写程序;

boolean isSignFind=true;
                    System.out.print("请选择要签收的订单序号:");
                    int sign=input.nextInt();
                    for (int i = 0; i <name.length ; i++) {
                        if (name[i]!=null&&states[i]==0&&sign==i+1){
                            states[i]=1;
                            System.out.println("订单签收成功!");
                            isSignFind=false;
                        }else if (name[i]!=null&&states[i]==1&&sign==i+1){
    System.out.println("您选择的订单已完成签收,不能再次签收!");
                            isSignFind=false;
                        }
                    }
                    if (isSignFind){
                        System.out.println("您选择的订单不存在!");
                    }

第六步:实现删除订餐功能

和上一步一样先确定数组下标,然后让数组中的每一个元素向前移动一位方便实现查看餐袋的功能;

注意:在case4中编写程序;

boolean isDe=true;
                    System.out.print("请输入要删除的订单序号:");
                    int num=input.nextInt();
                    for (int i = 0; i <name.length ; i++) {
                        if (name[i]!=null&&states[i]==1&&num==i+1){
                            isDe=false;
                            for (int j = num; j <name.length ; j++) {
                                name[j-1]=name[j];
                                dishmegs[j-1]=dishmegs[j];
                                time[j-1]=time[j];
                                site[j-1]=site[j];
                                states[j-1]=states[j];
                                sumPrices[j-1]=sumPrices[j];
                            }
                            name[name.length-1]=null;
                            dishmegs[name.length-1]=null;
                            time[name.length-1]=0;
                            site[name.length-1]=null;
                            sumPrices[name.length-1]=0.0;
                            states[name.length-1]=0;
                            System.out.println("删除订单成功!");
                            break;
                        }else if (name[i]!=null&&states[i]==0 &&num==i+1){
                 System.out.println("您选择的订单未签收,不能删除!");
                            isDe=false;
                            break;
                        }
                    }
                    if (isDe){
                        System.out.println("您删除的订单不存在!");
                    }

第七步:实现点赞菜品功能

这一步是最容易实现的,只需要定义个变量接受键盘输入,然后赋值给praise下标就可以了。

注意:在case5中编写程序;

System.out.println("序号\t\t菜品\t\t\t单价\t\t点赞数");
                    for (int j = 0; j <name.length ; j++) {
                        System.out.println((j+1)+"\t\t"+dishName[j]+"\t\t"+unitPrice[j]+"元\t"+praise[j]);
                    }
                    System.out.print("请输入要点赞的菜品编号:");
                    int numm1=input.nextInt();
                    praise[numm1-1]++;

完整代码程序

public class eat {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int a;//选择菜单
        String []name=new String[3];//订餐人姓名
        String []dishmegs=new String[3];//订餐的信息
        int []time=new int[3];//送餐时间
        String []site=new String[3];//送餐地址
        int []states=new int[3];//订单状态
        Double []sumPrices=new Double[3];//订单总价
        String []dishName={"红烧带鱼","鱼香肉丝","时令鲜蔬"};//菜品名称
        double []unitPrice=new double[]{38.0,20.0,10.0};//菜品单价
        int []praise={0,0,0};//点赞数

        int l=0;
        //第一条订单信息
        name [l]="张晴";
        dishmegs[l]="红烧带鱼 2份";
        time[l]=12;
        site[l]="天成路207号";
        sumPrices[l]=76.0;
        states[l]=1;
        l++;
        //第二条订单信息
        name [l]="张晴";
        dishmegs[l]="红烧带鱼 2份";
        time[l]=18;
        site[l]="天成路207号";
        sumPrices[l]=45.0;
        states[l]=0;

        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("请选择:");
            a=input.nextInt();
            for (; a>6||a<0 ; ) {
                System.out.print("输入有误,请重新输入:");
                a=input.nextInt();
            }
            switch (a) {
                case 1:
                    System.out.println("***我要订餐***");
                    boolean isadd=true;
                    for (int i = 0; i <name.length ; i++) {
                        if (name[i]==null){
                            isadd=false;
                            System.out.print("请输入订餐人姓名:");
                            name[i]=input.next();
                            System.out.println("序号\t\t菜品\t\t\t单价\t\t点赞数");
                            for (int j = 0; j <name.length ; j++) {
                                System.out.println((j+1)+"\t\t"+dishName[j]+"\t\t"+unitPrice[j]+"元\t"+praise[j]);
                            }
                            System.out.print("请选择您要点的菜品编号:");
                            int choose=input.nextInt();
                            for (; choose>3||choose<1 ; ) {
                                System.out.print("输入有误,请重新输入:");
                                choose=input.nextInt();
                            }
                            System.out.print("请选择您需要的份数:");
                            int number=input.nextInt();
                            for (; number<1 ; ) {
                                System.out.print("输入有误,请重新输入:");
                                number=input.nextInt();
                            }
                            dishmegs[i]=dishName[choose-1]+" "+number+"份";
                            sumPrices[i]=unitPrice[choose-1]*number;
                            int songcan=0;
                            double sum=sumPrices[i];
                            if (sumPrices[i]<50){
                                songcan=5;
                                sum=sumPrices[i]+songcan;
                            }
                            System.out.print("请输入送餐时间,(送餐时间是10点到20点整点送餐):");
                            time[i]=input.nextInt();
                            for (; time[i] <10||time[i]>20 ; ) {
                                System.out.print("输入有误,请输入10~20之间的整数:");
                                time[i]=input.nextInt();
                            }
                            System.out.print("请输入送餐地址:");
                            site[i]=input.next();
                            System.out.println("订餐成功!");
                            System.out.println("您订的是:"+dishmegs[i]);
                            System.out.println("送餐时间:"+time[i]+"点");
                            System.out.println("餐费:"+sumPrices[i]+"元,送餐费:"+songcan+"元,总计:"+sum+"元");
                        }
                    }
                    if (isadd){
                        System.out.println("对不起,您的餐袋已满!");
                    }
                    System.out.print("输入0返回:");
                    a=input.nextInt();
                    for (; a!=0 ; ) {
                        System.out.print("输入有误,请重新输入:");
                        a=input.nextInt();
                    }
                    break;
                case 2:
                    System.out.println("***查看餐袋***");
                    System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t送餐地址\t\t总金额\t订单状态");
                    for (int i = 0; i <name.length ; i++) {
                        if (name[i]!=null){
                            String state;
                            if (states[i]==0){
                                 state="已预订";
                            }else {
                                state="已完成";
                            }
                            String date=time[i]+"点";
                            String sum=sumPrices[i]+"元";
                            System.out.println((i+1)+"\t"+name[i]+"\t\t"+dishmegs[i]+"\t"+date+"\t"+site[i]+"\t"+sum+"\t"+state);
                        }
                    }
                    System.out.print("输入0返回:");
                    a=input.nextInt();
                    for (; a!=0 ; ) {
                        System.out.print("输入有误,请重新输入:");
                        a=input.nextInt();
                    }
                    break;
                case 3:
                    System.out.println("***签收订单***");
                    boolean isSignFind=true;
                    System.out.print("请选择要签收的订单序号:");
                    int sign=input.nextInt();
                    for (int i = 0; i <name.length ; i++) {
                        if (name[i]!=null&&states[i]==0&&sign==i+1){
                            states[i]=1;
                            System.out.println("订单签收成功!");
                            isSignFind=false;
                        }else if (name[i]!=null&&states[i]==1&&sign==i+1){
                            System.out.println("您选择的订单已完成签收,不能再次签收!");
                            isSignFind=false;
                        }
                    }
                    if (isSignFind){
                        System.out.println("您选择的订单不存在!");
                    }
                    System.out.print("输入0返回:");
                    a=input.nextInt();
                    for (; a!=0 ; ) {
                        System.out.print("输入有误,请重新输入:");
                        a=input.nextInt();
                    }
                    break;
                case 4:
                    System.out.println("***删除订单***");
                    boolean isDe=true;
                    System.out.print("请输入要删除的订单序号:");
                    int num=input.nextInt();
                    for (int i = 0; i <name.length ; i++) {
                        if (name[i]!=null&&states[i]==1&&num==i+1){
                            isDe=false;
                            for (int j = num; j <name.length ; j++) {
                                name[j-1]=name[j];
                                dishmegs[j-1]=dishmegs[j];
                                time[j-1]=time[j];
                                site[j-1]=site[j];
                                states[j-1]=states[j];
                                sumPrices[j-1]=sumPrices[j];
                            }
                            name[name.length-1]=null;
                            dishmegs[name.length-1]=null;
                            time[name.length-1]=0;
                            site[name.length-1]=null;
                            sumPrices[name.length-1]=0.0;
                            states[name.length-1]=0;
                            System.out.println("删除订单成功!");
                            break;
                        }else if (name[i]!=null&&states[i]==0 &&num==i+1){
                            System.out.println("您选择的订单未签收,不能删除!");
                            isDe=false;
                            break;
                        }
                    }
                    if (isDe){
                        System.out.println("您删除的订单不存在!");
                    }
                    System.out.print("输入0返回:");
                    a=input.nextInt();
                    for (; a!=0 ; ) {
                        System.out.print("输入有误,请重新输入:");
                        a=input.nextInt();
                    }
                    break;
                case 5:
                    System.out.println("***我要点赞***");
                    System.out.println("序号\t\t菜品\t\t\t单价\t\t点赞数");
                    for (int j = 0; j <name.length ; j++) {
                        System.out.println((j+1)+"\t\t"+dishName[j]+"\t\t"+unitPrice[j]+"元\t"+praise[j]);
                    }
                    System.out.print("请输入要点赞的菜品编号:");
                    int numm1=input.nextInt();
                    praise[numm1-1]++;
                    System.out.print("输入0返回:");
                    a=input.nextInt();
                    for (; a!=0 ; ) {
                        System.out.print("输入有误,请重新输入:");
                        a=input.nextInt();
                    }
                    break;
                case 6:
                    System.out.println("谢谢使用,欢迎下次光临!");
                    break;
            }
           }while (a==0);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值