题目:
假设有个呼叫中心,有接线员、经理、主管三种角色。如果接线员无法处理呼叫,就上传给经理;如果仍无法处理,则上传给主管。请用代码描述这一过程。

分析:
典型的职责链设计模式的题目,今天第一次练习,该题目可以大概设计成两个类:

  1. 打电话的客户类(初步设计为包含客户名字和客户等级);
  2. 服务人员(一个抽象基类+接线员、经理、主管三个继承类,初步设计为包含接电话服务,后续准备加上接电话者工号,是否需要排序等待这些功能)

!!!设计有待完善(关于接线员、经理、主管人数的设计等),先贴上今日版完成的代码。
代码:

#include<iostream>
#include<string>
using namespace std;class Caller {public:Caller(string name, int rank) {this->mCallername = name;this->mRank = rank;};int getRank(){return mRank;};string getName() {return mCallername;};~Caller(){};private:string mCallername;int mRank;
};class Woker {public:Woker() {};virtual void handelcall(Caller* caller) = 0;virtual ~Woker(){};
};class Director: public Woker {public:Director(string name) {this->mDirectorname = name;};virtual void handelcall(Caller* caller){if(caller->getRank() == 2) {cout << "Director" << this->mDirectorname << " is handling " << caller->getName() << "'s call." << endl;}else {cout << "Sorry we can't answer " << caller->getName() << "'s question." << endl;}};virtual ~Director(){};private:string mDirectorname;
};class Manager: public Woker {public:Manager(string name) {this->mManagername = name;};virtual void handelcall(Caller* caller){if(caller->getRank() == 1) {cout << "Manager " << this->mManagername << " is handling " << caller->getName() << "'s call." << endl;}else {Woker* woker = new Director("主管1");woker ->handelcall(caller);delete woker ;}};virtual ~Manager(){};private:string mManagername;
};class Respondent: public Woker {public:Respondent(string name) {this->mRespondentname = name;};virtual void handelcall(Caller* caller){if(caller->getRank() == 0) {cout << "Respondent " << this->mRespondentname << " is handling " << caller->getName() << "'s call" << endl;}else {Woker* woker = new Manager("经理1");woker->handelcall(caller);delete woker;}};virtual ~Respondent() {};private:string mRespondentname;
};int main() {Woker* woker = new Respondent("接线员1");enum rank{junior,middle,senior,other}; Caller* caller1 = new Caller("张三", middle);Caller* caller2 = new Caller("李四", junior);Caller* caller3 = new Caller("王五", senior);Caller* caller4 = new Caller("赵六", other);woker->handelcall(caller1);woker->handelcall(caller2);woker->handelcall(caller3);woker->handelcall(caller4);delete woker; delete caller1;delete caller2;delete caller3;delete caller4;return 0;
}

结果展示:

每日一题--设计一个呼叫中心系统(Google面试推荐书Cracking the Coding Interview)相关推荐

  1. 一个呼叫中心系统应该怎样搭建?okcc呼叫系统

    首先,企业需要明确的是呼叫中心系统搭建的目的.搭建这个呼叫中心是想用来做什么呢? 是为了企业当做呼入型的客服使用? 还是用来当电话外呼使用? 是企业想做营销用呢还是政府单位办公使用? 是要做外包服务呢 ...

  2. 系统对接方案_一个呼叫中心系统组建的案例

    方案简介:本方案主要与客户业务系统进行对接集成 客户后台系统,主要应用在云上,坐席在使用过程中进行业务数据操作打开云上的业务系统,新组建的备载呼叫系统可以在用户本地(方案一)也可以云上(方案二),新组 ...

  3. 搭建呼叫中心系统几点注意事项

    对一个企业而言,建立自己的呼叫中心系统有两种选择: 外包模式:由呼叫中心业务运营商为自己的用户提供服务.这种方式的优点是节约成本,而且能够提供一个较专业的服务,但需要对有关的坐席人员进行培训. 自建模 ...

  4. 呼叫中心系统基础接口文档

    呼叫中心系统经常会与其它业务系统进行对接,相当于呼叫中心系统只负责底层通话能力支撑.降低开发难度,缩短开发周期,降低开发成本.并且呼叫中心系统私有化部署,代码开源无加密,快速实现业务系统与呼叫系统的融 ...

  5. mysql每秒支持多少并发_如何设计一个高并发系统?

    面试题 如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了.为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先. 如果你确 ...

  6. 高并发面试 - 如何设计一个高并发系统?

    高并发面试 - 如何设计一个高并发系统? 面试题 如何设计一个高并发系统? 面试官心理分析 说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了.为啥?因为你没看到现在很多公司招聘的 JD 里 ...

  7. 提供呼叫中心服务器,呼叫中心系统方案

    编者按:服务器搭建方式是设计呼叫中心系统方案的一个核心原则,企业是选择本地服务器还是云服务器好?呼叫中心系统服务器构成有哪些?外呼系统服务器.CTI服务器.数据库服务器分别是什么?企业服务汇将在本文为 ...

  8. 人工智能在语音和数字图像处理领域有哪些具体化应用_智能呼叫中心系统有哪些优势...

    近年来,随着科技的发展特别是人工智能技术.云计算.大数据的到来,新技术逐渐渗入人们日常生活中的各行各业里面,以机器人来代替人工处理繁重的任务变得普遍.在人工智能时代下,新一代智能呼叫中心系统应运而生, ...

  9. 呼叫中心系统和外呼机器人的高效组合

    相信大家在日常生活中都有接听或者拨打过中国移动,电信运营商的电话吧,还记得什么样的电话内容吗?开场会有运营商的新产品或者活动介绍,亦或是一段铃声,紧接着会进入按键导航内容,按键1:xx业务,按键2:x ...

最新文章

  1. ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL
  2. 基于时间片的轮转调度算法
  3. [Android疑难杂症]动态改变Background后Padding无效的问题
  4. 支付宝支付 订单参数异常,请重新下单后再发起付款
  5. windows+VS2017+opencv4.1.0环境配置
  6. Yii2 获取URL的一些方法
  7. C# 动态加载 动态卸载
  8. 炒菜多放油:确实好吃,可是又不健康
  9. 简述x264几种码率控制方式的实现
  10. linux配置静态ip命令,Linux设置静态IP地址
  11. QQ消息自动发送器(自动发广告、聊天,支持群,支持最新的QQ2008II Beta1) C# 版...
  12. shopify上传商品价格怎么改美元美金$
  13. c语言从键盘输入5阶方阵,输入5×5阶的矩阵,编程实现: (1)求两条对角线上的各元素之和....
  14. iPhone数据线连接电脑成为电脑USB摄像头
  15. bas64-FileReader-base64-11.9-01
  16. 2018年,如下几件事或许值得期待
  17. 20考研历程-北京邮电大学计算机学院
  18. android ios 画图 app,手残党也能自画“小怪兽”?这些画图app你必须知道!
  19. Java个人财务记账账单系统(含源码+论文+答辩PPT等)
  20. Java语言 实验报告(三)

热门文章

  1. android会员等级进度条,jQuery会员等级进度条显示代码
  2. 排名上升32位!吉林银行跻身全球银行1000强第257位
  3. Java基础入门(下)
  4. ARM处理器的产品线——Cortex
  5. 【Ubuntu】没有wifi图标,实际有网
  6. IOS13图标尺寸_【快捷指令】桌面图标任意摆放
  7. Jupyter Notebook安装及使用指南
  8. 把一切都监控起来-吴凯华
  9. 服务器安装 centos 系统
  10. c++简单的学生系统