当前位置:首页 > PHP

php实现叫号系统

2026-01-30 08:38:19PHP

实现叫号系统的基本思路

叫号系统通常用于医院、银行、政务大厅等场所,核心功能包括取号、叫号、显示当前号码和排队情况。PHP作为后端语言,可结合MySQL数据库和前端技术实现。

数据库设计

创建基本表结构存储号码信息:

CREATE TABLE queue_numbers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    number VARCHAR(20) NOT NULL,
    status ENUM('waiting', 'called', 'completed') DEFAULT 'waiting',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    called_at TIMESTAMP NULL
);

取号功能实现

创建取号接口(take_number.php):

<?php
header('Content-Type: application/json');
require 'db_connection.php';

$prefix = 'A'; // 可根据业务类型设置不同前缀
$lastNumber = $db->query("SELECT MAX(number) FROM queue_numbers WHERE number LIKE '$prefix%'")->fetchColumn();
$newNum = $prefix . str_pad((int)substr($lastNumber, 1) + 1, 3, '0', STR_PAD_LEFT);

$stmt = $db->prepare("INSERT INTO queue_numbers (number) VALUES (?)");
$stmt->execute([$newNum]);

echo json_encode(['number' => $newNum]);
?>

叫号功能实现

创建叫号接口(call_number.php):

<?php
header('Content-Type: application/json');
require 'db_connection.php';

// 获取最早等待的号码
$stmt = $db->prepare("SELECT id, number FROM queue_numbers WHERE status = 'waiting' ORDER BY created_at ASC LIMIT 1");
$stmt->execute();
$number = $stmt->fetch(PDO::FETCH_ASSOC);

if ($number) {
    $update = $db->prepare("UPDATE queue_numbers SET status = 'called', called_at = NOW() WHERE id = ?");
    $update->execute([$number['id']]);
    echo json_encode($number);
} else {
    echo json_encode(['error' => 'No numbers in queue']);
}
?>

显示排队信息

创建查询接口(queue_status.php):

<?php
header('Content-Type: application/json');
require 'db_connection.php';

$waiting = $db->query("SELECT COUNT(*) FROM queue_numbers WHERE status = 'waiting'")->fetchColumn();
$called = $db->query("SELECT number FROM queue_numbers WHERE status = 'called' ORDER BY called_at DESC LIMIT 1")->fetchColumn();

echo json_encode([
    'current' => $called ?: '--',
    'waiting_count' => $waiting
]);
?>

前端显示实现

基本HTML显示页面(display.html):

<!DOCTYPE html>
<html>
<head>
    <title>叫号系统显示屏</title>
    <style>
        .display {
            font-size: 5em;
            text-align: center;
        }
        .queue {
            font-size: 2em;
            margin-top: 50px;
        }
    </style>
</head>
<body>
    <div class="display" id="currentNumber">--</div>
    <div class="queue">等待人数: <span id="waitingCount">0</span></div>

    <script>
        function updateDisplay() {
            fetch('queue_status.php')
                .then(response => response.json())
                .then(data => {
                    document.getElementById('currentNumber').textContent = data.current;
                    document.getElementById('waitingCount').textContent = data.waiting_count;
                });
        }

        setInterval(updateDisplay, 3000);
        updateDisplay();
    </script>
</body>
</html>

叫号终端实现

管理员叫号界面(caller.html):

<!DOCTYPE html>
<html>
<head>
    <title>叫号终端</title>
</head>
<body>
    <button id="callNext">叫号</button>
    <div id="message"></div>

    <script>
        document.getElementById('callNext').addEventListener('click', () => {
            fetch('call_number.php')
                .then(response => response.json())
                .then(data => {
                    document.getElementById('message').textContent = 
                        data.error ? data.error : `已叫号: ${data.number}`;
                });
        });
    </script>
</body>
</html>

扩展功能建议

  1. 多队列支持:修改数据库结构,添加queue_type字段区分不同业务类型

  2. 语音播报:使用Web Speech API实现浏览器端语音提示

    function speak(text) {
     const utterance = new SpeechSynthesisUtterance(text);
     speechSynthesis.speak(utterance);
    }
  3. 数据统计:添加报表功能,统计每日叫号量和服务时长

  4. 过号处理:添加超时逻辑,长时间未处理的号码自动返回队列

  5. 权限控制:叫号终端添加登录验证,防止未授权操作

    php实现叫号系统

该系统可通过浏览器、大屏显示器和取号终端配合使用,根据实际需求调整界面样式和功能细节。

标签: 系统php
分享给朋友:

相关文章

php实现分页

php实现分页

PHP实现分页的基本方法 使用原生PHP实现分页功能需要结合数据库查询和HTML展示。以下是核心实现步骤: 数据库查询与分页逻辑 // 连接数据库 $conn = new mysqli('loca…

vue实现一个插件系统

vue实现一个插件系统

实现插件系统的核心思路 Vue的插件系统允许通过Vue.use()注册全局功能,通常包含以下要素: 暴露install方法供Vue调用 添加全局资源(指令/过滤器/组件等) 注入组件选项 添加实例方…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php 实现队列

php 实现队列

PHP 实现队列的方法 PHP 可以通过多种方式实现队列功能,以下是几种常见的实现方法: 使用数组实现队列 PHP 数组可以通过 array_push 和 array_shift 函数模拟队列的先进…

php实现的进度条

php实现的进度条

PHP 实现的进度条方法 在 PHP 中实现进度条通常可以通过命令行脚本(CLI)或 Web 页面两种方式完成。以下是几种常见的实现方法: 命令行进度条 使用 PHP CLI 实现进度条,可以通过不…