模拟银行排队取号系统 - 命令行版 - 代码 (3)

十里画廊 分享 2020-06-22 下载文档

11 1 if(VIPmaxNUM>VIPminNUM) { for(i=0; i<2; i=i+1) { if(Win[i].WindowState==WaitWin) { Win[i].WindowState=Call; VIPminNUM=VIPminNUM+1; Win[i].serveNum=VIPminNUM; Win[i].start = clock(); Win[i].timeInterval=rand()P00+5000;//叫号时间为5~10秒随机数 Win[i].timeSum = Win[i].timeSum + Win[i].timeInterval;//服务时间增加 Win[i].sum = Win[i].sum +1; change = 1; break; } } } }

void windowControl(void)//增减窗口控制 { int i; int maxVIPCount = 0; static clock_t present = 0, previous = 0; present = clock(); //普通窗口的增加 if((maxNUM-minNUM)>=(3*WinCount)) { for(i=2;i<8&&Win[i].WindowState!=Unopen;i=i+1) { }

12 1 if(i<8) { Win[i].WindowState = WaitWin; WinCount = WinCount + 1; change = 1; } }

//普通窗口的减少

if(((maxNUM-minNUM)<(2*WinCount))&&(WinCount>3)) { for(i=7;i>=2&&Win[i].WindowState==Unopen;i=i-1) { } if(i>=2) { switch(Win[i].WindowState) { case WaitWin: Win[i].WindowState = Unopen; WinCount = WinCount - 1; change = 1; break; case Rest: Win[i].WindowState = Unopen; WinCount = WinCount - 1; change = 1; break; case Call: Win[i].closeLater = 1; WinCount=WinCount-1; case Serve: Win[i].closeLater = 1; WinCount=WinCount-1; break; } } }

13 1

//VIP窗口的增加

if(VIPmaxNUM-VIPminNUM>3&&Win[1].WindowState==Unopen) { Win[1].WindowState = WaitWin; VIPWinCount = VIPWinCount + 1; change = 1; }

//VIP窗口的减少

if(present-previousmaxVIPCount) { maxVIPCount = VIPmaxNUM-VIPminNUM; } else previous = present; }

if(present-previous>=VIPSERVLen) { if(maxVIPCount<3) { switch(Win[1].WindowState) { case WaitWin: Win[1].WindowState = Unopen; VIPWinCount = VIPWinCount - 1; change = 1; break; case Rest: Win[1].WindowState = Unopen; VIPWinCount = VIPWinCount - 1; change = 1; break; case Call: Win[1].closeLater = 1; VIPWinCount=VIPWinCount-1; break; case Serve: Win[1].closeLater = 1; VIPWinCount=VIPWinCount-1; break; }

14 1 previous = present; } } }

void windowWork(void) { int i;

clock_t present; present = clock(); srand(time(NULL)); //随机种子 for(i=0; i<8; i=i+1) { switch(Win[i].WindowState) { case Serve: if(present>=Win[i].start+Win[i].timeInterval) { Win[i].appraise = rand()%3 + 1;//客户满意度由随机数产生 if(Win[i].closeLater==0) { Win[i].WindowState = WaitWin;//窗口服务结束 change = 1; } if(Win[i].closeLater==1) { Win[i].WindowState = Unopen;//窗口关闭 Win[i].closeLater=0;

15 1 change = 1; } if(Win[i].restLater==1) { Win[i].WindowState = Rest;//窗口休息 Win[i].start = present; Win[i].timeInterval = rand()%((MaxRestSec-MinRestSec)*1000)+MinRestSec*1000; Win[i].restLater=0; change = 1; } } break; case Call:

if(present>=Win[i].start+Win[i].timeInterval) { Win[i].WindowState = Serve; Win[i].start = present; Win[i].timeInterval = rand()%((MaxSec-MinSec)*1000)+MinSec*1000;//客户办理业务的时间长短由随机数产生,范围在MinSec到MaxSec之间 Win[i].timeSum = Win[i].timeSum + Win[i].timeInterval;//服务时间增加 change = 1; } break; case Rest: if(present>=Win[i].start+Win[i].timeInterval) { Win[i].WindowState = WaitWin;//窗口休息结束 if(i<2) { VIPWinCount = VIPWinCount+1; } else WinCount = WinCount+1; change = 1; } break;


模拟银行排队取号系统 - 命令行版 - 代码 (3).doc 将本文的Word文档下载到电脑

下一篇:安康旬阳杆杆酒甜杆酒的制作方法

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx