音像店打折

很久很久以前,有个音像店经营VCD,DVD,D9,磁带等商品。这几天生意不好老板想打折:

买VCD 满800元送珍藏版蓝光碟片一张;

D9满8张打九折

请用java代码实现;

思考:因为音像店的种类很多,但是都用共性,如:商品名称、价格、数量等,故抽出中的音像制品类,各个子品种继承音像制品类,在添加自己特有的属性比如:内容,歌手姓名,赠送礼物等;

总的音像制品类:

package com.hubin.practice.pojo;

public class Audiovisual {
	private String name;
	private Double price;
	private Integer num;
	private Double signalTotalPrice;
	
	public Audiovisual() {
		super();
	}

	public Audiovisual(String name, Double price, Integer num,
			Double signalTotalPrice) {
		super();
		this.name = name;
		this.price = price;
		this.num = num;
		this.signalTotalPrice = signalTotalPrice;
	}

	public Double getSignalTotalPrice() {
		return signalTotalPrice;
	}
	public void setSignalTotalPrice(Double signalTotalPrice) {
		this.signalTotalPrice = signalTotalPrice;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public Double getPrice() {
		return price;
	}

	public void setPrice(Double price) {
		this.price = price;
	}

	public Integer getNum() {
		return num;
	}
	public void setNum(Integer num) {
		this.num = num;
	}

	@Override
	public String toString() {
		return "商品名称" + name + "商品价格" + price + "商品数量"
				+ num + "商品单价" + signalTotalPrice ;
	}
	
}

VCD类:

package com.hubin.practice.pojo;

public class VCD extends Audiovisual{
	private String gift;

	public VCD(String gift) {
		this.gift = gift;
	}
	
	public VCD() {
		super();
	}

	public String getGift() {
		return gift;
	}

	public void setGift(String gift) {
		this.gift = gift;
	}

	@Override
	public String toString() {
		return "商品名称" + getName()
				+ "商品单价" + getPrice() + "商品数量" + getNum() + "单品总价为"
						+ getSignalTotalPrice() 
				;
	}
	
}

D9类

package com.hubin.practice.pojo;

public class D9 extends Audiovisual{
	
}

通过在页面输入名称,数量,价格使用代码来判断是否赠送礼物,是否打折,并且打印单品的明细,当输入商品名称为0,点击回车的时候,最后显示总的价格,并且打印出来

package com.hubin.practice.Program;

import java.util.Scanner;

import com.hubin.practice.pojo.Audiovisual;
import com.hubin.practice.pojo.D9;
import com.hubin.practice.pojo.VCD;

public class Program {
	public static void main(String[] args) {
		Double totalPrice = 0.0;
		while (true) {
			System.out.println("请输入名字");
			Scanner sc = new Scanner(System.in);
			String sysIn = sc.nextLine();
			if ("0".equals(sysIn)) {
				break;
			}
			Audiovisual aud = getProduct(sysIn);
			aud = getSpecificProduct(aud);
			totalPrice += aud.getSignalTotalPrice();
		}
		System.out.println("总的价格是" + totalPrice + "元");
	}

	public static Audiovisual getProduct(String name) {
		Audiovisual aud = null;
		if ("VCD".equals(name)) {
			aud = new VCD();
		} else if ("D9".equals(name)) {
			aud = new D9();
		}
		System.out.println("请输入价格");
		Scanner scPrice = new Scanner(System.in);
		Double price = scPrice.nextDouble();
		System.out.println("请输入数量");
		Scanner scNum = new Scanner(System.in);
		Integer num = scPrice.nextInt();
		aud.setName(name);
		aud.setPrice(price);
		aud.setNum(num);
		return aud;
	}

	public static Audiovisual getSpecificProduct(Audiovisual aud) {

		Double signalTotalPrice = (double) (aud.getNum() * aud.getPrice());
		aud.setSignalTotalPrice(signalTotalPrice);
		if ("VCD".equals(aud.getName())) {
			if (signalTotalPrice > 800) {
				VCD vcd = (VCD) aud;
				vcd.setGift("蓝光碟片一张");
				System.out.println(vcd.toString()+ "价格满200元赠送" + vcd.getGift());
				return vcd;
			}
		}
		if ("D9".equals(aud.getName())) {
			if (aud.getNum() > 8) {
				aud.setSignalTotalPrice(signalTotalPrice * 0.9);
			}
		}
		System.out.println(aud.toString());
		return aud;

	}

}

这段代码虽然能够实现预想的功能,但是感觉不够整洁,扩展性也不好,希望自己以后多读书后可以改的更高效,这各就放这里给小白的我立一个flag。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值