博客
关于我
利用JS模拟排队系统
阅读量:796 次
发布时间:2023-03-24

本文共 2914 字,大约阅读时间需要 9 分钟。

// JS模拟排队系统实现
var autoPerson = (function () {
var vipNum = 0;
var norNum = 0;
return function () {
var randomNum = Math.random();
if (randomNum > 0.5) {
vipNum++;
return "V" + vipNum;
} else {
norNum++;
return "N" + norNum;
}
}
})();
var personArr = [];
var perLen = 6;
for (var i = 0; i < perLen; i++) {
vipFirst(autoPerson());
}
function vipFirst(person) {
if (person[0] == "V") {
for (var i = 0; i < personArr.length; i++) {
if (personArr[i][0] == "N") {
personArr.splice(i, 0, person);
return;
}
}
}
personArr.push(person);
}
console.log("现存队列:" + personArr);
var timer = setInterval(listMove, 5000);
function listMove() {
var firstPer = personArr.shift();
console.log("叫号:" + firstPer);
var newper = autoPerson();
console.log("新人:" + newper);
vipFirst(newper);
console.log("现存队形:" + personArr);
}

JS模拟排队系统实现

在实际开发中,排队系统是一个非常重要的功能模块。今天我们将分享一个基于JS的模拟排队系统实现,用于模拟不同类型客户的排队处理逻辑。以下是实现的主要思路和代码逻辑。

模拟系统特点

  • 客户类型区分:系统支持VIP客户和普通客户,VIP客户始终排在普通客户前面。
  • 随机生成客户:每隔5秒生成一个随机客户,随机类型为VIP或普通。
  • 排队处理逻辑:当所有VIP客户处理完毕后,才开始处理普通客户。
  • 系统实现逻辑

    1. 客户生成逻辑
    var autoPerson = (function () {
    var vipNum = 0;
    var norNum = 0;
    return function () {
    var randomNum = Math.random();
    if (randomNum > 0.5) {
    vipNum++;
    return "V" + vipNum;
    } else {
    norNum++;
    return "N" + norNum;
    }
    }
    })();

    该函数通过Math.random()随机生成客户类型,VIP客户编号递增,普通客户编号也递增。

    2. 初始客户生成
    var personArr = [];
    var perLen = 6;
    for (var i = 0; i < perLen; i++) {
    vipFirst(autoPerson());
    }

    初始生成perLen个客户,调用vipFirst函数处理队列。

    3. 队列处理逻辑
    function vipFirst(person) {
    if (person[0] == "V") {
    for (var i = 0; i < personArr.length; i++) {
    if (personArr[i][0] == "N") {
    personArr.splice(i, 0, person);
    return;
    }
    }
    }
    personArr.push(person);
    }

    当新客户是VIP类型时,系统会检查当前队列,找到第一个普通客户位置,将VIP客户插入到其前面。普通客户则直接加入队列末尾。

    4. 实时处理
    console.log("现存队列:" + personArr);
    var timer = setInterval(listMove, 5000);
    function listMove() {
    var firstPer = personArr.shift();
    console.log("叫号:" + firstPer);
    var newper = autoPerson();
    console.log("新人:" + newper);
    vipFirst(newper);
    console.log("现存队形:" + personArr);
    }

    每隔5秒自动调用listMove函数,处理队列,输出日志信息。

    系统优势

  • 高效处理:通过队列处理逻辑,确保VIP客户优先服务。
  • 自动化:利用计时器实现客户定时生成,模拟真实场景。
  • 易于扩展:代码结构清晰,便于后续功能扩展和优化。
  • 总结

    以上是JS模拟排队系统的实现逻辑,通过VIP和普通客户的区分处理,模拟了真实场景中的排队流程。该系统能够有效管理客户到达和处理过程,是一个较为完整的模拟实现。

    转载地址:http://trqfk.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现Knapsack problem背包问题算法(附完整源码)
    查看>>
    Objective-C实现knapsack背包问题算法(附完整源码)
    查看>>
    Objective-C实现knapsack背包问题算法(附完整源码)
    查看>>
    Objective-C实现knight tour骑士之旅算法(附完整源码)
    查看>>
    Objective-C实现KNN算法(附完整源码)
    查看>>
    Objective-C实现koch snowflake科赫雪花算法(附完整源码)
    查看>>
    Objective-C实现KPCA(附完整源码)
    查看>>
    Objective-C实现kth order statistick阶统计量算法(附完整源码)
    查看>>
    Objective-C实现LRU 缓存算法(附完整源码)
    查看>>
    Objective-C实现lstm prediction预测算法(附完整源码)
    查看>>
    Objective-C实现max subarray sum最大子数组和算法(附完整源码)
    查看>>
    Objective-C实现MaximumSubarray最大子阵列(动态规划解决方案)算法(附完整源码)
    查看>>
    Objective-C实现max_heap最大堆算法(附完整源码)
    查看>>
    Objective-C实现md5算法(附完整源码)
    查看>>
    Objective-C实现memoization优化技术算法(附完整源码)
    查看>>
    Objective-C实现memset函数功能(附完整源码)
    查看>>
    Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
    查看>>
    Objective-C实现merge sort归并排序算法(附完整源码)
    查看>>
    Objective-C实现mergesort归并排序算法(附完整源码)
    查看>>
    Objective-C实现miller rabin米勒-拉宾素性检验算法(附完整源码)
    查看>>