下面是一个简单的网吧计费系统的实现示例,使用 PHP 和 SQL:
- 创建一个名为
netbar_billing
的数据库,其中包含一个名为users
的表格,用于存储用户信息,包括id
(用户 ID)、name
(用户名)、balance
(余额)和status
(状态)等字段。 - 创建一个名为
login
的页面,用于用户登录。用户需要输入用户名和密码,系统将验证用户信息,并在验证通过后将用户状态设置为“已登录”。 - 创建一个名为
logout
的页面,用于用户退出。用户退出后,系统将用户状态设置为“已退出”。 - 创建一个名为
billing
的页面,用于计费。在该页面中,将显示当前用户余额和计时器,用户可以选择不同的时间段来计费。在计费完成后,系统将扣除相应的费用并更新用户余额。 下面是一个示例代码:
<?php // 连接到数据库 $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "netbar_billing"; $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接是否成功 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 在 login 页面中,验证用户信息 if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST["username"]; $password = $_POST["password"]; $sql = "SELECT id, name, balance FROM users WHERE name = '$username' AND password = '$password'"; $result = $conn->query($sql); if ($result->num_rows > 0) { $row = $result->fetch_assoc(); $user_id = $row["id"]; $user_name = $row["name"]; $user_balance = $row["balance"]; // 将用户状态设置为“已登录” $sql = "UPDATE users SET status = 'logged_in' WHERE id = '$user_id'"; $conn->query($sql); } else { echo "用户名或密码错误"; } } // 在 logout 页面中,将用户状态设置为“已退出” if ($_SERVER["REQUEST_METHOD"] == "POST") { $user_id = $_POST["user_id"]; $sql = "UPDATE users SET status = 'logged_out' WHERE id = '$user_id'"; $conn->query($sql); } // 在 billing 页面中,扣除用户费用并更新余额 if ($_SERVER["REQUEST_METHOD"] == "POST") { $user_id = $_POST["user_id"]; $time = $_POST["time"]; $price = 1; // 每小时计费 1 元 $total_price = $price * $time; // 检查用户余额是否充足 $sql = "SELECT balance FROM users WHERE id = '$user_id'"; $result = $conn->query($sql); $row = $result->fetch_assoc(); $user_balance = $row["balance"]; if ($user_balance >= $total_price) { // 更新用户余额 $new_user_balance = $user_balance - $total_price; $sql = "UPDATE users SET balance = '$new_user_balance' WHERE id = '$user_id'"; $conn->query($sql); // 记录用户消费历史 $sql = "INSERT INTO billing_history (user_id, price, time) VALUES ('$user_id', '$total_price', '$time')"; $conn->query($sql); } else { echo "余额不足"; } } $conn->close(); ?>
请注意,此示例中的代码仅供参考。实际实现中,您可能需要更多的功能和安全性检查,例如使用密码哈希而不是明文密码,限制用户登录尝试次数,记录用户活动日志等。
评论