-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
127 lines (115 loc) · 4.59 KB
/
Copy pathMain.java
File metadata and controls
127 lines (115 loc) · 4.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import java.util.List;
import java.util.Scanner;
public class Main {
private static final Scanner scanner = new Scanner(System.in);
private static final AgendaTelefonica agenda = new AgendaTelefonica();
public static void main(String[] args) {
boolean rodando = true;
while (rodando) {
imprimir_menu();
int opcao = lerInteiro("Escolha uma opção: ");
switch (opcao) {
case 1 -> adicionar_contato();
case 2 -> remover_contato();
case 3 -> buscar_contato();
case 4 -> atualizar_contato();
case 5 -> listar_contatos();
case 6 -> {
System.out.println("Saindo. Obrigado!");
rodando = false;
}
default -> System.out.println("Opção inválida. Tente novamente.");
}
System.out.println();
}
scanner.close();
}
private static void imprimir_menu() {
System.out.println("=== Agenda Telefônica ===");
System.out.println("1. Adicionar novo contato");
System.out.println("2. Remover contato");
System.out.println("3. Buscar contato por nome");
System.out.println("4. Atualizar contato");
System.out.println("5. Listar todos os contatos");
System.out.println("6. Sair");
}
private static void adicionar_contato() {
System.out.println("--- Adicionar Contato ---");
String nome = lerString("Nome: ");
String telefone = lerString("Telefone: ");
Contato c = new Contato(nome, telefone);
if (agenda.adicionar_contato(c)) {
System.out.println("Contato adicionado com sucesso.");
} else {
System.out.println("Falha ao adicionar contato. Nome inválido ou já existe contato com esse nome.");
}
}
private static void remover_contato() {
System.out.println("--- Remover Contato ---");
String nome = lerString("Nome do contato a remover: ");
if (agenda.remover_contato(nome)) {
System.out.println("Contato removido.");
} else {
System.out.println("Contato não encontrado.");
}
}
private static void buscar_contato() {
System.out.println("--- Buscar Contato ---");
String nome = lerString("Nome: ");
Contato c = agenda.buscar_contato(nome);
if (c != null) {
System.out.println("Contato encontrado:");
System.out.println(c);
} else {
System.out.println("Contato não encontrado.");
}
}
private static void atualizar_contato() {
System.out.println("--- Atualizar Contato ---");
String nomeAntigo = lerString("Nome do contato a atualizar: ");
Contato existente = agenda.buscar_contato(nomeAntigo);
if (existente == null) {
System.out.println("Contato não encontrado.");
return;
}
System.out.println("Contato atual: " + existente);
String novoNome = lerString("Novo nome (enter para manter): ");
String novoTel = lerString("Novo telefone (enter para manter): ");
String finalNome = novoNome.isBlank() ? existente.getNome() : novoNome;
String finalTel = novoTel.isBlank() ? existente.getTelefone() : novoTel;
Contato novo = new Contato(finalNome, finalTel);
if (agenda.atualizar_contato(nomeAntigo, novo)) {
System.out.println("Contato atualizado com sucesso.");
} else {
System.out.println("Falha ao atualizar. Possível conflito de nomes ou dados inválidos.");
}
}
private static void listar_contatos() {
System.out.println("--- Lista de Contatos ---");
List<Contato> lista = agenda.listar_contatos();
if (lista.isEmpty()) {
System.out.println("Agenda vazia.");
return;
}
int i = 1;
for (Contato c : lista) {
System.out.printf("%d. %s%n", i++, c);
}
System.out.printf("Total: %d contato(s).%n", agenda.tamanho());
}
private static String lerString(String prompt) {
System.out.print(prompt);
return scanner.nextLine().trim();
}
private static int lerInteiro(String prompt) {
while (true) {
System.out.print(prompt);
String linha = scanner.nextLine().trim();
try {
return Integer.parseInt(linha);
} catch (NumberFormatException e) {
System.out.println("Entrada inválida. Digite um número.");
}
}
}
}