首页 > 其他分享 >10.5

10.5

时间:2025-01-02 15:31:49浏览次数:1  
标签:10.5 Approver request processRequest PurchaseRequest 采购 public

软件设计                  石家庄铁道大学信息学院

 

实验15:职责链模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解职责链模式的动机,掌握该模式的结构;

2、能够利用职责链模式解决实际问题。

 
   

 


[实验任务一]:财务审批

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

实验要求:

1.     提交类图;

 

2. 提交源代码;

// 采购单类

class PurchaseRequest {

    private double amount;

    private String purpose;

 

    public PurchaseRequest(double amount, String purpose) {

        this.amount = amount;

        this.purpose = purpose;

    }

 

    public double getAmount() {

        return amount;

    }

 

    public String getPurpose() {

        return purpose;

    }

}

 

 

 

// 审批者抽象类

abstract class Approver {

    protected Approver successor;

 

    public void setSuccessor(Approver successor) {

        this.successor = successor;

    }

 

    public abstract void processRequest(PurchaseRequest request);

}

 

 

// 主任审批者类

class Director extends Approver {

    @Override

    public void processRequest(PurchaseRequest request) {

        if (request.getAmount() <= 10000) {

            System.out.println("主任审批通过,采购单金额:" + request.getAmount() + ",用途:" + request.getPurpose());

        } else if (successor!= null) {

            successor.processRequest(request);

        }

    }

}

 

// 部门经理审批者类

class DepartmentManager extends Approver {

    @Override

    public void processRequest(PurchaseRequest request) {

        if (request.getAmount() <= 50000) {

            System.out.println("部门经理审批通过,采购单金额:" + request.getAmount() + ",用途:" + request.getPurpose());

        } else if (successor!= null) {

            successor.processRequest(request);

        }

    }

}

 

// 副总经理审批者类

class ViceGeneralManager extends Approver {

    @Override

    public void processRequest(PurchaseRequest request) {

        if (request.getAmount() <= 100000) {

            System.out.println("副总经理审批通过,采购单金额:" + request.getAmount() + ",用途:" + request.getPurpose());

        } else if (successor!= null) {

            successor.processRequest(request);

        }

    }

}

 

// 总经理审批者类

class GeneralManager extends Approver {

    @Override

    public void processRequest(PurchaseRequest request) {

        if (request.getAmount() <= 200000) {

            System.out.println("总经理审批通过,采购单金额:" + request.getAmount() + ",用途:" + request.getPurpose());

        } else {

            System.out.println("采购单金额超过20万元,需要开职工大会确定,采购单金额:" + request.getAmount() + ",用途:" + request.getPurpose());

        }

    }

}

 

 

 

public class Main {

    public static void main(String[] args) {

        // 创建各级审批者对象

        Approver director = new Director();

        Approver departmentManager = new DepartmentManager();

        Approver viceGeneralManager = new ViceGeneralManager();

        Approver generalManager = new GeneralManager();

 

        // 设置审批链顺序

        director.setSuccessor(departmentManager);

        departmentManager.setSuccessor(viceGeneralManager);

        viceGeneralManager.setSuccessor(generalManager);

 

        // 创建不同金额的采购单并进行审批

        PurchaseRequest request1 = new PurchaseRequest(8000, "办公用品采购");

        director.processRequest(request1);

 

        PurchaseRequest request2 = new PurchaseRequest(30000, "设备采购");

        director.processRequest(request2);

 

        PurchaseRequest request3 = new PurchaseRequest(80000, "项目材料采购");

        director.processRequest(request3);

 

        PurchaseRequest request4 = new PurchaseRequest(150000, "大型设备采购");

        director.processRequest(request4);

 

        PurchaseRequest request5 = new PurchaseRequest(250000, "新业务拓展采购");

        director.processRequest(request5);

    }

}

3. 注意编程规范。

 

 

标签:10.5,Approver,request,processRequest,PurchaseRequest,采购,public
From: https://www.cnblogs.com/jais/p/18647869

相关文章

  • 鲲鹏ARM64环境、银河麒麟KylinOSV10 下源码移植安装MariaDB 10.5.19参考
    1硬件鲲鹏920处理器2操作系统银河麒麟V10SP33配置编译环境3.1配置代理3.1.1打开/etc/profile文件vim/etc/profile3.1.2在/etc/profile文件中增加以下内容(根据实际情况填写)。exporthttp_proxy="http://用户名:密码@代理IP:代理端口"exporthttps_proxy=......
  • 10.5 模拟赛(NOIP十三连测 #11)
    2024--梦熊&太戈--NOIP十三连测#11【订正】-比赛-梦熊联盟(mna.wang)复盘赢麻了(?)老师说照着\(300\)分打。顺序开题。T1读懂题后模拟了一下样例,发现答案就是$n-$连通块???快速写完了代码发现大样例全过了。此时8:05。T2。一眼DP。但是\(n\le10^6\)所以放弃了。......
  • Cisco NX-OS Software Release 10.5(1)F - 网络操作系统软件
    CiscoNX-OSSoftwareRelease10.5(1)F-网络操作系统软件NX-OS网络操作系统请访问原文链接:https://sysin.org/blog/cisco-nx-os-10/,查看最新版。原创作品,转载请保留出处。CiscoNX-OSCiscoNX-OS操作系统助力网络紧跟业务发展步伐。功能和优势NX-OS网络操作系统为现代......
  • Cisco Nexus 9000v Switch, NX-OS Release 10.5(1)F - 用于网络原型设计和学习研究的
    CiscoNexus9000vSwitch,NX-OSRelease10.5(1)F用于网络原型设计和学习研究的虚拟化数据中心交换机请访问原文链接:https://sysin.org/blog/cisco-nexus-9000v/,查看最新版。原创作品,转载请保留出处。ReleaseDateNX-OSSystemSoftwareReleaseDateCiscoNX-OSRe......
  • 最新版康泰克完整版- Kontakt v7.10.5 for Win和Mac,支持m芯片和intel,有入库工具
    一。世界最受欢迎的采样器的新篇章    NativeInstrumentsKontakt是采样器领域的标准,您将获得高质量的滤波器,在这里您将找到经典的模拟电路和最现代的滤波器。每一个都可以根据您的口味进行定制,并且由于它,您可以获得前所未有的声音。这是一个解锁版本,这意味着您可以......
  • 【漏洞扫描】HCL AppScan v10.5 高级版
    #简介HCLAppScan是一款广泛使用的应用程序安全性测试工具。它可以帮助组织识别和解决应用程序中存在的安全漏洞和弱点,从而提高应用程序的安全性。HCLAppScan支持多种应用程序类型,包括Web应用程序、移动应用程序和Web服务。#软件截图#安装教程文字教程点击类似于App......
  • 2024年AppScan 最新10.5.0破解版 附详细安装教程
     免责声明请勿利用文章内的相关技术从事非法测试。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,请务必遵守网络安全法律法规。本文仅用于测试,请完成测试后24小时删除,请勿用于商业用途。如文中内容涉及侵权行......
  • 10.5线性表的链式存储
    链表顺序表:缺点1、插入和删除操作移动大量元素。2、数组大小不好确定。3、占用空间。优点随机访问逻辑相邻物理位置上也相邻单链表(逻辑上相邻物理不相邻)链表定义:typedefintElemtype;structLNode{ Elemtypedata;//数据域 structLNode*next;//指针域};优点1......
  • HCL AppScan Standard v10.5.0 (Windows) - Web 应用程序安全测试
    HCLAppScanStandardv10.5.0(Windows)-Web应用程序安全测试HCLAppScanStandardv10forWindowsMultilingual请访问原文链接:HCLAppScanStandardv10.5.0(Windows)-Web应用程序安全测试,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org市场领先的应用程......
  • 算法模板 v1.10.5.20240330
    算法模板v1.1.1.20240115:之前历史版本已不可寻,创建第一份算法模板。v1.2.1.20240116:删除“编译”-“手动开栈”;删除“编译”-“手动开O优化”;修改“编译”-“CF模板”;删除“读写”;删除“图论”-“欧拉图”-“混合图”;删除“图论”-“可达性统计”;删除“数据类型”-“高精类”。......