在这个数字化时代,健身爱好者们越来越倾向于通过在线平台预约健身教练。为了满足这一需求,本文将带你一步步用Python语言构建一个简易但功能完备的在线健身教练预约系统。
项目背景
随着健康意识的提升,越来越多的人开始关注健身。然而,传统的健身房预约方式往往效率低下,难以满足现代人的快节奏生活。一个在线健身教练预约系统不仅能提高预约效率,还能为教练和学员提供更便捷的沟通渠道。
技术选型
为了实现这一系统,我们将使用以下技术栈:
- Python:作为主要的编程语言,Python简洁易读,适合快速开发。
- Flask:一个轻量级的Web框架,用于构建Web应用。
- SQLite:一个轻量级的数据库,用于存储预约信息。
- HTML/CSS:用于前端页面的设计和布局。
系统功能
我们的在线健身教练预约系统将包含以下核心功能:
- 用户注册与登录:用户可以通过注册账号并登录系统。
- 教练信息展示:展示教练的个人信息、专长及空闲时间。
- 预约功能:用户可以选择教练并预约特定时间段。
- 预约管理:用户和教练可以查看和管理自己的预约记录。
实现步骤
1. 环境搭建
首先,确保你已经安装了Python和pip。然后,安装Flask和SQLite:
pip install Flask
2. 项目结构
创建以下文件和目录结构:
fitness_coach_booking/
│
├── app.py
├── templates/
│ ├── index.html
│ ├── login.html
│ ├── register.html
│ ├── coach_list.html
│ └── booking.html
└── static/
└── style.css
3. 数据库设计
在app.py
中,定义数据库模型:
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///fitness.db'
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(80), nullable=False)
class Coach(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
specialty = db.Column(db.String(120), nullable=False)
availability = db.Column(db.String(200), nullable=False)
class Booking(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
coach_id = db.Column(db.Integer, db.ForeignKey('coach.id'), nullable=False)
time_slot = db.Column(db.String(80), nullable=False)
db.create_all()
4. 用户注册与登录
实现用户注册与登录功能:
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
new_user = User(username=username, password=password)
db.session.add(new_user)
db.session.commit()
return redirect(url_for('login'))
return render_template('register.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username, password=password).first()
if user:
return redirect(url_for('coach_list'))
return render_template('login.html')
5. 教练信息展示
展示教练列表:
@app.route('/coaches')
def coach_list():
coaches = Coach.query.all()
return render_template('coach_list.html', coaches=coaches)
6. 预约功能
实现预约功能:
@app.route('/book/<int:coach_id>', methods=['GET', 'POST'])
def book(coach_id):
if request.method == 'POST':
time_slot = request.form['time_slot']
new_booking = Booking(user_id=1, coach_id=coach_id, time_slot=time_slot)
db.session.add(new_booking)
db.session.commit()
return redirect(url_for('coach_list'))
coach = Coach.query.get(coach_id)
return render_template('booking.html', coach=coach)
7. 前端页面
在templates
目录下创建相应的HTML文件,并使用CSS进行简单美化。
评论(0)