Python打造在线健身教练预约系统

admin 2025-01-13 575 0

在这个数字化时代,健身爱好者们越来越倾向于通过在线平台预约健身教练。为了满足这一需求,本文将带你一步步用Python语言构建一个简易但功能完备的在线健身教练预约系统。

Python打造在线健身教练预约系统

项目背景

随着健康意识的提升,越来越多的人开始关注健身。然而,传统的健身房预约方式往往效率低下,难以满足现代人的快节奏生活。一个在线健身教练预约系统不仅能提高预约效率,还能为教练和学员提供更便捷的沟通渠道。

技术选型

为了实现这一系统,我们将使用以下技术栈:

  • Python:作为主要的编程语言,Python简洁易读,适合快速开发。
  • Flask:一个轻量级的Web框架,用于构建Web应用。
  • SQLite:一个轻量级的数据库,用于存储预约信息。
  • HTML/CSS:用于前端页面的设计和布局。

系统功能

我们的在线健身教练预约系统将包含以下核心功能:

  1. 用户注册与登录:用户可以通过注册账号并登录系统。
  2. 教练信息展示:展示教练的个人信息、专长及空闲时间。
  3. 预约功能:用户可以选择教练并预约特定时间段。
  4. 预约管理:用户和教练可以查看和管理自己的预约记录。

实现步骤

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)