%208.09.39%E2%80%AFp.m..png)
Introducción
La gestión eficiente de citas es fundamental para cualquier salón de belleza. Este sistema permite a los administradores registrar clientes, gestionar un catálogo de servicios y agendar citas de manera sencilla y organizada.
El sistema está desarrollado con Python y Flask, utilizando archivos de texto para el almacenamiento de datos, lo que lo hace ligero y fácil de mantener sin necesidad de bases de datos.
Tecnologías Utilizadas
Python 3: Lenguaje principal para el backend.
Flask: Framework para el desarrollo web.
HTML + CSS: Diseño y estructura de la interfaz de usuario.
Archivos de texto (``): Para el almacenamiento de clientes, servicios y citas.
Características del Sistema
✅ Registro y gestión de clientes.
✅ Catálogo de servicios con precios.
✅ Agendamiento de citas seleccionando cliente y servicio.
✅ Eliminación de citas.
✅ Historial de citas por cliente.
✅ Interfaz moderna con animaciones y colores suaves.
📂 Estructura del Proyecto
📂 Ubicación: Documentos/python/salonBelleza
salonBelleza/
│── app.py # Archivo principal de la aplicación Flask
│── templates/
│ ├── index.html # Página para agendar citas
│ ├── citas.html # Página para ver y eliminar citas
│ ├── agregar_servicio.html # Página para agregar nuevos servicios
│ ├── agregar_cliente.html # Página para registrar clientes
│ ├── clientes.html # Página para ver lista de clientes
│ ├── historial_cliente.html # Historial de citas de un cliente
│── static/
│ ├── styles.css # Archivo CSS con diseño moderno
│── citas.txt # Archivo donde se almacenan las citas
│── servicios.txt # Archivo donde se almacenan los servicios
│── clientes.txt # Archivo donde se almacenan los clientes
📌 Código Completo de los Archivos
📌 **Archivo Principal: **``
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
CITAS_ARCHIVO = "citas.txt"
SERVICIOS_ARCHIVO = "servicios.txt"
CLIENTES_ARCHIVO = "clientes.txt"
def leer_clientes():
clientes = []
try:
with open(CLIENTES_ARCHIVO, "r") as file:
for linea in file:
clientes.append(linea.strip())
except FileNotFoundError:
pass
return clientes
def agregar_cliente(nombre):
with open(CLIENTES_ARCHIVO, "a") as file:
file.write(f"{nombre}\n")
def leer_servicios():
servicios = {}
try:
with open(SERVICIOS_ARCHIVO, "r") as file:
for linea in file:
nombre, precio = linea.strip().split("|")
servicios[nombre] = float(precio)
except FileNotFoundError:
pass
return servicios
def agregar_servicio(nombre, precio):
with open(SERVICIOS_ARCHIVO, "a") as file:
file.write(f"{nombre}|{precio}\n")
def leer_citas():
citas = []
try:
with open(CITAS_ARCHIVO, "r") as file:
for linea in file:
datos = linea.strip().split("|")
if len(datos) == 4:
citas.append({
"cliente": datos[0],
"servicio": datos[1],
"fecha": datos[2],
"hora": datos[3]
})
except FileNotFoundError:
pass
return citas
def guardar_cita(cliente, servicio, fecha, hora):
with open(CITAS_ARCHIVO, "a") as file:
file.write(f"{cliente}|{servicio}|{fecha}|{hora}\n")
def historial_cliente(nombre):
citas = leer_citas()
return [c for c in citas if c["cliente"] == nombre]
@app.route("/")
def index():
servicios = leer_servicios()
clientes = leer_clientes()
return render_template("index.html", servicios=servicios, clientes=clientes)
@app.route("/citas")
def mostrar_citas():
citas = leer_citas()
return render_template("citas.html", citas=citas)
@app.route("/agregar_cita", methods=["POST"])
def agregar_cita():
cliente = request.form["cliente"]
servicio = request.form["servicio"]
fecha = request.form["fecha"]
hora = request.form["hora"]
guardar_cita(cliente, servicio, fecha, hora)
return redirect(url_for("mostrar_citas"))
@app.route("/agregar_cliente", methods=["GET", "POST"])
def agregar_cliente_view():
if request.method == "POST":
nombre = request.form["nombre"]
agregar_cliente(nombre)
return redirect(url_for("index"))
return render_template("agregar_cliente.html")
@app.route("/clientes")
def ver_clientes():
clientes = leer_clientes()
return render_template("clientes.html", clientes=clientes)
@app.route("/historial_cliente/<nombre>")
def historial_cliente_view(nombre):
historial = historial_cliente(nombre)
return render_template("historial_cliente.html", cliente=nombre, historial=historial)
if __name__ == "__main__":
app.run(debug=True)
📌 Código Completo de los Archivos HTML
Se incluyen los archivos:
index.html
citas.html
agregar_cliente.html
agregar_servicio.html
clientes.html
historial_cliente.html
No hay comentarios