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

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

(0)

相关推荐

  • javaweb图书商城设计之订单模块(5)

    这篇文章是针对javaweb图书商城中订单模块的研究, 1.创建相关类 domain: Order OrderItem dao:OrderDao service:OrderService web.servlete:OrderServlet /** * 订单条目类 */ public class OrderItem { private String iid; private int count;// 数量 private double subtotal;// 小计 private Order or

  • java网上图书商城(7)订单模块2

    本文实例为大家分享了java网上图书商城订单模块的具体代码,供大家参考,具体内容如下 1.我的订单---查 按用户查询订单 分页查询 PageBean<Order> <div class="divMain"> <div class="divTitle"> <span style="margin-left: 150px;margin-right: 280px;">商品信息</span> &

  • java网上图书商城(6)订单模块1

    先看看效果图: 1.sql ①t_orderitem一个外键 bname:方便后期book删除 CREATE TABLE `t_orderitem` ( `orderItemId` char(32) NOT NULL, `quantity` int(11) DEFAULT NULL, `subtotal` decimal(8,2) DEFAULT NULL, `bid` char(32) DEFAULT NULL, `bname` varchar(200) DEFAULT NULL, `curr

  • java网上图书商城(8)订单模块3

    继续上一篇进行学习. 3.查询订单详细信息 OrderServlet public String load(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String oid = req.getParameter("oid"); Order order = orderService.load(oid); req.setAttribute("ord

  • 微信支付java版本之查询订单

    本文实例为大家分享了微信支付订单的查询接口,供大家参考,具体内容如下 1.接口简介 2.代码实现 package com.zhrd.bussinss.platform.controller.shop; import java.io.File; import java.io.FileInputStream; import java.security.KeyStore; import java.text.SimpleDateFormat; import java.util.Date; import

  • java web在高并发和分布式下实现订单号生成唯一的解决方案

    方案一: 如果没有并发,订单号只在一个线程内产生,那么由于程序是顺序执行的,不同订单的生成时间戳正常不同,因此用时间戳+随机数(或自增数)就可以区分各个订单.如果存在并发,且订单号是由一个进程中的多个线程产生的,那么只要把线程ID添加到序列号中就可以保证订单号唯一.如果存在并发,且订单号是由同一台主机中的多个进程产生的,那么只要把进程ID添加到序列号中就可以保证订单号唯一.如果存在并发,且订单号是由不同台主机产生的,那么MAC地址.IP地址或CPU序列号等能够区分主机的号码添加到序列号中就可以保

  • Java微信公众平台开发(3) 接收消息的分类及实体的创建

    前面一篇有说道应用服务器和腾讯服务器是通过消息进行通讯的,并简单介绍了微信端post的消息类型,这里我们将建立消息实体以方便我们后面的使用! (一)消息实体基础类 package com.cuiyongzhi.wechat.message.req; /** * ClassName: BaseMessage * @Description: 微信请求消息基本类 * @author dapengniao * @date 2016年3月7日 下午3:03:59 */ public class BaseM

  • Java实现创建运行时类的对象操作示例

    本文实例讲述了Java实现创建运行时类的对象操作.分享给大家供大家参考,具体如下: 获取运行时类的方法: public void test() throws ClassNotFoundException { /* * Class类是反射的源头 * 创建一个类,通过编译(javac.exe),生成对应的.class文件,之后使用java.exe加载(JVM的类加载器完成的)此.class文件. * 此.class文件加载到内存后,就是一个运行时类,存放在缓存区. * 那么这个运行时类本身就是一个C

  • 详解Java的内置异常以及创建自定义异常子类的方法

    内置异常子类 在标准包java.lang中,Java定义了若干个异常类.前面的例子曾用到其中一些.这些异常一般是标准类RuntimeException的子类.因为java.lang实际上被所有的Java程序引入,多数从RuntimeException派生的异常都自动可用.而且,它们不需要被包含在任何方法的throws列表中.Java语言中,这被叫做未经检查的异常(unchecked exceptions ).因为编译器不检查它来看一个方法是否处理或抛出了这些异常. java.lang中定义的未经

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

    这篇文章主要介绍了基于Java创建一个订单类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需求描述 定义一个类,描述订单信息 订单id 订单所属用户(用户对象) 订单所包含的商品(不定数量个商品对象) 订单总金额 订单应付金额: 总金额500~1000,打折85折 总金额1000~1500,打折80折 总金额1500~2000,打折70折 总金额超过2000,打折65折 在此基础上,还要看用户的vip等级 用户vip等级为:一般会员,

  • 详解java创建一个女朋友类(对象啥的new一个就是)==建造者模式,一键重写

    创建一个女朋友,她有很多的属性,比如:性别,年龄,身高,体重,类型等等,虽然每个女朋友都有这些属性,但是每个人找女朋友的要求都是不一样的,有的人喜欢男的,有的人喜欢女的,有的喜欢胖的,不同的人可以根据自己的喜好去建造不同的女朋友,我们不需要关心她是怎么建造的,我们只需要去指定她的属性就行了 相比如文字解释,我更习惯撸代码来解释,下面来一步步实现怎么用java来为你创建一个女朋友 首先定义一个女朋友类: package nuoyanli; /** * Created by ${nuoyanli}

  • 基于Java Callable接口实现线程代码实例

    实现Callable接口(jdk8新特性) 可以获得线程的返回值 *前两种方式没有返回值,因为run方法返回void 创建一个未来任务类对象 Futrue task = new Future(Callable<>);重写call()方法 可以使用匿名内部类方式 task.get()方法获取线程返回结果 get方法执行会导致当前方法阻塞 效率较低 代码如下 import java.util.concurrent.Callable; import java.util.concurrent.Exec

  • 基于Java判断网络是否正常代码实例

    判断网络是否正常使用 代码如下 /** * 判断网络是否正常 * @return */ public static boolean isConnect(String ipPath){ //定义其返回的状态,默认为false,网络不正常 boolean connect = false; /** * 用Runtime.getRuntime().exec()来调用系统外部的某个程序, * 他会生成一个新的进程去运行调用的程序. * 此方法返回一个java.lang.Process对象, * 该对象可以

  • 基于java查找最长字符串代码实例

    题目:编写程序,针对输入的N个字符串,输出其中最长的字符串 输入样例: 4 zhaoming zhangming sunming liming 输出样例: 最长的字符串:zhangming 代码如下 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); int

  • 基于Dockerfile创建zabbix监控体系代码实例

    使用for循环将zabbix的镜像导入到容器中 for n in `ls *.tar.gz`;do docker load -i $n ;done 使用docker运行zabbix-server docker run --name mysql-server -t \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix_pwd" \ -e M

  • java基于poi导出excel透视表代码实例

    这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通任(前)督(后)二(开)脉(发)的梦想转了后端,自学两礼拜java+spring全家桶,直接上项目实战.最近接到一需求:将业务数据导出一张透视表. 需求开发完成已近有一段时间了,甲方的大爷大妈,爷爷奶奶们也都用的很开心,我也很开心,于是就心想咱学了也不能白学,所以写下这篇随笔. 先看下用easypo

  • java创建一个类实现读取一个文件中的每一行显示出来

    实例如下 import java.io.*; import java.util.*; class MyBufferReaderDemo{ private FileReader fb; MyBufferReaderDemo(FileReader fb){ this.fb=fb; } public String BufferReader() throws IOException{ StringBuilder s1=new StringBuilder(); int ch=0; while((ch=fb

  • java实体对象与Map之间的转换工具类代码实例

    这篇文章主要介绍了java实体对象与Map之间的转换工具类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Map接口中键和值一一映射. 可以通过键来获取值. 给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值. 当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常. 当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常

  • java创建多级目录文件的实例讲解

    实例如下所示: /** * 创建多级目录文件 * * @param path 文件路径 * @throws IOException */ private void createFile(String path) throws IOException { if (StringUtils.isNotEmpty(path)) { File file = new File(path); if (!file.getParentFile().exists()) { file.getParentFile().

随机推荐