职责链模式

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

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

实验要求:

1. 提交类图;

 

 

2. 提交源代码;

#include <iostream>

#include <string>

 

using namespace std;

 

class Manager

{

protected:

Manager *m_manager;

public:

Manager(Manager* manager):m_manager(manager){}

virtual void DealWithRequest(int num) {}

};

 

class zManager : public Manager

{

public:

zManager(Manager* manager):Manager(manager){}

void DealWithRequest(int num)

{

if(num < 10000)

{

cout << "主任批准物资采购" << num << "" <<endl<<endl;

}

else

{

cout << "主任无法处理,交由部门经理处理" <<endl;

m_manager->DealWithRequest(num);

}

}

};

 

 

class CommonManager : public Manager

{

public:

CommonManager(Manager* manager):Manager(manager){}

void DealWithRequest(int num)

{

if(num < 50000)

{

cout << "部门经理批准物资采购" << num << "" <<endl<<endl;

}

else

{

cout << "部门经理无法处理,交由副总经理处理" <<endl;

m_manager->DealWithRequest(num);

}

}

};

 

class Majordomo:public Manager

{

public:

Majordomo(Manager* manager):Manager(manager){}

virtual void DealWithRequest(int num)

{

if(num < 100000)

{

cout << "副总经理批准物资采购" << num << "" <<endl<<endl;

}

else

{

cout << "副总经理无法处理,交由总经理处理" <<endl;

m_manager->DealWithRequest(num);

}

}

};

 

class GeneralManager : public Manager

{

public:

GeneralManager(Manager *manager):Manager(manager){}

void DealWithRequest(int num)

{

if(num < 200000)

{

cout << "总经理批准物资采购" << num << "" <<endl<<endl;

}

else

{

cout << "总经理无法处理,需要开职工大会确定" <<endl;

}

}

};

main()

{

Manager *general = new GeneralManager(NULL);

Manager *majordomo = new Majordomo(general);

Manager *common = new CommonManager(majordomo);

Manager *z = new zManager(common);

z->DealWithRequest(4000);

z->DealWithRequest(10000);

z->DealWithRequest(60000);

z->DealWithRequest(110000);

z->DealWithRequest(400000);

}

3. 注意编程规范。

 

 

posted @ 2023-11-18 22:00  秃头的小白  阅读(12)  评论(0编辑  收藏  举报