11.27
[实验任务一]:财务审批
某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。
实验要求:
- 提交类图;
- 提交源代码;
// PurchaseRequest.java
package Responsibility;
public class PurchaseRequest {
private int id;
private int money;
public PurchaseRequest(int id, int money) {
this.id = id;
this.money = money;
}
public void setMoney(int money) {
this.money = money;
}
public void setId(int id) {
this.id = id;
}
public int getMoney() {
return money;
}
public int getId() {
return id;
}
}
// Leader.java
package Responsibility;
public abstract class Leader {
protected String name;
protected Leader successor;
public Leader(String name) {
this.name = name;
}
public void setSuccessor(Leader successor) {
this.successor = successor;
}
public abstract void handleRequest(PurchaseRequest request);
}
// Director.java
package Responsibility;
public class Director extends Leader {
public Director(String name) {
super(name);
}
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getMoney() <= 10000) {
System.out.println("主任" + name + "审批采购单: " + request.getId() +
", 金额: " + request.getMoney() + "元");
} else {
if (successor != null) {
successor.handleRequest(request);
}
}
}
}
// DepartmentManager.java
package Responsibility;
public class DepartmentManager extends Leader {
public DepartmentManager(String name) {
super(name);
}
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getMoney() <= 50000) {
System.out.println("部门经理" + name + "审批采购单: " + request.getId() +
", 金额: " + request.getMoney() + "元");
} else {
if (successor != null) {
successor.handleRequest(request);
}
}
}
}
// Manager.java
package Responsibility;
public class Manager extends Leader {
public Manager(String name) {
super(name);
}
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getMoney() <= 100000) {
System.out.println("副总经理" + name + "审批采购单: " + request.getId() +
", 金额: " + request.getMoney() + "元");
} else {
if (successor != null) {
successor.handleRequest(request);
}
}
}
}
// GeneralManager.java
package Responsibility;
public class GeneralManager extends Leader {
public GeneralManager(String name) {
super(name);
}
@Override
public void handleRequest(PurchaseRequest request) {
if (request.getMoney() <= 200000) {
System.out.println("总经理" + name + "审批采购单: " + request.getId() +
", 金额: " + request.getMoney() + "元");
} else {
System.out.println("召开职工大会审批采购单: " + request.getId() +
", 金额: " + request.getMoney() + "元");
}
}
}
// Client.java
package Responsibility;
public class Client {
public static void main(String[] args) {
// 创建职责链
Leader director = new Director("张三");
Leader departmentManager = new DepartmentManager("李四");
Leader manager = new Manager("王五");
Leader generalManager = new GeneralManager("赵六");
// 设置职责链
director.setSuccessor(departmentManager);
departmentManager.setSuccessor(manager);
manager.setSuccessor(generalManager);
// 测试不同金额的采购单
PurchaseRequest request1 = new PurchaseRequest(1, 8000); // 主任审批
PurchaseRequest request2 = new PurchaseRequest(2, 30000); // 部门经理审批
PurchaseRequest request3 = new PurchaseRequest(3, 80000); // 副总经理审批
PurchaseRequest request4 = new PurchaseRequest(4, 150000); // 总经理审批
PurchaseRequest request5 = new PurchaseRequest(5, 250000); // 职工大会审批
director.handleRequest(request1);
director.handleRequest(request2);
director.handleRequest(request3);
director.handleRequest(request4);
director.handleRequest(request5);
}
}
- 注意编程规范。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步