*题目描述:
定义一个类,描述订单信息
订单id
订单所属用户(用户对象)
订单所包含的商品(不定数量个商品对象)
订单总金额
订单应付金额:
总金额满1000,打折98折
总金额满2000,打折95折
总金额满3000,打折90折
在此基础上,还要看用户的vip等级
用户vip等级为:黄金vip,则折上折:98
用户vip等级为:钻石vip,则折上折:96
用户vip等级为:至尊vip,则折上折:92
这里设计四个类:
1.User类(存放用户信息)
2.Product类(存放商品信息)
3.Order类(存放订单信息)
4.测试类(对订单信息进行处理)
1. User类
package copy_day4;
public class User
{
public String userid;
public String username;
public String userlevel;
public User(){
}
//这是一个构造方法,在外面调用需要输入参数
public User(String userid,String username,String userlevel){
this.userid = userid;
this.username = username;
this.userlevel = userlevel;
}
}
- 2 Product类
package day04;
/**
* 商品类
* @author liu-xiao-ge
*
*/
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;
}
}
3. Order类
package day04;
/**
* 订单类
* @author liu-xiao-ge
*
*/
import java.util.ArrayList;
public class Order{
//订单ID
public String orderID;
//订单用户名字
//这里创建了一个User类的变量,类似于创建一个Int类,只不过这个User
类是我们自己写的类
public User user;
//订单所包含的商品
//这里定义一个模板即可,不要要创建实例对象,当在外部调用时,才会创建
//这是列表数据结构,但是里面存放的数据类型只能是Product类
public ArrayList<Product> pdts;
//订单总金额
public float amountFee;
//订单应付金额
public float toplayfee;
public void setAmountFee(){
float sum = 0;
for(int i = 0;i<this.pdts.size();i++){
sum += this.pdts.get(i).price * this.pdts.get(i).number;
}
this.amountFee = sum;
}
public void settoplayfee(){
float temp = this.amountFee;
if(this.amountFee >= 1000 && this.amountFee <2000){
temp = this.amountFee * 0.98f;
}
if(this.amountFee >= 2000 && this.amountFee < 3000){
temp = this.amountFee * 0.95f;
}
if(this.amountFee >= 3000){
temp = this.amountFee * 0.90f;
}
//根据用户等级进行打折
if(user.viplevel.equals("黄金VIP")){
temp = temp * 0.98f;
}
if(user.viplevel.equals("钻石VIP")){
temp = temp * 0.96f;
}
if(user.viplevel.equals("至尊VIP")){
temp = temp * 0.92f;
}
//把计算出的结果赋给
this.toplayfee = temp;
}
}
4. 测试类
package day04;
import java.util.ArrayList;
public class test1
{
//函数名前加上static意味着是静态方法,即不涉及类中的变量
public static void main(String[] args)
{
// TODO Auto-generated method stub
//创建利用Order类创建实例对象,即创建一个订单,但是目前订单里信息为空
Order o1 = new Order();
o1.orderID = "1";
//创建订单所属的用户对象
//这里需要注意,Order类中有一个User类的对象,但是因为User类是我们自己写的,
里面为空,所以必须先创建User类的实例对象,进而赋值给Order类中的这个属性
User user1 = new User("1","刘谦","黄金VIP");
o1.user = user1;
//创建商品列表
//这个属性与上一个属性一种操作方法
ArrayList<Product> pdts = new ArrayList<Product>();
Product p1 = new Product("p1","鞋子",18.8f,10);
Product p2 = new Product("p2","帽子",188.8f,5);
pdts.add(p1);
pdts.add(p2);
o1.pdts = pdts;
//在Order对象o1上调用方法来计算
o1.setAmountFee();
o1.settoplayfee();
System.out.print("订单总金额:"+o1.amountFee);
}
}