吃货联盟点餐系统

java点餐系统总结

public static void main(String[] args) {
    /**
     * 存储六类订单信息
     */
    String[] names=new String[30];//保存订餐人姓名
    String[] dishMegs=new String[30];//保存所选信息,包括菜品以及分数
    int[] times=new int[30];//保存送餐时间
    String[] addresses=new String[30];//保存送餐地址
    int[] states=new int[30];//保存订单状态:0表示已经预定,1表示已经完成
    double [] sumPrices=new double[30];//保存订单总金额
    /**
     * 存储三种菜品名称
     */
    String[] disNames={"红烧带鱼","鱼香肉丝","小炒肉","时令蔬菜沙拉"};
    double[] prices=new double[]{38.0,20.0,35.0,10.0};//菜品数
    int[] praiseNums=new int[4];//点赞数
    /**
     * 初始化订单
     */
    //第一条订单
    names[0]="张晴";
    dishMegs[0]="红烧带鱼2份";
    times[0]=12;
    addresses[0]="天成路207号";
    sumPrices[0]=76.0;
    states[0]=1;
    //第二条订单
    names[1]="张晴";
    dishMegs[1]="鱼香肉丝2份";
    times[1]=18;
    addresses[1]="天成路207号";
    sumPrices[1]=45.0;
    states[1]=0;
    /**
     * 实现菜单切换 
     */
    System.out.println("欢迎使用'吃货联盟'订餐系统");
    Scanner input=new Scanner(System.in);
    int num=-1;//声明用户输入参数
    boolean isExit=false;//标志用户是否退出系统,true为退出系统
    do {
        System.out.println("*******************************\n"
                          +"1.我要订餐\n"
                          +"2.查看餐带\n"
                          +"3.签收订单\n"
                          +"4.删除订单\n"
                          +"5.我要点赞\n"
                          +"6.退出系统\n"
                          +"*******************************\n");
        System.out.println("请选择相应功能的功能编号:");
        int choose=input.nextInt();
        switch (choose) {
        case 1:
            //我要订餐
            System.out.println("*****我要订餐*****");
            boolean isAdd=false;
            //循环订单中的名字信息,是否有空位
            for(int j=0;j<names.length;j++){
                if(names[j]==null){//找到一个空位
                    isAdd=true;
                    System.out.println("请输入订餐人姓名:");
                    String name=input.next();
                    System.out.println("序号\t"+"菜名\t"+"单价\t"+"点赞数");
                    //循环输出菜品信息
                    for(int i=0;i<disNames.length;i++){
                        String price=prices[i]+"元";
                        String priaiseNum=(praiseNums[i])>0 ? praiseNums[i]+"赞" : "0";
                        System.out.println((i+1)+"\t"+disNames[i]+"\t"+price+"\t"+priaiseNum);
                    }
                    //用户点菜
                    System.out.println("请选择您要的菜品编号:");
                    int chooseDish=input.nextInt();
                    System.out.println("请输入您的份数:");
                    int number=input.nextInt();
                    String dishMeg=disNames[chooseDish-1]+" "+number+"份";
                    double sumPrice=prices[chooseDish-1]*number;
                    //餐费满50,免5元配送费
                    double deliCharge=(sumPrice>=50)?0:5;
                    System.out.println("请输入送餐时间(送餐时间是10点值20点之间的整点时间):");
                    int time=input.nextInt();
                    while(time<10||time>20){
                        System.out.println("您输入的时间有误,请输入10-20之间的整数!");
                        time=input.nextInt();
                    }
                    System.out.println("请输入送餐地址:");
                    String address=input.next();
                    //无需添加状态,默认是0,即已经预定状态
                    System.out.println("订餐成功!\n"
                            +"您订的是:"+dishMeg+"\n"
                            +"送餐时间是:"+time+"点"+"\n"
                            +"送餐地址是:"+address+"\n"
                            +"餐费:"+sumPrice+"元,送餐费:"+deliCharge+"元,总计:"+(sumPrice+deliCharge)+"元。");
                    //添加数据到订单数组中
                    names[j]=name;
                    dishMegs[j]=dishMeg;
                    times[j]=time;
                    addresses[j]=address;
                    sumPrices[j]=sumPrice+deliCharge;
                    break;
                }
            }
            if(!isAdd){
                System.out.println("对不起,您的订单数已满");
            }
            break;
        case 2:
            //查看餐带
            System.out.println("*****查看餐带*****");
            System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t送餐地址\t\t总金额\t订单状态");
            for(int i=0;i<names.length;i++){
                if(names[i]!=null){
                    //重新定义需要判断或加上字符串的变量
                    String state=(states[i]==0)?"已预订":"已完成";//三元运算符判断订单状态
                    String date=times[i]+"日";//送餐日期后加上日
                    String sumPrice=sumPrices[i]+"元";//金额后加上元
                    System.out.println((i+1)+"\t"+names[i]+"\t"+dishMegs[i]+"\t"+date+"\t"+addresses[i]+"\t"+sumPrice+"\t"+state);
                }
            }
            break;
        case 3:
            //签收订单
            System.out.println("*****签收订单*****");
            boolean isSignFind=true;
            System.out.println("请选择要签收的订单序号:");
            int signOrderId=input.nextInt();
            for(int i=0;i<names.length;i++){
                if(names[i]!=null&&states[i]==0&signOrderId==i+1){
                    states[i]=1;
                    System.out.println("您好,您的订单签收完成");
                    isSignFind=false;//赋反值,标记为订单已经签收,防止再次进入订单不存在
                }else if(names[i]!=null&&states[i]==1&&signOrderId==i+1){
                    System.out.println("您选择的订单已经完成,不能再次签收");
                    isSignFind=false;//赋反值,标记为订单已经签收,防止再次进入订单不存在
                }
            }
            if(isSignFind){
                System.out.println("您选择的订单不存在");
            }
            break;
        case 4:
            //删除订单
            System.out.println("*****删除订单*****");
            System.out.println("请输入要删除的订单序号");
            int deId=input.nextInt();
            boolean isDelFind=false;
            for(int i=0;i<names.length;i++){
                //状态值为1时,序号值为输入的数字-1:可以删除
                //状态值为0时,序号值为输入的数字-1:不可以删除
                if(names[i]!=null&&states[i]==1&&deId==i+1){
                    isDelFind=true;//标记已找到此订单
                    //执行删除操作,删除的位置后的元素依次前移
                    for(int j=deId-1;j<names.length-1;j++){
                        names[j]=names[j+1];
                        dishMegs[j]=names[j+1];
                        times[j]=times[j+1];
                        addresses[j]=addresses[j+1];
                        states[j]=states[j+1];
                        sumPrices[j]=sumPrices[j+1];
                    }
                    //清空最后一位
                    int endIndex=names.length-1;
                    names[endIndex]=null;
                    dishMegs[endIndex]=null;
                    times[endIndex]=0;
                    addresses[endIndex]=null;
                    states[endIndex]=0;
                    sumPrices[endIndex]=0;
                    System.out.println("删除订单成功!");
                    break;
                }else if(names[i]!=null&&states[i]==0&&deId==i+1){
                    System.out.println("您选择的订单未签收,不能删除");
                    isDelFind=true;
                    break;
                }

            }
            if(!isDelFind){
                System.out.println("您所选择的删除订单不存在");
            }
            break;
        case 5:
            //我要点赞
            System.out.println("*****我要点赞*****");
            System.out.println("序号\t"+"菜名\t"+"单价\t"+"点赞数");
            //循环输出菜品信息
            for(int i=0;i<disNames.length;i++){
                String price=prices[i]+"元";
                String priaiseNum=(praiseNums[i])>0 ? praiseNums[i]+"赞" : "0";
                System.out.println((i+1)+"\t"+disNames[i]+"\t"+price+"\t"+priaiseNum);
            }
            System.out.println("请选择您要点赞的菜品数:");
            int priaiseNum=input.nextInt();
            praiseNums[priaiseNum-1]++;
            System.out.println("点赞成功!");
            break;
        case 6:
            //退出系统
            isExit=true;
            break;  
        default:
            //退出系统
            isExit=true;
            break;
        }
        if(!isExit){
            System.out.println("输入0可返回:");
            num=input.nextInt();
        }else{
            break;
        }
    } while (num==0);
    System.out.println("谢谢您的光临");
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值