Código para Sistema de Biblioteca Escolar
Por: Alice Carvalho • 27/10/2025 • Trabalho acadêmico • 4.136 Palavras (17 Páginas) • 18 Visualizações
unit CadastroLivros;
interface
uses
System.SysUtils, System.Classes, Data.DB, Datasnap.DBClient;
type
TLivro = record
ID: Integer;
Titulo: string;
AutorID: Integer;
EditoraID: Integer;
AnoPublicacao: Integer;
Genero: string;
Disponivel: Boolean;
end;
TAutor = record
ID: Integer;
Nome: string;
end;
TEditora = record
ID: Integer;
Nome: string;
end;
TUsuario = record
ID: Integer;
Nome: string;
Senha: string;
Tipo: string; // Aluno, Professor, Funcionário, etc.
EmprestimosBloqueados: Boolean;
end;
TEmprestimo = record
ID: Integer;
LivroID: Integer;
UsuarioID: Integer;
DataEmprestimo: TDateTime;
DataDevolucao: TDateTime;
Devolvido: Boolean;
end;
TCadastroLivros = class
private
FLivros: TClientDataSet;
FAutores: TClientDataSet;
FEditoras: TClientDataSet;
FUsuarios: TClientDataSet;
FEmprestimos: TClientDataSet;
function CalcularMulta(DataPrevista: TDateTime): Double;
public
constructor Create;
destructor Destroy; override;
procedure AdicionarLivro(const Livro: TLivro);
procedure AdicionarAutor(const Autor: TAutor);
procedure AdicionarEditora(const Editora: TEditora);
procedure AdicionarUsuario(const Usuario: TUsuario);
procedure BloquearEmprestimos(UsuarioID: Integer);
procedure DesbloquearEmprestimos(UsuarioID: Integer);
procedure RemoverLivro(ID: Integer);
function BuscarLivro(Titulo: string): TClientDataSet;
function ListarLivros: TClientDataSet;
function ContarLivrosDisponiveisPorTitulo(Titulo: string): Integer;
function ContarLivrosDisponiveisPorAutor(AutorID: Integer): Integer;
function RelatorioEmprestimosPorTitulo(Titulo: string): TClientDataSet;
function RelatorioEmprestimosPorAutor(AutorID: Integer): TClientDataSet;
function RelatorioEmprestimosPorData(DataInicio, DataFim: TDateTime): TClientDataSet;
function RelatorioAcervoPorTitulo: TClientDataSet;
function RelatorioAcervoPorAutor: TClientDataSet;
function Login(Nome, Senha: string): Boolean;
procedure RegistrarEmprestimo(LivroID, UsuarioID: Integer);
function RegistrarDevolucao(EmprestimoID: Integer): Double;
end;
implementation
constructor TCadastroLivros.Create;
begin
FLivros := TClientDataSet.Create(nil);
FLivros.FieldDefs.Add('ID', ftInteger);
FLivros.FieldDefs.Add('Titulo', ftString, 100);
FLivros.FieldDefs.Add('AutorID', ftInteger);
FLivros.FieldDefs.Add('EditoraID', ftInteger);
FLivros.FieldDefs.Add('AnoPublicacao', ftInteger);
FLivros.FieldDefs.Add('Genero', ftString, 50);
FLivros.FieldDefs.Add('Disponivel', ftBoolean);
FLivros.CreateDataSet;
end;
destructor TCadastroLivros.Destroy;
begin
FLivros.Free;
FUsuarios.Free;
FEmprestimos.Free;
inherited;
end;
function TCadastroLivros.RelatorioAcervoPorTitulo: TClientDataSet;
begin
Result := TClientDataSet.Create(nil);
Result.CloneCursor(FLivros, True);
Result.IndexFieldNames := 'Titulo';
end;
function TCadastroLivros.RelatorioAcervoPorAutor: TClientDataSet;
begin
Result := TClientDataSet.Create(nil);
Result.CloneCursor(FLivros, True);
Result.IndexFieldNames := 'AutorID';
end;
end.
unit CadastroLivros;
interface
uses
System.SysUtils, System.Classes, Data.DB, Datasnap.DBClient;
type
TLivro = record
ID: Integer;
Titulo: string;
AutorID: Integer;
EditoraID: Integer;
AnoPublicacao: Integer;
Genero: string;
Disponivel: Boolean;
end;
TAutor = record
ID: Integer;
Nome: string;
end;
TEditora = record
ID: Integer;
Nome: string;
end;
TUsuario = record
ID: Integer;
Nome: string;
Senha: string;
Tipo: string; // Aluno, Professor, Funcionário, etc.
EmprestimosBloqueados: Boolean;
end;
TEmprestimo = record
ID: Integer;
LivroID: Integer;
UsuarioID: Integer;
DataEmprestimo: TDateTime;
DataDevolucao: TDateTime;
Devolvido: Boolean;
end;
TCadastroLivros = class
private
FLivros: TClientDataSet;
FAutores: TClientDataSet;
FEditoras: TClientDataSet;
FUsuarios: TClientDataSet;
FEmprestimos: TClientDataSet;
function CalcularMulta(DataPrevista: TDateTime): Double;
public
constructor Create;
destructor Destroy; override;
procedure AdicionarLivro(const Livro: TLivro);
...