COMPARTE ESTE ARTÍCULO

Introducción

Crear una funcionalidad de reserva de libros en una aplicación Android requiere un control eficiente de la base de datos, una interfaz de usuario amigable y lógica de verificación. En este artículo, exploraremos cómo realizar reservas de libros usando una base de datos SQLite en Android Studio. La funcionalidad permite verificar la disponibilidad de ejemplares y actualiza la base de datos cuando un libro es reservado.

Estructura del Proyecto

El proyecto está dividido en dos partes principales:

  1. Gestión de Base de Datos: Una clase DatabaseHelper que define la estructura y operaciones CRUD para la tabla de libros.
  2. Interfaz de Reserva: Una actividad llamada ReservaActivity que proporciona una interfaz para realizar reservas de libros.

Definición de la Clase DatabaseHelper

Para gestionar los datos de la biblioteca, hemos creado una clase DatabaseHelper que extiende SQLiteOpenHelper. Esta clase permite:

  • Crear la tabla Libros.
  • Insertar, actualizar y consultar libros en la base de datos.
class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, "biblioteca.db", null, 1) {
    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL(
            "CREATE TABLE Libros (ISBN TEXT PRIMARY KEY, Titulo TEXT, Autor TEXT, EjemplaresTotales INTEGER, EjemplaresActual INTEGER, Disponible TEXT)"
        )
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        db.execSQL("DROP TABLE IF EXISTS Libros")
        onCreate(db)
    }

    // Métodos de inserción, consulta y actualización como se detallaron anteriormente
}

Clase de Datos Libro

La clase de datos Libro representa la entidad de libros en la base de datos y facilita la manipulación de estos objetos en la aplicación.

data class Libro(
    val isbn: String,
    val titulo: String,
    val autor: String,
    val ejemplaresTotales: Int,
    val ejemplaresActual: Int,
    val disponible: String
)

Creación de la ReservaActivity

La actividad ReservaActivity permite al usuario introducir el ISBN de un libro para realizar una reserva. La actividad tiene un campo de entrada para el ISBN, un botón de reserva y un TextView para mostrar los resultados.

Código de la ReservaActivity

class ReservaActivity : AppCompatActivity() {
    private lateinit var isbnEditText: EditText
    private lateinit var reservarButton: Button
    private lateinit var resultadoTextView: TextView
    private lateinit var dbHelper: DatabaseHelper

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_reserva)

        isbnEditText = findViewById(R.id.isbnEditText)
        reservarButton = findViewById(R.id.reservarButton)
        resultadoTextView = findViewById(R.id.resultadoTextView)
        dbHelper = DatabaseHelper(this)

        reservarButton.setOnClickListener {
            val isbn = isbnEditText.text.toString()

            // Comprobar si el ISBN está vacío
            if (isbn.isEmpty()) {
                Toast.makeText(this, "Por favor, introduce un ISBN.", Toast.LENGTH_SHORT).show()
            } else {
                // Consultar libro en la base de datos
                val libro = dbHelper.consultarLibro(isbn)
                if (libro != null) {
                    // Comprobar si se puede reservar el libro
                    if (libro.ejemplaresActual <= 0) {
                        Toast.makeText(this, "Error: No se puede reservar el libro, ya que no hay ejemplares disponibles.", Toast.LENGTH_SHORT).show()
                    } else {
                        // Actualizar ejemplares actuales y reservar libro
                        val nuevosEjemplaresActual = libro.ejemplaresActual - 1
                        val actualizado = dbHelper.actualizarLibroEjemplares(isbn, nuevosEjemplaresActual, if (nuevosEjemplaresActual > 0) "Disponible" else "No Disponible")

                        if (actualizado) {
                            Toast.makeText(this, "Libro reservado exitosamente.", Toast.LENGTH_SHORT).show()
                            resultadoTextView.text = "Libro reservado: ${libro.titulo}"
                        } else {
                            Toast.makeText(this, "Error al reservar el libro.", Toast.LENGTH_SHORT).show()
                        }
                    }
                } else {
                    // ISBN no encontrado
                    Toast.makeText(this, "Error: ISBN no encontrado.", Toast.LENGTH_SHORT).show()
                    resultadoTextView.text = ""
                }
            }
        }
    }
}

Explicación del Código

  1. Configuración de la Vista: La actividad inicializa las vistas (EditText, Button, TextView) y el DatabaseHelper para acceder a la base de datos.
  2. Manejo del Botón de Reserva: Al presionar el botón de reserva:
  • Verifica el ISBN: Comprueba si el campo de ISBN está vacío y muestra un mensaje en caso de que lo esté.
  • Consulta en la Base de Datos: Utiliza el ISBN ingresado para buscar el libro en la base de datos.
  • Verificación de Disponibilidad: Si el libro tiene ejemplares disponibles, se reduce el número de ejemplaresActual en uno. Si se logra la actualización, se muestra un mensaje de éxito y se actualiza el TextView con el título del libro reservado.
  • Error de Disponibilidad: Si no hay ejemplares disponibles, muestra un mensaje de error.

Conclusión

Este proyecto ejemplifica una implementación básica de reservas en una biblioteca digital utilizando SQLite en Android Studio. Con esta configuración, la aplicación ofrece al usuario una forma fácil y rápida de verificar y reservar libros, asegurando una experiencia de usuario fluida y confiable. Este tipo de aplicación puede ampliarse fácilmente para incluir otras funcionalidades como devolución de libros, búsqueda avanzada y sincronización con bases de datos en la nube.


¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.


¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos. 

 

 


NUESTRAS ÚLTIMAS PUBLICACIONES

AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Categories:

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
error: CONTENIDO PROTEGIDO