JAVA 吃货联盟

/**
 * 吃货联盟 订单类
 * @author 张欢
 *
 */
public class OrderSet {
    String[] names = new String[4];  //订餐人姓名
    String[] dishMegs = new String[4];  //保存菜品名及份数
    int[] times =new int[4];  //送餐时间
    String[] addresses = new String[4];  //保存送餐地址
    int[] states = new int[4];    //保存订单状态: 0表示已预订,1表示已完成
    double[] sumPrices = new double[4];   //保存订单的总金额

}

/**
 * 吃货联盟 订单管理工具类
 * @author 张欢
 *
 */

public class OrdeUtil {
        String[] disNames={"红烧带鱼","鱼香肉丝","时令蔬菜"};
        double[]prices ={38,20,10};
        int[] praiseNums=new int [3];
        OrderSet oSet =new OrderSet();//创建OrderSet类的对象为oset
        
    //实现初始化
    public void initial(){
        //第一条订单
        oSet.names[0]="张晴";
        oSet.dishMegs [0]="红烧带鱼";
        oSet. times[0]=12;
        oSet.addresses[0]="天成路207";
        oSet.sumPrices[0]=76.0;
        oSet.states[0]=1;
        //第二条订单
        oSet.names[1]="张晴";
        oSet.dishMegs [1]="鱼香肉丝";
        oSet. times[1]=18;
        oSet.addresses[1]="天成路207";
        oSet.sumPrices[1]=80.0;
        oSet.states[1]=0;
    
    }

 

public boolean add(){//订餐就是增加订单
        boolean isAdd=false;
        Scanner input=new Scanner(System.in);
        for (int i = 0; i < oSet.names.length; i++) {
            if(oSet.names[i]==null){//找到第一个为空的位置
                isAdd=true;//可以订餐
                System.out.println("请输入订餐姓名:");
                String name=input.next();
                System.out.println("序号"+"\t"+"菜名"+"\t"+"单价"+"\t"+"点赞数");
                for (int k = 0; k <disNames.length; k++) {//显示供选择的菜品信息
                    String price=prices[k]+"元";
                    String praiseNum=(praiseNums[k])>0?praiseNums[k]+"赞":"0";
                    System.out.println((k+1)+"\t"+disNames[k]+"\t"+price+"\t"+praiseNum);
                    
                }
                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;
                double deliChaege=(sumprice>=50)?0:5;//餐费满50元,免送餐费
                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("订餐成功!");
                System.out.println("您定的是:"+dishMeg);
                System.out.println("送餐时间是:"+time+"点");
                System.out.println("餐费"+sumprice+"元,送餐费"+deliChaege+"元,总计"+(sumprice+deliChaege)+"元");
                //添加数据
                oSet.names[i]=name;
                oSet.dishMegs[i]=dishMeg;
                oSet.times[i]=time;
                oSet.addresses[i]=address;
                oSet.sumPrices[i]=sumprice+deliChaege;
                isAdd=false;
                break;
            }//if结束
            
        }//for循环结束
        
        if(isAdd){
            System.out.println("对不起!您的餐带已满。");
            return false;
        }else{
            return true;
        }
    }//add()结束

//查看餐袋
    public void find(){
        System.out.println("序号\t订餐人\t餐品信息\t\t送餐时间\t送餐地址\t\t总金额\t订单状况");
    for (int i = 0; i <oSet.names.length; i++) {
        String state=oSet.states[i]==0 ?"已预定":"已完成";//把0 1的状态改为字符串
        if(oSet.names[i]!=null)
            System.out.println((i+1)+"\t"+oSet.names[i]+"\t"+oSet.dishMegs[i]+"\t"
                        +oSet.times[i]+"\t"+oSet.addresses[i]+"\t"+oSet.sumPrices[i]+"元"+"\t"+state);
        }//for
    }//find
    public void qscd(){//签收订单
        Scanner input=new Scanner(System.in);
        System.out.println("请输入定单序号");
        int orderNo=input.nextInt();
        boolean flag=false;
        for (int i = 0; i <oSet.names.length; i++) {
            if(oSet.names[i]!=null && oSet.states[i]==0 && orderNo==(i+1)){//订单状态为0,改为已签收
                oSet.states[i]=1;//已经签收
                System.out.println("订单已经签收成功!");
                flag=true;
                }else if(oSet.names[i]!=null && oSet.states[i]==1 && orderNo==(i+1)){//订单状态为1,已经签
                System.out.println("订单已经是签收状态");    
                flag=true;
                }
        }//for
    if(flag){
        System.out.println("已签收");
    }else{
    System.out.println("没有此序号的订单");    
    }
    }//签收订单方法结束

//删除订单
    public void deletedd(){
        Scanner input=new Scanner(System.in);
        boolean delFlag=false;//标记是否找到要删除的订单
        System.out.println("请输入要删除的订单号");
        int deleteId=input.nextInt();
        for (int i = 0; i <oSet.names.length; i++) {
            if(oSet.names[i]!=null && oSet.states[i]==1 && deleteId==(i+1)){//状态值为已完成,
            delFlag=true;//可以删除已经签收的了
            int index = 0;//从后往前 到要删除的位置 ,移动
            for (int K = deleteId-1; K<oSet.names.length-1; K++) {
                oSet.names[K]=oSet.names[K+1];
                oSet.addresses[K]=oSet.addresses[K+1];
                oSet.dishMegs[K]=oSet.dishMegs[K+1];
                oSet.states[K]=oSet.states[K+1];
                oSet.sumPrices[K]=oSet.sumPrices[K+1];
                oSet.times[K]=oSet.times[K+1];
                index=K;//记录的最后一次就是有内容的最后一个位置
            }
            //最后储存了内容的一位清空
            oSet.names[index]=null;
            oSet.addresses[index]=null;    
            oSet.dishMegs[index]=null;
            oSet.states[index]=0;
            oSet.sumPrices[index]=0;
            oSet.times[index]=0;
            System.out.println("已经删除完毕");
            break;
            }else if(oSet.names[i]!=null && oSet.states[i]==0 && deleteId==(i+1)){//状态值为已预定
            System.out.println("预定订单的状态不可删除");    //预定订单的状态不可删除
            delFlag=true;
            }
            
        }//for结束
        
        if(delFlag){
            System.out.println("已经执行完毕");
        }else{
            System.out.println("没有要删除的订单号!");
        }

    }//deleteOrder方法结束
    //点赞
    public void praise(){
        Scanner input =new Scanner(System.in);
        //显示菜品信息
        System.out.println("序号"+"\t"+"菜品"+"\t"+"单价");
        for (int i = 0; i < disNames.length; i++) {
            String price=prices[i]+"元";
            String praiseNum=(praiseNums[i]>0)?praiseNums[i]+"赞":"";
            System.out.println((i+1)+"\t"+disNames[i]+"\t"+price+"\t"+praiseNum);
        }
        System.out.println("请选择您要点赞的菜品");
        int praiseNum=input.nextInt();
        praiseNums[praiseNum-1]++;//赞数+1
        System.out.println("点赞成功!");
    }
    
}

 

 

//main方法

public class Chuolianmeng {
    public static void main(String[] args) {
        
        OrdeUtil  ou=new OrdeUtil();
        boolean flag = false;
        int num = 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("******************************************\n");
            Scanner input=new Scanner(System.in);
            System.out.println("请选择:");
            int xz=input.nextInt();
            switch(xz){
                case 1:
                     flag = ou.add();
                    break;
                case 2:
                    ou.find();
                    break;
                case 3:
                    ou.qscd();
                    break;
                case 4:
                    ou.deletedd();
                    break;
                case 5:
                    ou.praise();
                    break;
                case 6:
                    break;
            }
            if(flag){
                System.out.println("输出0返回!");
                num = input.nextInt();
            }
        } while (num == 0);
    }
}

 

posted @ 2017-10-27 20:15  亲信ABC  阅读(1792)  评论(0编辑  收藏  举报