Pilha Tecnológica e Ambiente
O sistema foi desenvolvido em Python com MySQL como base de dados, utilizando o framework Django/Flask. O Django é um framework de desenvolvimento de aplicações web baseado em MVC, conhecido por ser poderoso, facilmente extensível e com alta reutilização.
- Linguagem: Python 3.7.7
- Framework: Django ou Flask
- Banco de dados: MySQL
- Ferramenta de banco: Navicat
- IDE: PyCharm
- Navegador: Google Chrome
Descrição do Projeto
Com o crescimento contínuo do turismo e da hotelaria, a demanda por reservas de hotéis aumenta cada vez mais. Os métodos tradicionais de reserva sofrem com assimetria de informações e processos complexos, não conseguindo mais atender às necessidades dos consumidores modernos. Desenvolver um sistema inteligente de reserva de hotéis baseado em Python torna-se essencial. Este sistema integra tecnologias front-end e back-end para oferecer funcionalidades de exibição online, reserva, pagamento e gestão de hotéis, visando aumentar a eficiência das reservas, melhorar a experiência do usuário e ajudar hotéis a se destacarem em um mercado competitivo.
- Pesquisa e Filtro de Hotéis: O usuário pode filtrar hotéis por destino, datas de check-in/out, faixa de preço e tipo de hotel, obtendo rapidamente uma lista de opções.
- Visualização de Detalhes: O usuário pode ver fotos, localização, instalações, preços e avaliações do hotel para fazer comparações.
- Reserva: Após selecionar hotel e tipo de quarto, o usuário insere dados pessoais e finaliza a reserva. O sistema suporta múltiplos métodos de pagamento, como WeChat Pay e Alipay.
- Gestão de Pedidos: O usuário pode consultar o histórico de reservas, modificar ou cancelar pedidos (dentro das regras). Administradores podem visualizar e processar pedidos no painel de controle, aumentando a eficiência.
- Avaliação: O usuário pode avaliar o hotel após a estadia. Essas avaliações ajudam outros usuários na escolha e incentivam o hotel a melhorar seu serviço.
- Gestão de Informações do Hotel: Administradores podem adicionar, editar e excluir informações do hotel (nome, localização, estrelas, instalações).
- Gestão de Quartos: Administradores gerenciam tipos de quarto, preços e disponibilidade.
- Gestão de Promoções: Administradores podem publicar ofertas e descontos para atrair mais reservas.
- Gestão de Feedback: Administradores podem visualizar e responder às avaliações e sugestões dos usuários, otimizando a qualidade do serviço.
Características do Sistema
- Separação Front-end/Back-end: O sistema adota arquitetura de separação, onde o front-end (Vue.js) cuida da interface e interação, e o back-end (Django/Flask) gerencia a lógica de negócios e dados. Isso torna o sistema flexível, de fácil manutenção e escalável.
- Atualização em Tempo Real: Informações de quartos, preços e disponibilidade são atualizadas em tempo real, garantindo que o usuário sempre veja dados precisos.
- Alta Segurança: São empregadas medidas como criptografia de dados e controle de permissões para proteger informações do usuário e transações.
- Boa Experiência do Usuário: Interface limpa e intuitiva, com algoritmos de busca e recomendação otimizados para aumentar a satisfação e eficiência das reservas.
Projeto do Sistema
O desenvolvimento seguiu a metodologia de engenharia de software, percorrendo as fases: definição do problema, estudo de viabilidade, análise de requisitos, projeto geral, projeto detalhado, codificação, testes unitários, testes integrados e manutenção.
- Projeto do Banco de Dados: Criação de uma estrutura eficiente com tabelas para usuários, informações de hotéis, quartos, pedidos, avaliações, etc., e definição dos relacionamentos.
- Arquitetura do Sistema: Projeto da arquitetura global, incluindo design de front-end, back-end e interfaces (APIs).
- Experiência do Usuário: Fluxos de registro, login, busca e reserva projetados para serem simples e intuitivos.
- Front-end: Utilização de Python Web frameworks (Django/Flask) combinados com Vue.js para criar páginas amigáveis ao usuário.
Desempenho, Segurança e Carga
O sistema utiliza CDN e banco de dados de alto desempenho para suportar múltiplos acessos simultâneos com boa velocidade. Para confiabilidade, são empregados balanceamento de carga, versionamento e backups. A segurança é garantida por múltiplas camadas de defesa, incluindo monitoramento e auditoria de logs para identificar e resolver problemas rapidamente.
Análise de Viabilidade
O sistema utiliza Django (ou Flask), que é um framework open source maduro, baseado em MVC, prooprcionando desenvolvimento rápido, fácil implantação, alta reutilização e baixo custo de manutenção. MySQL, também open source, atende bem às necessidades. Economicamente, o desenvolvimento é viável pois utiliza ferramentas gratuitas e reduz custos operacionais.
Código Exemplo (Flask)
import os
from flask import Blueprint
from utils.py_file_check import pyFileCheck
main_blueprint = Blueprint('main', __name__, static_folder='static')
import_expression = 'from . import '
views_set = set()
excluded_files = ["__init__.py"]
base_dir = os.path.join(os.getcwd(), "api/main")
base_dir = base_dir.replace("unit_test/", '') if "unit_test/" in base_dir else base_dir
for filename in os.listdir(base_dir):
if filename not in excluded_files and pyFileCheck(filename):
module_name = filename.split(".", 1)[0]
views_set.add(module_name)
import_expression += ','.join(views_set)
exec(import_expression)
Código Exemplo (Django)
from django.http import JsonResponse
from .users_model import UserModel
from util.codes import *
from util.auth import Auth
import util.message as messages
def authenticate_user(request):
if request.method in ["POST", "GET"]:
response = {'code': normal_code, 'msg': messages.normal_code}
request_dict = request.session.get('req_dict')
if 'role' in request_dict:
del request_dict['role']
users = UserModel.get_by_params(UserModel, UserModel, request_dict)
if not users:
response['code'] = password_error_code
response['msg'] = messages.password_error_code
return JsonResponse(response)
request_dict['id'] = users[0].get('id')
return Auth.authenticate(Auth, UserModel, request_dict)
def create_user(request):
if request.method in ["POST", "GET"]:
response = {'code': normal_code, 'msg': messages.normal_code}
request_dict = request.session.get('req_dict')
error = UserModel.create_by_request(UserModel, UserModel, request_dict)
if error is not None:
response['code'] = crud_error_code
response['msg'] = error
return JsonResponse(response)
Métodos de Pesquisa
Foram utilizados os seguintes métodos: Pesquisa bibliográfica para compreender o estado da arte; Pesquisa empírica para testar o sistema em condições reais; Método de síntese de experiências para consolidar o conhecimento adquirido durante o desenvolvimento.