Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2bdaf6b

Browse files
committed
Adding Actividad32_Ampliación
1 parentbfe33d0 commit2bdaf6b

File tree

5 files changed

+212
-0
lines changed

5 files changed

+212
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
packageunit11.Actividad32_Ampliacion;
2+
3+
importFunctions.GetData;
4+
5+
importjava.io.*;
6+
importjava.time.LocalDateTime;
7+
importjava.util.ArrayList;
8+
9+
/*
10+
Con la clase Llamada de la Actividad 31 del Tema 9 crea un registro de las llamadas efectuada en una centralita,
11+
que se guardarán en el archivo binario centralita.dat. Al arrancar la aplicación se leerán los datos del archivo
12+
y a continuación se mostrará el menú:
13+
1. Nuevo registro de Llamada
14+
2. Listar las llamadas de un número de teléfono
15+
3. Listas todas las llamadas
16+
4. Salir
17+
18+
En el apartado 1 las fechas y horas se introducirán como cadenas en formato dd/MM/yyyy y hh:mm respectivamente.
19+
En los apartados 2 y 3 mostrará el número de teléfono del titular el del interlocutor, la fecha y hora de inicio
20+
y la duración en minutos de cada llamada. Los registros se insertarán en una tabla por su orden natural.
21+
Al terminar la aplicación se guardarán la tabla actualizada en el mismo archivo.
22+
*/
23+
publicclassActividad32 {
24+
privatestaticfinalStringFICHERO ="src/unit11/Actividad32_Ampliacion/centralita.dat";
25+
privatestaticArrayList<Llamada>llamadas =newArrayList<>();
26+
publicstaticvoidmain(String[]args) {
27+
cargarLlamadas();
28+
29+
booleanexit =false;
30+
intoption =0;
31+
32+
while (!exit) {
33+
menu();
34+
option =GetData.getInt("Introduce una opción: ",1,4);
35+
switch (option) {
36+
case1 ->llamadas.add(getLlamada());
37+
case2 -> {
38+
Stringnumero =GetData.getString("Introduce el número de teléfono: ");
39+
mostrarLlamadasDeNumero(numero);
40+
}
41+
case3 ->llamadas.forEach(System.out::println);
42+
case4 -> {
43+
exit =true;
44+
guardarLlamadas();
45+
}
46+
default ->System.out.println("Opción no válida");
47+
}
48+
}
49+
}
50+
51+
privatestaticLlamadagetLlamada() {
52+
Stringnumero =GetData.getString("Introduce el número de teléfono: ");
53+
StringnumeroInterlocutor =GetData.getString("Introduce el número de teléfono del interlocutor: ");
54+
booleanesSaliente =GetData.getBoolean("¿Es saliente? (si/no): ");
55+
LocalDateTimefechaInicio =GetData.getDateTime("Introduce la fecha de la llamada: ");
56+
LocalDateTimefechaFin =GetData.getDateTime("Introduce la fecha de la llamada: ");
57+
ZonaTarifazonaTarifa =getZonaTarifa();
58+
59+
returnnewLlamada(numero,numeroInterlocutor,esSaliente,fechaInicio,fechaFin,zonaTarifa);
60+
}
61+
62+
privatestaticZonaTarifagetZonaTarifa() {
63+
for (ZonaTarifazonaTarifa :ZonaTarifa.values()) {
64+
System.out.println(zonaTarifa.ordinal() +". " +zonaTarifa);
65+
}
66+
returnZonaTarifa.values()[GetData.getInt("Introduce la zona tarifa: ",0,ZonaTarifa.values().length -1)];
67+
}
68+
69+
privatestaticvoidmostrarLlamadasDeNumero(Stringnumero) {
70+
ArrayList<Llamada>llamadasRealizadas =newArrayList<>();
71+
for (Llamadallamada :llamadas) {
72+
if (llamada.getNumeroTelefonoCliente().equals(numero)) {
73+
llamadasRealizadas.add(llamada);
74+
}
75+
}
76+
77+
if (llamadasRealizadas.isEmpty()) {
78+
System.out.println("No hay llamadas realizadas");
79+
}else {
80+
llamadasRealizadas.forEach(System.out::println);
81+
}
82+
}
83+
84+
privatestaticvoidmenu() {
85+
System.out.println("""
86+
1. Nuevo registro de Llamada
87+
2. Listar las llamadas de un número de teléfono
88+
3. Listas todas las llamadas
89+
4. Salir""");
90+
}
91+
92+
privatestaticvoidcargarLlamadas() {
93+
if (newFile(FICHERO).exists()) {
94+
try (ObjectInputStreamois =newObjectInputStream(newFileInputStream(FICHERO))) {
95+
llamadas = (ArrayList<Llamada>)ois.readObject();
96+
}catch (IOException |ClassNotFoundExceptione) {
97+
System.out.println("Error al cargar las llamadas");
98+
}
99+
}
100+
}
101+
102+
privatestaticvoidguardarLlamadas() {
103+
try (ObjectOutputStreamois =newObjectOutputStream(newFileOutputStream(FICHERO))) {
104+
ois.writeObject(llamadas);
105+
}catch (IOExceptione) {
106+
System.out.println("Error al guardar las llamadas");
107+
}
108+
}
109+
}
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
packageunit11.Actividad32_Ampliacion;
2+
3+
importjava.io.Serializable;
4+
importjava.time.LocalDateTime;
5+
6+
publicclassLlamadaimplementsComparable<Llamada>,Serializable {
7+
privateStringnumeroTelefonoCliente;
8+
privateStringnumeroInterlocutor;
9+
privatebooleanesSaliente;
10+
privateLocalDateTimefechaHoraInicio;
11+
privateLocalDateTimefechaHoraFin;
12+
privateZonaTarifazonaInterlocutor;
13+
privateintduracionLlamada;
14+
privatedoublecosteLlamada;
15+
16+
publicLlamada(StringnumeroTelefonoCliente,StringnumeroInterlocutor,booleanesSaliente,LocalDateTimefechaHoraInicio,LocalDateTimefechaHoraFin,ZonaTarifazonaInterlocutor) {
17+
if (numeroTelefonoCliente ==null ||numeroInterlocutor ==null ||fechaHoraInicio ==null ||fechaHoraFin ==null ||zonaInterlocutor ==null) {
18+
thrownewIllegalArgumentException("Error: ninguno de los parámetros puede ser nulo");
19+
}
20+
if (numeroTelefonoCliente.isEmpty() ||numeroInterlocutor.isEmpty()) {
21+
thrownewIllegalArgumentException("Error: ninguno de los parámetros puede ser una cadena vacía");
22+
}
23+
if (fechaHoraInicio.isAfter(fechaHoraFin)) {
24+
thrownewIllegalArgumentException("Error: la fecha y hora de inicio no puede ser posterior a la fecha y hora de fin");
25+
}
26+
27+
this.numeroTelefonoCliente =numeroTelefonoCliente;
28+
this.numeroInterlocutor =numeroInterlocutor;
29+
this.esSaliente =esSaliente;
30+
this.fechaHoraInicio =fechaHoraInicio;
31+
this.fechaHoraFin =fechaHoraFin;
32+
this.zonaInterlocutor =zonaInterlocutor;
33+
this.duracionLlamada = (int)fechaHoraInicio.until(fechaHoraFin,java.time.temporal.ChronoUnit.MINUTES);
34+
this.costeLlamada =zonaInterlocutor.getCoste() *duracionLlamada;
35+
}
36+
37+
38+
39+
publicintgetDuracionLlamada() {
40+
returnduracionLlamada;
41+
}
42+
43+
publicdoublegetCosteLlamada() {
44+
returncosteLlamada;
45+
}
46+
47+
publicbooleanisEsSaliente() {
48+
returnesSaliente;
49+
}
50+
51+
publicStringgetNumeroTelefonoCliente() {
52+
returnnumeroTelefonoCliente;
53+
}
54+
55+
@Override
56+
publicintcompareTo(Llamadao) {
57+
intresultado =this.numeroTelefonoCliente.compareTo(o.numeroTelefonoCliente);
58+
if (resultado ==0) {
59+
resultado =this.fechaHoraInicio.compareTo(o.fechaHoraInicio);
60+
}
61+
returnresultado;
62+
}
63+
64+
@Override
65+
publicStringtoString() {
66+
return"Numero de teléfono del cliente: " +numeroTelefonoCliente +"\n"
67+
+"Numero del interlocutor: " +numeroInterlocutor +"\n"
68+
+"Fecha y hora de inicio: " +fechaHoraInicio +"\n"
69+
+"Fecha y hora de fin: " +fechaHoraFin +"\n"
70+
+"Duración de la llamada: " +duracionLlamada +" minutos\n"
71+
+"Coste de la llamada: " +costeLlamada +" euros\n";
72+
}
73+
}
74+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
packageunit11.Actividad32_Ampliacion;
2+
3+
publicclassOrdenarLlamadaPorCosteimplementsjava.util.Comparator<Llamada>{
4+
@Override
5+
publicintcompare(Llamadao1,Llamadao2) {
6+
returnDouble.compare(o1.getCosteLlamada(),o2.getCosteLlamada());
7+
}
8+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
packageunit11.Actividad32_Ampliacion;
2+
3+
importjava.io.Serializable;
4+
5+
publicenumZonaTarifaimplementsSerializable {
6+
ZONA_A(0.10),
7+
ZONA_B(0.15),
8+
ZONA_C(0.20),
9+
ZONA_D(0.25),
10+
ZONA_E(0.30);
11+
12+
privatefinaldoublecosto;
13+
14+
ZonaTarifa(doublecosto) {
15+
this.costo =costo;
16+
}
17+
18+
publicdoublegetCoste() {
19+
returncosto;
20+
}
21+
}
537 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp