2018.1.8 任务

作业链接:链接:https://pan.baidu.com/s/1jV6oGRtC3Z1_hyo3ZMEkgQ 

提取码:xhyh

 package com.work;

import java.util.Scanner;
/**
 * 吃货联盟订餐系统
 * @author 宇
 * 2018.1.8
 */
public class Test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("欢迎使用吃货联盟订餐系统");
        String choose=null;
        String names[]=new String[6];//订餐人
        String dishmeges[]=new String[6];//餐品信息
        String address[]=new String[6];//送餐地址
        int states[]=new int[6];//订餐状态
        double sumPrices[]=new double[6];//总金额
        int times[]=new int[6];//送餐时间
        String dishName[]= {"红烧带鱼","鱼香肉丝","时令鲜蔬","宫保鸡丁","肉末茄子"};//
        double prices[]= {38.0,20.0,10.0,25.0,19.9};//单价
        names[0]="张晴"; 
        dishmeges[0]="红烧带鱼 2份";
        address[0]="天秤路115号";
        states[0]=1;
        sumPrices[0]=76.0;
        times[0]=12;
        names[1]="张晴"; 
        dishmeges[1]="鱼香肉丝 2份";
        address[1]="天秤路115号";
        states[1]=0;
        sumPrices[1]=45.0;
        times[1]=18;
        do {
            System.out.println("**********************");
            System.out.println("1我要订餐\n2查看餐袋\n3签收订单\n4删除订单\n5我要点赞\n6退出系统");
            System.out.println("**********************");
            System.out.print("请选择:");
            choose=sc.next();
            switch(choose) {
            case "1":
                System.out.println("***我要订餐***");
                for(int i=0;i<names.length;i++) {
                    if(names[i]==null) {
                        System.out.print("请输入您的姓名:");
                        String name=sc.next();
                        System.out.println("序号"+"\t"+"菜名"+"\t"+"单价");
                        for(int j=0;j<dishName.length;j++) {
                            System.out.println(j+1+"\t"+dishName[j]+"\t"+prices[j]);
                        }
                        System.out.print("请选择您要点的菜品编号:");
                        int chooseDish=sc.nextInt();
                        System.out.print("请输入您要选择的份数:");
                        int copies=sc.nextInt();
                        String dishMeg=dishName[chooseDish-1]+" "+copies+"份";
                        double sumPrice=prices[chooseDish-1]*copies;
                        double trancost=(sumPrice>=50)?5:0;
                        System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐):");
                        int time= sc.nextInt();
                        while(time<10||time>20) {
                            System.out.print("您的输入有误!请输入10到20之间的整数:");
                            time=sc.nextInt();
                        }
                        System.out.print("请输入送餐地址:");
                        String addres=sc.next();
                        System.out.println("订餐成功!");
                        System.out.println("您订的是"+dishMeg);
                        System.out.println("送餐时间"+time+"点");
                        System.out.println("餐费:"+sumPrice+"元   "+"送餐费:"+trancost+"元   "
                                + "总计:"+(sumPrice+trancost)+"元");
                        names[i]=name;
                        dishmeges[i]=dishMeg;
                        address[i]=addres;
                        sumPrices[i]=sumPrice+trancost;
                        times[i]=time;
                        break;
                    }
                }
                break;
            case "2":
                System.out.println("***查看餐袋***");
                System.out.println("序号\t订餐人\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)?"已预订":"已完成";
                        System.out.println(i+1+"\t"+names[i]+"\t"+dishmeges[i]+"\t"+
                                times[i]+"点\t"+address[i]+"\t\t"+sumPrices[i]+"元\t"+state);
                    }
                }
                break;
            case "3":
                System.out.println("***签收订单***");
                System.out.print("请选择要签收的订单序号:");
                int order=sc.nextInt();
                for(int i=0;i<names.length;i++) {
                    if(names[i]!=null&&states[i]==0&&order==i+1) {
                        states[i]=1;
                        System.out.println("订单签收成功!");
                    }else if(names[i]!=null&&states[i]==1&&order==i+1) {
                        System.out.println("您选择的订单已经完成签收,不能再次签收!");
                    }
                }
                break;
            case "4":
                System.out.println("***删除订单***");
                System.out.print("请输入要删除的订单序号:");
                int deleteOrder=sc.nextInt();
                for(int i=0;i<names.length;i++) {
                    if(names[i]!=null && states[i]==1 && deleteOrder==i+1){    
                        for(int j=deleteOrder-1;j<names.length-1;j++){
                            names[j] = names[j+1];
                            dishmeges[j] = dishmeges[j+1];
                            times[j] = times[j+1];
                            address[j] = address[j+1];
                            states[j] = states[j+1];
                }
                        names[names.length-1] = null;
                        dishmeges[names.length-1] = null;
                        times[names.length-1] = 0;
                        address[names.length-1] = null;
                        states[names.length-1] = 0;
                        
                        System.out.println("删除订单成功!");
                        break;
                    }else if(names[i]!=null && states[i]==0 && deleteOrder==i+1){
                        System.out.println("您选择的订单未签收,不能删除!");
                        break;
                    }
                }        
                break;
            case "5":
                break;
            case "6":
                System.out.println("***退出系统***");
                System.out.println("欢迎下次光临!");
                break;
            default :
                System.out.println("您输入有误,请重新输入:");
                break;
            }
        }while(!"6".equals(choose));
    }
}

 

package com.work;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("欢迎使用“吃货联盟订餐系统”");
        String choose = "";//菜单选择的变量
        //初始化数据
        int length = 5;
        String[] names = new String[length];//订餐人
        String[] descs = new String[length];//订单餐品信息
        int[] dates =new int[length];//送餐日期
        String[] addresses = new String[length];//送餐地址
        double[] moneys = new double[length];//总价
        boolean[] status = new boolean[length];//订餐状态:true:完成;false未完成
        int[] nums = new int[length];//订餐数量
        double[] prices = new double[10];//单价
        String[] foods = new String[10];//菜品信息
        int[] zan = new int[10];//点赞数量
        //初始化值
        zan[0] = 12;zan[2] = 5;zan[4]=25;
        foods[0] = "黄焖鸡";foods[1] = "东坡肉";foods[2] = "蛋炒饭";foods[3] = "北京烤鸭";foods[4] = "大肘子";
        prices[0] = 16.0;prices[1] = 15.5;prices[2] = 8.0;prices[3] = 49.9;prices[4] = 18.8;

        names[0] = "陈明";
        descs[0] = "黄焖鸡";
        nums[0] = 2;
        moneys[0] = 32.0;
        dates[0] = 7;
        addresses[0] = "北大青鸟";
        status[0] = true;
        names[1] = "刘铭辉";
        descs[1] = "东坡肉";
        nums[1] = 3;
        moneys[1] = 46.5;
        dates[1] = 8;
        addresses[1] = "机房8";
        status[1] = false;
        //键盘输入的值为6退出循环,否则一直执行循环(没有输入case指定的值则重新输入,继续完成操作。)
        do {
            System.out.println("******************************");
            System.out.println("1、我要订餐  2、查看餐袋  3、签收订单  4、删除订单  5、我要点赞  6、退出系统");
            System.out.print("请选择:");
            choose = sc.next();
            switch (choose) {
            case "1":
                System.out.println("****我要订餐****");
                int index = -1;//定义要添加的位置下标
                for(int i = 0 ;i<length;i++) {
                    if(names[i]==null) {
                        index = i;//找到下标
                        break;
                    }
                }
                if(index<0) {   //下标存在开始订餐
                    System.out.println("当前餐袋已满!!!");
                }else {
                    System.out.print("请输入订餐人姓名:");
                    names[index] = sc.next();//输入的姓名等于要添加的位置下
                    System.out.println("序号\t菜名\t单价\t点赞数量");
                    int max = foods.length;
                    for(int i = 0;i<foods.length;i++) {//遍历菜单                        
                        if(foods[i]==null) {//找到菜单下有值的最大下标
                            max = i;
                            break;
                        }
                        System.out.println((i+1)+"\t"+foods[i]+"\t"+prices[i]+"元\t"+zan[i]+"次");
                    }
                    System.out.print("请选择您要点的菜品编号:");
                    int id = 0;//判断输入值存不存在在菜单内,不存在菜品编号时提示重新输入,直到存在
                    do {
                        id = sc.nextInt();
                        if(id<1||id>max) {
                            System.out.print("不存在此编号菜品,请重新输入:");
                        }
                    } while (id<1||id>max);
                    descs[index] = foods[id-1];//foods[]下标从0开始所以减1
                    System.out.print("请选择您需要的份数:");
                    int num = sc.nextInt();
                    nums[index] = num;//添加的位置的值等于输入的值
                    System.out.print("请输入送餐时间(送餐时间是10点至20点间整点送餐)");
                    int date = 0;//判断输入送餐时间的值
                    do {
                        date = sc.nextInt();
                        if(date<10||date>20) {
                            System.out.print("您的输入有误,请输入10~20间的整数!:");
                        }
                    } while (date<10||date>20);
                    dates[index] = date;//添加的位置的值等于输入的值
                    System.out.print("请输入送餐地址:");
                    addresses[index] = sc.next();//添加的位置的值等于输入的值
                    double money = prices[id-1]*num;//餐费
                    System.out.println("订餐成功:");
                    System.out.println("您订的是:"+foods[id-1]+" "+num+"份");
                    System.out.println("送餐时间:"+date+"点");
                    double song = 0.0;
                    if(money<20) {//满20免送餐费
                        song = 3.0;
                    }
                    moneys[index] = money+song;//总价=餐价+送餐费, 添加的位置的值等于输入的值
                    System.out.println("餐费:"+money+"。送餐费:"+song+"元,总计:"+(money+song)+"元");
                }

                break;
            case "2":
                System.out.println("****查看餐袋****");
                System.out.println("序号\t订餐人\t餐品信息\t\t送餐日期\t\t送餐地址\t\t总金额\t订单状态");
                for(int i = 0;i<length;i++) { //遍历信息,同时数组为空的值不遍历
                    if(names[i]==null) {    
                        break;
                    }
                    String canpin = descs[i]+" "+nums[i]+"份";//菜品信息包括订单餐品信息和订单数量
                    String zhuangtai = status[i]?"已完成":"已预订";//判断状态
                    System.out.println((i+1)+"\t"+names[i]+"\t"+canpin+"\t"+dates[i]+"点\t\t"+addresses[i]+"\t\t"+moneys[i]+"元\t"+zhuangtai);
                }
                break;
            case "3":
                System.out.println("****签收订单****");
                System.out.print("请输入要签收的订单编号:");
                boolean isTrue = false;
                int id = -1;
                do {
                    id = sc.nextInt();
                    if(id<1||id>descs.length) {//判断订单是否存在
                        isTrue = true;
                    }else {
                        if(descs[id-1]==null) {//判断订单是否存在且有值
                            isTrue = true;
                        }else {
                            isTrue = false;
                        }
                    }

                    if(isTrue) {//单isTrue为true时提示 并继续循环重新输入
                        System.out.print("不存在此编号的订单信息,请重新输入:");
                    }
                } while (isTrue);//单isTrue为false时退出循环
                status[id-1] = true;//状态改为已完成
                System.out.println("签收完成");
                break;
            case "4":
                System.out.println("****删除订单****");
                System.out.print("请输入要删除的订单编号:");
                int big = length;
                for(int i = 0;i<length;i++) {//找到没有值那行的下标
                    if(descs[i]==null) {
                        big = i;
                        break;
                    }
                }

                int no = 0;
                do {
                    no = sc.nextInt();
                    if(no<1||no>big) {//判断输入编号是否存在,存在退出循环,不存在重新输入
                        System.out.print("不存在此编号菜品,请重新输入:");
                    }
                } while (no<1||no>big);

                if(status[no-1]==false) {//对于没有签收的订单不能删除
                    System.out.println("订单未完成,不能删除");
                }else {
                    //删除位置后的元素依次前移
                    for(int i=no-1;i<length-1;i++) {
                        names[i] = names[i+1];
                        descs[i] = descs[i+1];
                        nums[i] = nums[i+1];
                        dates[i] = dates[i+1];
                        addresses[i] = addresses[i+1];
                        moneys[i] = moneys[i+1];
                        status[i] = status[i+1];
                    }
                    //最后一位清空,即初始化值
                    names[length-1] = null;
                    descs[length-1] = null;
                    nums[length-1] = 0;
                    dates[length-1] = 0;
                    addresses[length-1] = null;
                    moneys[length-1] = 0.0;
                    status[length-1] = false;
                    System.out.println("删除订单成功");
                }

                break;
            case "5":
                System.out.println("****我要点赞****");
                System.out.println("序号\t菜名\t单价\t点赞数量");
                int max = foods.length;
                for(int i = 0;i<foods.length;i++) {//找到没有值那行的下标
                    if(foods[i]==null) {
                        max = i;
                        break;
                    }
                    System.out.println((i+1)+"\t"+foods[i]+"\t"+prices[i]+"元\t"+zan[i]+"次");
                }
                System.out.print("请选择您要点赞的菜品编号:");
                int bianhao = 0;
                do {
                    bianhao = sc.nextInt();
                    if(bianhao<1||bianhao>max) {//判断输入编号是否存在
                        System.out.print("不存在此编号菜品,请重新输入:");
                    }
                } while (bianhao<1||bianhao>max);//存在退出循环
                zan[bianhao-1]++;//选择点赞的编号下的赞数+1
                System.out.println("点赞成功,谢谢您的反馈");
                break;
            case "6":
                System.out.println("****退出系统****");
                System.out.println("谢谢使用");
                break;

            default:
                System.out.print("输入错误,请重新选择!");
                break;
            }
        }while(!"6".equals(choose));
    }
}

 

posted @ 2019-01-08 22:36  毕家唆  阅读(226)  评论(0)    收藏  举报