当前位置:首页 > 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实现叫号系统

<?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字段区分不同业务类型

    php实现叫号系统

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

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

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

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

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

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

相关文章

php实现分页

php实现分页

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

vue实现在线学习系统

vue实现在线学习系统

实现功能模块设计 在线学习系统通常需要包含课程展示、用户管理、学习进度跟踪、互动讨论等功能模块。使用Vue.js可以高效构建这些模块。 课程展示模块需要设计课程卡片、分类筛选、搜索功能。用户管理模块…

php实现验证码

php实现验证码

PHP实现验证码的方法 使用GD库生成验证码 GD库是PHP中处理图像的扩展,可用于生成验证码图片。 <?php session_start(); $width = 120; $height…

php实现socket

php实现socket

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

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php长连接实现

php长连接实现

PHP 长连接实现方法 长连接(Keep-Alive)允许客户端与服务器在一次TCP连接中发送和接收多个HTTP请求/响应,减少重复建立连接的开销。以下是PHP中实现长连接的几种方式: 配置HTTP…