使用面向對象思想編寫吃貨聯盟


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("序號\t菜名\t單價\t點贊數量");                            
              //輸出菜名  單價  點贊數量
              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)+"\t"+foods[i]+"\t"+prices[i]+"元\t"+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("序號\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\t"+dates[i]+"點\t\t"+addresses[i]+"\t\t"+moneys[i]+"元\t"+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("序號\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.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);
    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM