Biblioteca Escolar – Escola Estadual Bueno Brandão

Projeto desenvolvido pelos alunos do curso técnico em Informática (Uberlândia/MG).

Sumário

Sobre o projeto

Este sistema simula a operação de uma biblioteca escolar com controle de usuários, livros, reservas, empréstimos, atrasos e multas. Foi construído com PHP e MySQL, utilizando Bootstrap para UI.

Requisitos

Downloads

Os seguintes arquivos estão disponíveis na pasta uploads/ do projeto:

Instalação

  1. Copie a pasta do projeto para C:\xampp\htdocs\biblioteca.
  2. Inicie Apache e MySQL no XAMPP Control Panel.
  3. Crie um banco de dados (ex.: biblioteca1) e configure a conexão em config/config_bd.php.
  4. Execute o script de criação/migração abaixo no MySQL (Ajuste nomes conforme necessário).
  5. Acesse http://localhost/biblioteca/.

Estrutura do projeto

c:\xampp\htdocs\biblioteca\
├─ config\
│  └─ config_bd.php          # Conexão MySQL
├─ lib\
│  └─ usuario_utils.php      # Sessão e autorização (requireAuth, requireAdmin, isAdmin)
├─ uploads\
│  ├─ logo.png               # Logo da escola
│  └─ escola.png             # Foto da escola
├─ index.php                 # Tela inicial pública
├─ login.php                 # Login por e-mail + senha
├─ logout.php                # Encerrar sessão
├─ listar_usuarios.php       # Gestão de usuários (admin)
├─ listar_livros.php         # Gestão/Listagem de livros
├─ listar_emprestimos.php    # Empréstimos
├─ listar_reservas.php       # Reservas
├─ listar_atrasos.php        # Atrasos e multas
├─ marcar_multa_paga.php     # Quitar multa (admin)
└─ gerador_hash.php          # Utilitário independente para gerar hash de senha

Banco de dados

Estrutura mínima sugerida (resumo; ajuste conforme seu schema atual). Caso já possua o dump uploads/biblioteca1.sql, ele foi atualizado para criar e usar o banco biblioteca1 automaticamente:

-- Criar e usar o banco
CREATE DATABASE IF NOT EXISTS biblioteca1 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE biblioteca1;

Esquema exemplo:

-- Tabela de usuários
CREATE TABLE usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(120) NOT NULL,
  cpf VARCHAR(14) NOT NULL,
  matricula VARCHAR(50) NOT NULL,
  email VARCHAR(120) NOT NULL,
  senha VARCHAR(255) NOT NULL,
  endereco VARCHAR(180) NOT NULL,
  bairro VARCHAR(120) NOT NULL,
  cidade VARCHAR(120) NOT NULL,
  uf CHAR(2) NOT NULL,
  foto VARCHAR(255) NULL,
  tipo_usuario VARCHAR(20) NOT NULL DEFAULT 'usuario', -- 'admin' | 'usuario'
  UNIQUE KEY (email),
  UNIQUE KEY (matricula)
);

-- Tabela de livros (exemplo)
CREATE TABLE livros (
  id INT AUTO_INCREMENT PRIMARY KEY,
  titulo VARCHAR(200) NOT NULL,
  autor VARCHAR(200) NOT NULL,
  isbn VARCHAR(30) NOT NULL,
  categoria VARCHAR(120) NOT NULL,
  quantidade INT NOT NULL,
  quantidade_disponivel INT NOT NULL DEFAULT 0,
  status VARCHAR(20) NOT NULL DEFAULT 'ativo',
  capa VARCHAR(255) NULL
);

-- Empréstimos (exemplo)
CREATE TABLE emprestimos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  usuario_id INT NOT NULL,
  livro_id INT NOT NULL,
  data_emprestimo DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  data_devolucao_prevista DATE NOT NULL,
  data_devolucao_real DATETIME NULL,
  status VARCHAR(30) NOT NULL DEFAULT 'ativo',
  multa DECIMAL(10,2) NOT NULL DEFAULT 0,
  multa_paga TINYINT(1) NOT NULL DEFAULT 0,
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (livro_id) REFERENCES livros(id)
);

-- Reservas (exemplo)
CREATE TABLE reservas (
  id INT AUTO_INCREMENT PRIMARY KEY,
  usuario_id INT NOT NULL,
  livro_id INT NOT NULL,
  data_reserva DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  status VARCHAR(20) NOT NULL DEFAULT 'ativa',
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (livro_id) REFERENCES livros(id)
);

-- Histórico de pagamentos de multas (exemplo)
CREATE TABLE multas_pagamentos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  emprestimo_id INT NOT NULL,
  usuario_id INT NOT NULL,
  valor DECIMAL(10,2) NOT NULL,
  metodo_pagamento VARCHAR(40) NOT NULL,
  admin_id INT NOT NULL,
  data_pagamento DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (emprestimo_id) REFERENCES emprestimos(id),
  FOREIGN KEY (usuario_id) REFERENCES usuarios(id),
  FOREIGN KEY (admin_id) REFERENCES usuarios(id)
);

Promoção de administrador

-- Defina um usuário como administrador
UPDATE usuarios SET tipo_usuario = 'admin' WHERE email = '[email protected]';

Autenticação e papéis

Principais funcionalidades

Administração

  • Gerenciar usuários (cadastro, edição, exclusão, foto, tipo)
  • Gerenciar livros (cadastro, edição, exclusão, capa)
  • Controle de empréstimos (registrar, devolver)
  • Controle de atrasos e multas (quitar multas)
  • Relatórios/gráficos

Usuário autenticado

  • Visualizar livros, reservas e empréstimos
  • Criar reservas (conforme regras)

Manutenção/Operação

Créditos

Desenvolvido pelos alunos do curso técnico em Informática da Escola Estadual Bueno Brandão, sob orientação da professora Graziele de Oliveira Pereira.