一、
设计店铺类Store,属性包括店铺名称、店铺地址、员工人数、注册资金;方法包括开店、闭店、购物。
设计店铺类子类:
直营店DirectSale,继承店铺类,属性包含店长姓名、送货工人人数、商品起送金额、特殊商品折扣比率;方法包括送货。
加盟店Franchise,继承店铺类,属性包含加盟商姓名、加盟金额、加盟时间(字符串);方法包括解约。
折扣店Discount,继承店铺类,属性包括最大折扣、最小折扣、是否打折;方法包括打折。
要求:
- 所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。
- 子类继承父类时,重写父类开店、闭店、购物方法,方法体为输出开店闭店时间。
- 参观某店,输出这个店铺的全部信息(例如参观直营店,输出店铺信息及店长名称、起送金额等)。
- 手动输入(直营店、加盟店、折扣店),判断输入内容,实例化不同子类对象,初始化店铺信息。
- 去某店购物,直营店要求输入购买金额判断是否能够配送,判断送货工人人数是否能够配送;加盟店要求输入加盟金额,判断是否可以加盟;折扣店输入购买金额,判断是否开始打折,如果未开始打折,输出对不起,未开始打折活动,如果以开始打折,输出最大折扣和最小折扣。使用instanceof关键字判断
- 编写测试类完成相关功能输入和输出
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();
}
}
}