PHP后台+微信小程序运动场地预约系统毕业设计
一、引言
随着人们生活水平的提高,体育锻炼逐渐成为大众日常生活的重要组成部分。特别是在城市中,运动场地的预约需求日益增加。为了提高运动场地的使用效率和用户的预约体验,我们设计并实现了一个基于PHP后台与微信小程序的运动场地预约系统。本系统包括用户注册登录、场地信息浏览、场地预约、订单管理等功能。
二、系统架构
系统采用前后端分离的设计。前端使用微信小程序进行开发,后端则使用PHP进行开发。数据存储选择MySQL数据库,以便高效管理用户信息和预约记录。
1. 数据库设计
数据库主要包括以下几张表:
- 用户表(users)
- 场地表(grounds)
- 预约表(reservations)
用户表:
CREATE TABLE `users` (
`id` INT(11) AUTO_INCREMENT PRIMARY KEY,
`openid` VARCHAR(255) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`phone` VARCHAR(20) NOT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
场地表:
CREATE TABLE `grounds` (
`id` INT(11) AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100) NOT NULL,
`location` VARCHAR(255) NOT NULL,
`price` DECIMAL(10, 2) NOT NULL,
`available` TINYINT(1) DEFAULT 1,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
预约表:
CREATE TABLE `reservations` (
`id` INT(11) AUTO_INCREMENT PRIMARY KEY,
`user_id` INT(11) NOT NULL,
`ground_id` INT(11) NOT NULL,
`reservation_time` DATETIME NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`),
FOREIGN KEY (`ground_id`) REFERENCES `grounds`(`id`)
);
三、功能实现
1. 用户注册与登录
用户通过微信授权登录,系统将获取用户的openid,并存储在用户表中。
PHP代码示例:
if(isset($_POST['code'])) {
// 获取用户的openid
$code = $_POST['code'];
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=$code&grant_type=authorization_code";
$response = file_get_contents($url);
$data = json_decode($response, true);
$openid = $data['openid'];
// 检查用户是否已存在
$stmt = $pdo->prepare("SELECT * FROM users WHERE openid = :openid");
$stmt->execute(['openid' => $openid]);
$user = $stmt->fetch();
if (!$user) {
// 如果用户不存在,注册新用户
$stmt = $pdo->prepare("INSERT INTO users (openid, name, phone) VALUES (:openid, '', '')");
$stmt->execute(['openid' => $openid]);
}
}
2. 场地浏览与预约
用户可以浏览可预约的场地信息,并选择想要预约的场地和时间。
场地信息API示例:
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$stmt = $pdo->query("SELECT * FROM grounds WHERE available = 1");
$grounds = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($grounds);
}
3. 预约记录管理
用户可以查看自己的预约记录,并取消未使用的预约。
查看预约记录示例:
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$userId = $_GET['user_id'];
$stmt = $pdo->prepare("SELECT * FROM reservations WHERE user_id = :user_id");
$stmt->execute(['user_id' => $userId]);
$reservations = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($reservations);
}
四、总结
本系统通过PHP后台与微信小程序的结合,实现了运动场地的预约管理功能,简化了用户的预约流程,提高了场地的使用效率。未来,我们可以考虑增加用户评价、场地推荐等功能,以提升用户体验和系统的智能化水平。希望本设计能够为相关领域的开发提供一些参考和帮助。