需求描述

定义一个类,描述订单信息
订单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

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

  1. 编写Java程序,创建一个 Person 类,该类中有一个类成员变量 country、一个实例变量 name 和另一个实例变量 age。

    返回本章节 返回作业目录 需求说明: 创建一个 Person 类,该类中有一个类成员变量 country.一个实例变量 name 和另一个实例变量 age. country 表示地区,name 表示姓 ...

  2. 【BigData】Java基础_定义工具类,对ArrayList排序并且求最大值、最小值、平均值

    需求描述 编写一个工具类,对ArrayList实现以下功能: ① 排序 ② 求最大值 ③ 求最小值 ④ 求平均值 需求实现 实现代码 package cn.test.logan.day04; impo ...

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

    题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...

  4. Java基础-类加载机制与自定义类Java类加载器(ClassLoader)

    Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...

  5. Java基础教程(12)--深入理解类

    一.方法的返回值   当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...

  6. Java基础-DBCP连接池(BasicDataSource类)详解

    Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...

  7. 通过元类创建一个Python类

    通过元类创建一个Python类 最开始学pytohn的时候我们这样定义类 class ClassName: pass 当熟悉了元类的概念之后我们还可以这样创建 ClassName = type(&qu ...

  8. 004_linux驱动之_class_create创建一个设备类

    (一)解析:class_create函数和class_destroy函数     创建一个类         和        删除一个类.   (二)class_create函数原型   struc ...

  9. Django学习路15_创建一个订单信息,并查询2020年\9月的信息都有哪些

    在 app5.models.py 中添加一个 Order 表 class Order(models.Model): o_num = models.CharField(max_length= 16 ,u ...

随机推荐

  1. Android开发中网络代理设置实用总结

    一.背景 进行Android项目开发时,跟网络代理基本上天天都在打交道.通常情况下,至少有三个场景中经常用到网络代理: 1,经常通过Chrome访问Google等国外的技术网站,如通过SS工具等: 2 ...

  2. GitBook基本使用

    1.安装 Node.js:https://nodejs.org/en/ 2.安装 GitBook: npm install gitbook-cli -g gitbook -V  #查看gitbook是 ...

  3. Java学习:常用函数接口

    常用函数接口 什么是函数式接口? 函数式接口,@FunctionalInterface,简称FI,简单的说,FI就是指仅含有一个抽象方法的接口,以@Functionalnterface标注 注意:这里 ...

  4. 详解Go变量类型的内存布局

    定义 每当我们编写任何程序时,我们都需要在内存中存储一些数据/信息.数据存储在特定地址的存储器中.内存地址看起来像0xAFFFF(这是内存地址的十六进制表示). 现在,要访问数据,我们需要知道存储它的 ...

  5. 我用Bash编写了一个扫雷游戏

    我在编程教学方面不是专家,但当我想更好掌握某一样东西时,会试着找出让自己乐在其中的方法.比方说,当我想在 shell 编程方面更进一步时,我决定用 Bash 编写一个扫雷游戏来加以练习. 我在编程教学 ...

  6. 架构师小跟班:教你从零开始申请和配置七牛云免费OSS对象存储(不能再详细了)

    背景 之前为了练习Linux系统使用,在阿里云上低价买了一台服务器(网站首页有活动链接,传送门),心里想反正闲着也是闲着,就放了一个网站上去.现在随着数据越来越多,服务器空间越来越吃紧,我就考虑使用七 ...

  7. [转]Java游戏引擎

    JME(jMonkey Engine): JME是一个高性能的3D图形API,采用LWJGL作为底层支持.它的后续版本将支持JOGL.JME和Java 3D具有类似的场景结构,开发者必须以树状方式组织 ...

  8. 第一篇 Scrum 冲刺博客

    一.各个成员在 Alpha 阶段认领的任务 姓名 Alpha 阶段认领的任务 林剑峰 用户信息页面:完成用户信息的上传 石竞贤 发布信息页面:完成用户图片上传云存储的功能,并且把发布信息上传到云数据库 ...

  9. Spring boot配置MongoDB以及Morphia踩坑记录

    pom 因为项目中采用Morphia(MongoDB的ODM框架,对象-文档映射(object-document mapper)),因此需要在pom文件中引入相应依赖: <dependency& ...

  10. LDA-作为线性判别 降维 推导

    LDA 降维原理 前面对 LDA 作为作为分类器 有详细推导, 其核心就是 贝叶斯公式, 已知全概率, 求(条件概率)最大先验概率, 类似的问题. 而 LDA 如果作为 降维 的原理是: a. 将带上 ...