电话客户服务模拟
来源:互联网 发布:淘宝店铺怎么改支付宝 编辑:程序博客网 时间:2024/05/01 19:42
1、 问题描述
直到到达指定的一个模拟时钟提供接听电话服务的时间(以分钟计),然后这个时钟将循环地自增1(分钟),时间为止。在时钟的每个“时刻”,就会执行一次检查来看看当前电话的服务是否已经完成,如果是,这个电话从电话队列中删除,模拟服务将从队列中取出下一个电话(如果有)继续开始。同时还需要执行一个检查来判断是否有一个新的电话到达,如果有将其到达的时间记录下来,并为其产生一个随机服务时间,这个服务时间也被记录下来,然后将这个电话放入电话队列中,客户服务人员空闲时,按照先来先服务的方式处理这个队列。当时钟到达指定时间时,不会再接当听新电话,但是服务将继续,直到队列中所有电话得到处理为止。
2、 要求
(1) 程序需要处理的初始数据包括:客户服务人员的人数、时间限制,电话到达的速率,平均服务时间。
(2) 程序产生的结果包括:处理的电话数,每个电话的平均等待时间
#include"stdio.h"#include"stdlib.h"#include"time.h"int server[10];int total;int count = 1;float sum = 0;int reachtime;int temp[10];typedef struct quene{ int reach; struct quene *next;}que;que *head = NULL;que *last = NULL;#if 0time_t t;time(&t);struct tm *t1;#endifvoid create(){ que *p = (que *)malloc(sizeof(que)); if(head == NULL) { p->reach = reachtime; head = p; last = p; } else { p->reach = reachtime; last->next = p; last = p; } last->next = NULL;}void deque(){ if(head == NULL) { printf("处理剩余的客户完成\n"); printf("共接待%d个客户,平均等待时间为%f分钟/个\n",count-1,sum/(count-1)); printf("欢迎使用本电话客服模拟系统,see you!\n"); exit(-1); } else { printf("正在接入第%d个客户\n",count); que *q = head; head = head->next; sum = sum + (reachtime-q->reach); free(q); q = NULL; }}int main(){ int x; int i; char get; int reach; int maxtime; int j; while(1) { printf("请输入 y 开始模拟\n"); scanf(" %c",&get); if( get == 'y') { printf("开始模拟\n"); break; } else { printf("输入有误,请重新输入\n"); } } printf("本程序服务时间以秒计\n"); printf("请输入有多少个客服1-10个\n"); scanf("%d",&total); printf("下面开始定义每个客服的平均服务时间\n"); for(i=1;i<=total;i++) { printf("请定义第%d个客服平均服务时间:",i); scanf("%d",&server[i]); temp[i] = server[i]; } printf("定义成功\n"); printf("请定义每分钟来几个电话:\n"); scanf("%d",&reach); printf("请定义开放本系统时间:"); scanf("%d",&maxtime); printf("初始化系统完成\n"); for(i = 1;i <= maxtime;i++) { reachtime = i; printf("第%d分钟时刻,来到%d个电话\n",i,reach); x = reach; while(x) { create(); x--; } printf("正在查询是否有客服空闲\n"); if(i == 1) { for(j = 1;j <= total;j++) { printf("第%d个客服空闲,",j); if(head == NULL) { printf("但队列已空,所以等待用户接入\n"); server[j] = 0 ; } else { deque(); count++; } } } else { for(j=1;j <= total;j++) { if(server[j] == 0 || server[j] == -1) { printf("第%d个客服空闲,",j); if(head == NULL) { printf("但队列已空,所以等待用户接入\n"); server[j] = 0; } else { deque(); count++; server[j] = temp[j]; } } } } for(j = 1;j <= total;j++) { server[j]--; } } printf("系统关闭,处理队列中剩余的元素\n"); while( head != NULL) { reachtime++; for(j = 1;j<=total;j++) { if(server[j] == 0) { printf("第%d个客服空闲,",j); deque(); count++; server[j] = temp[j]; } } for(j =1;j<=total;j++) { server[j]--; } } printf("共接待%d个客户,平均等待时间为%f分钟/个\n",count-1,sum/(count-1)); printf("欢迎使用本电话客服模拟系统,see you!\n"); #if 0 printf("服务开始时间为:"); t1 = localtime(&t); printf("%d年%d月%d日%d时%d分%d秒\n",t1->tm_year,t1->tm_mon,t1->tm_mday,t1->tm_hour,t1->tm_min,t1->tm_sec); #endif return 0;}
- 电话客户服务模拟
- 电话客户服务模拟
- 电话客户服务模拟
- 电话客户服务模拟
- 余额宝客户服务电话
- 电话第二次访问客户
- 电话给V及客户客户空间
- http服务与客户
- 并发客户服务程序
- 客户-服务的互动
- 服务跳转、客户跳转
- 公共服务电话
- 1860服务电话搞笑
- android电话服务
- 电话服务定制
- 电话服务流程
- 政府、公积金服务电话
- Dell 服务电话列表
- Android电池架构分析(转)
- Android常用传感器用法一览
- 字符串常量和变量
- 亮剑SqlServer----数据库表外键设置
- jqGrid与Struts2的结合应用
- 电话客户服务模拟
- 关于浏览器模式和文本模式的困惑
- LCA tarjan hdu 2586代码详细步骤(转)有助于对tarjan算法的的理解
- c与c++的区别 <转> 深有感触
- Android OpenGL ES 开发教程(9):绘制点Point
- 重载()操作符
- Sum of Consecutive Prime Numbers
- BubbleSort(冒泡算法)
- 深入理解strcpy,strncpy