type
status
date
Jun 20, 2024 09:30 AM
slug
summary
category
tags
password
icon
产品说明
桌球在线计分微信小程序是为桌球比赛设计的在线计分工具,支持用户注册、赛事创建、AI识别计分等功能。
主要功能
客户端
- 用户注册与登录:用户可通过微信账号扫码快速注册并登录,实现个人信息的存储和同步
- 赛事创建与管理:用户通过扫描台球桌上二维码可创建新赛事,设置赛事名称、时间、地点、参赛人数等信息,并可对已有赛事进行编辑、删除等操作。
- AI识别和计分:利用AI技术对台球桌面进行实时识别和跟踪,自动记录进球和计分,减少了传统台球计分的人为误差和繁琐操作。
- 赛事查看:用户通过历史记录查看自己已参与赛事,并查看赛事详情。
- 个人信息修改:用户可通过小程序进行个人昵称、头像等资料修改。
服务端
- 管理员注册与登录:管理员可通过扫描二维码或在PC端实现管理员账号注册与登录。
- 台球厅管理权限绑定:管理员可创建和管理台球厅信息,包括台球厅的名称、地址和区域编码,并绑定管理权限。
- 赛事管理:管理员可以查看台球厅内的所有赛事信息。
- 用户心理管理:管理员可以查看和管理用户信息,包括用户的注册信息和赛事参与记录。
- 系统维护与日志管理:管理员可以查看系统的操作日志,监控系统状态,进行常规的系统维护。
环境配置
- 前端:基于微信小程序开发平台构建用户界面。
- 后端:采用Java作为服务器端编程语言。
- 数据库:使用MySQL作为数据存储解决方案。
- 硬件:集成力度传感器和摄像头传感器以支持AI识别功能。
- 服务器:部署在稳定可靠的云服务器上,确保小程序的高性能和可用性。
用户界面
- 首页:如图 1和图 2所示,通过扫一扫按钮扫描台球二维码注册新赛事;展示最近赛事;轮播图。
- 历史:如图 3所示,可通过条件查询历史赛事记录。
- 我的:如图 4所示,展示用户个人信息和相关设置按钮。
数据库表结构设计
用户表
字段名 | 数据类型 | 描述 | 数据来源 |
openid | VARCHAR(255) | 微信OpenID(唯一标识) | 自动获取 |
nickname | VARCHAR(50) | 用户昵称 | 自动获取,可修改 |
avatar_url | VARCHAR(255) | 用户头像URL | 自动获取,可修改 |
phone | VARCHAR(20) | 用户手机号(可选) | 用户手动输入 |
... | ... | 其他用户信息 |
赛事表
字段名 | 数据类型 | 描述 | 数据来源 |
id | INT AUTO_INCREMENT | 赛事ID(主键) | 自动生成 |
title | VARCHAR(100) | 赛事名称 | 创建赛事时,用户手动填写 |
start_time | DATETIME | 赛事开始时间 | 创建赛事时,自动生成 |
end_time | DATETIME | 赛事结束时间 | 结束赛事时,自动生成 |
location | VARCHAR(255) | 赛事地点 | 扫描二维码自动添加 |
rule | INT | 赛事规则 | 用户下拉框选择 |
max_players | INT | 最大参赛人数 | 根据赛事规则自动添加 |
creator_id | INT | 创建者ID | 根据创建者ID自动生成 |
userA_id | INT | 用户AID | 用户选择 |
userA_score | INT | 用户A得分 | 根据明细统计所得 |
userB_id | INT | 用户BID | 用户选择 |
userB_score | INT | 用户B得分 | 根据明细统计所得 |
userC_id | INT | 用户CID | 用户选择 |
userC_score | INT | 用户C得分 | 根据明细统计所得 |
userD_id | INT | 用户DID | 用户选择 |
userD_score | INT | 用户D得分 | 根据明细统计所得 |
winner_id | INT | 获胜者id | 通过得分判断 |
赛事详情表
字段名 | 数据类型 | 描述 | 数据来源 |
id | INT AUTO_INCREMENT | 详情ID(主键) | 自动生成 |
match_id | INT | 赛事ID | |
user_id | INT | 用户ID | |
score | INT | 得分 | 传感器 |
date | INT | 时间 | 自动生成 |
foul | INT | 犯规 | 传感器 |
... | ... | 其他 |
参赛者表
字段名 | 数据类型 | 描述 | 数据来源 |
id | INT AUTO_INCREMENT | 参赛者ID(主键) | 自动生成 |
user_id | INT | 用户ID(外键,关联users表) | 自动生成 |
match_id | INT | 赛事ID(外键,关联matches表) | 自动生成 |
... | ... | 其他 |
管理员表
字段名 | 数据类型 | 描述 | 数据来源 |
id | INT AUTO_INCREMENT | 管理员ID(主键) | 自动生成 |
username | VARCHAR(50) NOT NULL | 管理员用户名 | 管理员填写 |
password | VARCHAR(255) NOT NULL | 管理员密码(加密存储) | 管理员填写 |
billiard_hall_id | INT | 管理的台球厅ID(关联台球厅表) | 如果创建时自动对应台球厅的id |
created_at | DATETIME NOT NULL | 管理员创建时间 | 自动生成 |
updated_at | DATETIME | 管理员更新时间(可选) | 自动生成 |
台球厅表
字段名 | 数据类型 | 描述 | 数据来源 |
id | INT AUTO_INCREMENT | 台球厅ID(主键) | 自动生成 |
name | VARCHAR(100) NOT NULL | 台球厅名称 | 管理员填写 |
address | VARCHAR(255) | 台球厅地址 | 管理员选择 |
region_code | VARCHAR(10) | 台球厅所在区域的编码 | 根据选择索引对应编码 |
created_at | DATETIME NOT NULL | 台球厅创建时间 | 自动生成 |
日志表
字段名 | 数据类型 | 描述 | 数据来源 |
id | INT AUTO_INCREMENT | 操作日志ID(主键) | 自动生成 |
administrator_id | INT NOT NULL | 执行操作的管理员ID(外键,关联管理员表) | 自动生成 |
operation | VARCHAR(255) NOT NULL | 操作描述(如“创建用户”、“修改赛事”等) | 自动生成 |
result | ENUM('success', 'failure') | 操作结果(成功或失败) | 自动生成 |
details | TEXT | 操作详情(可选,用于存储更详细的日志信息) | 自动生成 |
timestamp | DATETIME NOT NULL | 操作时间戳 | 自动生成 |
- 作者:Frank
- 链接:https://blog.franksteven.me//article/SmartBilliard
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。