24.11.18

[实验任务一]:财务审批
某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。
实验要求:

  1. 提交类图;
    image

  2. 提交源代码;
    package org.test.ruanjiansheji.zhizelian;

// 抽象审批人类
abstract class Approver {
protected Approver nextApprover;

// 设置下一个审批人
public void setNextApprover(Approver nextApprover) {
    this.nextApprover = nextApprover;
}

// 处理采购请求的方法
public abstract void handleRequest(PurchaseRequest request);

}

// 采购请求类
class PurchaseRequest {
private double amount;
private String description;

public PurchaseRequest(double amount, String description) {
    this.amount = amount;
    this.description = description;
}

public double getAmount() {
    return amount;
}

public String getDescription() {
    return description;
}

}

// 主任审批人
class Director extends Approver {

@Override
public void handleRequest(PurchaseRequest request) {
    if (request.getAmount() <= 10000) {
        System.out.println("主任审批通过采购单,金额:" + request.getAmount());
    } else if (nextApprover != null) {
        nextApprover.handleRequest(request);
    }
}

}

// 部门经理审批人
class Manager extends Approver {

@Override
public void handleRequest(PurchaseRequest request) {
    if (request.getAmount() <= 50000) {
        System.out.println("部门经理审批通过采购单,金额:" + request.getAmount());
    } else if (nextApprover != null) {
        nextApprover.handleRequest(request);
    }
}

}

// 副总经理审批人
class VicePresident extends Approver {

@Override
public void handleRequest(PurchaseRequest request) {
    if (request.getAmount() <= 100000) {
        System.out.println("副总经理审批通过采购单,金额:" + request.getAmount());
    } else if (nextApprover != null) {
        nextApprover.handleRequest(request);
    }
}

}

// 总经理审批人
class GeneralManager extends Approver {

@Override
public void handleRequest(PurchaseRequest request) {
    if (request.getAmount() <= 200000) {
        System.out.println("总经理审批通过采购单,金额:" + request.getAmount());
    } else if (nextApprover != null) {
        nextApprover.handleRequest(request);
    }
}

}

// 职工大会审批人
class StaffMeeting extends Approver {

@Override
public void handleRequest(PurchaseRequest request) {
    if (request.getAmount() > 200000) {
        System.out.println("采购单金额超过20万元,需开职工大会审批,金额:" + request.getAmount());
    } else if (nextApprover != null) {
        nextApprover.handleRequest(request);
    }
}

}

// 客户端类
public class Client {
public static void main(String[] args) {
// 创建各级审批人
Approver director = new Director();
Approver manager = new Manager();
Approver vicePresident = new VicePresident();
Approver generalManager = new GeneralManager();
Approver staffMeeting = new StaffMeeting();

    // 设置职责链
    director.setNextApprover(manager);
    manager.setNextApprover(vicePresident);
    vicePresident.setNextApprover(generalManager);
    generalManager.setNextApprover(staffMeeting);

    // 创建采购请求
    PurchaseRequest request1 = new PurchaseRequest(8000, "采购办公用品");
    PurchaseRequest request2 = new PurchaseRequest(30000, "采购电脑");
    PurchaseRequest request3 = new PurchaseRequest(150000, "采购新设备");
    PurchaseRequest request4 = new PurchaseRequest(250000, "采购原料");

    // 发起请求
    System.out.println("处理采购单1:");
    director.handleRequest(request1);
    System.out.println("\n处理采购单2:");
    director.handleRequest(request2);
    System.out.println("\n处理采购单3:");
    director.handleRequest(request3);
    System.out.println("\n处理采购单4:");
    director.handleRequest(request4);
}

}

  1. 注意编程规范。
posted @ 2024-11-18 19:22  起名字真难_qmz  阅读(8)  评论(0)    收藏  举报