zoukankan      html  css  js  c++  java
  • 使用面向对象思想编写吃货联盟

    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);
        }
    }

  • 相关阅读:
    Python--json处理
    Python--加密模块
    Python--函数即变量
    bzoj 2276: [Poi2011]Temperature
    1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛
    2017 9 15 noip模拟赛
    bzoj 1612: [Usaco2008 Jan]Cow Contest奶牛的比赛
    2017 9 11 noip模拟赛T2
    URAL 1613. For Fans of Statistics (2017 9 6 noip模拟赛T3)
    codeforces 105 B. Dark Assembly(birbe贿赂 noip模拟赛)
  • 原文地址:https://www.cnblogs.com/qq993411626------/p/10415668.html
Copyright © 2011-2022 走看看