一个简单的电话客服模拟器
来源:互联网 发布:单片机学好了前景好吗 编辑:程序博客网 时间:2024/04/27 17:15
#include <stdio.h>
#include <stdlib.h>
#define N 200
#define M 50
typedef struct user
{
int intime;
int outtime;
int endtime;
}USER;
typedef struct server
{
int flt;
int servetime;
}SER;
void push(int);
USER pop(int);
void display();
USER str[N];
int front = 0;
int rear = 0;
void push(int time)
{
str[rear].intime = time;
rear++;
}
USER pop(int time)
{
str[front].outtime = time;
return str[front++];
}
void display()
{
int t = 0;
int k,m;
int servenum,numper;
USER user[M];
SER ser[M];
int servet[M];
printf("请输入服务器的个数:");
scanf("%d",&servenum);
for(k = 0; k < servenum;k++)
{
printf("请输入第%d个服务器的服务时间:",k+1);
scanf("%d",&ser[k].servetime);
ser[k].flt = 0;
}
for(k = 0; k < servenum; k++)
{
servet[k] = ser[k].servetime;
}
printf("请输入每分钟进入的电话数:");
scanf("%d",&numper);
int i = 0;
int j = 1;
int tmp = 0;
int count = 0;
int totalcount = 0;
int sercount = 0;
int waitcount = 0;
int timer;
printf("请输入总接入时间:");
scanf("%d",&timer);
while(t <= (timer-1))
{
system("clear");
if(tmp++)
{
for(k = 0; k < servenum;k++)
{
printf("客服%d剩余服务时间:%d\n",k + 1,ser[k].servetime - 1);
}
printf("\n");
}
if((j--) > 0)
{
for(k = 0;k < numper;k++)
{
push(t);
count++;
totalcount++;
printf("有人进入等待,当前等待人数:%d:进入等待时间:%d\n",count,str[rear-1].intime);
}
}
else
{
for(k = 0;k < numper;k++)
{
push(t);
count++;
totalcount++;
printf("有人进入等待,当前等待人数:%d:进入等待时间:%d\n",count,str[rear-1].intime);
}
}
for(k = 0;k < servenum;k++)
{
if(ser[k].flt == 1)
{
ser[k].servetime--;
if(ser[k].servetime == 0)
{
user[j].endtime = t;
printf("客服%d服务结束:结束时间:%d\n",k+1,user[j].endtime);
sercount++;
j++;
ser[k].servetime = servet[k];
ser[k].flt = 0;
}
}
}
for(k = 0;k < servenum; k++)
{
if(ser[k].flt == 0)
{
if(count != 0)
{
count--;
ser[k].flt = 1;
user[i] = pop(t);
printf("客服%d空闲:进入服务时间:%d\n",k+1,user[i].outtime);
waitcount = waitcount + (t - str[front-1].intime);
printf("当前等待人数:%d\n",count);
i++;
}
else
{
printf("客服%d空闲,无人等待服务!\n",k+1);
}
}
}
sleep(2);
t++;
system("clear");
//printf("\n");
}
printf("接入入口关闭!现在处理等待的人员!\n");
while(1)
{
for(k = 0; k < servenum;k++)
{
printf("客服%d剩余服务时间:%d\n",k + 1,ser[k].servetime - 1);
}
printf("\n");
for( k = 0; k < servenum; k++)
{
if(ser[k].flt == 1)
{
ser[k].servetime--;
if(ser[k].servetime == 0)
{
user[j].endtime = t;
printf("客服%d服务结束:结束时间:%d\n",k+1,user[j].endtime);
sercount++;
j++;
ser[k].servetime = servet[k];
ser[k].flt = 0;
}
}
}
for( k = 0; k< servenum; k++)
{
if(ser[k].flt == 0)
{
user[i] = pop(t);
printf("客服%d空闲:进入服务时间:%d\n",k+1,user[i].outtime);
waitcount = waitcount + (t - str[front-1].intime);
count--;
printf("当前等待人数:%d\n",count);
ser[k].flt = 1;
i++;
if(count == 0)
{
goto loop;
}
}
}
sleep(2);
system("clear");
t++;
}
if(0)
{
loop:
while(totalcount != sercount)
{
system("clear");
for(k = 0; k < servenum;k++)
{
printf("客服%d剩余服务时间:%d\n",k + 1,ser[k].servetime - 1);
}
printf("\n");
t++;
for(k = 0; k < servenum; k++)
{
if(ser[k].flt != 0)
{
ser[k].servetime--;
if(ser[k].servetime == 0)
{
user[j].endtime = t;
printf("客服%d服务结束:结束时间:%d\n",k+1,user[j].endtime);
sercount++;
if(sercount == totalcount)
{
goto end;
}
j++;
ser[k].servetime = servet[k];
ser[k].flt = 0;
}
}
}
sleep(2);
printf("\n");
}
end:
printf("一个接了%d个电话\n",totalcount);
printf("平均每分钟处理%f个电话\n",t / (float)totalcount);
printf("平均等待时间:%f\n",waitcount / (float)totalcount);
printf("欢迎使用电话模拟系统!\n");
exit(-1);
}
}
int main()
{
display();
return 0;
}
- 一个简单的电话客服模拟器
- 一个简单的服务器客服端通信
- 达美的客服电话
- 数据结构(C语言)实训-电话客服模拟器
- 苹果在全世界的客服电话列表
- 模拟器上的电话状态
- 模拟器上的电话状态
- 简单的QQ在线客服
- 12306客服电话
- 12306客服电话 是多少
- 卡塔尔航空客服电话
- 首都航空客服电话
- 国泰航空客服电话
- 幸福航空客服电话
- 南方航空客服电话
- APPLE开发者客服电话
- 东航客服电话是多少
- 海航客服电话是多少
- 自定义ContentProvider 实例演示
- 海盗分金问题
- Linux查看程序安装路径
- Linux:Sudo命令使用
- 程序锁的实现(第一天)
- 一个简单的电话客服模拟器
- 分布式文档存储数据库 MongoDB
- Set 和 List 的区别
- ArrayList、LinkedList与Vector的区别
- Listview的优化
- Oracle 锁工作原理
- Android内核与主线linux内核的比较(Android对Linux内核的改动你知道多少?)
- LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror
- 【100题】设计包含min 函数的栈