Java实现一个简易的订餐系统(控制台输出)

  • Post author:
  • Post category:java


要求:

/**
 * 一、我要订餐
 *        完成用户订餐,每条订单包含如下信息:
 *    订餐人姓名:要求用户输入
 *    选择菜品及份数:显示三个菜单序号、名称、单价、点赞数,提示用户输入要选择的菜品序号及份数
 *    送餐时间:要求当天10到20点间整点送餐,要求用户输入10~20的整数,输入错误,重复输入。
 *    送餐地址:要求用户输入
 *    状态:两种状态:0:已预定(默认状态) 1、已完成(订单已签收)
 *    总金额:
 *     总金额 = 菜品单价*份数-送餐费
 *    (送餐费:当单笔订单金额达到50元时,免送餐费,否则,需交纳6元送餐费)
 *   订餐成功后,显示订单信息。
 * 二、  查看订单
 *         遍历显示已有定单
 *         内容包括:序号、订餐人姓名、订餐信息(菜品名和份数)、送餐时间、送餐地址、  状态(已预定或已完成)、总金额
 * 三、  签收定单
 *         将定单中状态改为已完成
 * 四、删除定单
 *     用户输入订单序号,如该序号定单为已完成状态,可以删除,其它情况给出相应提示信息
 * 五、我要点赞
 *         显示菜品序号、菜品名、单价、点赞数,提示用户输入要点赞的菜品序号完成对菜品的点赞。
 * 六、退出系统
 * 退出整个系统,显示“谢谢使用,欢迎下次光临”。
 * 七、菜单切换
 * 用户可根据显示的主菜单,输入功能编号执行相应的功能,当输入1~5时,执行相应功能。
 */
package cn.ybk;

import java.util.Scanner;

/**
 * 简易的订餐系统
 */

public class Project2 {
    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        //先声明数组用来存放信息
        String[] dincanren = new String[10];//该数组用来存放订餐人
        String[] caipin = new String[10];//菜名
        int[] fenshu = new int[10];//数量
        int[] songcanshijian = new int[10];//送餐时间
        String[] addrs = new String[10];//地址
        int [] state = new int[10];//0代表:预定     1:代表:签收
        double[] tmoney = new double[10];//总金额
        //定义菜单
        String[] caiming = new String[]{"时蔬拼盘","酱香牛肉","红烧狮子头"};
        double[] danjia = new double[]{12.0,30.7,34.2};
        int[] dianzan = new int[10];

        //用户输入控制是否循环
        int usernum=-1;
        boolean canche = false;//是否能够订餐
        boolean shifouqianshou = false;//是否签收
        boolean shifoushanchu = false;//是否删除订单





        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 choose1 = input.nextInt();
            //switch选择结构
             switch (choose1){
//进入订餐界面
                case 1:
                    //进入订餐界面
                    System.out.println("********1、我要订餐*********");
                    System.out.println("欢迎进入订餐系统");
                    System.out.println("序号\t"+"菜名\t\t"+"单价\t"+"点赞数\t");
                    //
                    for(int j=0;j<caiming.length;j++){
                        if (dincanren[j] == null){
                            canche = true;
                            for (int i = 0; i < caiming.length; i++) {
                                System.out.print((i+1)+"\t\t");
                                System.out.print(caiming[i]+"\t");
                                System.out.print(danjia[i]+"\t");
                                System.out.println(dianzan[i]);

                            }
                            System.out.println("输入您想要订购的菜品");
                            int choose2 = input.nextInt();
                            while(choose2<1 || choose2>caiming.length){
                                System.out.println("本店还未退出该菜品,请重新选择");
                                choose2 = input.nextInt();
                            }
                            System.out.println("输入该菜品的数量");
                            int choose3 = input.nextInt();
                            //声明变量记录用户选择菜品编号等信息1
                            String caimin = caiming[choose2-1];
                            String shuliang = choose3+"份";
                            //总金额
                            double zongjia = danjia[choose2-1]*choose3;

                            //计算价格是否大于40
                            double songcanfei = (zongjia>50)?0:5;
                            System.out.println("请输入订餐人姓名");
                            String name = input.next();
                            System.out.println("请输入整点送餐时间(店铺营业时间为10点-20点)");
                            int time = input.nextInt();
                            //循环控制来保证用户输入的数在10-20之间
                            while(time<10 || time>20){//在判断Boolean值的时候,变量必须置于数字之前

                                System.out.println("时间输入有误请重新输入");
                                time = input.nextInt();
                            }
                            //用户输入地址
                            System.out.println("请输入送餐地址");
                            String dizhi = input.next();
                            //地址输入完之和,订单信息基本就输入完了
                    /*
                        打印一遍订单信息
                     */
                            System.out.println("订餐成功!");
                            System.out.println("*****************************");
                            System.out.println("顾客姓名:\t"+name);
                            System.out.println("菜品:\t\t"+caimin+"\t"+shuliang);
                            System.out.println("金额:\t\t"+(zongjia+songcanfei)+"元");
                            System.out.println("地址:\t\t"+dizhi);
                            System.out.println("送餐时间:\t"+time);
                            System.out.println("*****************************");


                            //将用户信息存放进数组中
                            /*
                                这里的j是用来记录第一个为空的数据元素下标
                             */
                            dincanren[j] = name;
                            caipin[j] = caimin;
                            fenshu[j] = choose3;
                            songcanshijian[j] = time;
                            addrs[j] = dizhi;
                            tmoney[j] = zongjia;

                            break;

                        }

                    }
                    if(canche = false){
                        System.out.println("订单已满返回上一层");
                        usernum = -1;
                    }



                    break;
                case 2:
                    for(int i= 0;i<dincanren.length;i++){
                        if(dincanren[i]!=null){
                            System.out.print(dincanren[i] +"\t");
                            System.out.print(caipin[i]+"\t");
                            System.out.print(fenshu[i]+"\t");
                            System.out.print(songcanshijian[i]+"\t");
                            System.out.print(addrs[i]+"\t\t");
                            System.out.print(tmoney[i]+"\t");
                            System.out.println(state[i]);
                        }


                    }
                    //如果购物车中没有订单时输出
                    if(dincanren[0]==null){
                        System.out.println("还未存在任何订单,请下单");
                    }
                    break;
                case 3:
                    System.out.println("***签收定单***");
                    for(int i= 0;i<dincanren.length;i++){
                        if(dincanren[i]!=null){
                            System.out.print(dincanren[i] +"\t");
                            System.out.print(caipin[i]+"\t");
                            System.out.print(fenshu[i]+"\t");
                            System.out.print(songcanshijian[i]+"\t");
                            System.out.print(addrs[i]+"\t\t");
                            System.out.println(tmoney[i]+"\t");
                            System.out.println(state[i]);
                        }

                    }
                    System.out.print("请选择要签收的订单序号:");
                    int qianshoudingdan = input.nextInt();
                    for(int i=0;i<dincanren.length;i++){
//状态为已预定,序号为用户输入的订单序号
                        if(dincanren[i]!=null && state[i]==0 && qianshoudingdan==i+1){
                            state[i] = 1; //将状态值置为已完成
                            System.out.println("订单签收成功!");
                            shifouqianshou = true;
                            break;
//状态为已完成,序号为用户输入的订单序号
                        }else if(dincanren[i]!=null && state[i]==1 && qianshoudingdan==i+1){
                            System.out.println("您选择的订单已完成签收,不能再次签收!");
                            shifouqianshou = true;
                            break;
                        }else if(i+1<qianshoudingdan){
                            System.out.println("您选择的订单不存在!");
                            break;
                        }
                    }
//未找到的订单序号时不能签收
                    if(shifouqianshou == false){
                        System.out.println("对不起,此订单不存在!");
                    }



                    break;
                case 4:
                    //删除订单

                    System.out.println("***删除订单***");
                    //打印订单
                    for(int i= 0;i<dincanren.length;i++){
                        if(dincanren[i]!=null){
                            System.out.print(dincanren[i] +"\t");
                            System.out.print(caipin[i]+"\t");
                            System.out.print(fenshu[i]+"\t");
                            System.out.print(songcanshijian[i]+"\t");
                            System.out.print(addrs[i]+"\t\t");
                            System.out.print(tmoney[i]+"\t");
                            System.out.println(state[i]);
                        }

                    }
                    System.out.print("请输入要删除的订单序号:");
                    int shanchu = input.nextInt();
                    for(int i=0;i<dincanren.length;i++){
//状态值为已完成  序号值为用户输入的序号
                        if(dincanren[i]!=null && state[i]==1 && shanchu==i+1){
                            shifoushanchu = true;
//执行删除操作:删除位置后的元素依次前移
                            for(int j=shanchu-1;j<dincanren.length-1;j++){
                                dincanren[j] = dincanren[j+1];
                                caipin[j] = caipin[j+1];
                                fenshu[j] = fenshu[j+1];
                                songcanshijian[j] = songcanshijian[j+1];
                                addrs[j] = addrs[j+1];
                                state[j] = state[j+1];
                            }
//最后一位清空
                            dincanren[dincanren.length-1] = null;
                            caipin[dincanren.length-1] = null;
                            fenshu[dincanren.length-1] = 0;
                            songcanshijian[dincanren.length-1] = 0;
                            addrs[dincanren.length-1] = null;
                            state[dincanren.length-1] = 0;

                            System.out.println("删除订单成功!");
                            break;
//状态值为已预定  序号值为用户输入的序号
                        }else if(dincanren[i]!=null && state[i]==0 && shanchu==i+1){
                            System.out.println("您选择的订单未签收,不能删除!");
                            shifoushanchu = true;
                            break;
                        }
                    }
//未找到序号的订单时不能删除
                    if(shifoushanchu == false){
                        System.out.println("您要删除的订单不存在!");
                    }
                    break;
                 case 5:
                     //我要点赞
                     System.out.println("**********我要点赞*********");
                     //打印菜单供用户选择
                     System.out.println("序号\t"+"菜名\t\t"+"单价\t"+"点赞数\t");
                     for (int i = 0; i < caiming.length; i++) {
                         System.out.print((i+1)+"\t\t");
                         System.out.print(caiming[i]+"\t");
                         System.out.print(danjia[i]+"\t");
                         System.out.println(dianzan[i]);

                     }
                     System.out.println("请选择要点赞的菜品");
                     int choose3 = input.nextInt();
                     while(choose3<1 || choose3>caipin.length){
                         System.out.println("抱歉本店还未推出改菜品,无法点赞,重新选择");
                         choose3 = input.nextInt();
                     }
                     dianzan[choose3-1]++;
                     System.out.println("点赞成功");
                     System.out.println("序号\t"+"菜名\t\t"+"单价\t"+"点赞数\t");
                     for (int i = 0; i < caiming.length; i++) {
                         System.out.print((i+1)+"\t\t");
                         System.out.print(caiming[i]+"\t");
                         System.out.print(danjia[i]+"\t");
                         System.out.println(dianzan[i]);

                     }


                     break;
                 case 6:
                     //退出

                     break;
                 default:
                     System.out.println("输入有误");
                     break;


            }
            System.out.println("是否退出(n/y)");
            String exitchoose = input.next();
            if (!"n".equals(exitchoose)){
                usernum = -1;
            }else {
                usernum = 0;
            }

        }while(usernum ==0);

    }
}

菜单可以再在数组中去添加;

订单可以在前面的数组中先定义两组;(我这里没有添加)

接下来是系统运行截图:

1.菜单选择错误示例

2.订餐正确示例:

3.订餐错误示例

4.查看订单:

5.签收订单:(签收已近签收的订单显示无法签收)

6.删除订单示例:(这里只能删除已经完成的订单,也就是已经签收的订单)

7.点赞示例:

8.退出示例:



版权声明:本文为kk1213_原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。