面向对象 练习项目01

 

这是一个基于面向对象的饮料售卖系统

需求分析

image-20220302182832717

 

父类

 

``

package Test02;

import javax.swing.*;

//父类:饮料类
public class Drink {
   //属性
   private String name;//饮料名称
   private  double price;//饮料单价
   private String size;//饮料大小
   private int num;//饮料数量
   private String remark;//备注信息,是否加冰
   private double value;//饮料总价
   //方法


   public int getNum() {
       return num;
  }

   public void setNum(int num) {
       this.num = num;
  }

   public double getValue() {
       return value;
  }

   public void setValue(double value) {
       this.value = value;
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }

   public double getPrice() {
       return price;
  }

   public void setPrice(double price) {
       this.price = price;
  }

   public String getSize() {
       return size;
  }

   public void setSize(String size) {
       this.size = size;
  }

   public String getRemark() {
       return remark;
  }

   public void setRemark(String remark) {
       this.remark = remark;
  }

   //构造器

   public Drink() {
  }

   public Drink(String name, double price, String size, int num, String remark, double value) {
       this.name = name;
       this.price = price;
       this.size = size;
       this.num = num;
       this.remark = remark;
       this.value = value;
  }

   //方法:获取饮料信息
   public String showDrink(){
       return "==你的小票为=="+"\n你想要的饮料是:"+name+"\n饮料的大小是:"+size+"\n饮料的单价是:"+price+"元";
  }
}

子类

 

``

package Test02;
//子类:咖啡类
public class Coffe extends Drink {
   //属性
   private String mix;//咖啡里面加什么
   //方法

   public String getMix() {
       return mix;
  }

   public void setMix(String mix) {
       this.mix = mix;
  }
   //构造器

   public Coffe() {
  }

   public Coffe(String name, double price, String size, int num, String remark, double value, String mix) {
       super(name, price, size, num, remark, value);
       this.mix = mix;
  }
   //重写父类getDrink()方法

   @Override
   public String showDrink() {
       return super.showDrink()+"\n你想在咖啡中加入什么:"+mix +"\n购买的数量为:"+super.getNum()+"杯"+"\n您的备注为:"+super.getRemark()+"\n您总共需支付:"+super.getValue()+"元" ;
  }
}

``

package Test02;
//子类:可乐类
public class Coke extends Drink {
   //属性继承自父类,唯一特有属性由setBrand()接收

   private String brand=null;//品牌
   //方法
   public String getBrand() {
       return brand;
  }

   public void setBrand(String brand) {
       this.brand = brand;
  }
   //构造器
   public Coke() {
  }

   public Coke(String name, double price, String size, int num, String remark, double value, String brand) {
       super(name, price, size, num, remark, value);
       this.brand = brand;
  }

   //重写父类getDrink()方法

   @Override
   public String showDrink() {
       return super.showDrink()+"\n可乐的品牌为:"+brand +"\n购买的数量为:"+super.getNum()+"瓶"+"\n您的备注为:"+super.getRemark()+"\n您总共需支付:"+super.getValue()+"元" ;
  }
}

``

package Test02;
//子类:奶茶类
public class MilkTea extends Drink {
   //属性
   private String buerening;//配料
   //方法

   public String getBuerening() {
       return buerening;
  }

   public void setBuerening(String buerening) {
       this.buerening = buerening;
  }
   //构造器

   public MilkTea() {
  }

   public MilkTea(String name, double price, String size, int num, String remark, double value, String buerening) {
       super(name, price, size, num, remark, value);
       this.buerening = buerening;
  }
   //重写父类getDrink()方法

   @Override
   public String showDrink() {
       return super.showDrink()+"\n你想给奶茶中加入什么配料:"+buerening +"\n购买的数量为:"+super.getNum()+"杯"+"\n您的备注为:"+super.getRemark()+"\n您总共需支付:"+super.getValue()+"元" ;
  }
}

工厂类

``

package Test02;

import java.util.Scanner;

public class DrinkStore {
   //获取饮料的方法
   public static Drink getDrink(int choice) {
       Drink d = null;
       Scanner sc = new Scanner(System.in);
       switch (choice){
           case 1:

              { String brand=null;
                  System.out.println("请选择你要的可乐品牌:(1.可口可乐;2.百事可乐)");
               //设置判断语句判断是否为存在的品牌
                int key1=sc.nextInt() ;//!!!注意next()或者nextInt()一次只能接收一次键盘的值!!!
               if(1==key1){
                   //用.next()接收String型
                   brand = "可口可乐" ;
              } else if (2==key1){
                   brand ="百事可乐";
              }else{
                   System.out.println("没有你想要的品牌!");
              }
               System.out.println("请选择你要的大小:(中杯;大杯;超大杯)");
                  String size = sc.next() ;
               //根据大小定一瓶可乐的单价
                  double price=0;
               if("中杯".equals(size)||"大杯".equals(size)||"超大杯".equals(size) ){
                   if("中杯".equals(size)){
                       price=6.0;
                  }else if("大杯".equals(size)){
                       price=8.0;
                  }else{
                       price=10.0;
                  }//!!!注意字符串Sting的比较要用equals而不能直接用==!!!
              }else{
                   System.out.println("请您选择正确的大小!");
              }
/*这里可以做一个优化:当键盘输入的饮料大小不符合时,可以再次输入,而不是直接跳过输入环节*/

               System.out.println("请输入你要的数量:");
               int num = sc.nextInt() ;
               System.out.println("你要的可乐是否加冰:(加冰;不加冰)");
               String remark=sc.next() ;
               double value =price*num;
               Coke coke = new Coke("可乐",price,size,num,remark,value,brand ) ;
                  System.out.println(coke.showDrink() );
              }break;
           case 2:

              { String mix=null;
               System.out.println("请选择你相加的:(1.牛奶;2.糖;3.不需要加)");
               //设置判断语句判断是否为存在的配料
               int key1=sc.nextInt() ;//!!!注意next()或者nextInt()一次只能接收一次键盘的值!!!
               if(1==key1){
                   //用.next()接收String型
                   mix = "牛奶" ;
              } else if (2==key1){
                   mix ="糖";
              }
               else if (3==key1){
                   mix ="什么都不加";
              }else{
                   System.out.println("没有你想要的配料!");
              }
               System.out.println("请选择你要的大小:(中杯;大杯;超大杯)");
               String size = sc.next() ;
               //根据大小定一瓶咖啡的单价
               double price=0;
               if("中杯".equals(size)||"大杯".equals(size)||"超大杯".equals(size) ){
                   if("中杯".equals(size)){
                       price=12.0;
                  }else if("大杯".equals(size)){
                       price=18.0;
                  }else{
                       price=28.0;
                  }//!!!注意字符串Sting的比较要用equals而不能直接用==!!!
              }else{
                   System.out.println("请您选择正确的大小!");
              }
               /*这里可以做一个优化:当键盘输入的饮料大小不符合时,可以再次输入,而不是直接跳过输入环节*/

               System.out.println("请输入你要的数量:");
               int num = sc.nextInt() ;
               System.out.println("你要的咖啡是否加冰:(加冰;不加冰)");
               String remark=sc.next() ;
               double value =price*num;
                   Coffe coffe = new Coffe("咖啡",price,size,num,remark,value,mix);
                   System.out.println(coffe.showDrink() );
          }break;
           case 3:
          { String buerening =null;
               System.out.println("请选择你要加入的配料:(1.椰果;2.红豆;3.布丁)");
               //设置判断语句判断是否为存在的品牌
               int key1=sc.nextInt() ;//!!!注意next()或者nextInt()一次只能接收一次键盘的值!!!
               if(1==key1){
                   //用.next()接收String型
                   buerening = "椰果" ;
              } else if (2==key1){
                   buerening ="红豆";
              }else if (3==key1){
                   buerening ="布丁";
              }
               else{
                   System.out.println("没有你想要的配料!");
              }
               System.out.println("请选择你要的大小:(中杯;大杯;超大杯)");
               String size = sc.next() ;
               //根据大小定一瓶可乐的单价
               double price=0;
               if("中杯".equals(size)||"大杯".equals(size)||"超大杯".equals(size) ){
                   if("中杯".equals(size)){
                       price=14.0;
                  }else if("大杯".equals(size)){
                       price=18.0;
                  }else{
                       price=22.0;
                  }//!!!注意字符串Sting的比较要用equals而不能直接用==!!!
              }else{
                   System.out.println("请您选择正确的大小!");
              }
               /*这里可以做一个优化:当键盘输入的饮料大小不符合时,可以再次输入,而不是直接跳过输入环节*/

               System.out.println("请输入你要的数量:");
               int num = sc.nextInt() ;
               System.out.println("你要的奶茶是否加冰:(加冰;不加冰)");
               String remark=sc.next() ;
               double value =price*num;
               MilkTea milkTea = new MilkTea("奶茶",price,size,num,remark,value,buerening);
               System.out.println(milkTea.showDrink() );
          }break;
           default :
               System.out.println("龙哥的小店没有你想要的饮料!");
               break;
      }
       return d;
  }
}

测试类

package Test02;

import java.util.Scanner;

//测试类
public class Test {
   public static void main(String[] args) {
       System.out.println("===欢迎使用崽龙饮料机===");
       Scanner sc=new  Scanner(System.in);
       System.out.println("请选择你要购买的饮料序号:(1.可乐;2.咖啡;3.奶茶)");
       int choice = sc.nextInt() ;
       Drink drink = DrinkStore.getDrink(choice) ;
  }
}

父类

 

``

package Test02;

import javax.swing.*;

//父类:饮料类
public class Drink {
   //属性
   private String name;//饮料名称
   private  double price;//饮料单价
   private String size;//饮料大小
   private int num;//饮料数量
   private String remark;//备注信息,是否加冰
   private double value;//饮料总价
   //方法


   public int getNum() {
       return num;
  }

   public void setNum(int num) {
       this.num = num;
  }

   public double getValue() {
       return value;
  }

   public void setValue(double value) {
       this.value = value;
  }

   public String getName() {
       return name;
  }

   public void setName(String name) {
       this.name = name;
  }

   public double getPrice() {
       return price;
  }

   public void setPrice(double price) {
       this.price = price;
  }

   public String getSize() {
       return size;
  }

   public void setSize(String size) {
       this.size = size;
  }

   public String getRemark() {
       return remark;
  }

   public void setRemark(String remark) {
       this.remark = remark;
  }

   //构造器

   public Drink() {
  }

   public Drink(String name, double price, String size, int num, String remark, double value) {
       this.name = name;
       this.price = price;
       this.size = size;
       this.num = num;
       this.remark = remark;
       this.value = value;
  }

   //方法:获取饮料信息
   public String showDrink(){
       return "==你的小票为=="+"\n你想要的饮料是:"+name+"\n饮料的大小是:"+size+"\n饮料的单价是:"+price+"元";
  }
}

子类

 

``

package Test02;
//子类:咖啡类
public class Coffe extends Drink {
   //属性
   private String mix;//咖啡里面加什么
   //方法

   public String getMix() {
       return mix;
  }

   public void setMix(String mix) {
       this.mix = mix;
  }
   //构造器

   public Coffe() {
  }

   public Coffe(String name, double price, String size, int num, String remark, double value, String mix) {
       super(name, price, size, num, remark, value);
       this.mix = mix;
  }
   //重写父类getDrink()方法

   @Override
   public String showDrink() {
       return super.showDrink()+"\n你想在咖啡中加入什么:"+mix +"\n购买的数量为:"+super.getNum()+"杯"+"\n您的备注为:"+super.getRemark()+"\n您总共需支付:"+super.getValue()+"元" ;
  }
}

``

package Test02;
//子类:可乐类
public class Coke extends Drink {
   //属性继承自父类,唯一特有属性由setBrand()接收

   private String brand=null;//品牌
   //方法
   public String getBrand() {
       return brand;
  }

   public void setBrand(String brand) {
       this.brand = brand;
  }
   //构造器
   public Coke() {
  }

   public Coke(String name, double price, String size, int num, String remark, double value, String brand) {
       super(name, price, size, num, remark, value);
       this.brand = brand;
  }

   //重写父类getDrink()方法

   @Override
   public String showDrink() {
       return super.showDrink()+"\n可乐的品牌为:"+brand +"\n购买的数量为:"+super.getNum()+"瓶"+"\n您的备注为:"+super.getRemark()+"\n您总共需支付:"+super.getValue()+"元" ;
  }
}

``

package Test02;
//子类:奶茶类
public class MilkTea extends Drink {
   //属性
   private String buerening;//配料
   //方法

   public String getBuerening() {
       return buerening;
  }

   public void setBuerening(String buerening) {
       this.buerening = buerening;
  }
   //构造器

   public MilkTea() {
  }

   public MilkTea(String name, double price, String size, int num, String remark, double value, String buerening) {
       super(name, price, size, num, remark, value);
       this.buerening = buerening;
  }
   //重写父类getDrink()方法

   @Override
   public String showDrink() {
       return super.showDrink()+"\n你想给奶茶中加入什么配料:"+buerening +"\n购买的数量为:"+super.getNum()+"杯"+"\n您的备注为:"+super.getRemark()+"\n您总共需支付:"+super.getValue()+"元" ;
  }
}

工厂类

``

package Test02;

import java.util.Scanner;

public class DrinkStore {
   //获取饮料的方法
   public static Drink getDrink(int choice) {
       Drink d = null;
       Scanner sc = new Scanner(System.in);
       switch (choice){
           case 1:

              { String brand=null;
                  System.out.println("请选择你要的可乐品牌:(1.可口可乐;2.百事可乐)");
               //设置判断语句判断是否为存在的品牌
                int key1=sc.nextInt() ;//!!!注意next()或者nextInt()一次只能接收一次键盘的值!!!
               if(1==key1){
                   //用.next()接收String型
                   brand = "可口可乐" ;
              } else if (2==key1){
                   brand ="百事可乐";
              }else{
                   System.out.println("没有你想要的品牌!");
              }
               System.out.println("请选择你要的大小:(中杯;大杯;超大杯)");
                  String size = sc.next() ;
               //根据大小定一瓶可乐的单价
                  double price=0;
               if("中杯".equals(size)||"大杯".equals(size)||"超大杯".equals(size) ){
                   if("中杯".equals(size)){
                       price=6.0;
                  }else if("大杯".equals(size)){
                       price=8.0;
                  }else{
                       price=10.0;
                  }//!!!注意字符串Sting的比较要用equals而不能直接用==!!!
              }else{
                   System.out.println("请您选择正确的大小!");
              }
/*这里可以做一个优化:当键盘输入的饮料大小不符合时,可以再次输入,而不是直接跳过输入环节*/

               System.out.println("请输入你要的数量:");
               int num = sc.nextInt() ;
               System.out.println("你要的可乐是否加冰:(加冰;不加冰)");
               String remark=sc.next() ;
               double value =price*num;
               Coke coke = new Coke("可乐",price,size,num,remark,value,brand ) ;
                  System.out.println(coke.showDrink() );
              }break;
           case 2:

              { String mix=null;
               System.out.println("请选择你相加的:(1.牛奶;2.糖;3.不需要加)");
               //设置判断语句判断是否为存在的配料
               int key1=sc.nextInt() ;//!!!注意next()或者nextInt()一次只能接收一次键盘的值!!!
               if(1==key1){
                   //用.next()接收String型
                   mix = "牛奶" ;
              } else if (2==key1){
                   mix ="糖";
              }
               else if (3==key1){
                   mix ="什么都不加";
              }else{
                   System.out.println("没有你想要的配料!");
              }
               System.out.println("请选择你要的大小:(中杯;大杯;超大杯)");
               String size = sc.next() ;
               //根据大小定一瓶咖啡的单价
               double price=0;
               if("中杯".equals(size)||"大杯".equals(size)||"超大杯".equals(size) ){
                   if("中杯".equals(size)){
                       price=12.0;
                  }else if("大杯".equals(size)){
                       price=18.0;
                  }else{
                       price=28.0;
                  }//!!!注意字符串Sting的比较要用equals而不能直接用==!!!
              }else{
                   System.out.println("请您选择正确的大小!");
              }
               /*这里可以做一个优化:当键盘输入的饮料大小不符合时,可以再次输入,而不是直接跳过输入环节*/

               System.out.println("请输入你要的数量:");
               int num = sc.nextInt() ;
               System.out.println("你要的咖啡是否加冰:(加冰;不加冰)");
               String remark=sc.next() ;
               double value =price*num;
                   Coffe coffe = new Coffe("咖啡",price,size,num,remark,value,mix);
                   System.out.println(coffe.showDrink() );
          }break;
           case 3:
          { String buerening =null;
               System.out.println("请选择你要加入的配料:(1.椰果;2.红豆;3.布丁)");
               //设置判断语句判断是否为存在的品牌
               int key1=sc.nextInt() ;//!!!注意next()或者nextInt()一次只能接收一次键盘的值!!!
               if(1==key1){
                   //用.next()接收String型
                   buerening = "椰果" ;
              } else if (2==key1){
                   buerening ="红豆";
              }else if (3==key1){
                   buerening ="布丁";
              }
               else{
                   System.out.println("没有你想要的配料!");
              }
               System.out.println("请选择你要的大小:(中杯;大杯;超大杯)");
               String size = sc.next() ;
               //根据大小定一瓶可乐的单价
               double price=0;
               if("中杯".equals(size)||"大杯".equals(size)||"超大杯".equals(size) ){
                   if("中杯".equals(size)){
                       price=14.0;
                  }else if("大杯".equals(size)){
                       price=18.0;
                  }else{
                       price=22.0;
                  }//!!!注意字符串Sting的比较要用equals而不能直接用==!!!
              }else{
                   System.out.println("请您选择正确的大小!");
              }
               /*这里可以做一个优化:当键盘输入的饮料大小不符合时,可以再次输入,而不是直接跳过输入环节*/

               System.out.println("请输入你要的数量:");
               int num = sc.nextInt() ;
               System.out.println("你要的奶茶是否加冰:(加冰;不加冰)");
               String remark=sc.next() ;
               double value =price*num;
               MilkTea milkTea = new MilkTea("奶茶",price,size,num,remark,value,buerening);
               System.out.println(milkTea.showDrink() );
          }break;
           default :
               System.out.println("龙哥的小店没有你想要的饮料!");
               break;
      }
       return d;
  }
}

测试类

package Test02;

import java.util.Scanner;

//测试类
public class Test {
   public static void main(String[] args) {
       System.out.println("===欢迎使用崽龙饮料机===");
       Scanner sc=new  Scanner(System.in);
       System.out.println("请选择你要购买的饮料序号:(1.可乐;2.咖啡;3.奶茶)");
       int choice = sc.nextInt() ;
       Drink drink = DrinkStore.getDrink(choice) ;
  }
}
posted @   熊崽龙zhen棒  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示