Informe de La Biblioteca

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 94

Principal:

package com.mycompany.vistas;

import java.awt.Color;

/**

* @author yelbi

*/

public class Principal extends javax.swing.JPanel {

public Principal() {

initComponents();

InitStyles();

private void InitStyles() {

title.putClientProperty("FlatLaf.style", "font: light $h1.regular.font");

title.setForeground(Color.black);

jLabel2.putClientProperty("FlatLaf.styleClass", "large");

jLabel2.setForeground(Color.black);

jLabel3.putClientProperty("FlatLaf.styleClass", "large");

jLabel3.setForeground(Color.black);

jLabel4.putClientProperty("FlatLaf.styleClass", "large");

jLabel4.setForeground(Color.black);

jLabel5.putClientProperty("FlatLaf.styleClass", "large");

jLabel5.setForeground(Color.black);

jLabel6.putClientProperty("FlatLaf.styleClass", "large");

jLabel6.setForeground(Color.black);

jLabel7.putClientProperty("FlatLaf.styleClass", "large");
jLabel7.setForeground(Color.black);

jLabel8.putClientProperty("FlatLaf.styleClass", "large");

jLabel8.setForeground(Color.black);

jLabel9.putClientProperty("FlatLaf.styleClass", "large");

jLabel9.setForeground(Color.black);

jLabel10.putClientProperty("FlatLaf.styleClass", "large");

jLabel10.setForeground(Color.black);

jLabel11.putClientProperty("FlatLaf.styleClass", "large");

jLabel11.setForeground(Color.black);

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

bg = new javax.swing.JPanel();

image = new javax.swing.JLabel();

title = new javax.swing.JLabel();

jLabel2 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jLabel4 = new javax.swing.JLabel();

jLabel5 = new javax.swing.JLabel();

jLabel6 = new javax.swing.JLabel();

jLabel7 = new javax.swing.JLabel();

jLabel8 = new javax.swing.JLabel();

jLabel9 = new javax.swing.JLabel();

jLabel10 = new javax.swing.JLabel();

jLabel11 = new javax.swing.JLabel();

setBackground(new java.awt.Color(255, 255, 255));


bg.setBackground(new java.awt.Color(255, 255, 255));

image.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);

image.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Logo-
UNEFA.png"))); // NOI18N

title.setText("Sea bienvenido.");

jLabel2.setText("Este es un sistema de Gestión para la Biblioteca de la Universidad


Nacional Experimental Politécnica de la Fuerza Armada Nacional Bolivariana.");

jLabel3.setText("Aquí podrá controlar y administrar de forma óptima y fácil el flujo de


préstamos y devoluciones de Libros.");

jLabel3.setToolTipText("");

jLabel4.setText("\"El primer deber del gobierno es darle educación al pueblo\" -Simón


Bolívar");

jLabel5.setText("Tendrá acceso a herramientas para tareas específicas, como lo son:");

jLabel6.setText("• Préstamos");

jLabel7.setText("• Devoluciones");

jLabel8.setText("• Registro de Usuarios y Libros Nuevos");

jLabel9.setText("• Edición de Usuarios y Libros existentes");

jLabel10.setText("• Eliminar todo tipo de Registros");

jLabel11.setText("• Sección de Reportes de acciones en el sistema");


javax.swing.GroupLayout bgLayout = new javax.swing.GroupLayout(bg);

bg.setLayout(bgLayout);

bgLayout.setHorizontalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addGap(20, 20, 20)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(500, 500, 500))

.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(306, 306, 306))

.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(306, 306, 306))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(306, 306, 306))

.addGroup(bgLayout.createSequentialGroup()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)
.addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addGap(306, 306, 306)))

.addGap(10, 10, 10))

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addComponent(image, javax.swing.GroupLayout.PREFERRED_SIZE, 669,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

bgLayout.setVerticalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addGap(28, 28, 28)

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE, 20,


Short.MAX_VALUE)

.addGap(18, 18, 18)

.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 20,


Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 56,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addComponent(image, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 19,


Short.MAX_VALUE)

.addGap(18, 18, 18)


.addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 35,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addGroup(bgLayout.createSequentialGroup()

.addGap(80, 80, 80)

.addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, 19,


Short.MAX_VALUE)

.addGap(75, 75, 75))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(155, 155, 155))

.addGroup(bgLayout.createSequentialGroup()

.addGap(100, 100, 100)

.addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(55, 55, 55))

.addGroup(bgLayout.createSequentialGroup()

.addGap(60, 60, 60)

.addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(95, 95, 95))

.addGroup(bgLayout.createSequentialGroup()

.addGap(20, 20, 20)

.addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(135, 135, 135))

.addGroup(bgLayout.createSequentialGroup()

.addGap(40, 40, 40)

.addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(115, 115, 115)))))


.addGap(30, 30, 30))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(layout.createSequentialGroup()

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(0, 0, 0))

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

}// </editor-fold>

// Variables declaration - do not modify

private javax.swing.JPanel bg;

private javax.swing.JLabel image;

private javax.swing.JLabel jLabel10;

private javax.swing.JLabel jLabel11;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JLabel jLabel7;

private javax.swing.JLabel jLabel8;


private javax.swing.JLabel jLabel9;

private javax.swing.JLabel title;

// End of variables declaration

Podemos dar un a breve bienvenida y explicación de que se trata el sistema

Login:

package com.mycompany.login;

import com.mycompany.base.*;

import com.mycompany.vistas.Principal;

import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme;

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.event.KeyEvent;

import java.time.LocalDate;

import java.time.format.DateTimeFormatter;

import java.util.Locale;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

/**

* @author yelbi

*/

public class Login extends javax.swing.JFrame {

public Login() {

initComponents();

InitStyles();

SetDate();
InitContent();

this.setTitle("Iniciar sesión");

private void InitStyles() {

mensaje.putClientProperty("FlatLaf.style", "font: 14 $light.font");

mensaje.setForeground(Color.black);

navText.putClientProperty("FlatLaf.style", "font: bold $h3.regular.font");

navText.setForeground(Color.white);

dateText.putClientProperty("FlatLaf.style", "font: 24 $light.font");

dateText.setForeground(Color.white);

appName.putClientProperty("FlatLaf.style", "font: bold $h1.regular.font");

appName.setForeground(Color.white);

private void SetDate() {

LocalDate now = LocalDate.now();

Locale spanishLocale = new Locale("es", "ES");

dateText.setText(now.format(DateTimeFormatter.ofPattern("'Hoy es' EEEE dd 'de'


MMMM 'de' yyyy", spanishLocale)));

private void InitContent() {

ShowJPanel(new Principal());

public static void ShowJPanel(JPanel p) {

p.setSize(750, 430);

p.setLocation(0,0);

content.removeAll();
content.add(p, BorderLayout.CENTER);

content.revalidate();

content.repaint();

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

background = new javax.swing.JPanel();

menu = new javax.swing.JPanel();

appName = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

btn_prin = new javax.swing.JButton();

titleLbl = new javax.swing.JLabel();

titleLbl1 = new javax.swing.JLabel();

txtUsuario = new javax.swing.JTextField();

txtContraseña = new javax.swing.JPasswordField();

header = new javax.swing.JPanel();

navText = new javax.swing.JLabel();

dateText = new javax.swing.JLabel();

content = new javax.swing.JPanel();

mensaje = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

setIconImages(getIconImages());

setMinimumSize(new java.awt.Dimension(1050, 660));

menu.setBackground(new java.awt.Color(255, 0, 51));

menu.setPreferredSize(new java.awt.Dimension(270, 640));


appName.setForeground(new java.awt.Color(255, 255, 255));

appName.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

appName.setText("Inicio de sesión");

jSeparator1.setForeground(new java.awt.Color(255, 255, 255));

jSeparator1.setPreferredSize(new java.awt.Dimension(50, 5));

btn_prin.setBackground(new java.awt.Color(204, 0, 51));

btn_prin.setFont(new java.awt.Font("Segoe UI", 1, 14)); // NOI18N

btn_prin.setForeground(new java.awt.Color(255, 255, 255));

btn_prin.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Inicio de
sesión.png"))); // NOI18N

btn_prin.setText("Ingresar");

btn_prin.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 13, 1, 1, new


java.awt.Color(0, 0, 0)));

btn_prin.setBorderPainted(false);

btn_prin.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

btn_prin.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

btn_prin.setIconTextGap(13);

btn_prin.setInheritsPopupMenu(true);

btn_prin.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btn_prinActionPerformed(evt);

});

titleLbl.setForeground(new java.awt.Color(255, 255, 255));

titleLbl.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

titleLbl.setText("Usuario:");

titleLbl.setToolTipText("");

titleLbl1.setForeground(new java.awt.Color(255, 255, 255));


titleLbl1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

titleLbl1.setText("Contraseña:");

txtUsuario.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

txtUsuarioActionPerformed(evt);

});

txtContraseña.addKeyListener(new java.awt.event.KeyAdapter() {

public void keyPressed(java.awt.event.KeyEvent evt) {

txtContraseñaKeyPressed(evt);

public void keyReleased(java.awt.event.KeyEvent evt) {

txtContraseñaKeyReleased(evt);

});

javax.swing.GroupLayout menuLayout = new javax.swing.GroupLayout(menu);

menu.setLayout(menuLayout);

menuLayout.setHorizontalGroup(

menuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(btn_prin, javax.swing.GroupLayout.Alignment.TRAILING,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)

.addGroup(menuLayout.createSequentialGroup()

.addGroup(menuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA
DING)

.addGroup(menuLayout.createSequentialGroup()

.addGap(40, 40, 40)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 190,


javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(menuLayout.createSequentialGroup()

.addGap(10, 10, 10)

.addComponent(appName, javax.swing.GroupLayout.PREFERRED_SIZE, 250,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(menuLayout.createSequentialGroup()

.addContainerGap()

.addComponent(txtUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 250,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(menuLayout.createSequentialGroup()

.addContainerGap()

.addComponent(titleLbl))

.addGroup(menuLayout.createSequentialGroup()

.addContainerGap()

.addComponent(titleLbl1))

.addGroup(menuLayout.createSequentialGroup()

.addContainerGap()

.addComponent(txtContraseña, javax.swing.GroupLayout.PREFERRED_SIZE, 250,


javax.swing.GroupLayout.PREFERRED_SIZE)))

.addContainerGap(10, Short.MAX_VALUE))

);

menuLayout.setVerticalGroup(

menuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(menuLayout.createSequentialGroup()

.addGap(52, 52, 52)

.addComponent(appName, javax.swing.GroupLayout.PREFERRED_SIZE, 34,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(4, 4, 4)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 20,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(66, 66, 66)

.addComponent(titleLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)


.addComponent(txtUsuario, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(38, 38, 38)

.addComponent(titleLbl1, javax.swing.GroupLayout.DEFAULT_SIZE, 28,


Short.MAX_VALUE)

.addGap(18, 18, 18)

.addComponent(txtContraseña, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(53, 53, 53)

.addComponent(btn_prin, javax.swing.GroupLayout.PREFERRED_SIZE, 52,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(167, 167, 167))

);

header.setBackground(new java.awt.Color(204, 0, 51));

header.setPreferredSize(new java.awt.Dimension(744, 150));

navText.setForeground(new java.awt.Color(255, 255, 255));

navText.setText("Acceso para el administrador");

dateText.setForeground(new java.awt.Color(255, 255, 255));

dateText.setText("Hoy es {dayname} {day} de {month} de {year}");

javax.swing.GroupLayout headerLayout = new javax.swing.GroupLayout(header);

header.setLayout(headerLayout);

headerLayout.setHorizontalGroup(

headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(headerLayout.createSequentialGroup()

.addGap(66, 66, 66)

.addGroup(headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)

.addComponent(navText, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(dateText, javax.swing.GroupLayout.DEFAULT_SIZE, 434,
Short.MAX_VALUE))

.addContainerGap(260, Short.MAX_VALUE))

);

headerLayout.setVerticalGroup(

headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(headerLayout.createSequentialGroup()

.addGap(33, 33, 33)

.addComponent(navText, javax.swing.GroupLayout.PREFERRED_SIZE, 33,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(dateText, javax.swing.GroupLayout.PREFERRED_SIZE, 35,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(31, Short.MAX_VALUE))

);

content.setLayout(new java.awt.BorderLayout());

mensaje.setText("Bienvenido!");

javax.swing.GroupLayout backgroundLayout = new javax.swing.GroupLayout(background);

background.setLayout(backgroundLayout);

backgroundLayout.setHorizontalGroup(

backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(backgroundLayout.createSequentialGroup()

.addComponent(menu, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.LEADING)

.addGroup(backgroundLayout.createSequentialGroup()

.addGap(10, 10, 10)

.addComponent(mensaje, javax.swing.GroupLayout.PREFERRED_SIZE, 389,


javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(header, javax.swing.GroupLayout.DEFAULT_SIZE, 760,
Short.MAX_VALUE)

.addGroup(backgroundLayout.createSequentialGroup()

.addGap(6, 6, 6)

.addComponent(content, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))

);

backgroundLayout.setVerticalGroup(

backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(menu, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(backgroundLayout.createSequentialGroup()

.addGap(27, 27, 27)

.addComponent(mensaje, javax.swing.GroupLayout.PREFERRED_SIZE, 26,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(6, 6, 6)

.addComponent(header, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(1, 1, 1)

.addComponent(content, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(background, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(background, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);

pack();

setLocationRelativeTo(null);

}// </editor-fold>

private void btn_prinActionPerformed(java.awt.event.ActionEvent evt) {

IniciarSesion();

private void txtUsuarioActionPerformed(java.awt.event.ActionEvent evt) {

private void txtContraseñaKeyPressed(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

private void txtContraseñaKeyReleased(java.awt.event.KeyEvent evt) {

// TODO add your handling code here:

if (evt.getKeyCode() == KeyEvent.VK_ENTER) {

IniciarSesion();

public void IniciarSesion(){

char Contraseña[]= txtContraseña.getPassword();


String ContraseñaDefinida= new String(Contraseña);

if (txtUsuario.getText().equals("admin") && ContraseñaDefinida.equals("admin")){

this.dispose();

JOptionPane.showMessageDialog(null, "Bienvenido/a \n"

+ "Has ingresado con éxito al Sistema", "Bienvenido/a",

JOptionPane.INFORMATION_MESSAGE);

Menu Inicio= new Menu();

Inicio.setVisible(true);

} else {

JOptionPane.showMessageDialog(null, "Acceso denegado: \n"

+ "Por favor ingrese un Usuario y/o Contraseña válidos",

"Acceso denegado", JOptionPane.ERROR_MESSAGE);

txtUsuario.setText("");

txtContraseña.setText("");

txtUsuario.requestFocus();

public static void main(String args[]) {

/* Set the Nimbus look and feel */

FlatMaterialLighterIJTheme.setup();

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Login().setVisible(true);

});

// Variables declaration - do not modify

private javax.swing.JLabel appName;

private javax.swing.JPanel background;

private javax.swing.JButton btn_prin;

private static javax.swing.JPanel content;

private javax.swing.JLabel dateText;

private javax.swing.JPanel header;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JLabel mensaje;

private javax.swing.JPanel menu;

private javax.swing.JLabel navText;

private javax.swing.JLabel titleLbl;

private javax.swing.JLabel titleLbl1;

private javax.swing.JPasswordField txtContraseña;

private javax.swing.JTextField txtUsuario;

// End of variables declaration

esto es para que entremos al sistema de pedidos de libros con su usuario y contraseña

menú:

package com.mycompany.base;

import com.mycompany.vistas.Prestamos;

import com.mycompany.vistas.Devoluciones;
import com.mycompany.vistas.Usuarios;

import com.mycompany.vistas.Principal;

import com.mycompany.vistas.Reportes;

import com.mycompany.vistas.Libros;

import com.formdev.flatlaf.intellijthemes.materialthemeuilite.FlatMaterialLighterIJTheme;

import java.awt.BorderLayout;

import java.awt.Color;

import java.time.LocalDate;

import java.time.format.DateTimeFormatter;

import java.util.Locale;

import javax.swing.JPanel;

/**

* @author yelbi

*/

public class Menu extends javax.swing.JFrame {

public Menu() {

initComponents();

InitStyles();

SetDate();

InitContent();

this.setTitle("Biblioteca");

private void InitStyles() {

mensaje.putClientProperty("FlatLaf.style", "font: 14 $light.font");

mensaje.setForeground(Color.black);

navText.putClientProperty("FlatLaf.style", "font: bold $h3.regular.font");

navText.setForeground(Color.white);
dateText.putClientProperty("FlatLaf.style", "font: 24 $light.font");

dateText.setForeground(Color.white);

appName.putClientProperty("FlatLaf.style", "font: bold $h1.regular.font");

appName.setForeground(Color.white);

private void SetDate() {

LocalDate now = LocalDate.now();

Locale spanishLocale = new Locale("es", "ES");

dateText.setText(now.format(DateTimeFormatter.ofPattern("'Hoy es' EEEE dd 'de'


MMMM 'de' yyyy", spanishLocale)));

private void InitContent() {

ShowJPanel(new Principal());

public static void ShowJPanel(JPanel p) {

p.setSize(750, 430);

p.setLocation(0,0);

content.removeAll();

content.add(p, BorderLayout.CENTER);

content.revalidate();

content.repaint();

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {


background = new javax.swing.JPanel();

menu = new javax.swing.JPanel();

appName = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

btn_prin = new javax.swing.JButton();

btn_lends = new javax.swing.JButton();

btn_returns = new javax.swing.JButton();

btn_users = new javax.swing.JButton();

btn_books = new javax.swing.JButton();

btn_reports = new javax.swing.JButton();

header = new javax.swing.JPanel();

navText = new javax.swing.JLabel();

dateText = new javax.swing.JLabel();

content = new javax.swing.JPanel();

mensaje = new javax.swing.JLabel();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

setMinimumSize(new java.awt.Dimension(1050, 660));

background.setBackground(new java.awt.Color(255, 255, 255));

menu.setBackground(new java.awt.Color(255, 0, 51));

menu.setPreferredSize(new java.awt.Dimension(270, 640));

appName.setForeground(new java.awt.Color(255, 255, 255));

appName.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

appName.setText("Biblioteca");

jSeparator1.setForeground(new java.awt.Color(255, 255, 255));

jSeparator1.setPreferredSize(new java.awt.Dimension(50, 5));


btn_prin.setBackground(new java.awt.Color(204, 0, 51));

btn_prin.setFont(new java.awt.Font("Segoe UI", 1, 14)); // NOI18N

btn_prin.setForeground(new java.awt.Color(255, 255, 255));

btn_prin.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Logo-
Principal.png"))); // NOI18N

btn_prin.setText("Principal");

btn_prin.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 13, 1, 1, new


java.awt.Color(0, 0, 0)));

btn_prin.setBorderPainted(false);

btn_prin.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

btn_prin.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

btn_prin.setIconTextGap(13);

btn_prin.setInheritsPopupMenu(true);

btn_prin.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btn_prinActionPerformed(evt);

});

btn_lends.setBackground(new java.awt.Color(204, 0, 51));

btn_lends.setFont(new java.awt.Font("Segoe UI", 1, 14)); // NOI18N

btn_lends.setForeground(new java.awt.Color(255, 255, 255));

btn_lends.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Logo-
Préstamos.png"))); // NOI18N

btn_lends.setText("Préstamos");

btn_lends.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 13, 1, 1, new


java.awt.Color(0, 0, 0)));

btn_lends.setBorderPainted(false);

btn_lends.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

btn_lends.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

btn_lends.setIconTextGap(13);

btn_lends.setInheritsPopupMenu(true);
btn_lends.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btn_lendsActionPerformed(evt);

});

btn_returns.setBackground(new java.awt.Color(204, 0, 51));

btn_returns.setFont(new java.awt.Font("Segoe UI", 1, 14)); // NOI18N

btn_returns.setForeground(new java.awt.Color(255, 255, 255));

btn_returns.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Logo-
Devoluciones.png"))); // NOI18N

btn_returns.setText("Devoluciones");

btn_returns.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 13, 1, 1, new


java.awt.Color(0, 0, 0)));

btn_returns.setBorderPainted(false);

btn_returns.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

btn_returns.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

btn_returns.setIconTextGap(13);

btn_returns.setInheritsPopupMenu(true);

btn_returns.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btn_returnsActionPerformed(evt);

});

btn_users.setBackground(new java.awt.Color(204, 0, 51));

btn_users.setFont(new java.awt.Font("Segoe UI", 1, 14)); // NOI18N

btn_users.setForeground(new java.awt.Color(255, 255, 255));

btn_users.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Logo-
Usuarios.png"))); // NOI18N

btn_users.setText("Usuarios");
btn_users.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 13, 1, 1, new
java.awt.Color(0, 0, 0)));

btn_users.setBorderPainted(false);

btn_users.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

btn_users.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

btn_users.setIconTextGap(13);

btn_users.setInheritsPopupMenu(true);

btn_users.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btn_usersActionPerformed(evt);

});

btn_books.setBackground(new java.awt.Color(204, 0, 51));

btn_books.setFont(new java.awt.Font("Segoe UI", 1, 14)); // NOI18N

btn_books.setForeground(new java.awt.Color(255, 255, 255));

btn_books.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Logo-
Libros.png"))); // NOI18N

btn_books.setText("Libros");

btn_books.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 13, 1, 1, new


java.awt.Color(0, 0, 0)));

btn_books.setBorderPainted(false);

btn_books.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

btn_books.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

btn_books.setIconTextGap(13);

btn_books.setInheritsPopupMenu(true);

btn_books.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btn_booksActionPerformed(evt);

});
btn_reports.setBackground(new java.awt.Color(204, 0, 51));

btn_reports.setFont(new java.awt.Font("Segoe UI", 1, 14)); // NOI18N

btn_reports.setForeground(new java.awt.Color(255, 255, 255));

btn_reports.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Logo-
Reportes.png"))); // NOI18N

btn_reports.setText("Reportes");

btn_reports.setBorder(javax.swing.BorderFactory.createMatteBorder(1, 13, 1, 1, new


java.awt.Color(0, 0, 0)));

btn_reports.setBorderPainted(false);

btn_reports.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

btn_reports.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

btn_reports.setIconTextGap(13);

btn_reports.setInheritsPopupMenu(true);

btn_reports.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

btn_reportsActionPerformed(evt);

});

javax.swing.GroupLayout menuLayout = new javax.swing.GroupLayout(menu);

menu.setLayout(menuLayout);

menuLayout.setHorizontalGroup(

menuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(menuLayout.createSequentialGroup()

.addGap(10, 10, 10)

.addComponent(appName, javax.swing.GroupLayout.PREFERRED_SIZE, 250,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(menuLayout.createSequentialGroup()

.addGap(40, 40, 40)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 190,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addComponent(btn_lends, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btn_users, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(btn_prin, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(btn_returns, javax.swing.GroupLayout.DEFAULT_SIZE, 270,


Short.MAX_VALUE)

.addComponent(btn_books, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(btn_reports, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

menuLayout.setVerticalGroup(

menuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(menuLayout.createSequentialGroup()

.addGap(52, 52, 52)

.addComponent(appName, javax.swing.GroupLayout.PREFERRED_SIZE, 34,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(4, 4, 4)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 20,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(20, 20, 20)

.addGroup(menuLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEA
DING)

.addGroup(menuLayout.createSequentialGroup()

.addGap(50, 50, 50)

.addComponent(btn_lends, javax.swing.GroupLayout.PREFERRED_SIZE, 52,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(menuLayout.createSequentialGroup()

.addGap(150, 150, 150)

.addComponent(btn_users, javax.swing.GroupLayout.PREFERRED_SIZE, 52,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addComponent(btn_prin, javax.swing.GroupLayout.PREFERRED_SIZE, 52,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(menuLayout.createSequentialGroup()

.addGap(100, 100, 100)


.addComponent(btn_returns, javax.swing.GroupLayout.PREFERRED_SIZE, 52,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(menuLayout.createSequentialGroup()

.addGap(200, 200, 200)

.addComponent(btn_books, javax.swing.GroupLayout.PREFERRED_SIZE, 52,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addGroup(menuLayout.createSequentialGroup()

.addGap(250, 250, 250)

.addComponent(btn_reports, javax.swing.GroupLayout.PREFERRED_SIZE, 52,


javax.swing.GroupLayout.PREFERRED_SIZE))))

);

header.setBackground(new java.awt.Color(204, 0, 51));

header.setPreferredSize(new java.awt.Dimension(744, 150));

navText.setForeground(new java.awt.Color(255, 255, 255));

navText.setText("Administración y Control de la Biblioteca");

dateText.setForeground(new java.awt.Color(255, 255, 255));

dateText.setText("Hoy es {dayname} {day} de {month} de {year}");

javax.swing.GroupLayout headerLayout = new javax.swing.GroupLayout(header);

header.setLayout(headerLayout);

headerLayout.setHorizontalGroup(

headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(headerLayout.createSequentialGroup()

.addGap(66, 66, 66)

.addGroup(headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING, false)

.addComponent(navText, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(dateText, javax.swing.GroupLayout.DEFAULT_SIZE, 434,


Short.MAX_VALUE))
.addContainerGap(260, Short.MAX_VALUE))

);

headerLayout.setVerticalGroup(

headerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(headerLayout.createSequentialGroup()

.addGap(33, 33, 33)

.addComponent(navText, javax.swing.GroupLayout.PREFERRED_SIZE, 33,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(dateText, javax.swing.GroupLayout.PREFERRED_SIZE, 35,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(31, Short.MAX_VALUE))

);

content.setBackground(new java.awt.Color(255, 255, 255));

content.setLayout(new java.awt.BorderLayout());

mensaje.setText("UNEFA");

javax.swing.GroupLayout backgroundLayout = new javax.swing.GroupLayout(background);

background.setLayout(backgroundLayout);

backgroundLayout.setHorizontalGroup(

backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(backgroundLayout.createSequentialGroup()

.addComponent(menu, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGroup(backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignme
nt.LEADING)

.addGroup(backgroundLayout.createSequentialGroup()

.addGap(10, 10, 10)

.addComponent(mensaje, javax.swing.GroupLayout.PREFERRED_SIZE, 389,


javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(header, javax.swing.GroupLayout.DEFAULT_SIZE, 760,
Short.MAX_VALUE)

.addComponent(content, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))

);

backgroundLayout.setVerticalGroup(

backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(menu, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(backgroundLayout.createSequentialGroup()

.addGap(27, 27, 27)

.addComponent(mensaje, javax.swing.GroupLayout.PREFERRED_SIZE, 26,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(6, 6, 6)

.addComponent(header, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(0, 0, 0)

.addComponent(content, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(1, 1, 1))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

getContentPane().setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(background, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(background, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);
pack();

setLocationRelativeTo(null);

}// </editor-fold>

private void btn_prinActionPerformed(java.awt.event.ActionEvent evt) {

ShowJPanel(new Principal());

private void btn_lendsActionPerformed(java.awt.event.ActionEvent evt) {

ShowJPanel(new Prestamos());

private void btn_returnsActionPerformed(java.awt.event.ActionEvent evt) {

ShowJPanel(new Devoluciones());

private void btn_usersActionPerformed(java.awt.event.ActionEvent evt) {

ShowJPanel(new Usuarios());

private void btn_booksActionPerformed(java.awt.event.ActionEvent evt) {

ShowJPanel(new Libros());

private void btn_reportsActionPerformed(java.awt.event.ActionEvent evt) {

ShowJPanel(new Reportes());

public static void main(String args[]) {

/* Set the Nimbus look and feel */


FlatMaterialLighterIJTheme.setup();

/* Create and display the form */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

new Menu().setVisible(true);

});

// Variables declaration - do not modify

private javax.swing.JLabel appName;

private javax.swing.JPanel background;

private javax.swing.JButton btn_books;

private javax.swing.JButton btn_lends;

private javax.swing.JButton btn_prin;

private javax.swing.JButton btn_reports;

private javax.swing.JButton btn_returns;

private javax.swing.JButton btn_users;

private static javax.swing.JPanel content;

private javax.swing.JLabel dateText;

private javax.swing.JPanel header;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JLabel mensaje;

private javax.swing.JPanel menu;

private javax.swing.JLabel navText;

// End of variables declaration

al entrar con el login encontramos el menú donde encontramos los pedidos, entrega y reporte
de los libros

AgLibro:
package com.mycompany.vistas;

import com.mycompany.base.DAOLibrosImpl;

import com.mycompany.utiles.Utiles;

import java.awt.Color;

import com.mycompany.interfaces.DAOLibros;

public class AgLibros extends javax.swing.JPanel {

boolean isEdition = false;

com.mycompany.modelo.Libros bookEdition;

public AgLibros() {

initComponents();

InitStyles();

public AgLibros(com.mycompany.modelo.Libros book) {

initComponents();

isEdition = true;

bookEdition = book;

InitStyles();

private void InitStyles() {

title.putClientProperty("FlatLaf.styleClass", "h1");

title.setForeground(Color.black);

titleTxt.putClientProperty("JTextField.placeholderText", "Ingrese el título del libro");

dateTxt.putClientProperty("JTextField.placeholderText", "Ingrese la de publicación del


libro.");

authorTxt.putClientProperty("JTextField.placeholderText", "Ingrese el autor del libro.");


catTxt.putClientProperty("JTextField.placeholderText", "Ingrese la categoría del libro.");

edTxt.putClientProperty("JTextField.placeholderText", "Ingrese la editorial del libro.");

langTxt.putClientProperty("JTextField.placeholderText", "Ingrese el idioma del libro.");

pagsTxt.putClientProperty("JTextField.placeholderText", "Ingrese las páginas totales del


libro.");

descTxt.putClientProperty("JTextField.placeholderText", "Ingrese la descripción del


libro.");

stockTxt.putClientProperty("JTextField.placeholderText", "Ingrese el stock total del


libro.");

dispTxt.putClientProperty("JTextField.placeholderText", "Ingrese el númeor de libros


disponibles.");

ejemTxt.putClientProperty("JTextField.placeholderText", "Ingrese el número de


ejemplares del libro.");

if (isEdition) {

title.setText("Editar Libro");

button.setText("Guardar");

if (bookEdition != null) {

titleTxt.setText(bookEdition.getTitle());

dateTxt.setText(bookEdition.getDate());

authorTxt.setText(bookEdition.getAuthor());

catTxt.setText(bookEdition.getCategory());

edTxt.setText(bookEdition.getEdit());

langTxt.setText(bookEdition.getLang());

pagsTxt.setText(bookEdition.getPages());

descTxt.setText(bookEdition.getDescription());

stockTxt.setText(bookEdition.getStock() + "");

dispTxt.setText(bookEdition.getAvailable() + "");

ejemTxt.setText(bookEdition.getEjemplares());

}
@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

bg = new javax.swing.JPanel();

title = new javax.swing.JLabel();

titleLbl = new javax.swing.JLabel();

titleTxt = new javax.swing.JTextField();

dateLbl = new javax.swing.JLabel();

dateTxt = new javax.swing.JTextField();

authorLbl = new javax.swing.JLabel();

authorTxt = new javax.swing.JTextField();

catLbl = new javax.swing.JLabel();

catTxt = new javax.swing.JTextField();

edLbl = new javax.swing.JLabel();

edTxt = new javax.swing.JTextField();

jSeparator1 = new javax.swing.JSeparator();

langLbl = new javax.swing.JLabel();

langTxt = new javax.swing.JTextField();

pagsLbl = new javax.swing.JLabel();

pagsTxt = new javax.swing.JTextField();

descLbl = new javax.swing.JLabel();

descTxt = new javax.swing.JTextField();

stockLbl = new javax.swing.JLabel();

stockTxt = new javax.swing.JTextField();

dispTxt = new javax.swing.JTextField();

dispLbl = new javax.swing.JLabel();

ejemLbl = new javax.swing.JLabel();

ejemTxt = new javax.swing.JTextField();

button = new javax.swing.JButton();


setBackground(new java.awt.Color(255, 255, 255));

bg.setBackground(new java.awt.Color(255, 255, 255));

title.setText("Agregar nuevo Libro");

titleLbl.setText("Título");

dateLbl.setText("Fecha de Publicación");

authorLbl.setText("Autor");

catLbl.setText("Categoría");

edLbl.setText("Edición");

jSeparator1.setForeground(new java.awt.Color(204, 204, 204));

jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL);

jSeparator1.setPreferredSize(new java.awt.Dimension(200, 10));

langLbl.setText("Idioma");

langTxt.setToolTipText("");

pagsLbl.setText("Páginas");

pagsTxt.setToolTipText("");

descLbl.setText("Descripción");
descTxt.setToolTipText("");

stockLbl.setText("Stock");

stockLbl.setToolTipText("");

stockTxt.setToolTipText("");

dispTxt.setToolTipText("");

dispLbl.setText("Disponibles");

ejemLbl.setText("Ejemplares");

ejemTxt.setToolTipText("");

button.setBackground(new java.awt.Color(204, 0, 51));

button.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N

button.setForeground(new java.awt.Color(255, 255, 255));

button.setText("Agregar");

button.setBorderPainted(false);

button.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

button.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

buttonActionPerformed(evt);

});

javax.swing.GroupLayout bgLayout = new javax.swing.GroupLayout(bg);

bg.setLayout(bgLayout);

bgLayout.setHorizontalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addComponent(catTxt)

.addComponent(authorTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(authorLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(233, 233, 233))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(catLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(213, 213, 213))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(titleLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(234, 234, 234))

.addComponent(titleTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(dateLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(161, 161, 161))

.addComponent(dateTxt)

.addComponent(edTxt, javax.swing.GroupLayout.Alignment.TRAILING)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(edLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(227, 227, 227)))

.addGap(68, 68, 68)


.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(70, 70, 70)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addComponent(langTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(langLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(228, 228, 228))

.addComponent(pagsTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(pagsLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(223, 223, 223))

.addComponent(button, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(descLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(206, 206, 206))

.addComponent(descTxt)

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
bgLayout.createSequentialGroup()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignmen
t.LEADING)

.addComponent(stockTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(stockLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(94, 94, 94)))

.addGap(20, 20, 20)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignmen
t.LEADING)

.addGroup(bgLayout.createSequentialGroup()
.addComponent(dispLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(67, 67, 67))

.addComponent(dispTxt)))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(ejemLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(208, 208, 208))

.addComponent(ejemTxt))

.addGap(72, 72, 72))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(553, 553, 553))))

);

bgLayout.setVerticalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(langLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(langTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(pagsLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pagsTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,
javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(descLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(descTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA
SELINE)

.addComponent(stockLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(dispLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BA
SELINE)

.addComponent(stockTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(dispTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(9, 9, 9)

.addComponent(ejemLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(ejemTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(button, javax.swing.GroupLayout.PREFERRED_SIZE, 50,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(titleLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(titleTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(dateLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(dateTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(authorLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(authorTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(11, 11, 11)

.addComponent(catLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(catTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(edLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(edTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 30,


javax.swing.GroupLayout.PREFERRED_SIZE)))

.addGap(22, 22, 22))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

}// </editor-fold>

private void buttonActionPerformed(java.awt.event.ActionEvent evt) {

String mtitle = titleTxt.getText();

String date = dateTxt.getText();

String author = authorTxt.getText();

String cat = catTxt.getText();

String ed = edTxt.getText();

String lang = langTxt.getText();

String pags = pagsTxt.getText();

String desc = descTxt.getText();

String stock = stockTxt.getText();

String disp = dispTxt.getText();

String ejem = ejemTxt.getText();

// Anotación: validamos los campos.

if (mtitle.isEmpty() || date.isEmpty() || author.isEmpty() || cat.isEmpty() || ed.isEmpty()

|| lang.isEmpty() || pags.isEmpty() || desc.isEmpty() || stock.isEmpty() ||


disp.isEmpty() || ejem.isEmpty()) {

javax.swing.JOptionPane.showMessageDialog(this, "Debe llenar todos los campos. \n",


"AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

titleTxt.requestFocus();

return;

} else if (!Utiles.isNumeric(stock) || !Utiles.isNumeric(disp)) {


javax.swing.JOptionPane.showMessageDialog(this, "Los campos Stock y Disponibles
deben ser números enteros. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

titleTxt.requestFocus();

return;

com.mycompany.modelo.Libros book = isEdition ? bookEdition : new


com.mycompany.modelo.Libros();

book.setTitle(mtitle);

book.setDate(date);

book.setAuthor(author);

book.setCategory(cat);

book.setEdit(ed);

book.setLang(lang);

book.setPages(pags);

book.setDescription(desc);

book.setEjemplares(ejem);

book.setStock(Integer.parseInt(stock));

book.setAvailable(Integer.parseInt(disp));

try {

DAOLibros dao = new DAOLibrosImpl();

if (!isEdition) {

dao.registrar(book);

} else {

dao.modificar(book);

String successMsg = isEdition ? "modificado" : "registrado";


javax.swing.JOptionPane.showMessageDialog(this, "Libro " + successMsg + "
exitosamente.\n", "AVISO", javax.swing.JOptionPane.INFORMATION_MESSAGE);

if (!isEdition) {

titleTxt.setText("");

dateTxt.setText("");

authorTxt.setText("");

catTxt.setText("");

edTxt.setText("");

langTxt.setText("");

pagsTxt.setText("");

descTxt.setText("");

stockTxt.setText("");

dispTxt.setText("");

ejemTxt.setText("");

} catch (Exception e) {

String errorMsg = isEdition ? "modificar" : "registrar";

javax.swing.JOptionPane.showMessageDialog(this, "Ocurrió un error al " + errorMsg + "


el libro. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

System.out.println(e.getMessage());

// Variables declaration - do not modify

private javax.swing.JLabel authorLbl;

private javax.swing.JTextField authorTxt;

private javax.swing.JPanel bg;

private javax.swing.JButton button;

private javax.swing.JLabel catLbl;

private javax.swing.JTextField catTxt;

private javax.swing.JLabel dateLbl;


private javax.swing.JTextField dateTxt;

private javax.swing.JLabel descLbl;

private javax.swing.JTextField descTxt;

private javax.swing.JLabel dispLbl;

private javax.swing.JTextField dispTxt;

private javax.swing.JLabel edLbl;

private javax.swing.JTextField edTxt;

private javax.swing.JLabel ejemLbl;

private javax.swing.JTextField ejemTxt;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JLabel langLbl;

private javax.swing.JTextField langTxt;

private javax.swing.JLabel pagsLbl;

private javax.swing.JTextField pagsTxt;

private javax.swing.JLabel stockLbl;

private javax.swing.JTextField stockTxt;

private javax.swing.JLabel title;

private javax.swing.JLabel titleLbl;

private javax.swing.JTextField titleTxt;

// End of variables declaration

aquí Podemos agregar los libros que podemos tener en el sistema con su autor, edición,
cantidad, titulo, fecha de lanzamiento, stock, entre otras cosas

AgUsuario:

package com.mycompany.vistas;

import com.mycompany.base.DAOUsuariosImpl;

import java.awt.Color;

import com.mycompany.interfaces.DAOUsuarios;

public class AgUsuarios extends javax.swing.JPanel {


boolean isEdition = false;

com.mycompany.modelo.Usuarios userEdition;

public AgUsuarios() {

initComponents();

InitStyles();

public AgUsuarios(com.mycompany.modelo.Usuarios user) {

initComponents();

isEdition = true;

userEdition = user;

InitStyles();

private void InitStyles() {

title.putClientProperty("FlatLaf.styleClass", "h1");

title.setForeground(Color.black);

nameTxt.putClientProperty("JTextField.placeholderText", "Ingrese el nombre del


usuario.");

apPTxt.putClientProperty("JTextField.placeholderText", "Ingrese el apellido paterno del


usuario.");

apMTxt.putClientProperty("JTextField.placeholderText", "Ingrese el apellido materno del


usuario.");

domTxt.putClientProperty("JTextField.placeholderText", "Ingrese el domicilio del


usuario.");

phoneTxt.putClientProperty("JTextField.placeholderText", "Ingrese el teléfono del


usuario.");

if (isEdition) {

title.setText("Editar Usuario");

button.setText("Guardar");
if (userEdition != null) {

nameTxt.setText(userEdition.getName());

apPTxt.setText(userEdition.getLast_name_p());

apMTxt.setText(userEdition.getLast_name_m());

domTxt.setText(userEdition.getDomicilio());

phoneTxt.setText(userEdition.getTel());

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

bg = new javax.swing.JPanel();

title = new javax.swing.JLabel();

nameLbl = new javax.swing.JLabel();

nameTxt = new javax.swing.JTextField();

apPLbl = new javax.swing.JLabel();

apPTxt = new javax.swing.JTextField();

apMLbl = new javax.swing.JLabel();

apMTxt = new javax.swing.JTextField();

jSeparator1 = new javax.swing.JSeparator();

domLbl = new javax.swing.JLabel();

domTxt = new javax.swing.JTextField();

button = new javax.swing.JButton();

phoneLbl = new javax.swing.JLabel();

phoneTxt = new javax.swing.JTextField();

setBackground(new java.awt.Color(255, 255, 255));


bg.setBackground(new java.awt.Color(255, 255, 255));

title.setText("Registrar nuevo Usuario");

nameLbl.setText("Nombre");

apPLbl.setText("Apellido Paterno");

apMLbl.setText("Apellido Materno");

jSeparator1.setForeground(new java.awt.Color(204, 204, 204));

jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL);

jSeparator1.setPreferredSize(new java.awt.Dimension(200, 10));

domLbl.setText("Domicilio");

domTxt.setToolTipText("");

button.setBackground(new java.awt.Color(204, 0, 51));

button.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N

button.setForeground(new java.awt.Color(255, 255, 255));

button.setText("Registrar");

button.setBorderPainted(false);

button.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

button.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

buttonActionPerformed(evt);

});
phoneLbl.setText("Teléfono");

phoneTxt.setToolTipText("");

javax.swing.GroupLayout bgLayout = new javax.swing.GroupLayout(bg);

bg.setLayout(bgLayout);

bgLayout.setHorizontalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(nameLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(223, 223, 223))

.addComponent(nameTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(apPLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(182, 182, 182))

.addComponent(apPTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(apMLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(180, 180, 180))

.addComponent(apMTxt))

.addGap(68, 68, 68)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10,


javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(70, 70, 70)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addComponent(domTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(domLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(220, 220, 220))

.addComponent(phoneTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(phoneLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(218, 218, 218))

.addComponent(button, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addGap(72, 72, 72))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(553, 553, 553))))

);

bgLayout.setVerticalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LE
ADING)

.addGroup(bgLayout.createSequentialGroup()
.addComponent(nameLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(nameTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(apPLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(apPTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(apMLbl, javax.swing.GroupLayout.DEFAULT_SIZE, 17,


Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(apMTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(6, 6, 6))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(domLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(domTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)

.addComponent(phoneLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(phoneTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(34, 34, 34)

.addComponent(button, javax.swing.GroupLayout.PREFERRED_SIZE, 50,


javax.swing.GroupLayout.PREFERRED_SIZE)))

.addGap(164, 164, 164))

.addGroup(bgLayout.createSequentialGroup()
.addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(26, 26, 26))))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

}// </editor-fold>

private void buttonActionPerformed(java.awt.event.ActionEvent evt) {

String nombre = nameTxt.getText();

String apP = apPTxt.getText();

String apM = apMTxt.getText();

String dom = domTxt.getText();

String tel = phoneTxt.getText();

// Anotación: validamos los campos.

if (nombre.isEmpty() || apP.isEmpty() || apM.isEmpty() || dom.isEmpty() || tel.isEmpty())


{

javax.swing.JOptionPane.showMessageDialog(this, "Debe llenar todos los campos. \n",


"AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

nameTxt.requestFocus();

return;
}

com.mycompany.modelo.Usuarios user = isEdition ? userEdition : new


com.mycompany.modelo.Usuarios();

user.setName(nombre);

user.setLast_name_p(apP);

user.setLast_name_m(apM);

user.setDomicilio(dom);

user.setTel(tel);

try {

DAOUsuarios dao = new DAOUsuariosImpl();

if (!isEdition) {

dao.registrar(user);

} else {

dao.modificar(user);

String successMsg = isEdition ? "modificado" : "registrado";

javax.swing.JOptionPane.showMessageDialog(this, "Usuario " + successMsg + "


exitosamente.\n", "AVISO", javax.swing.JOptionPane.INFORMATION_MESSAGE);

if (!isEdition) {

nameTxt.setText("");

apPTxt.setText("");

apMTxt.setText("");

domTxt.setText("");

phoneTxt.setText("");

} catch (Exception e) {
String errorMsg = isEdition ? "modificar" : "registrar";

javax.swing.JOptionPane.showMessageDialog(this, "Ocurrió un error al " + errorMsg + "


el usuario. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

System.out.println(e.getMessage());

// Variables declaration - do not modify

private javax.swing.JLabel apMLbl;

private javax.swing.JTextField apMTxt;

private javax.swing.JLabel apPLbl;

private javax.swing.JTextField apPTxt;

private javax.swing.JPanel bg;

private javax.swing.JButton button;

private javax.swing.JLabel domLbl;

private javax.swing.JTextField domTxt;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JLabel nameLbl;

private javax.swing.JTextField nameTxt;

private javax.swing.JLabel phoneLbl;

private javax.swing.JTextField phoneTxt;

private javax.swing.JLabel title;

// End of variables declaration

Aquí podemos agregar los usuarios que van a pedir los libros y se le toman los datos del
usuario como el nombre, apellido, dirección y teléfono

Devoluciones:

package com.mycompany.vistas;

import com.mycompany.base.DAOLibrosImpl;
import com.mycompany.base.DAOPrestamosImpl;

import com.mycompany.base.DAOUsuariosImpl;

import com.mycompany.utiles.Utiles;

import java.awt.Color;

import java.util.Date;

import com.mycompany.interfaces.DAOLibros;

import com.mycompany.interfaces.DAOPrestamos;

import com.mycompany.interfaces.DAOUsuarios;

public class Devoluciones extends javax.swing.JPanel {

private final int MAX_DAYS_RETURN = 7;

private final int COST_DAY_SANC = 10;

public Devoluciones() {

initComponents();

InitStyles();

private void InitStyles() {

title.putClientProperty("FlatLaf.style", "font: 24 $light.font");

title.setForeground(Color.black);

folioLbl.putClientProperty("FlatLaf.styleClass", "large");

folioLbl.setForeground(Color.black);

libroIdLbl.putClientProperty("FlatLaf.styleClass", "large");

libroIdLbl.setForeground(Color.black);

folioTxt.putClientProperty("JTextField.placeholderText", "Ingrese el ID del usuario.");

libroIdTxt.putClientProperty("JTextField.placeholderText", "Ingrese el ID del Libro a


devolver.");

}
@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

bg = new javax.swing.JPanel();

jSeparator1 = new javax.swing.JSeparator();

title = new javax.swing.JLabel();

folioLbl = new javax.swing.JLabel();

folioTxt = new javax.swing.JTextField();

libroIdLbl = new javax.swing.JLabel();

libroIdTxt = new javax.swing.JTextField();

button = new javax.swing.JButton();

image = new javax.swing.JLabel();

setBackground(new java.awt.Color(255, 255, 255));

setPreferredSize(new java.awt.Dimension(750, 430));

bg.setBackground(new java.awt.Color(255, 255, 255));

jSeparator1.setForeground(new java.awt.Color(204, 204, 204));

jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL);

jSeparator1.setPreferredSize(new java.awt.Dimension(200, 10));

title.setText("Devolución de Libro");

folioLbl.setText("ID Usuario");

libroIdLbl.setText("ID Libro");

button.setBackground(new java.awt.Color(204, 0, 51));

button.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N


button.setForeground(new java.awt.Color(255, 255, 255));

button.setText("Devolver");

button.setBorderPainted(false);

button.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

button.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

buttonActionPerformed(evt);

});

image.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);

image.setIcon(new
javax.swing.ImageIcon(getClass().getResource("/Devoluciones.png"))); // NOI18N

javax.swing.GroupLayout bgLayout = new javax.swing.GroupLayout(bg);

bg.setLayout(bgLayout);

bgLayout.setHorizontalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addGap(30, 30, 30)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(folioLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(199, 199, 199))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(167, 167, 167))

.addComponent(folioTxt)

.addGroup(bgLayout.createSequentialGroup()
.addComponent(libroIdLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(223, 223, 223))

.addComponent(libroIdTxt)

.addComponent(button, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addGap(49, 49, 49)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(31, 31, 31)

.addComponent(image, javax.swing.GroupLayout.PREFERRED_SIZE, 396,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap())

);

bgLayout.setVerticalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(image, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(63, 63, 63)

.addComponent(folioLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(folioTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(18, 18, 18)


.addComponent(libroIdLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(libroIdTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(53, 53, 53)

.addComponent(button, javax.swing.GroupLayout.PREFERRED_SIZE, 50,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(22, 22, 22)))

.addGap(69, 69, 69))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

}// </editor-fold>

private void buttonActionPerformed(java.awt.event.ActionEvent evt) {

String folio = folioTxt.getText();

String bookId = libroIdTxt.getText();

// Anotación: validamos los campos.

if (folio.isEmpty() || bookId.isEmpty()) {
javax.swing.JOptionPane.showMessageDialog(this, "Debe llenar todos los campos. \n",
"AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

folioTxt.requestFocus();

return;

} else if (!Utiles.isNumeric(folio) || !Utiles.isNumeric(bookId)) {

javax.swing.JOptionPane.showMessageDialog(this, "Los campos ID del Usuario y el ID


del libro deben ser números enteros. \n", "AVISO",
javax.swing.JOptionPane.ERROR_MESSAGE);

folioTxt.requestFocus();

return;

} else if (Integer.parseInt(folio) <= 0 || Integer.parseInt(bookId) <= 0) {

javax.swing.JOptionPane.showMessageDialog(this, "Los campos ID del Usuario y el ID


del libro deben ser mayor que 0. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

folioTxt.requestFocus();

return;

try {

DAOUsuarios daoUsers = new DAOUsuariosImpl();

// Anotación: validamos que el usuario existe.

com.mycompany.modelo.Usuarios currentUser =
daoUsers.getUserById(Integer.parseInt(folio));

if (currentUser == null) {

javax.swing.JOptionPane.showMessageDialog(this, "No se encontró ningún usuario


con ese ID. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

folioTxt.requestFocus();

return;

DAOLibros daoBooks = new DAOLibrosImpl();

// Anotación: validamos que el libro existe.


com.mycompany.modelo.Libros currentBook =
daoBooks.getBookById(Integer.parseInt(bookId));

if (currentBook == null){

javax.swing.JOptionPane.showMessageDialog(this, "No se encontró ningún libro con


ese ID. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

libroIdTxt.requestFocus();

return;

DAOPrestamos daoLendings = new DAOPrestamosImpl();

// Anotación: validamos que el usuario tenga el libro prestado.

com.mycompany.modelo.Prestamos currentLending =
daoLendings.getLending(currentUser, currentBook);

if (currentLending == null) {

javax.swing.JOptionPane.showMessageDialog(this, "No se ha podido encontrar el


préstamo correspiendote a los datos ingresados. \n", "AVISO",
javax.swing.JOptionPane.ERROR_MESSAGE);

libroIdTxt.requestFocus();

return;

// Anotación: devolvemos el libro si las verificaciones son correctas.

currentLending.setDate_return(Utiles.getFechaActual());

daoLendings.modificar(currentLending);

// Anotación: modificamos el libro sumandole 1 a la disponibilidad.

currentBook.setAvailable(currentBook.getAvailable() + 1);

daoBooks.modificar(currentBook);

javax.swing.JOptionPane.showMessageDialog(this, "Libro ID: " + currentBook.getId() + "


devuelto exitosamente por " + currentUser.getName() + ".\n", "AVISO",
javax.swing.JOptionPane.INFORMATION_MESSAGE);

folioTxt.setText("");
libroIdTxt.setText("");

// Anotación: verificamos las sanciones.

int days =
Utiles.diferenciasDeFechas(Utiles.stringToDate(currentLending.getDate_out()), new Date());

if (days > MAX_DAYS_RETURN) {

int daysDelayed = days - MAX_DAYS_RETURN;

int sancMoney = daysDelayed * COST_DAY_SANC;

// Anotación: aumentamos la sanción del usuario y en dinero para compensar el libro


prestado.

currentUser.setSanctions(currentUser.getSanctions() + 1);

currentUser.setSanc_money(currentUser.getSanc_money() + sancMoney);

daoUsers.sancionar(currentUser);

javax.swing.JOptionPane.showMessageDialog(this, "¡USUARIO SANCIONADO POR


ENTREGA A DESTIEMPO! ($" + sancMoney + ") \n", "AVISO",
javax.swing.JOptionPane.INFORMATION_MESSAGE);

} catch (Exception e) {

javax.swing.JOptionPane.showMessageDialog(this, "Ocurrió un error al prestar el libro. \


n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

System.out.println(e.getMessage());

// Variables declaration - do not modify

private javax.swing.JPanel bg;

private javax.swing.JButton button;

private javax.swing.JLabel folioLbl;

private javax.swing.JTextField folioTxt;

private javax.swing.JLabel image;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JLabel libroIdLbl;


private javax.swing.JTextField libroIdTxt;

private javax.swing.JLabel title;

// End of variables declaration

podemos devolver colocando el id del usuario con el id del libro que se llevo para que aparezca
en el reporte

libros:

package com.mycompany.vistas;

import com.mycompany.base.DAOLibrosImpl;

import com.mycompany.base.Menu;

import java.awt.Color;

import javax.swing.table.DefaultTableModel;

import com.mycompany.interfaces.DAOLibros;

public class Libros extends javax.swing.JPanel {

public Libros() {

initComponents();

InitStyles();

LoadBooks();

private void InitStyles() {

title.putClientProperty("FlatLaf.styleClass", "h1");

title.setForeground(Color.black);

bookSearch.putClientProperty("JTextField.placeholderText", "Ingrese el título del libro a


buscar.");

private void LoadBooks() {


try {

DAOLibros dao = new DAOLibrosImpl();

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

dao.listar("").forEach((u) -> model.addRow(new Object[]{u.getId(), u.getTitle(),


u.getDate(), u.getAuthor(), u.getCategory(), u.getEdit(), u.getLang(), u.getPages(),
u.getDescription(), u.getEjemplares(), u.getStock(), u.getAvailable()}));

} catch (Exception e) {

System.out.println(e.getMessage());

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

bg = new javax.swing.JPanel();

title = new javax.swing.JLabel();

bookSearch = new javax.swing.JTextField();

searchButton = new javax.swing.JButton();

deleteButton = new javax.swing.JButton();

editButton = new javax.swing.JButton();

addButton = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

jTable1 = new javax.swing.JTable();

setBackground(new java.awt.Color(255, 255, 255));

bg.setBackground(new java.awt.Color(255, 255, 255));

title.setText("Libros");

searchButton.setBackground(new java.awt.Color(204, 0, 51));


searchButton.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N

searchButton.setForeground(new java.awt.Color(255, 255, 255));

searchButton.setText("Buscar");

searchButton.setBorderPainted(false);

searchButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

searchButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

searchButtonActionPerformed(evt);

});

deleteButton.setBackground(new java.awt.Color(204, 0, 51));

deleteButton.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N

deleteButton.setForeground(new java.awt.Color(255, 255, 255));

deleteButton.setText("Borrar");

deleteButton.setBorderPainted(false);

deleteButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

deleteButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

deleteButtonActionPerformed(evt);

});

editButton.setBackground(new java.awt.Color(204, 0, 51));

editButton.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N

editButton.setForeground(new java.awt.Color(255, 255, 255));

editButton.setText("Editar");

editButton.setBorderPainted(false);

editButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

editButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {


editButtonActionPerformed(evt);

});

addButton.setBackground(new java.awt.Color(204, 0, 51));

addButton.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N

addButton.setForeground(new java.awt.Color(255, 255, 255));

addButton.setText("Nuevo");

addButton.setBorderPainted(false);

addButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

addButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

addButtonActionPerformed(evt);

});

jTable1.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N

jTable1.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

},

new String [] {

"ID", "Título", "Fecha de Pub.", "Autor", "Categoría", "Edición", "Idioma", "Páginas",


"Descripción", "Ejemplaresl", "Stock", "Disponibles"

){

Class[] types = new Class [] {

java.lang.String.class, java.lang.String.class, java.lang.String.class,


java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Object.class,
java.lang.Object.class, java.lang.Object.class, java.lang.Object.class, java.lang.Object.class,
java.lang.Object.class

};
boolean[] canEdit = new boolean [] {

false, true, true, true, true, true, true, true, true, true, true, true

};

public Class getColumnClass(int columnIndex) {

return types [columnIndex];

public boolean isCellEditable(int rowIndex, int columnIndex) {

return canEdit [columnIndex];

});

jTable1.getTableHeader().setReorderingAllowed(false);

jTable1.addMouseListener(new java.awt.event.MouseAdapter() {

public void mousePressed(java.awt.event.MouseEvent evt) {

jTable1MousePressed(evt);

});

jScrollPane1.setViewportView(jTable1);

javax.swing.GroupLayout bgLayout = new javax.swing.GroupLayout(bg);

bg.setLayout(bgLayout);

bgLayout.setHorizontalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(699, 699, 699))


.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
bgLayout.createSequentialGroup()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR
AILING)

.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addGap(427, 427, 427)

.addComponent(addButton, javax.swing.GroupLayout.DEFAULT_SIZE, 84,


Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE
D)

.addComponent(editButton, javax.swing.GroupLayout.DEFAULT_SIZE, 79,


Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE
D)

.addComponent(deleteButton, javax.swing.GroupLayout.DEFAULT_SIZE, 80,


Short.MAX_VALUE))

.addGroup(bgLayout.createSequentialGroup()

.addComponent(bookSearch)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(searchButton)))

.addGap(50, 50, 50))))

);

bgLayout.setVerticalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG)

.addComponent(bookSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(searchButton, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE))

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 278,


Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELI
NE)

.addComponent(deleteButton)

.addComponent(editButton)

.addComponent(addButton))

.addGap(25, 25, 25))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

}// </editor-fold>

private void jTable1MousePressed(java.awt.event.MouseEvent evt) {

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {


Menu.ShowJPanel(new AgLibros());

private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {

DAOLibros dao = new DAOLibrosImpl();

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

if (jTable1.getSelectedRows().length < 1) {

javax.swing.JOptionPane.showMessageDialog(this, "Debes seleccionar uno o más libros


a eliminar.\n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

} else {

for (int i : jTable1.getSelectedRows()) {

try {

dao.eliminar((int) jTable1.getValueAt(i, 0));

model.removeRow(i);

} catch (Exception e) {

System.out.println(e.getMessage());

private void editButtonActionPerformed(java.awt.event.ActionEvent evt) {

if (jTable1.getSelectedRow() > -1) {

try {

int bookId = (int) jTable1.getValueAt(jTable1.getSelectedRow(), 0);

DAOLibros dao = new DAOLibrosImpl();

Menu.ShowJPanel(new AgLibros(dao.getBookById(bookId)));

} catch (Exception e) {

System.out.println(e.getMessage());

} else {
javax.swing.JOptionPane.showMessageDialog(this, "Debes seleccionar el libro a editar.\
n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {

try {

DAOLibros dao = new DAOLibrosImpl();

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

model.setRowCount(0);

dao.listar(bookSearch.getText()).forEach((u) -> model.addRow(new Object[]{u.getId(),


u.getTitle(), u.getDate(), u.getAuthor(), u.getCategory(), u.getEdit(), u.getLang(), u.getPages(),
u.getDescription(), u.getEjemplares(), u.getStock(), u.getAvailable()}));

} catch (Exception e) {

System.out.println(e.getMessage());

// Variables declaration - do not modify

private javax.swing.JButton addButton;

private javax.swing.JPanel bg;

private javax.swing.JTextField bookSearch;

private javax.swing.JButton deleteButton;

private javax.swing.JButton editButton;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

private javax.swing.JButton searchButton;

private javax.swing.JLabel title;

// End of variables declaration

con este código podemos ver todos los libros que hemos registrado y la cantidad que hay en el
sistema

préstamo:

package com.mycompany.vistas;

import com.mycompany.base.DAOLibrosImpl;

import com.mycompany.base.DAOPrestamosImpl;

import com.mycompany.base.DAOUsuariosImpl;

import com.mycompany.utiles.Utiles;

import java.awt.Color;

import com.mycompany.interfaces.DAOLibros;

import com.mycompany.interfaces.DAOPrestamos;

import com.mycompany.interfaces.DAOUsuarios;

public class Prestamos extends javax.swing.JPanel {

public Prestamos() {

initComponents();

InitStyles();

private void InitStyles() {

folioLbl.putClientProperty("FlatLaf.styleClass", "large");

folioLbl.setForeground(Color.black);

libroIdLbl.putClientProperty("FlatLaf.styleClass", "large");

libroIdLbl.setForeground(Color.black);

folioTxt.putClientProperty("JTextField.placeholderText", "Ingrese el ID del usuario.");

libroIdTxt.putClientProperty("JTextField.placeholderText", "Ingrese el ID del Libro a


prestar.");

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

bg = new javax.swing.JPanel();

jSeparator1 = new javax.swing.JSeparator();

folioLbl = new javax.swing.JLabel();

folioTxt = new javax.swing.JTextField();

libroIdLbl = new javax.swing.JLabel();

libroIdTxt = new javax.swing.JTextField();

button = new javax.swing.JButton();

image = new javax.swing.JLabel();

setBackground(new java.awt.Color(255, 255, 255));

bg.setBackground(new java.awt.Color(255, 255, 255));

jSeparator1.setForeground(new java.awt.Color(204, 204, 204));

jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL);

jSeparator1.setPreferredSize(new java.awt.Dimension(200, 10));

folioLbl.setText("ID Usuario");

folioTxt.setToolTipText("");

libroIdLbl.setText("ID Libro");

button.setBackground(new java.awt.Color(204, 0, 51));

button.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N

button.setForeground(new java.awt.Color(255, 255, 255));

button.setText("Prestar");

button.setBorderPainted(false);
button.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

button.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

buttonActionPerformed(evt);

});

image.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Préstamos.png"))); //
NOI18N

javax.swing.GroupLayout bgLayout = new javax.swing.GroupLayout(bg);

bg.setLayout(bgLayout);

bgLayout.setHorizontalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addGap(450, 450, 450)

.addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(10, 10, 10)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(folioLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(199, 199, 199))

.addComponent(folioTxt)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(libroIdLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(223, 223, 223))

.addComponent(libroIdTxt)

.addComponent(button, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGap(20, 20, 20))

.addGroup(bgLayout.createSequentialGroup()

.addGap(71, 71, 71)

.addComponent(image, javax.swing.GroupLayout.PREFERRED_SIZE, 494,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

);

bgLayout.setVerticalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addGap(20, 20, 20)

.addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(60, 60, 60))

.addGroup(bgLayout.createSequentialGroup()

.addGap(50, 50, 50)

.addComponent(folioLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(16, 16, 16)

.addComponent(folioTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(30, 30, 30)

.addComponent(libroIdLbl, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(16, 16, 16)

.addComponent(libroIdTxt, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(50, 50, 50)

.addComponent(button, javax.swing.GroupLayout.PREFERRED_SIZE, 50,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addGap(110, 110, 110))

.addComponent(image, javax.swing.GroupLayout.PREFERRED_SIZE, 0,
Short.MAX_VALUE)

);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

}// </editor-fold>

private void buttonActionPerformed(java.awt.event.ActionEvent evt) {

String folio = folioTxt.getText();

String bookId = libroIdTxt.getText();

// Anotación: validamos los campos.

if (folio.isEmpty() || bookId.isEmpty()) {

javax.swing.JOptionPane.showMessageDialog(this, "Debe llenar todos los campos. \n",


"AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

folioTxt.requestFocus();

return;

} else if (!Utiles.isNumeric(folio) || !Utiles.isNumeric(bookId)) {

javax.swing.JOptionPane.showMessageDialog(this, "Los campos ID de Usuario y el ID del


libro deben ser números enteros. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

folioTxt.requestFocus();

return;

} else if (Integer.parseInt(folio) <= 0 || Integer.parseInt(bookId) <= 0) {

javax.swing.JOptionPane.showMessageDialog(this, "Los campos ID del Usuario y el ID


del libro deben ser mayor que 0. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);
folioTxt.requestFocus();

return;

try {

DAOUsuarios daoUsers = new DAOUsuariosImpl();

// Anotación: validamos que el usuario existe.

com.mycompany.modelo.Usuarios currentUser =
daoUsers.getUserById(Integer.parseInt(folio));

if (currentUser == null) {

javax.swing.JOptionPane.showMessageDialog(this, "No se encontró ningún usuario


con ese ID. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

folioTxt.requestFocus();

return;

DAOLibros daoBooks = new DAOLibrosImpl();

// Anotación: validamos que el libro existe.

com.mycompany.modelo.Libros currentBook =
daoBooks.getBookById(Integer.parseInt(bookId));

if (currentBook == null){

javax.swing.JOptionPane.showMessageDialog(this, "No se encontró ningún libro con


ese ID. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

libroIdTxt.requestFocus();

return;

// Anotación: validamos la disponibilidad del libro.

else if (currentBook.getAvailable() < 1) {

javax.swing.JOptionPane.showMessageDialog(this, "Ya no hay más libros disponibles


con esa ID para prestar. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

libroIdTxt.requestFocus();
return;

DAOPrestamos daoLendings = new DAOPrestamosImpl();

// Anotación: validamos que el usuario no tenga ya ese libro prestado.

com.mycompany.modelo.Prestamos currentLending =
daoLendings.getLending(currentUser, currentBook);

if (currentLending != null) {

javax.swing.JOptionPane.showMessageDialog(this, "Esa persona ya cuenta con el


préstamo de ese mismo Libro. \n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

libroIdTxt.requestFocus();

return;

// Anotación: prestamos el libro si las verificaciones son correctas.

com.mycompany.modelo.Prestamos lending = new


com.mycompany.modelo.Prestamos();

lending.setBook_id(currentBook.getId());

lending.setUser_id(currentUser.getId());

lending.setDate_out(Utiles.getFechaActual());

daoLendings.registrar(lending);

// Anotación: modificamos el libro restandole 1 en disponibilidad.

currentBook.setAvailable(currentBook.getAvailable() - 1);

daoBooks.modificar(currentBook);

javax.swing.JOptionPane.showMessageDialog(this, "Libro ID: " + currentBook.getId() + "


prestado exitosamente a " + currentUser.getName() + ".\n", "AVISO",
javax.swing.JOptionPane.INFORMATION_MESSAGE);

folioTxt.setText("");

libroIdTxt.setText("");

} catch (Exception e) {
javax.swing.JOptionPane.showMessageDialog(this, "Ocurrió un error al prestar el libro. \
n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

System.out.println(e.getMessage());

// Variables declaration - do not modify

private javax.swing.JPanel bg;

private javax.swing.JButton button;

private javax.swing.JLabel folioLbl;

private javax.swing.JTextField folioTxt;

private javax.swing.JLabel image;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JLabel libroIdLbl;

private javax.swing.JTextField libroIdTxt;

// End of variables declaration

aquí podemos prestar los libros que se le da a un usuario y con la ayuda del registro de usuario
podemos saber a que persona se le entrego

Reportes:

package com.mycompany.vistas;

import com.mycompany.base.DAOPrestamosImpl;

import java.awt.Color;

import javax.swing.table.DefaultTableModel;

import com.mycompany.interfaces.DAOPrestamos;

public class Reportes extends javax.swing.JPanel {

public Reportes() {

initComponents();
InitStyles();

LoadLendings();

private void InitStyles() {

title.putClientProperty("FlatLaf.styleClass", "h1");

title.setForeground(Color.black);

private void LoadLendings() {

try {

DAOPrestamos dao = new DAOPrestamosImpl();

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

// Anotación: limpiamos la tabla.

model.setRowCount(0);

dao.listar().forEach((u) -> model.addRow(new Object[]{u.getUser_id(), u.getBook_id(),


u.getDate_out(), u.getDate_return()}));

} catch (Exception e) {

System.out.println(e.getMessage());

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

bg = new javax.swing.JPanel();

title = new javax.swing.JLabel();

jButton2 = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

jTable1 = new javax.swing.JTable();


setBackground(new java.awt.Color(255, 255, 255));

setPreferredSize(new java.awt.Dimension(750, 430));

bg.setBackground(new java.awt.Color(255, 255, 255));

title.setText("Reportes");

jButton2.setBackground(new java.awt.Color(204, 0, 51));

jButton2.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N

jButton2.setForeground(new java.awt.Color(255, 255, 255));

jButton2.setText("Actualizar");

jButton2.setBorderPainted(false);

jButton2.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

jButton2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jButton2ActionPerformed(evt);

});

jTable1.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N

jTable1.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

},

new String [] {

"User ID", "Book ID", "Fecha de Salida", "Fecha de Entrega"

){

Class[] types = new Class [] {

java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class


};

boolean[] canEdit = new boolean [] {

false, false, false, false

};

public Class getColumnClass(int columnIndex) {

return types [columnIndex];

public boolean isCellEditable(int rowIndex, int columnIndex) {

return canEdit [columnIndex];

});

jTable1.getTableHeader().setReorderingAllowed(false);

jTable1.addInputMethodListener(new java.awt.event.InputMethodListener() {

public void caretPositionChanged(java.awt.event.InputMethodEvent evt) {

public void inputMethodTextChanged(java.awt.event.InputMethodEvent evt) {

jTable1InputMethodTextChanged(evt);

});

jScrollPane1.setViewportView(jTable1);

javax.swing.GroupLayout bgLayout = new javax.swing.GroupLayout(bg);

bg.setLayout(bgLayout);

bgLayout.setHorizontalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG)
.addGroup(bgLayout.createSequentialGroup()

.addGap(581, 581, 581)

.addComponent(jButton2, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

.addGroup(javax.swing.GroupLayout.Alignment.LEADING,
bgLayout.createSequentialGroup()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(646, 646, 646))

.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING))

.addGap(50, 50, 50))

);

bgLayout.setVerticalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(11, 11, 11)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 330,


Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(jButton2)

.addGap(25, 25, 25))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);

this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);
layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

}// </editor-fold>

private void jTable1InputMethodTextChanged(java.awt.event.InputMethodEvent evt) {

// nada.

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

LoadLendings();

// Variables declaration - do not modify

private javax.swing.JPanel bg;

private javax.swing.JButton jButton2;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

private javax.swing.JLabel title;

// End of variables declaration

aquí podemos ver los reportes de los libros si se entrego a tiempo o tardío y el usuario que lo
entrego

Usuario:

package com.mycompany.vistas;

import com.mycompany.base.DAOUsuariosImpl;

import com.mycompany.base.Menu;
import java.awt.Color;

import javax.swing.table.DefaultTableModel;

import com.mycompany.interfaces.DAOUsuarios;

public class Usuarios extends javax.swing.JPanel {

public Usuarios() {

initComponents();

InitStyles();

LoadUsers();

private void InitStyles() {

title.putClientProperty("FlatLaf.styleClass", "h1");

title.setForeground(Color.black);

userSearch.putClientProperty("JTextField.placeholderText", "Ingrese el nombre de usuario


a buscar.");

private void LoadUsers() {

try {

DAOUsuarios dao = new DAOUsuariosImpl();

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

dao.listar("").forEach((u) -> model.addRow(new Object[]{u.getId(), u.getName(),


u.getLast_name_p(), u.getLast_name_m(), u.getDomicilio(), u.getTel()}));

} catch (Exception e) {

System.out.println(e.getMessage());

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code">


private void initComponents() {

bg = new javax.swing.JPanel();

title = new javax.swing.JLabel();

userSearch = new javax.swing.JTextField();

searchButton = new javax.swing.JButton();

jScrollPane1 = new javax.swing.JScrollPane();

jTable1 = new javax.swing.JTable();

deleteButton = new javax.swing.JButton();

editButton = new javax.swing.JButton();

addButton = new javax.swing.JButton();

setBackground(new java.awt.Color(255, 255, 255));

bg.setBackground(new java.awt.Color(255, 255, 255));

title.setText("Usuarios");

searchButton.setBackground(new java.awt.Color(204, 0, 51));

searchButton.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N

searchButton.setForeground(new java.awt.Color(255, 255, 255));

searchButton.setText("Buscar");

searchButton.setBorderPainted(false);

searchButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

searchButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

searchButtonActionPerformed(evt);

});

jTable1.setFont(new java.awt.Font("Segoe UI", 0, 11)); // NOI18N


jTable1.setModel(new javax.swing.table.DefaultTableModel(

new Object [][] {

},

new String [] {

"ID", "Nombre", "Apellido P.", "Apellido M.", "Domicilio", "Teléfono"

){

Class[] types = new Class [] {

java.lang.String.class, java.lang.String.class, java.lang.String.class,


java.lang.String.class, java.lang.String.class, java.lang.String.class

};

boolean[] canEdit = new boolean [] {

false, true, true, true, true, true

};

public Class getColumnClass(int columnIndex) {

return types [columnIndex];

public boolean isCellEditable(int rowIndex, int columnIndex) {

return canEdit [columnIndex];

});

jTable1.getTableHeader().setReorderingAllowed(false);

jTable1.addMouseListener(new java.awt.event.MouseAdapter() {

public void mousePressed(java.awt.event.MouseEvent evt) {

jTable1MousePressed(evt);

});

jScrollPane1.setViewportView(jTable1);
deleteButton.setBackground(new java.awt.Color(204, 0, 51));

deleteButton.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N

deleteButton.setForeground(new java.awt.Color(255, 255, 255));

deleteButton.setText("Borrar");

deleteButton.setBorderPainted(false);

deleteButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

deleteButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

deleteButtonActionPerformed(evt);

});

editButton.setBackground(new java.awt.Color(204, 0, 51));

editButton.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N

editButton.setForeground(new java.awt.Color(255, 255, 255));

editButton.setText("Editar");

editButton.setBorderPainted(false);

editButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));

editButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

editButtonActionPerformed(evt);

});

addButton.setBackground(new java.awt.Color(204, 0, 51));

addButton.setFont(new java.awt.Font("Segoe UI", 0, 18)); // NOI18N

addButton.setForeground(new java.awt.Color(255, 255, 255));

addButton.setText("Nuevo");

addButton.setBorderPainted(false);

addButton.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
addButton.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

addButtonActionPerformed(evt);

});

javax.swing.GroupLayout bgLayout = new javax.swing.GroupLayout(bg);

bg.setLayout(bgLayout);

bgLayout.setHorizontalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADIN
G)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addGap(699, 699, 699))

.addGroup(javax.swing.GroupLayout.Alignment.TRAILING,
bgLayout.createSequentialGroup()

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TR
AILING)

.addGroup(bgLayout.createSequentialGroup()

.addGap(427, 427, 427)

.addComponent(addButton, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE
D)

.addComponent(editButton, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATE
D)

.addComponent(deleteButton, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addComponent(userSearch)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addComponent(searchButton)))

.addGap(50, 50, 50))))

);

bgLayout.setVerticalGroup(

bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(bgLayout.createSequentialGroup()

.addContainerGap()

.addComponent(title, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILI
NG)

.addComponent(userSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE)

.addComponent(searchButton, javax.swing.GroupLayout.PREFERRED_SIZE, 40,


javax.swing.GroupLayout.PREFERRED_SIZE))

.addGap(18, 18, 18)

.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 272,


Short.MAX_VALUE)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

.addGroup(bgLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELI
NE)

.addComponent(deleteButton)

.addComponent(editButton)

.addComponent(addButton))

.addGap(25, 25, 25))

);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);


this.setLayout(layout);

layout.setHorizontalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

layout.setVerticalGroup(

layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addComponent(bg, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

);

}// </editor-fold>

private void jTable1MousePressed(java.awt.event.MouseEvent evt) {

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {

Menu.ShowJPanel(new AgUsuarios());

private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {

DAOUsuarios dao = new DAOUsuariosImpl();

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

if (jTable1.getSelectedRows().length < 1) {

javax.swing.JOptionPane.showMessageDialog(this, "Debes seleccionar uno o más


usuarios a eliminar.\n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

} else {

for (int i : jTable1.getSelectedRows()) {

try {

dao.eliminar((int) jTable1.getValueAt(i, 0));

model.removeRow(i);
} catch (Exception e) {

System.out.println(e.getMessage());

private void editButtonActionPerformed(java.awt.event.ActionEvent evt) {

if (jTable1.getSelectedRow() > -1) {

try {

int userId = (int) jTable1.getValueAt(jTable1.getSelectedRow(), 0);

DAOUsuarios dao = new DAOUsuariosImpl();

Menu.ShowJPanel(new AgUsuarios(dao.getUserById(userId)));

} catch (Exception e) {

System.out.println(e.getMessage());

} else {

javax.swing.JOptionPane.showMessageDialog(this, "Debes seleccionar el usuario a


editar.\n", "AVISO", javax.swing.JOptionPane.ERROR_MESSAGE);

private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {

try {

DAOUsuarios dao = new DAOUsuariosImpl();

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();

model.setRowCount(0);

dao.listar(userSearch.getText()).forEach((u) -> model.addRow(new Object[]{u.getId(),


u.getName(), u.getLast_name_p(), u.getLast_name_m(), u.getDomicilio(), u.getTel()}));

} catch (Exception e) {

System.out.println(e.getMessage());

}
}

// Variables declaration - do not modify

private javax.swing.JButton addButton;

private javax.swing.JPanel bg;

private javax.swing.JButton deleteButton;

private javax.swing.JButton editButton;

private javax.swing.JScrollPane jScrollPane1;

private javax.swing.JTable jTable1;

private javax.swing.JButton searchButton;

private javax.swing.JLabel title;

private javax.swing.JTextField userSearch;

// End of variables declaration

aquí podemos ver todos los usuarios registrados en el sistema.

solución del planteamiento del problema:

El problema está ubicado en la biblioteca de la universidad nacional experimental de la Fuerza


Armada Nacional Unefa Núcleo Lara, ya que la misma llega a cabo todos los registros de los
libros presentes en la misma de manera manual, así como también se gestiona de esta manera
toda la información de los usuarios que solicitan un libro, esto actualmente resulta poco
eficiente ya que este proceso es lento sobre todo a la hora de buscar algún libro en específico
o consultar si el libro está en posición de alguien y si es así de quien, todo lo anteriormente
expresado nos lleva a plantear como una posible solución la implementación de un sistema
automatizado el cual nos permita gestionar de manera óptima y eficiente toda la información
de los libros ubicados en la biblioteca, así como también la información de usuarios fechas de
préstamo, etc. Esto facilitara en gran medida la labor que desempeña el encardado de la
biblioteca la hora de tener un control de qué y cuantos libros hay en la biblioteca, así como
también, se reflejará un aumento en el desempeño a la hora de hacer un seguimiento de los
registros de todos los usuarios de la biblioteca, ya sea para llevar un control de seguimiento
para saber qué tan seguido van determinados usuarios o para saber cuáles son los libros más
solicitados en la biblioteca, todo esto se podrá logran con la implementación del sistema
propuesto, que lograra que el trabajo del bibliotecario se realice de manera más rápida y
eficiente.

You might also like