继承综合案例

群主发普通红包。

某群有多名成员,群主给成员发普通红包。普通红包的规则:
1.群主的一笔金额,从群主余额中扣除,平均分成n等份,让成员领取。
2.成员领取红包后,保存到成员余额中。
请根据描述,完成案例中所有类的定义以及指定类之间的继承关系,并完成发红包的操作。

案例分析

file

案例代码

//定义父类
package honbao;
public class User{
    private String username;//姓名
    private double leftMoney;//余额
public User(){}
public User(String username,double leftMoney){
    this.username=username;
this.leftMoney=leftMoney;}
//get/set方法
public String getUsername(){
    return username;
}
public void setUsername(String user name){
    this.username=username;
}
public double getLeftMoney(){
    return leftMoney;
}
public void setLeftMoney(double leftMoney){
    this.leftMoney=leftMoney;
}
//展示信息的方法
public void show(){
System.out.println("用户名:"+username+",余额为:"+leftMoney+"元");
}
}
}

//定义群主类
package honbao;
import java.util.ArrayList;
public class QunZhu extends User {
    //定义群主的构造方法
    public QunZhu(){}
    //继承父类的构造方法
    public QunZhu(String username,double leftMoney){
        super(username,leftMoney);
    }
    public ArrayList<Double> send(double money, int count){
        ArrayList<Double> list =new ArrayList<>();
        double leftMoney=super.getLeftMoney();
        if(money>leftMoney){
            System.out.println("余额不足!");
            return null;
        }
        //如果发的钱能除尽;就平分;不能除尽,余下的钱给第一个抢到的;
        leftMoney-=money;
        super.setLeftMoney(leftMoney);
        int avg=(int)money/count;
        double avg1=avg;
        int mod=(int)money%count;
        double mod1=mod;
        for (int i = 0; i < count-1; i++) {
            list.add(avg1);
        }
        if(mod!=0){
            list.add(avg1+mod);
        }
        else list.add(avg1);
        System.out.println("红包发送成功!");
        return list;
    }
}

//定义群员类
package honbao;
import java.util.ArrayList;
public class Member extends User{
    //定义群员的构造方法
    public Member(){}
    //继承父类的构造方法
    public Member(String username,double leftMoney){
        super(username,leftMoney);
    }
    public void recieve(ArrayList<Double> list){
        double leftMoney=super.getLeftMoney();
        int len=list.size();
        if(len<1){
            double honbao=0;
            System.out.println("手慢了,下次快点吧!"); }
        else {
            double honbao=list.remove(len-1);
            leftMoney=super.getLeftMoney()+honbao;
            super.setLeftMoney(leftMoney);
            System.out.println("已经抢到红包,金额为:"+honbao+"元");}
    }
}

//定义执行函数
package honbao;
import java.util.ArrayList;
import java.util.Scanner;
public class Demo01 {
    public static void main(String[] args) {
        //定义一个群主
        QunZhu qz=new QunZhu("群主",200);
        Scanner sc =new Scanner(System.in);
        qz.show();
        System.out.println("请输入要发的红包金额:");
        double money=sc.nextDouble();
        System.out.println("请输出要发的红包个数:");
        int count=sc.nextInt();
        ArrayList<Double> list=qz.send(money,count);
        qz.show();
        //定义四个群员,等会假设分为三份,同时测试抢不到的情况
        Member m1=new Member("群员1",10);
        Member m2=new Member("群员2",10);
        Member m3=new Member("群员3",10);
        Member m4=new Member("群员4",10);
        m1.show();
        m2.show();
        m3.show();
        m4.show();
        //分别抢红包
        System.out.println("群员1:");
        m1.recieve(list);
        System.out.println("群员2:");
        m2.recieve(list);
        System.out.println("群员3:");
        m3.recieve(list);
        System.out.println("群员4:");
        m4.recieve(list);
        //在分别show一下
        qz.show();
        m1.show();
        m2.show();
        m3.show();
        m4.show();
    }
}

运行结果

file