第一题
完成以下题目
要求:
定义一个人类(Person),有吃饭,睡觉,走路3种方法,其中吃饭方法定义为final 方法。
再定义一个银行家类(Banker),继承自人类,有自己的特有方法:投资(invest)。 重写睡觉,走路方法。
编写测试类,在测试类中生成一个人和一个银行家,然后分别调用吃饭,睡觉,走 路方法,以及投资方法。
评分标准:
(7) 正确定义人类(Person)(10分)
(8) 正确定义银行家类(Banker)(10分)
(9) 正确定义编写测试类,并正确输出10分)
package Day0812;
public class demo2 {
public static void main(String[] args) {
Person p ;
p= new Banker();
p.walk();
p.eat();
p.sleep();
// p.invest();
Person p2 = new Coder();
p2.walk();
p2.eat();
p2.sleep();
}
}
package Day0812;
public class Person {
public void eat(){
System.out.println("吃饭");
}
public void sleep(){
System.out.println("睡觉");
}
public void walk(){
}
}
package Day0812;
public class Banker extends Person{
public void invest(){
System.out.println("投资");
}
@Override
public void walk() {
System.out.println("银行家在走路");
}
}
package Day0812;
public class Coder extends Person{
@Override
public void walk() {
System.out.println("程序员乘火箭");
}
public void wc(){
System.out.println("程序员说我在写代码");
}
}
第二题
定义一个汽水类Drink,汽水类中有一个味道的方法taste;定义一个可口可乐类,Coco继承自汽水类,重写父类的taste方法,输出“我是可口可乐,我是甜汽水”;定义一个盐汽水类SaltDrink继承自汽水类,重写父类的taste方法,输出“我是盐汽水,我是咸的”;定义一个测试类,提供一个售卖汽水的方法sell,接收用户输入的值,如果是“甜的”,就卖给客户甜的汽水,否则卖给客户咸的汽水
package Day0812pm;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入口味:");
String d = sc.next();
Drink drink = sell(d);
drink.taste();
}
private static Drink sell(String d) {
Drink dri = null;
if("甜的".equals(d)){
dri = new Coco();
}else if("咸的".equals(d)){
dri = new SaltDrink();
}else{
System.out.println("输入错误!");
dri = new Drink();
}
return dri;
}
}
package Day0812pm;
public class Drink {
public void taste(){
}
}
package Day0812pm;
public class Coco extends Drink{
@Override
public void taste() {
System.out.println("我是可口可乐,我是甜汽水!");
}
}
package Day0812pm;
public class SaltDrink extends Drink{
@Override
public void taste() {
System.out.println("我是盐汽水,我是咸的!");
}
}
第三题
一、设计店铺类Store,属性包括店铺名称、店铺地址、员工人数、注册资金;方法包括****开店********、********闭店********、********购物********。****
设计店铺类子类:
直营店DirectSale,继承店铺类,属性包含店长姓名、送货工人人数、商品起送金额、特殊商品折扣比率;方法包括送货。
加盟店Franchise,继承店铺类,属性包含加盟商姓名、加盟金额、加盟时间(字符串);方法包括解约。
折扣店Discount,继承店铺类,属性包括最大折扣、最小折扣、是否打折;方法包括打折。
要求:
1、所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。
2、子类继承父类时,重写父类开店、闭店、购物方法,方法体为输出开店闭店时间。
3、参观某店,输出这个店铺的全部信息(例如参观直营店,输出店铺信息及店长名称、起送金额等)。
4、手动输入(直营店、加盟店、折扣店),判断输入内容,实例化不同子类对象,初始化店铺信息。
5、去某店购物,直营店要求输入购买金额判断是否能够配送,判断送货工人人数是否能够配送;加盟店要求输入加盟金额,判断是否可以加盟;折扣店输入购买金额,判断是否开始打折,如果未开始打折,输出对不起,未开始打折活动,如果以开始打折,输出最大折扣和最小折扣。使用instanceof关键字判断(提高)
6、编写测试类完成相关功能输入和输出
package Day0812pm1;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String t = null;
Store s1 = new Store("永远滴神","永远滴神大街",65,60000.00);
s1.print();
while(true){
System.out.println("请输入店铺类型:");
t = sc.next();
Store s = select(t);
s.openShop();
s.closeShop();
s1.print();
s.print();
s.shopping();
}
}
private static Store select(String t) {
Store sr = null;
if("直营店".equals(t)){
sr = new DirectSale("张三",12,15.0,0.8);
}else if("加盟店".equals(t)){
sr = new Franchise("李四",5000,"5年");
}else if("折扣店".equals(t)){
sr = new Discount(0.95,0.8,true);
}else{
System.out.println("输入错误!");
sr = new Store();
}
return sr;
}
}
package Day0812pm1;
public class Store {
private String shopName;//店铺名称、
private String shopAddr;//店铺地址、
private int num;//员工人数、
private double ReMoney;//注册资金
public void openShop(){
}
public void closeShop(){
}
public void shopping(){
}
public void print(){
System.out.println("店铺名称为:"+this.getShopName());
System.out.println("店铺地址为:"+this.getShopAddr());
System.out.println("员工人数为:"+this.getNum());
System.out.println("注册资金为:"+this.getReMoney());
}
public Store() {
super();
}
public Store(String shopName, String shopAddr, int num, double reMoney) {
super();
this.shopName = shopName;
this.shopAddr = shopAddr;
this.num = num;
this.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) {
this.ReMoney = reMoney;
}
}
package Day0812pm1;
public class Discount extends Store{
private double minDiscount;//、最小折扣
private double maxDiscount;//最大折扣
private boolean isNoD;//是否打折
public void discount(){
if(this.isNoD){
System.out.println("可以打折");
System.out.println("最小折扣是:"+this.minDiscount);
System.out.println("最大折扣为:"+this.maxDiscount);
}else{
System.out.println("对不起,未开始打折活动");
}
}
@Override
public void print(){
System.out.println("最小折扣是:"+this.minDiscount);
System.out.println("最大折扣为:"+this.maxDiscount);
System.out.println("是否打折:"+this.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("折扣店购物了");
}
public Discount() {
super();
}
public Discount(double minDiscount, double maxDiscount, boolean isNoD) {
super();
this.minDiscount = minDiscount;
this.maxDiscount = maxDiscount;
this.isNoD = isNoD;
}
public double getMinDiscount() {
return minDiscount;
}
public void setMinDiscount(double minDiscount) {
this.minDiscount = minDiscount;
}
public double getMaxDiscount() {
return maxDiscount;
}
public void setMaxDiscount(double maxDiscount) {
this.maxDiscount = maxDiscount;
}
public boolean isNoD() {
return isNoD;
}
public void setNoD(boolean isNoD) {
this.isNoD = isNoD;
}
}
package Day0812pm1;
import java.util.Scanner;
public class Franchise extends Store{
static Scanner sc = new Scanner(System.in);
private String busiName;//加盟商姓名、
private double fMoney;//加盟金额、
private String ftime;//加盟时间(字符串)
public static void cancel(double fMoney){
System.out.println("加盟店是否可以加盟,是否解约?");
System.out.println("请输入你想要加盟的金额:");
double m = sc.nextDouble();
if(fMoney>m){
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);
}
public Franchise() {
super();
}
public Franchise(String busiName, double fMoney, String ftime) {
super();
this.busiName = busiName;
this.fMoney = fMoney;
this.ftime = ftime;
}
public String getBusiName() {
return busiName;
}
public void setBusiName(String busiName) {
this.busiName = busiName;
}
public double getfMoney() {
return fMoney;
}
public void setfMoney(double fMoney) {
this.fMoney = fMoney;
}
public String getFtime() {
return ftime;
}
public void setFtime(String ftime) {
this.ftime = ftime;
}
}
package Day0812pm1;
import java.util.Scanner;
public class DirectSale extends Store{
static Scanner sc = new Scanner(System.in);
private String name;//店长姓名
private int deliveryNum;//送货工人人数
private double upToMoney;//商品起送金额、
private double discount;//特殊商品折扣比率
public static void deliver(double upToMoney,int deliveryNum){
System.out.println("请输入购买的金额:");
double m = sc.nextDouble();
if(m < upToMoney){
System.out.println("你所购买的商品金额不足,不可以配送!");
}else{
System.out.println("你购买的商品金额充足,可以配送!");
if(deliveryNum > 0){
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);
}
public DirectSale() {
super();
}
public DirectSale(String name, int deliveryNum, double upToMoney, double discount) {
super();
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;
}
}
第四题
二、设计金融产品类Financial,属性包括产品名称、产品介绍、起投金额、产品期限(int)、年化收益(百分数);方法包括发布、截止、投资。
设计金融产品类子类:
基金产品Fund,继承金融产品类,属性包括投资地区、投资人、投资金额
股票产品Shares,继承金融产品类,属性包括股票价值、购买价格、购买 笔数
要求:
1、所有父子类均完成get和set封装,以及构造方法(无参构造方法和有参构造方法)封装。
2、子类继承父类时,重写父类发布、截止、投资方法,方法体为输出发布、截止时间。
3、输入购买产品,判断实例化哪个子类对象,初始化父子类属性
4、投资,投资基金产品时,判断投资金额是否超过起投金额,如果未超过,提示投资失败,如果超过,输出基金产品完整信息并计算年化收益。(年化收益=投资金额期限年化收益)
5、投资,投资股票产品时,判断投资金额是否超过起投金额,如果未超过,提示投资失败,如果超过,输出股票产品完整信息并计算年化收益。年化收益=投资金额笔数期限*年化收益)
6、投资时使用instanceof关键字判断(提高)
package Day0812pm2;
import java.util.Scanner;
import Day0812pm1.DirectSale;
import Day0812pm1.Discount;
import Day0812pm1.Franchise;
import Day0812pm1.Store;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String witch = null;
Financial f = new Financial("中欧混合","光伏",6000.0,5,0.01);
f.print();
while(true){
System.out.println("输入你要购买产品:");
witch = sc.next();
f = choice(witch);
f.invest();
f.issue();
f.abort();
}
}
private static Financial choice(String witch) {
Financial fc = null;
if("基金产品".equals(witch)){
fc = new Fund("山东","张三",9000.0);
}else if("股票产品".equals(witch)){
fc = new Shares(1000.0,5000.0,10);
}else{
System.out.println("输入错误!");
fc = new Financial();
}
return fc;
}
}
package Day0812pm2;
public class Financial {
private String fname="中欧混合";//产品名称、
private String fintroduce="光伏";//产品介绍、
private double flauchMoney=6000.01;//起投金额、
private int fdeadline=5;//产品期限(int)、
private double fannualized=0.01;//年化收益(百分数)
public void issue(){
}
public void abort(){
}
public void invest(){
}
public void print(){
System.out.println("产品名称为:"+this.getFname()
+"\n"+"产品介绍:"+this.getFintroduce()
+"\n"+"起投金额:"+this.getFlauchMoney()
+"\n"+"产品期限(int):"+this.getFdeadline()
+"\n"+"年化收益(百分数):"+this.getFannualized());
}
public Financial() {
super();
}
public Financial(String fname, String fintroduce, double flauchMoney, int fdeadline, double fannualized) {
super();
this.fname = fname;
this.fintroduce = fintroduce;
this.flauchMoney = flauchMoney;
this.fdeadline = fdeadline;
this.fannualized = fannualized;
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public String getFintroduce() {
return fintroduce;
}
public void setFintroduce(String fintroduce) {
this.fintroduce = fintroduce;
}
public double getFlauchMoney() {
return flauchMoney;
}
public void setFlauchMoney(double flauchMoney) {
this.flauchMoney = flauchMoney;
}
public int getFdeadline() {
return fdeadline;
}
public void setFdeadline(int fdeadline) {
this.fdeadline = fdeadline;
}
public double getFannualized() {
return fannualized;
}
public void setFannualized(double fannualized) {
this.fannualized = fannualized;
}
}
package Day0812pm2;
import java.util.Scanner;
public class Shares extends Financial{
private double value;//股票价值、
private double price;//购买价格、
private int num;//购买笔数
static Scanner sc = new Scanner(System.in);
@Override
public void issue() {
System.out.println("发布时间为:2021年9月30日 9:00");
}
@Override
public void abort() {
System.out.println("截止时间为:2021年9月30日 19:00");
}
@Override
public void invest() {
System.out.println("投资");
System.out.println("请输入投资金额:");
this.price = sc.nextDouble();
if(this.price < super.getFlauchMoney()){
System.out.println("起投金额未超过,投资失败");
}else{
this.print();
}
}
@Override
public void print(){
System.out.println("产品名称为:"+super.getFname()
+"\n"+"产品介绍:"+super.getFintroduce()
+"\n"+"起投金额:"+super.getFlauchMoney()
+"\n"+"产品期限(int):"+super.getFdeadline()
+"\n"+"年化收益(百分数):"+super.getFannualized());
System.out.println("股票价值:"+this.getValue()
+"\n"+"购买价格:"+this.getPrice()
+"\n"+"购买笔数"+this.getNum());
System.out.println("年化收益为:"+
(this.getPrice()*this.getNum()*super.getFdeadline()*this.getFannualized()));
}
public Shares() {
super();
}
public Shares(double value, double price, int num) {
super();
this.value = value;
this.price = price;
this.num = num;
}
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 int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
package Day0812pm2;
import java.util.Scanner;
public class Fund extends Financial{
private String area;//投资地区、
private String investor;//投资人、
private double inMoney;//投资金额
static Scanner sc = new Scanner(System.in);
@Override
public void issue() {
System.out.println("发布时间为:2021年9月30日 8:00");
}
@Override
public void abort() {
System.out.println("截止时间为:2200年9月30日 18:00");
}
@Override
public void invest() {
System.out.println("投资");
System.out.println("请输入投资金额:");
this.inMoney = sc.nextDouble();
if(this.inMoney < super.getFlauchMoney()){
System.out.println("起投金额未超过,投资失败");
}else{
this.print();
}
}
@Override
public void print(){
// this.invest();
System.out.println("产品名称为:"+super.getFname()
+"\n"+"产品介绍:"+super.getFintroduce()
+"\n"+"起投金额:"+super.getFlauchMoney()
+"\n"+"产品期限(int):"+super.getFdeadline()
+"\n"+"年化收益(百分数):"+super.getFannualized());
System.out.println("投资地区:"+this.getArea()
+"\n"+"投资人:"+this.getInvestor()
+"\n"+"投资金额"+this.getInMoney());
System.out.println("年化收益为:"+
(this.getInMoney()*super.getFdeadline()*this.getFannualized()));
}
public Fund() {
super();
}
public Fund(String area, String investor, double inMoney) {
super();
this.area = area;
this.investor = investor;
this.inMoney = inMoney;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getInvestor() {
return investor;
}
public void setInvestor(String investor) {
this.investor = investor;
}
public double getInMoney() {
return inMoney;
}
public void setInMoney(double inMoney) {
this.inMoney = inMoney;
}
}
"+super.getFannualized());
System.out.println("投资地区:"+this.getArea()
+"\n"+"投资人:"+this.getInvestor()
+"\n"+"投资金额"+this.getInMoney());
System.out.println("年化收益为:"+
(this.getInMoney()*super.getFdeadline()*this.getFannualized()));
}
public Fund() {
super();
}
public Fund(String area, String investor, double inMoney) {
super();
this.area = area;
this.investor = investor;
this.inMoney = inMoney;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getInvestor() {
return investor;
}
public void setInvestor(String investor) {
this.investor = investor;
}
public double getInMoney() {
return inMoney;
}
public void setInMoney(double inMoney) {
this.inMoney = inMoney;
}
}