1 fun mostrarMenu() {
2 println("\n=== AGENDA DE CONTACTOS ===")
3 println("1. Agregar contacto")
4 println("2. Listar contactos")
5 println("3. Buscar contacto")
6 println("4. Eliminar contacto")
7 println("0. Salir")
8 print("Elige una opción: ")
9 }
10
11 fun main() {
12 val contactos = mutableListOf<Contacto>()
13 var nextId = 1
14
15 do {
16 mostrarMenu()
17 val opcion = readLine() ?: "0"
18
19 when (opcion) {
20 "1" -> {
21 print("Nombre: ")
22 val nombre = readLine() ?: ""
23 print("Teléfono: ")
24 val tel = readLine() ?: ""
25 print("Email (opcional): ")
26 val email = readLine()?.ifEmpty { null }
27 contactos.add(Contacto(nextId++, nombre, tel, email))
28 println("Contacto agregado!")
29 }
30 "2" -> {
31 if (contactos.isEmpty()) {
32 println("No hay contactos")
33 } else {
34 contactos.forEach { c ->
35 println("${c.id}. ${c.nombre} | ${c.telefono} | ${c.email ?: "sin email"}")
36 }
37 }
38 }
39 "3" -> {
40 print("Buscar nombre: ")
41 val busqueda = readLine() ?: ""
42 val encontrados = contactos.filter {
43 it.nombre.contains(busqueda, ignoreCase = true)
44 }
45 encontrados.forEach { println(it) }
46 if (encontrados.isEmpty()) println("No se encontraron contactos")
47 }
48 "4" -> {
49 print("ID a eliminar: ")
50 val id = readLine()?.toIntOrNull()
51 if (id != null) {
52 val eliminado = contactos.removeAll { it.id == id }
53 if (eliminado) println("Eliminado") else println("No encontrado")
54 } else {
55 println("ID inválido")
56 }
57 }
58 "0" -> println("¡Hasta luego!")
59 else -> println("Opción inválida")
60 }
61 } while (opcion != "0")
62 }