请阅读以下技术说明、类图及C++代码,根据要求将(1)~(7)空缺处的内容填写完整。[说明]已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批。主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图3-27所示。[C++代

题目

请阅读以下技术说明、类图及C++代码,根据要求将(1)~(7)空缺处的内容填写完整。

[说明]

已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批。主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。

采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图3-27所示。

[C++代码]


相似考题

4.阅读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。【说明】已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图7-1所示。【Java 代码】class PurchaseRequest {public double Amount; // 一个采购的金额public int Number; // 采购单编号public String Purpose; // 采购目的};class Approver { // 审批者类public Approver() { successor = null; }public void ProcessRequest(PurchaseRequest aRequest){if (successor != null){ successor.(1); }}public void SetSuccesser(Approver aSuccesssor){ successor = aSuccesssor; }private (2) successor;};class Congress extends Approver {public void ProcessRequest(PurchaseRequest aRequest) {if(aRequest,Amount >= 500000){ // 决定是否审批的代码省略}else (3).ProcessRequest(aRequest);}};class Director extends Approver {public void ProcessRequest(PurchaseRequest aRequest){ // 此处代码省略 }};class President extends Approver {public void ProcessRequest(PurchaseRequest aRequest) { // 此处代码省略 }};class VicePresident extends Approver {public void ProcessRequest(PurchaseRequest aRequest) { // 此处代码省略 }};public class rs {public static void main(String[] args) throws IOException {Congress Meeting = new Congress();VicePresident Sam = new VicePresident();Director Larry = new Director();President Tammy = new President();// 构造责任链Meeting. SetSuccessor(null); Sam. SetSuccessor((4));Tammy. SetSuccessor((5)); Larry. SetSuccessor((6));//构造一采购审批请求PurchaseRequest aRequest = new PurchaseRequest();BufferedReader br =new BufferedReader(new InputStreamReader(System.in));aRequest.Amount = Double.parseDouble(br.readLine());(7).ProcessRequest(aRequest); // 开始审批return ;}}

更多“ 请阅读以下技术说明、类图及C++代码,根据要求将(1)~(7)空缺处的内容填写完整。[说明]已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批。主任可以审批5万元以下(不包括5万元)”相关问题
  • 第1题:

    阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。

    【说明】

    已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开会讨论决定。

    采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图6-1所示。

    【C++代码】

    include <string>

    include <iostream>

    using namespace std;

    class PurchaseRequest {

    public:

    double Amount; /*一个采购的金额*/

    int Number; /*采购单编号*/

    string Purpose; /*采购目的*/

    };

    class Approver { /*审批者类*/

    public:

    Approver() { successor = NULL; }

    virtual void ProcessRequest(PurchaseRequest aRequest){

    if (successor != NULL){ successor-> (1) ; }

    }

    void SetSuccessor(Approver *aSuccesssor) { successor = aSuccesssor; } private:

    (2) successor; };

    class Congress : public Approver {

    public:

    void ProcessRequest(PurchaseRequest aRequest) {

    if(aRequest.Amount >= 500000){ /*决定是否审批的代码少略*/ }

    else (3) ProcessRequest(aRequest);

    }

    class Director : public Approver {

    public:

    void ProcessRequest(PurchaseRequest aRequest){ /*此处代码省略*/

    }

    };

    class President : public Approver {

    public:

    void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ }

    };

    class VicePresident : public Approver {

    public:

    void ProcessRequest(PurchaseRequest aRequest) /*此处代码省略*/ }

    };

    void main(){

    Congress Meeting; VicePresident Sam; Director Larry ; President

    Tammy;

    Meeting. SetSuccessor(NULL); Sam. SetSuccessor( (4) );

    Tammy. SetSuccessor( (5) ); Larry. SetSuccessor( (6) );

    PurchaseRequest aRequest; /*构造一采购审批请求*/

    cin >> aRequest.Amount; /*输入采购请求的金额*/

    (7) .ProcessRequest(aRequest); /*开始审批*/

    return ;

    }


    正确答案:(1)ProcessRequest(aRequest) (2)Approver* (3)Approver:: (4)&Tammy (5)&Meeting (6)&Sam (7)Larry
    (1)ProcessRequest(aRequest) (2)Approver* (3)Approver:: (4)&Tammy (5)&Meeting (6)&Sam (7)Larry 解析:本题考查的是设计模式的应用,属于比较传统的题目。责任链设计模式属于常用的 23种没计模式之一,其目的是为了将一个请求发送给一个对象集合,对象被组织成一条链,而负责处理该请求的对象将获取请求消息并加以处理,其余对象则仅仅负责将该请求消息按照责任链的顺序传递到下一个对象。因此责任人链模式的关键在于组织不同的对象成为一条链并传递消息。
    代码中空(1)处位于条件判断if(successor!=NULL)内,因此其含义是判断当前对象是否存在后继对象,如果存在,按照责任链设计模式,可以把请求消息进行传递,也就是调用后继对象的ProcessRequest方法。空(2)处要求填写successor的类型,因为责任链模式中的每一个对象都继承自同一个父类,在本题中,就是Approver类型。空(3)处位于Congress类中的ProcessRequest方法中,该方法表示处理外界的请求,else块的含义表明Congress对象不处理审批金额大于50万元的请求,因此,Congress对象应该将该请求转发到下一个对象进行处理,可以直接调用父类的ProcessRequest方法。空(4)、 (5)、(6)则主要用来将各种对象串接成一个链,根据题目的要求,对象在责任链中的顺序应该为Director Larry:VicePresident Sam;President Tammy:Congress Meeting,而审批的请求应该从Larry开始。

  • 第2题:

    试题七(共 15 分)

    阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

    【说明】

    已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批 5 万元以下(不包括 5 万元)的采购单,副董事长可以审批 5 万元至 10 万元(不包括 10 万元)的采购单,董事长可以审批 10 万元至 50 万元(不包括 50万元)的采购单,50 万元及以上的采购单就需要开会讨论决定。 采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图 7-1 所示

    [Java 代码]

    class PurchaseRequest {

    public double Amount; // 一个采购的金额

    public int Number; // 采购单编号

    public String Purpose; // 采购目的

    };

    class Approver { // 审批者类

    public Approver(){ successor = null; }

    public void ProcessRequest(PurchaseRequest aRequest){

    if (successor != null){ successor. (1) ; }

    }

    public void SetSuccessor(Approver aSuccesssor){ successor = aSuccesssor; }

    private (2) successor;

    };

    class Congress extends Approver {

    public void ProcessRequest(PurchaseRequest aRequest){

    if(aRequest.Amount >= 500000){ /* 决定是否审批的代码省略 */ }

    else (3) .ProcessRequest(aRequest);

    }

    };

    class Director extends Approver {

    public void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

    };

    class President extends Approver {

    public void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

    };

    class VicePresident extends Approver {

    public void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

    };

    public class rs {

    public static void main(String[] args) throws IOException {

    Congress Meeting = new Congress();

    VicePresident Sam = new VicePresident();

    Director Larry = new Director();

    President Tammy = new President();

    // 构造责任链

    Meeting.SetSuccessor(null); Sam.SetSuccessor( (4) );

    Tammy.SetSuccessor( (5) ); Larry.SetSuccessor( (6) );

    // 构造一采购审批请求

    PurchaseRequest aRequest = new PurchaseRequest();

    BufferedReader br =

    new BufferedReader(new InputStreamReader(System.in));

    aRequest.Amount = Double.parseDouble(br.readLine());

    (7) .ProcessRequest(aRequest); // 开始审批

    return ;

    }

    }


    正确答案:

  • 第3题:

    实施货币资金支付审批分级管理。单笔付款金额5万元及5万元以下的,由财务部经理审批;5万元以上、20万元及20万元以下的,由总会计师审批;20万元以上的由总经理审批。


    答案:
    解析:
    20万元以上资金支付由总经理审批不当。
      理由:大额资金支付应当实行集体决策或联签制度。或:对于总经理的支付权限也应当设置上限。

  • 第4题:

    试题六(共 15 分)

    阅读下列说明和 C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

    【说明】

    已知某企业的采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批 5 万元以下(不包括 5 万元)的采购单,副董事长可以审批 5 万元至 10 万元(不包括 10 万元)的采购单,董事长可以审批 10 万元至 50 万元(不包括 50万元)的采购单,50 万元及以上的采购单就需要开会讨论决定。 采用责任链设计模式(Chain of Responsibility)对上述过程进行设计后得到的类图如图 6-1 所示

    [C++代码]

    include <string>

    include <iostream>

    using namespace std;

    class PurchaseRequest {

    public:

    double Amount; // 一个采购的金额

    int Number; // 采购单编号

    string Purpose; // 采购目的

    };

    class Approver { // 审批者类

    public:

    Approver(){ successor = NULL; }

    virtual void ProcessRequest(PurchaseRequest aRequest){

    if (successor != NULL){ successor-> (1) ; }

    }

    void SetSuccessor(Approver *aSuccesssor){ successor = aSuccesssor; }

    private:

    (2) successor;

    };

    class Congress : public Approver {

    public:

    void ProcessRequest(PurchaseRequest aRequest){

    if(aRequest.Amount >= 500000){ /* 决定是否审批的代码省略 */ }

    else (3) ProcessRequest(aRequest);

    }

    };

    class Director : public Approver {

    public:

    void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

    };

    class President : public Approver {

    public:

    void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

    };

    class VicePresident : public Approver {

    public:

    void ProcessRequest(PurchaseRequest aRequest){ /* 此处代码省略 */ }

    };

    void main(){

    Congress Meeting; VicePresident Sam; Director Larry ; President Tammy;

    // 构造责任链

    Meeting.SetSuccessor(NULL); Sam.SetSuccessor( (4) );

    Tammy.SetSuccessor( (5) ); Larry.SetSuccessor( (6) );

    PurchaseRequest aRequest; // 构造一采购审批请求

    cin >> aRequest.Amount; // 输入采购请求的金额

    (7) .ProcessRequest(aRequest); // 开始审批

    return ;

    }


    正确答案:

  • 第5题:

    阅读以下关于某订单管理系统的技术说明、部分UML类图及C++代码,将C++程序中(1)~(5)空缺处的语句填写完整。

    [说明]

    某订单管理系统的部分UML类图如图5-15所示。

    图5-15中,Product表示产品,ProductList表示产品目录,Order表示产品订单,Orderltem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。

    请完善类Order的成员函数getOrderedAmount()和类SalesSystem的statistic()方法,各个类的属性及部分方法定义参见下面的C++代码。

    [C++代码]


    正确答案:这是一道要求读者掌握C++程序设计及STL使用的分析题。本题的解答思路如下。 仔细阅读[C++代码]可知类Order的数据成员orderid表示一份订单的识别号。结合图5-15订单管理系统的部分UML类图可知每个订单上可以有多个订单项因此数据成员items是一个类型为 OrderItem的向量(数据)。类Order的成员函数getOrderedAmount的功能是“在订单中查找识别码为tid的产品的订购数量若该产品没有被订购则返回0”。其定义如下: 对于每个订单项显然需要取出对应产品的识别号。从getOrderedAmount(string tid)定义代码中变量k用于遍历并索引一份订单中的每个订单项(items[k])。由于OrderItem类提供的成员函数getProductpt()可获取指向被订购产品的指针因此可通过(1)空缺处所填写的“items[k].getProductptr()->getProductId()”获取被订购产品的识别号。若指定的产品识别号等于该订单项的产品识别号就通过(2)空缺处所填写的“items[k].getQuantity()”返回该产品被订购的数量。 类SalesSystem的成员函数statistic()用于统计产品目录中每个产品的订购总量并打印输出每个产品的识别码、描述、订购总量和订购金额。若要统计产品目录中每个产品的订购总量需要对3个对象集合进行遍历:产品目录(ProductList)、订单列表(OrdeList)及Order(需要对订单中的所有订单项进行查询统计每个订单上所订购的产品的数量)。由此可以得出实现该方法的基本流程如下。 ①从产品目录中取出一个产品。对应语句“for(k=0;kcatalog.getProductAmount();k++)”用于遍历产品目录中的每件产品。由于存放产品目录(产品列表)的数据成员catalog的类型为ProductList要取得某产品的相关信息需要通过ProductList类提供的成员函数getProductByIndex(int I)获得产品目录中的第 i件产品因此(3)空缺处所填写的内容是“catalog.getProductByIndex(k)”。 ②查询给定产品在每份订单中的订购情况。对应的语句“for(it=sales.Begin(); (4) ;it++”用于遍历所有的订单根据产品识别码获得给定产品在当前订单中被订购的数量。对于给定产品和订单可调用订单类Order的成员函数getOrderedAmount(tid)获得识别码为tid的产品在当前订单中被订购的数量。因此(5)空缺处所填写的内容是“it->getOrderedAmount”。 由于类OrderList提供的方法Begin()、End()分别指向订单列表的第一个元素和最后一个元素之后而迭代器变量it实际是指向订单列表(向量sales)中某订单的指针因此(4)空缺处所填写的内容是“it!= sales.End()”或“itsales.End()”。
    这是一道要求读者掌握C++程序设计及STL使用的分析题。本题的解答思路如下。 仔细阅读[C++代码]可知,类Order的数据成员orderid表示一份订单的识别号。结合图5-15订单管理系统的部分UML类图可知,每个订单上可以有多个订单项,因此数据成员items是一个类型为 OrderItem的向量(数据)。类Order的成员函数getOrderedAmount的功能是“在订单中查找识别码为tid的产品的订购数量,若该产品没有被订购,则返回0”。其定义如下: 对于每个订单项,显然需要取出对应产品的识别号。从getOrderedAmount(string tid)定义代码中,变量k用于遍历并索引一份订单中的每个订单项(items[k])。由于OrderItem类提供的成员函数getProductpt()可获取指向被订购产品的指针,因此可通过(1)空缺处所填写的“items[k].getProductptr()->getProductId()”获取被订购产品的识别号。若指定的产品识别号等于该订单项的产品识别号,就通过(2)空缺处所填写的“items[k].getQuantity()”返回该产品被订购的数量。 类SalesSystem的成员函数statistic()用于统计产品目录中每个产品的订购总量,并打印输出每个产品的识别码、描述、订购总量和订购金额。若要统计产品目录中每个产品的订购总量,需要对3个对象集合进行遍历:产品目录(ProductList)、订单列表(OrdeList)及Order(需要对订单中的所有订单项进行查询,统计每个订单上所订购的产品的数量)。由此可以得出实现该方法的基本流程如下。 ①从产品目录中取出一个产品。对应语句“for(k=0;kcatalog.getProductAmount();k++)”用于遍历产品目录中的每件产品。由于存放产品目录(产品列表)的数据成员catalog的类型为ProductList,要取得某产品的相关信息,需要通过ProductList类提供的成员函数getProductByIndex(int I)获得产品目录中的第 i件产品,因此(3)空缺处所填写的内容是“catalog.getProductByIndex(k)”。 ②查询给定产品在每份订单中的订购情况。对应的语句“for(it=sales.Begin(); (4) ;it++”用于遍历所有的订单,根据产品识别码获得给定产品在当前订单中被订购的数量。对于给定产品和订单,可调用订单类Order的成员函数getOrderedAmount(tid)获得识别码为tid的产品在当前订单中被订购的数量。因此(5)空缺处所填写的内容是“it->getOrderedAmount”。 由于类OrderList提供的方法Begin()、End()分别指向订单列表的第一个元素和最后一个元素之后,而迭代器变量it实际是指向订单列表(向量sales)中某订单的指针,因此(4)空缺处所填写的内容是“it!= sales.End()”或“itsales.End()”。