-
Notifications
You must be signed in to change notification settings - Fork 0
/
reserva.java
298 lines (258 loc) · 10.2 KB
/
reserva.java
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
/**Classe para reserva de passagens de voos
* @author Matheus Gabriel
* Emilly Dantas
* Gabrielly de Moraes
* @version 1.3
*/
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Reserva {
private String nomePassageiro;
private String destino;
private String hora;
private String data;
Scanner sc = new Scanner(System.in);
/* Método construtor da classe */
public Reserva(String nomePassageiro, String destino, String hora, String data) {
setNomePassageiro(nomePassageiro);
setDestino(destino);
setHora(hora);
setData(data);
}
/* Método de invocação geral da classe */
public void iniciar() {
if (loginUsuario() == true) {
menu();
} else {
System.out.println("Cadastro inválido");
}
}
/* Método de espera de processos, ou pausas rápidas entre ações */
public void carregando(int time) {
System.out.println("Carregando... \n");
try {
Thread.sleep(time);
} catch (InterruptedException e) {
System.out.println(e);
}
}
/** Método de acesso inicial ao sistema da classe
* @return boolean - loginUsuario*/
public boolean loginUsuario() {
System.out.print("=== Seja bem-vindo ao Reserva de Voos ===\n" +
"- Digite o seu nome\n");
String nomeUsuario = sc.nextLine();
System.out.println("- Digite sua senha: ");
double senhaUsuario = sc.nextDouble();
String senhaUsuarioValidação = String.valueOf(senhaUsuario);
if(nomeUsuario == null || senhaUsuarioValidação == null) {
return false;
} else {
System.out.println("Seja bem vindo " + nomeUsuario);
carregando(1000);
return true;
}
}
/* Método de exibição do menu principal */
public void menuExibir() {
System.out.println("\t === RESERVA DE VOOS ===\n" +
"\r 1) Comprar Passagem \n" +
"\r 2) Exibir Passagem \n" +
"\r 3) Sair \n");
}
/* Método de exibição do menu de aeroportos para escolha no método aeroporto() */
public void exbirMenuAeroportos() {
System.out.println("\t === AEROPORTOS ===\n" +
"\r 1) Guarulhos \n" +
"\r 2) Congonhas \n" +
"\r 3) Campinas \n");
}
/** Método de invocação do menu principal */
public void menu() {
boolean continuar = true;
/* Valor usado no laço de repetição */
do {
menuExibir();
int opcMenu = sc.nextInt();
/* Escolha de opção do menu que redireciona para uma outra ação*/
carregando(1000);
switch (opcMenu) {
case 1:
comprarPassagem();
break;
case 2:
exibirInformacoes();
break;
case 3:
System.out.println("Obrigado por comprar conosco\n");
continuar = false;
break;
default:
try {
Thread.sleep(1000);
System.out.println("Está opção não é valida\n");
} catch (InterruptedException e) {
System.out.println(e);
}
break;
}
} while (continuar);
}
/** Método de exibição das informações da reserva feita*/
public void exibirInformacoes() {
Random idReserva = new Random();
int reserva = idReserva.nextInt(9000) + 1000;
/* Número gerado aleatórimente de 4 digítos utilizado para mostrar o id da reserva que foi gerado */
/* Enquanto não houver um passageiro para um voo, ou um destino, não é exibido a reserva feito. */
if (getNomePassageiro() == null || getDestino() == null) {
System.out.println("Não existe nenhum voo reservado. tente reservar algum voo.");
} else {
System.out.println("\t === RESERVA ===\n" +
"\r ID de reserva: " + reserva + "\n" +
"\r Nome: " + getNomePassageiro() + "\n" +
"\r Destino: " + getDestino() + "\n" +
"\r Hora: " + getHora() + "\n" +
"\r Data: " + getData() + "\n");
}
}
/** Método de escolha de aeroporto
* @param opcAeroporto int - aeroporto escolhido para fazer o embarque*/
public void exibirAeroportos(int opcAeroporto) {
String escolhaAeroporto = " ";
if (opcAeroporto == 1) {
escolhaAeroporto = "Guarulhos";
carregando(1000);
aeroporto(escolhaAeroporto, "GRU");
} else if (opcAeroporto == 2) {
escolhaAeroporto = "Congonhas";
carregando(1000);
aeroporto(escolhaAeroporto, "CON");
} else if (opcAeroporto == 3) {
escolhaAeroporto = "Campinas";
carregando(1000);
aeroporto(escolhaAeroporto, "CAM");
} else {
System.out.println("Aeroporto não informado. Encerrando processo de compra.");
}
}
/** Método de criação de escolha de um destino que não tem em mente,
* juntamente com um aeroporto que deseja embarcar
* @param escolhido String - Escolha do aeroporto selecionado
* @param sigla String - Sigla do aeroporto usada no Arraylist e na exibição do destino*/
public void aeroporto(String escolhido, String sigla) {
String[] voos = { sigla + "-> Penha/SC", sigla + "-> Fortaleza", sigla + "-> RJ", sigla + "-> Gramado" };
ArrayList<String> vooReserva = new ArrayList<String>(Arrays.asList(voos));
System.out.println("Temos a seguinte opções para o aeroporto de " + escolhido);
/* Geração da lista de voos disponiveis no aeroporto escolhido pelo terminal */
for (int i = 0; i < vooReserva.size(); i++) {
System.out.println((i + 1) + ") " + vooReserva.get(i));
}
System.out.println("\nDigite o voo escolhido");
int escVoo = sc.nextInt();
if (escVoo == 1) {
setDestino(sigla + "-> Penha/SC");
carregando(500);
infoCompraPassagem();
} else if (escVoo == 2) {
setDestino(sigla + "-> Fortaleza");
carregando(500);
infoCompraPassagem();
} else if (escVoo == 3) {
setDestino(sigla + "-> RJ");
carregando(500);
infoCompraPassagem();
} else if (escVoo == 4) {
setDestino(sigla + "-> Gramado");
carregando(500);
infoCompraPassagem();
} else {
System.out.println("Destino não informado. Encerrando processo de compra.");
}
}
/** Método de compra de passagens*/
public void comprarPassagem() {
System.out.println("Comprando passagem... \n"
+ "Tem algum destino em mente? \n"
+ "1) Sim \n"
+ "2) Não \n");
int respostaCompra = sc.nextInt();
if (respostaCompra == 1) {
System.out.println("Qual o destino em mente?");
String destino = sc.next();
Random aeroportoRandom = new Random();
int aeroportoSorteado = aeroportoRandom.nextInt(3);
/* Aeroporto sorteado para o embarque do voo que está fazendo a reserva */
if (aeroportoSorteado == 1 || aeroportoSorteado == 0) {
String destinoSintaxe = ("GRU -> " + destino);
setDestino(destinoSintaxe);
infoCompraPassagem();
} else if (aeroportoSorteado == 2) {
String destinoSintaxe = ("CON -> " + destino);
setDestino(destinoSintaxe);
infoCompraPassagem();
} else if (aeroportoSorteado == 3) {
String destinoSintaxe = ("CAM -> " + destino);
setDestino(destinoSintaxe);
infoCompraPassagem();
} else {
System.out.println("Destino não informado. Encerrando processo de compra.");
}
} else if (respostaCompra == 2) {
carregando(1000);
exbirMenuAeroportos();
System.out.println("Escolha um aeroporto: ");
int opcAeroporto = sc.nextInt();
exibirAeroportos(opcAeroporto);
} else {
System.out.println("Destino não informado. Encerrando processo de compra.");
}
}
/** Método de informações da compra de passagem */
public void infoCompraPassagem() {
System.out.println("Digite o nome do passageiro: ");
String nome = sc.next();
setNomePassageiro(nome);
carregando(1500);
Random idData = new Random();
int dataRandom = idData.nextInt(12);
Random idHora = new Random();
int horaRandom = idHora.nextInt(24);
String newData = (((dataRandom + 1 < 10) ? "0" + (dataRandom + 1) : (dataRandom + 1)) + "/"
+ ((dataRandom < 10) ? "0" + (dataRandom) : (dataRandom)) + "/2024");
String newHorario = (((horaRandom + 1 < 10) ? "0" + (horaRandom + 1) : (horaRandom + 1)) + ":"
+ ((horaRandom < 10) ? "0" + horaRandom : horaRandom));
System.out.println("A data de sua viagem é " + newData + " às " + newHorario);
setData(newData);
setHora(newHorario);
carregando(1500);
exibirInformacoes();
carregando(1500);
}
// Get & Sets
public String getNomePassageiro() {
return nomePassageiro;
}
public void setNomePassageiro(String nomePassageiro) {
this.nomePassageiro = nomePassageiro;
}
public String getDestino() {
return destino;
}
public void setDestino(String destino) {
this.destino = destino;
}
public String getHora() {
return hora;
}
public void setHora(String hora) {
this.hora = hora;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}