【BigData】Java基础_创建一个订单类

需求描述

定义一个类,描述订单信息
订单id
订单所属用户(用户对象)
订单所包含的商品(不定数量个商品对象)
订单总金额
订单应付金额:
    总金额500~1000,打折85折
    总金额1000~1500,打折80折
    总金额1500~2000,打折70折
    总金额超过2000,打折65折
     
    在此基础上,还要看用户的vip等级
    用户vip等级为:一般会员,则折上折:95
    用户vip等级为:中级会员,则折上折:90
    用户vip等级为:高级会员,则折上折:80

代码实现

package cn.test.logan.day04;
/**
 * 用户类
 * 包含信息项目:用户ID、用户名、用户会员等级
 * @author QIN
 *
 */
public class User {
    // 用户ID
    public String CustId;
        
    // 用户名
    public String CustName;
        
    // 用户会员等级
    public String CustLevel;
        
    public User() {
        
    }
    
    public User(String CustId,String CustName,String CustLevel) {
        this.CustId = CustId;
        this.CustName = CustName ;
        this.CustLevel = CustLevel ;
    }
}
User.java
package cn.test.logan.day04;
/**
 * 商品类
 * 包含:商品ID、商品名称、商品价格、商品数量
 * @author QIN
 *
 */
public class Product {
    
    // 商品ID
    public String pId;
    
    // 商品名称
    public String pName;
    
    //商品价格
    public float price;
    
    // 商品数量
    public int number;
    
    public Product() {
        
    }
    
    public Product(String pId, String pName,float price,int number) {
        this.pId = pId;
        this.pName = pName;
        this.price = price;
        this.number = number;
    }
    
}
Product.java
package cn.test.logan.day04;

import java.util.ArrayList;

/**
 * 订单类
 * 包含:订单ID、订单所属用户、订单所包含的商品、订单总金额、订单应付金额
 * 500-1000 -------> 8.5折
 * 1000-1500 -------> 8折
 * 1500-2000 -------> 7折
 * 2000以上 -------> 6.5折
 *    如果是会员,那么可以基于以上折扣继续折扣
 *    一般会员:9.5折
 *    中级会员:9折
 *    高级会员:8折
 * @author QIN
 *
 */
public class Order {
    // 订单ID 
    public String ordId;
    
    // 订单所属用户
    public User user;
    
    // 订单所包含的商品(多个商品,使用ArrayList)
    public ArrayList<Product> pds;
    
    // 订单总金额
    public float ordAllAmt;
    
    // 订单应付金额
    public float payAmt;
    
    // 计算总金额的方法
    public void setAllAmt() {
        float sum = 0;
        for(int i=0;i<this.pds.size();i++) {
            sum +=this.pds.get(i).price * this.pds.get(i).number;
        }
        this.ordAllAmt = sum;
    }
    
    // 计算实付金额
    public void setPayAmt() {
        float tmp = this.ordAllAmt;
        
        // 根据总金额进行折扣
        if(this.ordAllAmt >= 500 && this.ordAllAmt < 1000) {
            tmp = this.ordAllAmt * 0.85f;
        }
        if(this.ordAllAmt >= 1000 && this.ordAllAmt < 1500) {
            tmp = this.ordAllAmt * 0.8f;
        }
        if(this.ordAllAmt >= 1500 && this.ordAllAmt < 2000) {
            tmp = this.ordAllAmt * 0.7f;
        }
        if(this.ordAllAmt >= 2000) {
            tmp = this.ordAllAmt * 0.65f;
        }
        
        // 根据会员等级折扣
        if(user.CustLevel.equals("一般会员")) {
            tmp = tmp * 0.95f;
        }
        if(user.CustLevel.equals("中级会员")) {
            tmp = tmp * 0.9f;
        }
        if(user.CustLevel.equals("高级会员")) {
            tmp = tmp * 0.8f;
        }
        //计算结果赋值给对象上的payAmt变量
        this.payAmt = tmp;
    }

}
Order.java
package cn.test.logan.day04;

import java.util.ArrayList;

public class OrderTest {
    public static void main(String[] args) {
        // 创建订单对象
        Order ord = new Order();
        ord.ordId="001";
        
        // 创建订单所属用户对象
        User u_xm = new User("C001","小明","高级会员");
        ord.user = u_xm;
        // 创建商品对象
        ArrayList<Product> list = new ArrayList<Product>();
        
        Product p1 = new Product("P001","杰克琼斯",500.5f,2);
        Product p2 = new Product("P002","Nick",1000f,1);
        Product p3 = new Product("P003","Adidas",1200f,2);
        
        
        list.add(p1);
        list.add(p2);
        list.add(p3);
        
        ord.pds = list ;
        ord.setAllAmt();
        ord.setPayAmt();
        
        System.out.println("订单总金额:" + ord.ordAllAmt);
        System.out.println("订单应付金额:" + ord.payAmt);
    }
}
OrderTest.java
posted @ 2019-12-19 02:09  OLIVER_QIN  阅读(641)  评论(0编辑  收藏  举报