Sistema Inteligente de Reserva de Hotéis baseado em Python/Django/Flask - Projeto de Conclusão de Curso em Computação

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Gestão de Informações do Hotel: Administradores podem adicionar, editar e excluir informações do hotel (nome, localização, estrelas, instalações).
  7. Gestão de Quartos: Administradores gerenciam tipos de quarto, preços e disponibilidade.
  8. Gestão de Promoções: Administradores podem publicar ofertas e descontos para atrair mais reservas.
  9. 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.

Tags: Python Django Flask MySQL PyCharm

Publicado em 7-9 16:54