题目:
设计店铺类Store,属性包括店铺名称、店铺地址、员工人数、注册资金;方法包括开店、闭店、购物。
设计店铺类子类:
直营店DirectSale,继承店铺类,属性包含店长姓名、送货工人人数、商品起送金额、特殊商品折扣比率;方法包括送货。
加盟店Franchise,继承店铺类,属性包含加盟商姓名、加盟金额、加盟时间(字符串);方法包括解约。
折扣店Discount,继承店铺类,属性包括最大折扣、最小折扣、是否打折;方法包括打折。
要求:
1、所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。
2、子类继承父类时,重写父类开店、闭店、购物方法,方法体为输出开店闭店时间。
3、参观某店,输出这个店铺的全部信息(例如参观直营店,输出店铺信息及店长名称、起送金额等)。
4、手动输入(直营店、加盟店、折扣店),判断输入内容,实例化不同子类对象,初始化店铺信息。
5、去某店购物,直营店要求输入购买金额判断是否能够配送,判断送货工人人数是否能够配送;加盟店要求输入加盟金额,判断是否可以加盟;折扣店输入购买金额,判断是否开始打折,如果未开始打折,输出对不起,未开始打折活动,如果以开始打折,输出最大折扣和最小折扣。使用instanceof关键字判断(提高)
6、编写测试类完成相关功能输入和输出
package com.jsu.java;
public class Store {
private String shopName;//店铺名称
private String shopAddr;//店铺地址
private int num;//员工人数
private double ReMoney;//注册资金
public Store() {
}
public Store(String shopName, String shopAddr, int num, double reMoney) {
this.shopName = shopName;
this.shopAddr = shopAddr;
this.num = num;
ReMoney = reMoney;
}
public String getShopName() {
return shopName;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public String getShopAddr() {
return shopAddr;
}
public void setShopAddr(String shopAddr) {
this.shopAddr = shopAddr;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public double getReMoney() {
return ReMoney;
}
public void setReMoney(double reMoney) {
ReMoney = reMoney;
}
public void print(){
System.out.println("店铺名称为:"+this.getShopName());
System.out.println("店铺地址为:"+this.getShopAddr());
System.out.println("员工人数为:"+this.getNum());
System.out.println("注册资金为:"+this.getReMoney());
}
public void openShop(){//开店
}
public void closeShop(){//闭店
}
public void shopping(){//购物
}
}
package com.jsu.java;
public class Discount extends Store{
private double minDiscount;//最小折扣
private double maxDiscount;//最大折扣
private boolean isNoD;//是否打折
public Discount() {
super();
}
public Discount(double minDiscount, double maxDiscount, boolean isNoD) {
this.minDiscount = minDiscount;
this.maxDiscount = maxDiscount;
this.isNoD = isNoD;
}
@Override
public void openShop() {
System.out.println("折扣店开店时间为6:00");
}
@Override
public void closeShop() {
System.out.println("折扣店闭店时间为22:00");
}
@Override
public void shopping() {
System.out.println("折扣店购物了");
}
@Override
public void print(){
System.out.println("最小折扣是:"+this.minDiscount);
System.out.println("最大折扣为:"+this.maxDiscount);
System.out.println("是否打折:"+this.isNoD);
}
public void discount(){
if(this.isNoD)
{
System.out.println("打折活动开始啦!!!");
System.out.println("最小折扣是:"+this.minDiscount);
System.out.println("最大折扣为:"+this.maxDiscount);
}
else {
System.out.println("对不起,还未开始打折活动");
}
}
}
package com.jsu.java;
import java.util.Scanner;
public class Franchise extends Store{
private String busiName;//加盟商姓名
private double fMoney;//加盟金额
private String ftime;//加盟时间(字符串)
public Franchise() {
}
public Franchise(String busiName, double fMoney, String ftime) {
this.busiName = busiName;
this.fMoney = fMoney;
this.ftime = ftime;
}
public static void cancel(double fMoney) {
System.out.println("加盟店是否可以加盟,是否解约?");
System.out.println("请输入你想要加盟的金额:");
Scanner scanner = new Scanner(System.in);
double money = scanner.nextInt();
if(fMoney>money){
System.out.println("抱歉,你的加盟费用不够,不能加盟!");
}else {
System.out.println("加盟成功!祝贺!!");
}
}
@Override
public void print(){
System.out.println("加盟商姓名是:"+this.busiName);
System.out.println("至少的加盟金额为:"+this.fMoney);
System.out.println("加盟时间最短为为:"+this.ftime);
}
@Override
public void openShop() {
System.out.println("加盟店开店时间为7:30");
}
@Override
public void closeShop() {
System.out.println("加盟店闭店时间为21:00");
}
@Override
public void shopping() {
System.out.println("加盟店购物了");
cancel(this.fMoney);
}
}
package com.jsu.java;
import java.util.Scanner;
public class DirectSale extends Store{
private String name;//店长姓名
private int deliveryNum;//送货工人人数
private double upToMoney;//商品起送金额
private double discount;//特殊商品折扣比率
public DirectSale() {
super();
}
public DirectSale(String name, int deliveryNum, double upToMoney, double discount) {
this.name = name;
this.deliveryNum = deliveryNum;
this.upToMoney = upToMoney;
this.discount = discount;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getDeliveryNum() {
return deliveryNum;
}
public void setDeliveryNum(int deliveryNum) {
this.deliveryNum = deliveryNum;
}
public double getUpToMoney() {
return upToMoney;
}
public void setUpToMoney(double upToMoney) {
this.upToMoney = upToMoney;
}
public double getDiscount() {
return discount;
}
public void setDiscount(double discount) {
this.discount = discount;
}
public static void deliver(double upToMoney, double deliveryNum) {
System.out.println("请输入购买的金额:");
Scanner scanner = new Scanner(System.in);
double money = scanner.nextInt();
if(money>upToMoney){
System.out.println("你购买的商品金额充足,可以配送!");
if(deliveryNum > 0){
System.out.println("有骑手空闲,骑手正在为你送货!");
}else{
System.out.println("因为骑手人数不够,不能配送!请稍后!");
}
}else {
System.out.println("你所购买的商品不支持配送!");
}
}
@Override
public void openShop() {
System.out.println("直营店开店时间为8:00");
}
@Override
public void closeShop() {
System.out.println("直营店闭店时间为23:00");
}
@Override
public void shopping() {
System.out.println("直营店购物了");
deliver(this.getUpToMoney(),this.getDeliveryNum());
}
@Override
public void print(){
System.out.println("店长姓名是:"+this.name);
System.out.println("送货工人人数为:"+this.deliveryNum);
System.out.println("商品起送金额为:"+this.upToMoney);
System.out.println("特殊商品折扣比率为:"+this.discount);
}
}
package com.jsu.java;
import java.util.Scanner;
import static javafx.beans.binding.Bindings.select;
public class Demo001 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Store store = new Store("翔霖商店","6799大街",65,65000.00);
store.print();
String str;
while (true){
System.out.println("请输入店铺类型:");
str = sc.next();
Store store1 = select(str);
store1.openShop();
store1.closeShop();
store.print();
store1.print();
store1.shopping();
}
}
private static Store select(String str){
Store sr = null;
if("DirectSale".equals(str)){
sr = new DirectSale("张三",12,15.0,0.8);
}else if("Franchise".equals(str)){
sr = new Franchise("李四",5000,"5年");
}else if("Discount".equals(str)){
sr = new Discount(0.95,0.8,true);
}else{
System.out.println("输入错误!");
sr = new Store();
}
return sr;
}
}
结果展示:
Discount:
Franchise:
另一种情况:
DirectSale:
另一种情况: