当前位置:首页 > 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实现socket

php实现socket

PHP 实现 Socket 通信 PHP 可以通过 socket 扩展实现网络通信,支持 TCP/UDP 协议。以下是实现 Socket 通信的核心步骤和代码示例。 创建 TCP 服务器 //…

php实现接口

php实现接口

PHP 实现接口的方法 在 PHP 中,接口(Interface)用于定义一组方法的规范,而不实现具体功能。类可以实现一个或多个接口,并必须实现接口中定义的所有方法。 定义接口 接口使用 inter…

php实现推送

php实现推送

PHP 实现推送功能的方法 PHP 实现推送功能可以通过多种方式完成,包括 WebSocket、Server-Sent Events (SSE)、长轮询或第三方推送服务。以下是几种常见的方法: 使用…

php mvc实现

php mvc实现

PHP MVC 实现步骤 模型(Model)层 模型负责数据处理和业务逻辑,通常与数据库交互。创建一个基类模型,其他具体模型继承它。 class Model { protected $db;…

php无法实现的

php无法实现的

PHP 的局限性 PHP 是一种广泛使用的服务器端脚本语言,主要用于 Web 开发。尽管功能强大,但在某些场景下存在局限性。 操作系统级开发 PHP 不适合编写操作系统内核或底层驱动程序。这类任务通…

php实现单一入口

php实现单一入口

PHP 单一入口实现方法 单一入口(Single Entry Point)是一种设计模式,通过一个入口文件(如index.php)集中处理所有请求,实现路由分发、统一初始化等操作。以下是实现方法:…