Java实现3. 綜合菜例:群主发红包 群主发普通红包。某群有多名成员,群主给成员发普通红包。 普通红包的规則: (1)群主的一笔金额,从群主余额中和除,分成口份,让成员领取随机金额(假设隨机金额在0.01 与剩余平均債*2之 间)。 (2) 成员领取红包后,存儲到成员的余额中。 请根据上述描选,完成案例中所有类的定义以及指定类之间的 继承关系,并完成发红包。领红包的採作。
时间: 2024-02-15 12:01:41 浏览: 70
Java基础之发红包案例
好的,根据您的要求,我先定义一些类和它们之间的继承关系:
1. 账户类(Account):包含账户余额(balance)和账户ID(accountId)两个属性,以及存款(deposit)和取款(withdraw)两个方法。
2. 群主账户类(GroupOwnerAccount):继承自账户类,包含发红包(sendRedPacket)方法,该方法用于发普通红包。
3. 成员账户类(MemberAccount):继承自账户类,包含领红包(receiveRedPacket)方法,该方法用于领取普通红包。
4. 红包类(RedPacket):包含红包金额(amount)和红包份数(number)两个属性,以及随机领取红包(getRandomAmount)方法,该方法用于随机领取红包。
下面是具体的实现代码:
```java
// 账户类
public class Account {
private double balance;
private String accountId;
public Account(double balance, String accountId) {
this.balance = balance;
this.accountId = accountId;
}
public double getBalance() {
return balance;
}
public void deposit(double amount) {
balance += amount;
}
public void withdraw(double amount) {
balance -= amount;
}
}
// 群主账户类
public class GroupOwnerAccount extends Account {
public GroupOwnerAccount(double balance, String accountId) {
super(balance, accountId);
}
public void sendRedPacket(int number) {
double amount = getBalance() / number;
RedPacket redPacket = new RedPacket(amount, number);
for (int i = 0; i < number; i++) {
double randomAmount = redPacket.getRandomAmount();
withdraw(randomAmount);
System.out.println("发放红包" + (i + 1) + ",金额为:" + randomAmount);
}
}
}
// 成员账户类
public class MemberAccount extends Account {
public MemberAccount(double balance, String accountId) {
super(balance, accountId);
}
public void receiveRedPacket(double amount) {
deposit(amount);
System.out.println("领取红包成功,金额为:" + amount);
}
}
// 红包类
public class RedPacket {
private double amount;
private int number;
public RedPacket(double amount, int number) {
this.amount = amount;
this.number = number;
}
public double getRandomAmount() {
double minAmount = 0.01;
double maxAmount = amount / number * 2;
double randomAmount = minAmount + Math.random() * (maxAmount - minAmount);
amount -= randomAmount;
number--;
return randomAmount;
}
}
```
以上就是实现代码,您可以根据需要进行修改。在发红包和领红包时,只需要创建相应的账户对象,并调用对应的方法即可。
阅读全文