类和对象5个例题-3

2.模拟订单

题目:
*订单包含下面信息:
(1)用户名
(2)订单号
(3)提交时间
(4)总价
(5)订单状态
(6)收货地址
1)姓名
2)省
3)市
4)街道
5)联系电话

*1、创建地址类ShippingAddress
(1)包含成员变量:name, province,city,street,tel分别代表收件人姓名、省、市、街道、联系电话。
(2)一个构造方法,为各成员变量赋初值
(3)成员变量的get和set方法。
(4)public String toString()方法,返回地址信息构成的字符串,格式自定

2、创建订单类Order
(1)包含成员变量: orderNo(订单号),createTime(提交时间),totalPrice(总价),address(收货地址),status(订单状态)。address变量为ShippingAddress类型,订单状态包含“1-未付款,2-已付款,3-已发货,4-完成”,初始订单状态为“未付款”。
(2)构造方法,为订单号,总价赋初值。createTime为当前系统时间。
(3)构造方法,为订单号,总价,收货地址赋初值。createTime为当前系统时间。
(4)成员变量的get和set方法。
(5)public String toString()方法,返回订单信息构成的字符串,格式如下:
“订单号\t用户名\t总价\t订单状态\t订单时间
收货地址:地址信息”

3、测试类OrderTest
(1)分别使用两种构造方法创建订单,设置必要的订单信息,输出订单信息
(2)修改订单状态,输出订单信息
(3)修改订单地址,输出订单信息。**

Tip:

  1. 注意private私有成员变量,只能通过get和set方法访问私有成员变量
  2. 构造方法的重载

代码实现:

以下是Order.java

package 模拟订单;

public class ShippingAddress {
private String name;
private String province;
private String city;
private String street;
private String tel;

ShippingAddress(String name,String province,String city,String street,String tel){
	this.name=name;
	this.province=province;
	this.city=city;
	this.street=street;
	this.tel=tel;
}

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

public String getProvince() {
	return province;
}

public void setProvince(String province) {
	this.province = province;
}

public String getCity() {
	return city;
}

public void setCity(String city) {
	this.city = city;
}

public String getStreet() {
	return street;
}

public void setStreet(String street) {
	this.street = street;
}

public String getTel() {
	return tel;
}

public void setTel(String tel) {
	this.tel = tel;
}

public String toString() {
	return province+"省"+city+"市"+street+"街道";
}
}

以下是Order.java

package 模拟订单;
import java.util.*;
public class Order {
private String orderNo;		//订单号
private Date createTime=new Date();	//提交时间(当前系统时间)
private double totalPrice;		//总价
private ShippingAddress address;		//收货地址
private String status;		//订单状态
//第一种构造方法
Order(String orderNo,double totalPrice){
	this.orderNo=orderNo;
	this.totalPrice=totalPrice;
	status="未付款";
}
//第二种构造方法,多一个地址
Order(String orderNo,double totalPrice,ShippingAddress address){
	this.orderNo=orderNo;
	this.totalPrice=totalPrice;
	this.address=address;
	status="未付款";

}

public String getOrderNo() {
	return orderNo;
}

public void setOrderNo(String orderNo) {
	this.orderNo = orderNo;
}

public Date getCreateTime() {
	return createTime;
}

public void setCreateTime(Date createTime) {
	this.createTime = createTime;
}

public double getTotalPrice() {
	return totalPrice;
}

public void setTotalPrice(double totalPrice) {
	this.totalPrice = totalPrice;
}

public ShippingAddress getAddress() {
	return address;
}

public void setAddress(ShippingAddress address) {
	this.address = address;
}

public String getStatus() {
	return status;
}

public void setStatus(String status) {
	this.status = status;
}

public String toString(ShippingAddress a) {
	return "订单号:"+orderNo+"\t用户名:"+a.getName()+"\t总价:"+totalPrice+"\t订单状态:"+status+"\t订单时间:"+createTime+"\n收货地址:"+a.toString();
}

}

以下是TextOrder.java

package 模拟订单;

public class OrderText {
	public static void main(String[] args) {
		//新建地址
		ShippingAddress ad1=new ShippingAddress("夏新澳", "江苏", "扬州", "杭集", "1111000111");
		//第一种构造方法创建的订单
		Order order1=new Order("10000001", 150);
		System.out.println(order1.toString(ad1));
		
		//第二种构造方法创建的订单
		Order order2=new Order("10000002",480,ad1);
		System.out.println(order2.toString(order2.getAddress()));
		
		//修改订单一的订单状态
		order1.setStatus("已付款");
		System.out.println(order1.toString(ad1));

		//修改订单一的地址
		ad1.setStreet("汶河");
		//输出信息
		System.out.println(order1.toString(ad1));


	}
}

运行结果:

订单号:10000001 用户名:夏新澳 总价:150.0 订单状态:未付款 订单时间:Thu Feb 28 18:53:36 CST 2019
收货地址:江苏省扬州市杭集街道
订单号:10000002 用户名:夏新澳 总价:480.0 订单状态:未付款 订单时间:Thu Feb 28 18:53:36 CST 2019
收货地址:江苏省扬州市杭集街道
订单号:10000001 用户名:夏新澳 总价:150.0 订单状态:已付款 订单时间:Thu Feb 28 18:53:36 CST 2019
收货地址:江苏省扬州市杭集街道
订单号:10000001 用户名:夏新澳 总价:150.0 订单状态:已付款 订单时间:Thu Feb 28 18:53:36 CST 2019
收货地址:江苏省扬州市汶河街道

你可能感兴趣的:(题目)