基于Java创建一个订单类代码实例

 更新时间:2019年12月19日 16:40:50   作者:OLIVER_QIN  
这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

需求描述

  • 定义一个类,描述订单信息
  • 订单id
  • 订单所属用户(用户对象)
  • 订单所包含的商品(不定数量个商品对象)
  • 订单总金额
  • 订单应付金额:
    • 总金额500~1000,打折85折
    • 总金额1000~1500,打折80折
    • 总金额1500~2000,打折70折
    • 总金额超过2000,打折65折

在此基础上,还要看用户的vip等级

  • 用户vip等级为:一般会员,则折上折:95
  • 用户vip等级为:中级会员,则折上折:90
  • 用户vip等级为:高级会员,则折上折:80

代码实现

User.java

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

Product.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;
  }
}

Order.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;
  }

}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • springboot3生成本地文件url的实现示例

    springboot3生成本地文件url的实现示例

    本文主要介绍了springboot3生成本地文件url的实现示例,从而提供一种高效的文件管理方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • logback关闭某个包的日志操作

    logback关闭某个包的日志操作

    这篇文章主要介绍了logback关闭某个包的日志操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • idea中mapper如何快速跳转到xml插件

    idea中mapper如何快速跳转到xml插件

    这篇文章主要介绍了idea中mapper如何快速跳转到xml插件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • StringUtils中的isEmpty、isNotEmpty、isBlank和isNotBlank的区别详解

    StringUtils中的isEmpty、isNotEmpty、isBlank和isNotBlank的区别详解

    这篇文章主要介绍了StringUtils中的isEmpty、isNotEmpty、isBlank和isNotBlank的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • java中this与super关键字的使用方法

    java中this与super关键字的使用方法

    这篇文章主要介绍了java中this与super关键字的使用方法的相关资料,希望通过本文能帮助到大家,让大家彻底理解应用java中this与super,需要的朋友可以参考下
    2017-09-09
  • Java Collection集合iterator方法解析

    Java Collection集合iterator方法解析

    这篇文章主要介绍了Java Collection集合iterator方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 分享一些Java的常用工具

    分享一些Java的常用工具

    今天给大家带来的是关于Java的一些常用的工具,文中有非常详细的介绍,对正在学习java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-06-06
  • Java中的异常处理机制try-catch详解

    Java中的异常处理机制try-catch详解

    这篇文章主要介绍了Java中的异常处理机制try-catch详解,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • 关于mybatis callSettersOnNulls 配置解析

    关于mybatis callSettersOnNulls 配置解析

    这篇文章主要介绍了关于mybatis callSettersOnNulls 配置,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2018-06-06
  • Scala小程序详解及实例代码

    Scala小程序详解及实例代码

    这篇文章主要介绍了Scala 第一个Scala小程序详解的相关资料,需要的朋友可以参考下
    2017-01-01

最新评论