使用面向对象思想编写吃货联盟

1、

package com.dingcanxitong3;

//创建一个订餐的接口
public interface DingCan {

    public void dingcan();
    
}
package com.dingcanxitong3;

//创建一个查看餐袋的接口
public interface ChaKan {

    public void chakan();
}
package com.dingcanxitong3;

//创建一个签收接口
public interface QianShou {

    public void qianshou();
}
package com.dingcanxitong3;

//创建一个删除接口
public interface ShanChu {

    public void shanchu();
}
package com.dingcanxitong3;

//创建一个退出的接口
public interface TuiChu {

    public void tuichu();
}
package com.dingcanxitong3;

//创建一个点赞接口
public interface DianZan {

    public void dianzan();
}
package com.dingcanxitong3;

//创建一个功能的类实现各个功能接口
import java.util.Scanner;

public class Functions implements DingCan,ChaKan,QianShou,ShanChu,DianZan,TuiChu{
    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];//订餐数量
   
     String [] foods = {"红烧鱼","蛋炒饭","黄焖鸡"};
     double [] prices = {15.00,10.00,16.00};
     int [] zan = {10,20,30};
 
     
    Scanner sc = new Scanner(System.in);
    @Override
    public void dingcan() {
        // TODO Auto-generated method stub
          System.out.println("****我要订餐****");
          int index = -1;//定义要添加的位置下标
          for(int i = 0 ;i<length;i++) {                                           
              //循环找到为空的数组下标
              if(names[i]==null) {                                                
                  //如果i数组上的值为空 
                  index = i;                                                       
                  //把i赋值给index
                  break;                                                          
                  //跳出if
              }
          }
          if(index<0) {                                                           
              //如果index小于0,说明上个循环未找到为空的数组,则
              System.out.println("当前餐袋已满!!!");                                
              //提示
          }else {
              System.out.println("请输入订餐人姓名:");                                    
              //如果index不小于0,提示输入姓名
              names[index] = sc.next();                                            
              //订餐人数组index接收控制台输入的值
              System.out.println("序号	菜名	单价	点赞数量");                            
              //输出菜名  单价  点赞数量
              int max = foods.length;                                               
              //定义max 把菜品数组最大的下标赋值给它
              for(int i = 0;i<foods.length;i++) {                                    
                  //循环找到不为空的菜品数组下标
                  if(foods[i]==null) {                                            
                      //如果数组下标为空了  把i赋值给max,跳出循环
                      max = i;
                      break;
                  }
                  System.out.println((i+1)+"	"+foods[i]+"	"+prices[i]+"元	"+zan[i]+"次");
              }
              System.out.println("请选择您要点的菜品编号:");
              int id = 0;                                                           
              //定义输入的菜品id
              do {
                  id = sc.nextInt();                                                
                  //接收控制台输入的值
                  if(id<1||id>max) {                                                
                      //如果输入的值小于0或者大于菜品数组不为空的最大下标
                      System.out.println("不存在此编号菜品,请重新输入:");               
                      //提示
                  }
              } while (id<1||id>max);                                              
              descs[index] = foods[id-1];                                            
              //把菜品数组下标为输入的值减一上的值,赋值给餐品信息数组index上的
              System.out.println("请选择您需要的份数:");
              int num = sc.nextInt();                                                
              //定义份数num 接收控制台输入的数据
              nums[index] = num;                                                    
              //把控制台上的数据赋值给数组下标为index的值
              System.out.println("请输入送餐时间(送餐时间是10点至20点间整点送餐)");
              int date = 0;                                                        
              //定义输入的时间date
              do {
                  date = sc.nextInt();                                            
                  //接收
                  if(date<10||date>20) {                                           
                      //如果输入的时间小于10或者大于20
                      System.out.println("您的输入有误,请输入10~20间的整数!:");            
                      //提示
                  }
              } while (date<10||date>20);                                           
              dates[index] = date;                                                
              //把输入的时间辅助给时间数组下标为index上
              System.out.println("请输入送餐地址:");                                   
              addresses[index] = sc.next();                                        
              //把输入地址赋值给地址数组下标为index上
              double money = prices[id-1]*num;                                    
              //把菜品的价格乘于份数 赋值给定义的money
              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;                                                        
                  //送餐费增加3.0元
              }
              moneys[index] = money+song;                                            
              //把定餐的价格和送餐费赋值给总价格数组下标为index上的值
              System.out.println("餐费:"+money+"。送餐费:"+song+"元,总计:"+(money+song)+"元");
          }

         
    }

    @Override
    public void chakan() {
        // TODO Auto-generated method stub
         System.out.println("****查看餐袋****");
         System.out.println("序号	订餐人	餐品信息		送餐日期		送餐地址		总金额	订单状态");
         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)+"	"+names[i]+"	"+canpin+"		"+dates[i]+"点		"+addresses[i]+"		"+moneys[i]+"元	"+zhuangtai);
         }
         
    }

    @Override
    public void qianshou() {
        // TODO Auto-generated method stub
        System.out.println("****签收订单****");
        System.out.println("请输入要签收的订单编号:");
        boolean isTrue = false;                                                    
        int id = -1;                                                           
        //定义签收订单的编号
        do {
            id = sc.nextInt();                                                    
            //接收输入的要签收的值
            if(id<1||id>descs.length) {                                           
                //如果订单编号小于1,且大于订餐信息数组的最大下标
                isTrue = true;                                                  
            }else {
                if(descs[id-1]==null) {                                           
//如果订餐信息数组下标“要签收订单编号减一”上的值为空
                    isTrue = true;
                }else {
                    isTrue = false;                                                
                    //否则
                }
            }

            if(isTrue) {
                System.out.println("不存在此编号的订单信息,请重新输入:");
            }
        } while (isTrue);
        status[id-1] = true;                                                    
        //把true赋值给  状态数组下标为要签收的订单序号减一
        System.out.println("签收完成");                                            
        //提示
    }

    @Override
    public void shanchu() {
        // TODO Auto-generated method stub
         System.out.println("****删除订单****");
         System.out.println("请输入要删除的订单编号:");
         int big = length;                                                        
         //定义下标
         for(int i = 0;i<length;i++) {                                           
             //循环找到订餐信息为空的数组下标
             if(descs[i]==null) {                                                
                 //如果订餐信息数组为空
                 big = i;                                                        
                 //把下标i赋值给big 跳出
                 break;
             }
         }

         int no = 0;                                                                
         //输入的值
         do {
             no = sc.nextInt();                                                    
             //接收输入的要删除的序号
             if(no<1||no>big) {                                                    
                 //如果输入的值小于1 或大于订餐信息数组不为空的最大的下标
                 System.out.println("不存在此编号菜品,请重新输入:");                    
                 //提示
             }
         } 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("删除订单成功");
         }

    }

    @Override
    public void dianzan() {
        // TODO Auto-generated method stub
          System.out.println("****我要点赞****");
          System.out.println("序号	菜名	单价	点赞数量");
          int max = foods.length;                                                    
          //循环遍历菜名 单价 点赞数
          for(int i = 0;i<foods.length;i++) {
              if(foods[i]==null) {
                  max = i;
                  break;
              }
              System.out.println((i+1)+"	"+foods[i]+"	"+prices[i]+"元	"+zan[i]+"次");
          }
          System.out.println("请选择您要点赞的菜品编号:");
          int bianhao = 0;                                                        
          //定义
          do {
              bianhao = sc.nextInt();                                                
              //接收
              if(bianhao<1||bianhao>max) {                                        
                  //如果编号为小于1或大于菜单不为空的最大数组下标时
                  System.out.println("不存在此编号菜品,请重新输入:");
              }
          } while (bianhao<1||bianhao>max);
          zan[bianhao-1]++;                                                        
          //点赞数组下标输入的编号减一的值自加
          System.out.println("点赞成功,谢谢您的反馈");
    }

    @Override
    public void tuichu() {
        // TODO Auto-generated method stub
           System.out.println("****退出系统****");
           System.out.println("谢谢使用");
           //退出系统
           System.exit(1);

     
    }

}
package com.dingcanxitong3;

import java.util.Scanner;
//創建一個側四類
public class Test {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Functions fun = new Functions();    
        int choose;
        do { 
             System.out.println("******************************");
                System.out.println("1、我要订餐  2、查看餐袋  3、签收订单  4、删除订单  5、我要点赞  6、退出系统");
                System.out.println("请选择功能的编号(1-6):");  
                choose = sc.nextInt();   
                switch(choose) {
                case 1:
                    fun.dingcan();
                    break;
                case 2:
                    fun.chakan();
                    break;
                case 3:
                    fun.qianshou();
                    break;
                case 4:
                    fun.shanchu();
                    break;
                case 5:
                    fun.dianzan();
                    break;
                case 6:
                    fun.tuichu();
                    break;
                }
        }while(choose<7);
    }
}

原文地址:https://www.cnblogs.com/qq993411626------/p/10415668.html