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:
- Gestión de Base de Datos: Una clase
DatabaseHelper
que define la estructura y operaciones CRUD para la tabla de libros. - 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
- Configuración de la Vista: La actividad inicializa las vistas (
EditText
,Button
,TextView
) y elDatabaseHelper
para acceder a la base de datos. - 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 elTextView
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
- La importancia de mantener un ritmo de estudio durante las navidades.
- Cómo Multiplicar Matrices en Java: Guía Completa con Ejemplo Práctico
- Triunfos y logros de nuestra Academia SanRoque
- Herramientas Imprescindibles para Realizar Ingeniería Inversa en Java
- ¿A qué nivel de conversación en inglés estás dispuesto a llegar con Academia SanRoque?
- Cómo Resolver una Ecuación de Segundo Grado con GNU Octave
- Cuando vienes a la Academia SaRoque justo antes del examen final.
- 25N Día Internacional para la Eliminación de la Violencia contra la Mujer
- Cuando el profesor nos da la última oportunidad.
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido
Comments are closed