JAVA day08:代码作业(多态)

一、

设计店铺类Store,属性包括店铺名称、店铺地址、员工人数、注册资金;方法包括开店、闭店、购物。

设计店铺类子类:

直营店DirectSale,继承店铺类,属性包含店长姓名、送货工人人数、商品起送金额、特殊商品折扣比率;方法包括送货。

加盟店Franchise,继承店铺类,属性包含加盟商姓名、加盟金额、加盟时间(字符串);方法包括解约。

折扣店Discount,继承店铺类,属性包括最大折扣、最小折扣、是否打折;方法包括打折。

要求:

  1. 所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。
  2. 子类继承父类时,重写父类开店、闭店、购物方法,方法体为输出开店闭店时间。
  3. 参观某店,输出这个店铺的全部信息(例如参观直营店,输出店铺信息及店长名称、起送金额等)。
  4. 手动输入(直营店、加盟店、折扣店),判断输入内容,实例化不同子类对象,初始化店铺信息。
  5. 去某店购物,直营店要求输入购买金额判断是否能够配送,判断送货工人人数是否能够配送;加盟店要求输入加盟金额,判断是否可以加盟;折扣店输入购买金额,判断是否开始打折,如果未开始打折,输出对不起,未开始打折活动,如果以开始打折,输出最大折扣和最小折扣。使用instanceof关键字判断
  6. 编写测试类完成相关功能输入和输出

package ZuoYe1;
//父类
public class Store {
	private String name;//店铺名称
	private String address;//店铺地址
	private int employeesNum;//员工人数
	private double fund;//注册资金
	//开店、闭店、购物
	public void open(){
			
	}
	public void close(){
			
	}
	public void shop(){
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public int getEmployeesNum() {
		return employeesNum;
	}
	public void setEmployeesNum(int employeesNum) {
		this.employeesNum = employeesNum;
	}
	public double getFund() {
		return fund;
	}
	public void setFund(double fund) {
		this.fund = fund;
	}
	public Store(String name, String address, int employeesNum, double fund) {
		super();
		this.name = name;
		this.address = address;
		this.employeesNum = employeesNum;
		this.fund = fund;
	}
	public Store() {
		super();
		// TODO Auto-generated constructor stub
	}
}

package ZuoYe1;

import java.util.Scanner;

//直营店
public class DirectSale extends Store{
	private String managerName;//店长姓名
	private int workersNum;//送货工人人数
	private double amountSend;//商品起送金额
	private double specialRate;//特殊商品折扣比率
	//方法:送货
	public void delivery(){
	
	}
	public String getManagerName() {
		return managerName;
	}
	public void setManagerName(String managerName) {
		this.managerName = managerName;
	}
	public int getWorkersNum() {
		return workersNum;
	}
	public void setWorkersNum(int workersNum) {
		this.workersNum = workersNum;
	}
	public double getAmountSend() {
		return amountSend;
	}
	public void setAmountSend(double amountSend) {
		this.amountSend = amountSend;
	}
	public double getSpecialRate() {
		return specialRate;
	}
	public void setSpecialRate(double specialRate) {
		this.specialRate = specialRate;
	}
	public DirectSale(String name, String address, int employeesNum,
			double fund, String managerName, int workersNum,
			double amountSend, double specialRate) {
		super(name, address, employeesNum, fund);
		this.managerName = managerName;
		this.workersNum = workersNum;
		this.amountSend = amountSend;
		this.specialRate = specialRate;
	}
	public DirectSale() {
		super();
		// TODO Auto-generated constructor stub
	}
	public DirectSale(String name, String address, int employeesNum, double fund) {
		super(name, address, employeesNum, fund);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void open() {
		System.out.println("直营店开店时间为:9:00");
	}
	@Override
	public void close() {
		System.out.println("直营店闭店时间为:17:00");
	}
	@Override
	public void shop() {
		System.out.println("请输入金额判断是否够起送:");
		Scanner sc=new Scanner(System.in);
		double amount = sc.nextDouble();
		if(amount>amountSend){
			System.out.println("可以起送");
			System.out.println("请输入所需送货工人人数判断是否够起送:");
			int workers = sc.nextInt();
			if(workers<workersNum){
				System.out.println("送货工人人数能够配送");
			}else{
				System.out.println("送货工人人数不能够配送");
			}
		}else{
			System.out.println("不够起送");
		}
	}
}

package ZuoYe1;

import java.util.Scanner;

//加盟店
public class Franchise extends Store{
	private String joinName;//加盟商姓名
	private double joinMoney;//加盟金额
	private String joinTime;//加盟时间(字符串)
	//方法:解约
	public void unwind(){
	
	}
	public String getJoinName() {
		return joinName;
	}
	public void setJoinName(String joinName) {
		this.joinName = joinName;
	}
	public double getJoinMoney() {
		return joinMoney;
	}
	public void setJoinMoney(double joinMoney) {
		this.joinMoney = joinMoney;
	}
	public String getJoinTime() {
		return joinTime;
	}
	public void setJoinTime(String joinTime) {
		this.joinTime = joinTime;
	}
	public Franchise(String name, String address, 
			int employeesNum, double fund, String joinName, 
			double joinMoney,String joinTime) {
		super(name, address, employeesNum, fund);
		this.joinName = joinName;
		this.joinMoney = joinMoney;
		this.joinTime = joinTime;
	}
	public Franchise() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Franchise(String name, String address, 
			int employeesNum, double fund) {
		super(name, address, employeesNum, fund);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void open() {
		System.out.println("加盟店开店时间为:8:00");
	}
	@Override
	public void close() {
		System.out.println("加盟店闭店时间为:18:00");
	}
	@Override
	public void shop() {
		System.out.println("请输入加盟金额:");
		Scanner sc=new Scanner(System.in);
		double join = sc.nextDouble();
		if(join>joinMoney){
			System.out.println("可以加盟");
		}else{
			System.out.println("不够加盟");
		}
	}
}

package ZuoYe1;

import java.util.Scanner;

//折扣店
public class Discount extends Store{
	private double maxRate;//最大折扣
	private double minRate;//最小折扣
	private boolean rateBoolean;//是否打折
	//方法:打折
	public void discount(){
		
	}
	public double getMaxRate() {
		return maxRate;
	}
	public void setMaxRate(double maxRate) {
		this.maxRate = maxRate;
	}
	public double getMinRate() {
		return minRate;
	}
	public void setMinRate(double minRate) {
		this.minRate = minRate;
	}
	public boolean isRateBoolean() {
		return rateBoolean;
	}
	public void setRateBoolean(boolean rateBoolean) {
		this.rateBoolean = rateBoolean;
	}
	public Discount(String name, String address, int employeesNum,
			double fund, double maxRate, double minRate,
			boolean rateBoolean) {
		super(name, address, employeesNum, fund);
		this.maxRate = maxRate;
		this.minRate = minRate;
		this.rateBoolean = rateBoolean;
	}
	public Discount() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Discount(String name, String address, int employeesNum,
			double fund) {
		super(name, address, employeesNum, fund);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void open() {
		System.out.println("折扣店开店时间为:7:00");
	}
	@Override
	public void close() {
		System.out.println("折扣店闭店时间为:21:00");
	}
	@Override
	public void shop() {
		System.out.println("请输入购买金额:");
		Scanner sc=new Scanner(System.in);
		double money = sc.nextDouble();
		if(money>1000){
			System.out.println("开始打折");
			rateBoolean=true;
			System.out.println("最大折扣为:"+maxRate);
			System.out.println("最小折扣为:"+maxRate);
		}else{
			System.out.println("对不起,未开始打折活动");
			rateBoolean=false;
		}
	}
}

package ZuoYe1;
//测试类
import java.util.Scanner;

public abstract class Test {
	public static void main(String[] args) {
		while(true){
			System.out.println("请输入店的名字:(直营店\t加盟店\t折扣店\t退出)");
			Scanner sc=new Scanner(System.in);
			String dian = sc.next();
			if("直营店".equals(dian)){
				DirectSale zhiYing=new DirectSale();
				zhiYing.setName("淳淳的直营店");
				zhiYing.setAddress("大学城");
				zhiYing.setEmployeesNum(6);
				zhiYing.setFund(10000);
				zhiYing.setManagerName("淳淳");
				zhiYing.setWorkersNum(6);
				zhiYing.setAmountSend(100);
				zhiYing.setSpecialRate(0.5);
				visit(zhiYing);
				zhiYing.shop();
			}else if("加盟店".equals(dian)){
				Franchise jiaMeng=new Franchise();
				jiaMeng.setName("淳淳的加盟店");
				jiaMeng.setAddress("大学城2");
				jiaMeng.setEmployeesNum(3);
				jiaMeng.setFund(10000);
				jiaMeng.setJoinName("淳淳");
				jiaMeng.setJoinMoney(10000);
				jiaMeng.setJoinTime("2021年8月12日");
				visit(jiaMeng);
				jiaMeng.shop();
			}else if("折扣店".equals(dian)){
				Discount jiaMeng=new Discount();
				jiaMeng.setName("淳淳的折扣店");
				jiaMeng.setAddress("大学城3");
				jiaMeng.setEmployeesNum(8);
				jiaMeng.setFund(10000);
				jiaMeng.setMaxRate(0.1);
				jiaMeng.setMinRate(0.8);
				jiaMeng.setRateBoolean(true);
				visit(jiaMeng);
				jiaMeng.shop();
			}else if("退出".equals(dian)){
				break;
			}
		}
	}
	public static void visit(Store s) {
		if(s instanceof DirectSale){
			DirectSale ds=(DirectSale)s;
			System.out.println("店铺名称:"+ds.getName()
			+"\n店铺地址:"+ds.getAddress()
			+"\n员工人数:"+ds.getEmployeesNum()
			+"\n注册资金:"+ds.getFund()
			+"\n店长姓名:"+ds.getManagerName()
			+"\n送货工人人数:"+ds.getWorkersNum()
			+"\n商品起送金额:"+ds.getAmountSend()
			+"\n特殊商品折扣比率:"+ds.getSpecialRate());
		}else if(s instanceof Franchise){
			Franchise ds=(Franchise)s;
			System.out.println("店铺名称:"+ds.getName()
			+"\n店铺地址:"+ds.getAddress()
			+"\n员工人数:"+ds.getEmployeesNum()
			+"\n注册资金:"+ds.getFund()
			+"\n加盟商姓名:"+ds.getJoinName()
			+"\n加盟金额:"+ds.getJoinMoney()
			+"\n加盟时间:"+ds.getJoinTime());
		}else if(s instanceof Discount){
			Discount ds=(Discount)s;
			System.out.println("店铺名称:"+ds.getName()
			+"\n店铺地址:"+ds.getAddress()
			+"\n员工人数:"+ds.getEmployeesNum()
			+"\n注册资金:"+ds.getFund()
			+"\n最大折扣:"+ds.getMaxRate()
			+"\n最小折扣:"+ds.getMinRate()
			+"\n是否打折:"+ds.isRateBoolean());
		}
	}
}

 运行结果:

二、

设计金融产品类Financial,属性包括产品名称、产品介绍、起投金额、产品期限(int)、年化收益(百分数);方法包括发布、截止、投资。

设计金融产品类子类:

基金产品Fund,继承金融产品类,属性包括投资地区、投资人、投资金额

股票产品Shares,继承金融产品类,属性包括股票价值、购买价格、购买 笔数

要求:

1、所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。

2、子类继承父类时,重写父类发布、截止、投资方法,方法体为输出发布、截止时间。

3、输入购买产品,判断实例化哪个子类对象,初始化父子类属性

4、投资,投资基金产品时,判断投资金额是否超过起投金额,如果未超过,提示投资失败,如果超过,输出基金产品完整信息并计算年化收益。(年化收益=投资金额*期限*年化收益)

5、投资,投资股票产品时,判断投资金额是否超过起投金额,如果未超过,提示投资失败,如果超过,输出股票产品完整信息并计算年化收益。年化收益=投资金额*笔数*期限*年化收益)

6、投资时使用instanceof关键字判断

package ZuoYe2;
//父类
public class Financial {
	private String name;//产品名称
	private String introduce;//产品介绍
	private double money;//起投金额
	private int deadline;//产品期限(int)
	private double earnings;//年化收益(百分数)
	//方法包括发布、截止、投资
	public void publish(){
		
	}
	public void close(){
		
	}
	public void invest(){
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getIntroduce() {
		return introduce;
	}
	public void setIntroduce(String introduce) {
		this.introduce = introduce;
	}
	public double getMoney() {
		return money;
	}
	public void setMoney(double money) {
		this.money = money;
	}
	public int getDeadline() {
		return deadline;
	}
	public void setDeadline(int deadline) {
		this.deadline = deadline;
	}
	public double getEarnings() {
		return earnings;
	}
	public void setEarnings(double earnings) {
		this.earnings = earnings;
	}
	public Financial(String name, String introduce, double money, int deadline, double earnings) {
		super();
		this.name = name;
		this.introduce = introduce;
		this.money = money;
		this.deadline = deadline;
		this.earnings = earnings;
	}
	public Financial() {
		super();
		// TODO Auto-generated constructor stub
	}
	
}

package ZuoYe2;
//基金产品
public class Fund extends Financial{
	//属性包括投资地区、投资人、投资金额
	private String area;//投资地区
	private String investors;//投资人
	private double investmentAmount;//投资金额
	public String getArea() {
		return area;
	}
	public void setArea(String area) {
		this.area = area;
	}
	public String getInvestors() {
		return investors;
	}
	public void setInvestors(String investors) {
		this.investors = investors;
	}
	public double getInvestmentAmount() {
		return investmentAmount;
	}
	public void setInvestmentAmount(double investmentAmount) {
		this.investmentAmount = investmentAmount;
	}
	public Fund(String area, String investors, double investmentAmount) {
		super();
		this.area = area;
		this.investors = investors;
		this.investmentAmount = investmentAmount;
	}
	public Fund() {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public void publish() {
		System.out.println("基金产品发布时间为2021年");
	}
	@Override
	public void close() {
		System.out.println("基金产品截至时间为2026年");
	}
	@Override
	public void invest() {
		if(investmentAmount>=super.getMoney()){
			System.out.println("产品名称"+super.getName()
			+"\n产品介绍"+super.getIntroduce()
			+"\n起投金额"+super.getMoney()
			+"\n产品期限"+super.getDeadline()
			+"\n年化收益"+super.getEarnings());
			System.out.println("投资地区"+area+"\n投资人"
		+investors+"\n投资金额"+investmentAmount);
			System.out.println("年化收益="
				+investmentAmount*super.getDeadline()*super.getEarnings());
		}else{
			System.out.println("投资失败");
		}
	}
}

package ZuoYe2;
//股票产品
public class Shares extends Financial{
	//属性包括股票价值、购买价格、购买笔数
	private double value;//股票价值
	private double price;//购买价格
	private double number;//购买笔数
	public double getValue() {
		return value;
	}
	public void setValue(double value) {
		this.value = value;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public double getNumber() {
		return number;
	}
	public void setNumber(double number) {
		this.number = number;
	}
	public Shares(double value, double price, double number) {
		super();
		this.value = value;
		this.price = price;
		this.number = number;
	}
	public Shares() {
		super();
		// TODO Auto-generated constructor stub
	}
	@Override
	public void publish() {
		System.out.println("股票产品发布时间为2017年");
	}
	@Override
	public void close() {
		System.out.println("股票产品截至时间为2022年");
	}
	@Override
	public void invest() {
		if(price>=super.getMoney()){
			System.out.println("产品名称"+super.getName()
			+"\n产品介绍"+super.getIntroduce()
			+"\n起投金额"+super.getMoney()
			+"\n产品期限"+super.getDeadline()
			+"\n年化收益"+super.getEarnings());
			System.out.println("股票价值"+value+"\n购买价格"
		+price+"\n购买笔数"+number);
			System.out.println("年化收益="
				+price * number * super.getDeadline()*super.getEarnings());
		}else{
			System.out.println("投资失败");
		}
	}
}

package ZuoYe2;
//测试类
public class Test {

	public static void main(String[] args) {
		Fund f=new Fund("辽宁","淳淳",100000);
		f.setMoney(5);
		f.setDeadline(6);
		f.setEarnings(7);
		f.setName("淳淳基金");
		f.setIntroduce("我是基金的产品介绍");
		Shares s=new Shares(100,100,100);
		s.setMoney(5);
		s.setDeadline(6);
		s.setEarnings(7);
		s.setName("淳淳股票");
		s.setIntroduce("我是股票的产品介绍");
		
		panduan(f);
		panduan(s);
	}
	public static void panduan(Financial f){
		if(f instanceof Fund){
			Fund ff=(Fund)f;
			System.out.println("基金产品:");
			ff.invest();
		}else if(f instanceof Shares){
			Shares ff=(Shares)f;
			System.out.println("股票产品:");
			ff.invest();
		}
	}
}

运行结果:

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值