【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

原文地址:https://www.cnblogs.com/OliverQin/p/12064961.html

时间: 2024-10-13 07:02:13

【BigData】Java基础_创建一个订单类的相关文章

Java基础_学习笔记_13_类的多态性(二)

1 class Animal 2 { 3 private String name; 4 Animal(String name) 5 { 6 this.name=name; 7 } 8 public void enjoy() 9 { 10 System.out.println("叫声..."); 11 } 12 } 13 class Cat extends Animal 14 { 15 private String eyeColor; 16 Cat(String n,String eye

在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM

题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在"D:\java"文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 myPackage 包中创建一个YMD类,该类具有计算今年的年份.可以输出一个带有年月日的字符串的功能.设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名.年龄.出生日期.程序使用YMD的方法来计算年龄. 主要考包的运用 用到java.util.Calendar

java基础_类和对象—1

创建一个三角形类,成员变量三边,方法求周长,创建类主类A来测试它. public class sanjiaoxing { //创建一个三角形类,成员变量三边,方法求周长,创建类主类A来测试它. int a,b,c; // public sanjiaoxing(int a, int b, int c) { // super(); // this.a = a; // this.b = b; // this.c = c; // } public void zhouchang(int a, int b,

深入理解Java对象的创建过程:类的初始化与实例化

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java对象的创建过程:类的初始化与实例化 - Rico's Blogs - 博客频道 - CSDN.NET Rico's Blogs 潜心修炼,成为一个更好的人. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅

java基础知识回顾之javaIO类--RandomAccessFile类

java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部分装了一个字节数组,通过指针可以操作数组中的元素.4.其实该对象就是将字节输入流和输出流进行了封装.5.该对象只能对文件操作,目的和源只能是文件对象.通过看构造方法可以看得出来.RandomAccessFile(File file, String mode) RandomAccessFile(Str

java基础知识回顾之javaIO类--File类

File类是对文件系统中文件以及目录(文件夹)进行封装的对象,可以通过面向对象的思想来操作文件和目录(文件夹).File类保存文件或目录的各种元素的信息,包括文件名,文件长度,最后修改日期,是否可读,获取当前文件的路径名,判断指定文件是否存在,获得当前文件的列表,创建.删除文件目录等方法. /**     * 构造方法:File f = new File("file.txt");//file.txt 相对路径     *       File f1 = new File("c

在java中如何创建一个内存泄露

今天访问java 并发编程网,看到一个翻译征集令,并发编程网的作者从stackoverflow 网站上选取了一些经典问答,遂决定翻译几篇 征集令地址:http://ifeve.com/stackoverflow-assembly/ 翻译系列文章: 1.Java 核心类库中的一些设计模式 2. hashMap 与hashTable之间的区别 3.  在java中如何创建一个内存泄露 译文: 在java中如何创建一个内存泄露 问题: 我之前参加了一个面试, 被问到在java中如何创建一个内存泄露.不

java基础知识回顾之javaIO类--管道流PipedOutputStream和PipedIutputStream

管道流(线程通信流):管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入流之上.如图所示: 1.管道输入流应该连接到管道输出流 ,输入流和输出流可以直接连接       2.使用多线程操作,结合线程进行操作.通常由某个线程从管道输入流中(PipedInputStream)对象读取.          并由其他线程将其写入到相应的端到输出流中.不能使用单线程

java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中

/** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. *  * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件--过滤器FileNameFilter,将文件存入容器中 * 3.将容器中的内容遍历,写入到指定文件中 * */ 代码:  FilenameFilter 过滤器: package com.lp.ecjtu.File.filter; import java.io.File; import java.i