电话客户服务模拟
来源:互联网 发布:粉丝福利购 淘宝客 编辑:程序博客网 时间:2024/05/01 14:03
一个模拟时钟提供接听电话服务的时间(以分钟计),然后这个时钟将循环地自增1(分钟),直到到达指定的时间为止。在时钟的每个“时刻”,就会执行一次检查来看看当前电话的服务是否已经完成,如果是,这个电话从电话队列中删除,模拟服务将从队列中取出下一个电话(如果有)继续开始。同时还需要执行一个检查来判断是否有一个新的电话到达,如果有将其到达的时间记录下来,并为其产生一个随机服务时间,这个服务时间也被记录下来,然后将这个电话放入电话队列中,当客户服务人员空闲时,按照先来先服务的方式处理这个队列。当时钟到达指定时间时,不会再接听新电话,但是服务将继续,直到队列中所有电话得到处理为止。
要求:
(1) 程序需要处理的初始数据包括:客户服务人员的人数、时间限制,电话到达的速率,平均服务时间。
(2) 程序产生的结果包括:处理的电话数,每个电话的平均等待时间。
main.c
#include<stdio.h>#include<stdlib.h>#include"que.c"#define SIZE 50
struct ser{ int iswork; int time;};
void del_que(struct que *q){ int i; if(q->rear == 0) { printf("队列已空!\n"); q->front = q->rear = -1; } else { for(i = 0;i<q->rear;i++) { q->data[i] = q->data[i+1]; } q->rear--; }}
int main(){ tel = (struct que *)malloc(sizeof(struct que)); init_queue(tel); int clock_sum_time; ////接听电话的总时间 int serve_num; ////客服人数 int enter_rate; ////拨入速率 int ever_serve_time; ////每个电话平均服务时间 int sum_tel = 0; //处理的电话数 float ever_wait_time; //每个电话平均等待时间 int clock_time_now = 1; //时钟当前时间,初始化为1 int sum_time = 0; //总等待时间 int i; struct ser server[SIZE]; printf("接入电话总时间:"); scanf("%d",&clock_sum_time); printf("电话拨入速率:"); scanf("%d",&enter_rate); printf("输入客服人数:"); scanf("%d",&serve_num); printf("输入客服服务时间:"); scanf("%d",&ever_serve_time); for(i = 0;i<serve_num;i++) { server[i].iswork = 0; server[i].time = ever_serve_time; } while(clock_time_now <= clock_sum_time) { for(i = 0;i<enter_rate;i++) { insert_que(tel,i,clock_time_now); sum_tel+=1; }
for(i = 0;i<serve_num;i++) { if(server[i].iswork == 1) { server[i].time--; if(server[i].time == 0) { server[i].iswork = 0; server[i].time = ever_serve_time; } } } for(i = 0;i<serve_num;i++) { if(que_empty(tel) && server[i].iswork==0) { sum_time = sum_time+clock_time_now; sum_time = sum_time - tel->time; del_que(tel); server[i].iswork = 1; } } clock_time_now++; } while(que_empty(tel)) { for(i = 0;i<serve_num;i++) { if(server[i].iswork == 1) { server[i].time--; if(server[i].time == 0) { server[i].iswork = 0; server[i].time = ever_serve_time; } } } for(i = 0;i<serve_num;i++) { if(que_empty(tel) && server[i].iswork==0) { sum_time = sum_time+clock_time_now; sum_time = sum_time - tel->time; del_que(tel); } } clock_time_now++; } printf("sum_time = %d\n",sum_time); ever_wait_time = (float)sum_time/sum_tel; printf("处理的电话数为:%d\n",sum_tel); printf("平均等待时间为:%f\n",ever_wait_time); return 0;}que.c
#define SIZE 50
struct que{ int time; int data[SIZE]; int front,rear;};
struct que *tel;
void init_queue(struct que *q) //初始化队列{ q->front = q->rear = -1;}
int que_full(struct que *q) //判断是否队满{ return q->front == (SIZE-1);}
int que_empty(struct que *q){ if(q->rear == -1) { printf("队列为空!\n"); return 0; } else { return 1; }}
int insert_que(struct que *q,int num,int tm)//入队{ if(q->rear < (SIZE-2)) { q->time = tm; q->front = 0; q->rear++; q->data[q->rear] = num; return 1; } else { return 0; }}
void print_que(struct que *q){ int i; for(i = 0;i<=q->rear;i++) { printf("%d ",q->data[i]); } printf("\n");}
- 电话客户服务模拟
- 电话客户服务模拟
- 电话客户服务模拟
- 电话客户服务模拟
- 余额宝客户服务电话
- 电话第二次访问客户
- 电话给V及客户客户空间
- http服务与客户
- 并发客户服务程序
- 客户-服务的互动
- 服务跳转、客户跳转
- 公共服务电话
- 1860服务电话搞笑
- android电话服务
- 电话服务定制
- 电话服务流程
- 政府、公积金服务电话
- Dell 服务电话列表
- 变态的汽车大搜罗
- Linux Shell常用技巧(五)
- POJ 1797 Heavy Transportation
- 放心吧为了你我也会好好的生活
- Linux Shell常用技巧(六)
- 电话客户服务模拟
- .properties配置文件的中文问题
- Linux Shell常用技巧(七)
- 设计模式- 使用抽象工厂实现多数据库切换实现过程
- Linux Shell常用技巧(八)
- VC++6.0 注释 快捷键 的设置
- 把数组排成最小的数
- HEVC中比较耗时的模块
- Linux Shell常用技巧(九)