|
| 1 | +package Principal; |
| 2 | + |
| 3 | +import java.io.BufferedReader; |
| 4 | +import java.io.BufferedWriter; |
| 5 | +import java.io.FileReader; |
| 6 | +import java.io.FileWriter; |
| 7 | +import java.io.IOException; |
| 8 | +import java.util.ArrayList; |
| 9 | +import java.util.Scanner; |
| 10 | + |
| 11 | +import javax.swing.JOptionPane; |
| 12 | + |
| 13 | +/** |
| 14 | + * Comentarios de documentación |
| 15 | + * Título del programa |
| 16 | + * |
| 17 | + * @autor: Grupo 1 |
| 18 | + * @version 1.0 |
| 19 | + */ |
| 20 | + |
| 21 | +public class Main { |
| 22 | + // zona para variables globales, constantes, metodos |
| 23 | + //VARIABLES |
| 24 | + private static final String FILE_PATH = "alumnos.txt"; |
| 25 | + |
| 26 | + // MÉTODOS |
| 27 | + //método para escribir los datos ingresados por teclado en un arryList |
| 28 | + private static ArrayList<Alumno> cargarDatosScanner() { |
| 29 | + ArrayList<Alumno> listaDeAlumnos; |
| 30 | + return (null); |
| 31 | + //return listaDeAlumnos(); |
| 32 | + } |
| 33 | + |
| 34 | + //método para escribir en un archivo de texto |
| 35 | + public static void altaAlumno(String nombre, String apellido, int dni, String email, int comision) { |
| 36 | + try (BufferedWriter buffer = new BufferedWriter(new FileWriter(FILE_PATH, true))) { |
| 37 | + buffer.write(nombre + ", " + apellido + ", " + dni + ", "+email+", "+comision); |
| 38 | + buffer.newLine(); |
| 39 | + } catch (IOException e) { |
| 40 | + System.out.println("No se pudo grabar en el archivo" + e.getMessage()); |
| 41 | + } |
| 42 | + } |
| 43 | + |
| 44 | + public static void main(String[] args) throws Exception { |
| 45 | + // código principal |
| 46 | + // declaración de variables |
| 47 | + Scanner teclado = new Scanner(System.in); |
| 48 | + String nombre="", apellido="", email=""; |
| 49 | + int menu = 0, dni=0, comision=0; |
| 50 | + ArrayList<Alumno> listaDeAlumnos= new ArrayList<Alumno>(); |
| 51 | + //listaDeAlumnos = cargarDatosScanner(); |
| 52 | + |
| 53 | + // menu principal de opciones |
| 54 | + while (menu != 6) { |
| 55 | + menu = Integer.parseInt(JOptionPane.showInputDialog(" MENU PRINCIPAL " + "\n" + |
| 56 | + "1.- Ingresar Alumno" + "\n" + |
| 57 | + "2.- Listar Alumno " + "\n" + |
| 58 | + "3.- Quitar Alumno " + "\n" + |
| 59 | + "4.- Modificar Alumnos " + "\n" + |
| 60 | + "5.- Buscar Alumnos " + "\n" + |
| 61 | + "6.- Salir")); |
| 62 | + |
| 63 | + switch (menu) { |
| 64 | + case 1: |
| 65 | + // Sub menu ingresar alumno |
| 66 | + System.out.println("Gestion ingreso de alumno - en desarrollo"); |
| 67 | + //cargar appellidos y nombres |
| 68 | + nombre = JOptionPane.showInputDialog("Ingrese el nombre del alumno"); |
| 69 | + apellido = JOptionPane.showInputDialog("Ingrese el apellido del alumno"); |
| 70 | + |
| 71 | + //cargar y validar DNI |
| 72 | + // en este caso try + catch se usa para evitar que el programa se rompa si no se ingresan números |
| 73 | + try{ |
| 74 | + dni = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el DNI del alumno")); |
| 75 | + |
| 76 | + // Validacion del dni (número de 8 dígitos) |
| 77 | + DniValidator verificadorDni = new DniValidator(); |
| 78 | + int digitosCuenta = 8; |
| 79 | + if (verificadorDni.validacionDni(dni, digitosCuenta)) { |
| 80 | + System.out.println("El DNI tiene la cantidad correcta de dígitos."); |
| 81 | + } else { |
| 82 | + System.out.println("El DNI no tiene la cantidad correcta de dígitos."); |
| 83 | + JOptionPane.showMessageDialog(null, "El DNI no es válido (Número de 8 dígitos)", "Error en la carga", JOptionPane.ERROR_MESSAGE); |
| 84 | + dni=Integer.parseInt(JOptionPane.showInputDialog("Ingrese nuevamente el DNI")); |
| 85 | + } |
| 86 | + }catch(NumberFormatException e){ |
| 87 | + JOptionPane.showMessageDialog(null, "El DNI no es válido. Debe ingresar número de 8 dígitos", "Error en la carga", JOptionPane.ERROR_MESSAGE); |
| 88 | + dni=Integer.parseInt(JOptionPane.showInputDialog("Ingrese nuevamente el DNI")); |
| 89 | + //aquí hay un problema... si el ingreso del dni es por esta línea... no se realiza la verificación del formato de 8 dígitos... |
| 90 | + } |
| 91 | + |
| 92 | + //cargar y verificar email |
| 93 | + email = JOptionPane.showInputDialog("Ingrese el correo electrónico del alumno"); |
| 94 | + |
| 95 | + // validación del email (formato de mail valido, texto alfanum, arroba, texto alfanum, punto, tres letras) |
| 96 | + EmailValidator validator = new EmailValidator(); |
| 97 | + if (validator.validateEmail(email)) { |
| 98 | + System.out.println("La dirección de correo electrónico es válida."); |
| 99 | + } else { |
| 100 | + System.out.println("La dirección de correo electrónico no es válida."); |
| 101 | + JOptionPane.showMessageDialog(null, "El correo electrónico no es válido", "Error en la carga", JOptionPane.ERROR_MESSAGE); |
| 102 | + email = JOptionPane.showInputDialog("Ingrese nuevamente el correo electrónico del alumno"); |
| 103 | + } |
| 104 | + |
| 105 | + //cargar y validar comisión |
| 106 | + // en este caso try + catch se usa para evitar que el programa se rompa si no se ingresan números |
| 107 | + try{ |
| 108 | + comision = Integer.parseInt(JOptionPane.showInputDialog("Ingrese la comision")); |
| 109 | + |
| 110 | + // Validacion de la comision (número de 5 dígitos) |
| 111 | + ComisionValidator verificadorCom = new ComisionValidator(); |
| 112 | + int digitosCuentaC = 5; |
| 113 | + |
| 114 | + if (verificadorCom.validacionComision(comision, digitosCuentaC)) { |
| 115 | + System.out.println("La Comisión es correcta."); |
| 116 | + } else { |
| 117 | + System.out.println("La Comisión ingresada NO es correcta."); |
| 118 | + JOptionPane.showMessageDialog(null, "La comisión ingresada es inálida (Número de 5 dígitos)", "Error en la carga", JOptionPane.ERROR_MESSAGE); |
| 119 | + comision = Integer.parseInt(JOptionPane.showInputDialog("Ingrese nuevamente la comision")); |
| 120 | + } |
| 121 | + }catch(NumberFormatException e){ |
| 122 | + JOptionPane.showMessageDialog(null, "La comisión ingresada es inválida Ingrese un número de 5 dígitos)", "Error en la carga", JOptionPane.ERROR_MESSAGE); |
| 123 | + comision=Integer.parseInt(JOptionPane.showInputDialog("Ingrese nuevamente la comisión")); |
| 124 | + //aquí hay un problema... si el ingreso de la comision es por esta línea... no se realiza la verificación del formato de 5 dígitos... |
| 125 | + } |
| 126 | + |
| 127 | + //se escriben los datos ingresados en el arryList |
| 128 | + listaDeAlumnos.add(new Alumno(nombre, apellido, dni, email, comision)); |
| 129 | + System.out.println(listaDeAlumnos); |
| 130 | + |
| 131 | + //se vuelcan los datos ingresados en el archivo de texto |
| 132 | + altaAlumno(nombre, apellido, dni, email, comision); |
| 133 | + |
| 134 | + break; |
| 135 | + case 2: |
| 136 | + // Sub menu listar alumno |
| 137 | + System.out.println("Gestion listado de alumno - en desarrollo"); |
| 138 | + |
| 139 | + // Leer el archivo de texto y almacenar los datos en una estructura de datos |
| 140 | + ArrayList<String> lineas = new ArrayList<>(); |
| 141 | + |
| 142 | + try { |
| 143 | + BufferedReader br = new BufferedReader(new FileReader("alumnos.txt")); |
| 144 | + String linea; |
| 145 | + |
| 146 | + while ((linea = br.readLine()) != null) { |
| 147 | + lineas.add(linea+"\n"); |
| 148 | + } |
| 149 | + |
| 150 | + br.close(); |
| 151 | + } catch (IOException e) { |
| 152 | + e.printStackTrace(); |
| 153 | + return; |
| 154 | + } |
| 155 | + |
| 156 | + System.out.println(lineas); |
| 157 | + |
| 158 | + //mostrar el listado en una ventana emergente |
| 159 | + // Crear una cadena con el contenido del ArrayList |
| 160 | + StringBuilder contenido = new StringBuilder(); |
| 161 | + for (String elemento : lineas) { |
| 162 | + contenido.append(elemento).append("\n"); |
| 163 | + } |
| 164 | + |
| 165 | + // Mostrar el contenido en una ventana emergente |
| 166 | + JOptionPane.showMessageDialog(null, contenido.toString(), "Listado de alumnos cargados", JOptionPane.INFORMATION_MESSAGE); |
| 167 | + |
| 168 | + |
| 169 | + break; |
| 170 | + case 3: |
| 171 | + // Sub menu quitar alumno |
| 172 | + System.out.println("Gestion quitar de alumno - en desarrollo"); |
| 173 | + |
| 174 | + //definición de un arrayList |
| 175 | + ArrayList<String> lineas2 = new ArrayList<>(); |
| 176 | + |
| 177 | + // Leer el archivo de texto y almacenar los datos en una estructura de datos dentro del arryList creado lineas2 |
| 178 | + try { |
| 179 | + BufferedReader br2 = new BufferedReader(new FileReader("alumnos.txt")); |
| 180 | + String linea2; |
| 181 | + |
| 182 | + while ((linea2 = br2.readLine()) != null) { |
| 183 | + lineas2.add(linea2+"\n"); |
| 184 | + } |
| 185 | + |
| 186 | + br2.close(); |
| 187 | + } catch (IOException e) { |
| 188 | + e.printStackTrace(); |
| 189 | + return; |
| 190 | + } |
| 191 | + |
| 192 | + System.out.println(lineas2); |
| 193 | + |
| 194 | + //mostrar el listado en una ventana emergente |
| 195 | + // Crear una cadena con el contenido del ArrayList |
| 196 | + StringBuilder contenido2 = new StringBuilder(); |
| 197 | + for (String elemento2 : lineas2) { |
| 198 | + contenido2.append(elemento2).append("\n"); |
| 199 | + } |
| 200 | + |
| 201 | + //Ventana emergente que muestra los registros actuales del archivo de texto |
| 202 | + JOptionPane.showMessageDialog(null, "Para eliminar un registro, fíjese el número de línea que ocupa"+"\n"+contenido2.toString(), "Listado de alumnos cargados", JOptionPane.INFORMATION_MESSAGE); |
| 203 | + |
| 204 | + //indicar el número de línea a eliminar |
| 205 | + int lineaE; |
| 206 | + lineaE = Integer.parseInt(JOptionPane.showInputDialog("Ingrese el número de registro (línea) a eliminar")); |
| 207 | + |
| 208 | + // Verificar si el número de línea a eliminar es válido |
| 209 | + if (lineaE >= 0 && lineaE < lineas2.size()) { |
| 210 | + // Eliminar la línea de la estructura de datos |
| 211 | + lineas2.remove(lineaE); |
| 212 | + |
| 213 | + // Escribir las líneas restantes de vuelta al archivo de texto |
| 214 | + try { |
| 215 | + BufferedWriter bw2 = new BufferedWriter(new FileWriter("alumnos.txt")); |
| 216 | + |
| 217 | + for (String linea : lineas2) { |
| 218 | + bw2.write(linea); |
| 219 | + //bw2.newLine(); |
| 220 | + } |
| 221 | + |
| 222 | + bw2.close(); |
| 223 | + |
| 224 | + System.out.println("La línea ha sido eliminada del archivo."); |
| 225 | + JOptionPane.showMessageDialog(null, "La l\u00EDnea ha sido eliminada del archivo.", "Acción realizada", JOptionPane.ERROR_MESSAGE); |
| 226 | + } catch (IOException e) { |
| 227 | + e.printStackTrace(); |
| 228 | + } |
| 229 | + } else { |
| 230 | + System.out.println("El número de línea a eliminar es inválido."); |
| 231 | + JOptionPane.showMessageDialog(null, "El número de registro a eliminar es inválido", "Error en la carga", JOptionPane.ERROR_MESSAGE); |
| 232 | + } |
| 233 | + |
| 234 | + case 4: |
| 235 | + // Sub menu modificar alumno |
| 236 | + System.out.println("Gestion modificación de alumnos - por desarrollar"); |
| 237 | + System.out.println(listaDeAlumnos); |
| 238 | + break; |
| 239 | + case 5: |
| 240 | + // Sub menu buscar alumno |
| 241 | + System.out.println("Gestion búsqueda de alumno - por desarrollar"); |
| 242 | + break; |
| 243 | + case 6: |
| 244 | + // Sub menú salida |
| 245 | + System.out.println("Gestion salida del menu principal- por desarrollar"); |
| 246 | + break; |
| 247 | + default: |
| 248 | + System.out.println("Opción inválida."); |
| 249 | + |
| 250 | + } |
| 251 | + } |
| 252 | + |
| 253 | + // validación del email (formato de mail valido, texto alfanum, arroba, texto alfanum, punto, tres letras) |
| 254 | + EmailValidator validator = new EmailValidator(); |
| 255 | + //email = "aaa@example.com"; |
| 256 | + if (validator.validateEmail(email)) { |
| 257 | + System.out.println("La dirección de correo electrónico es válida."); |
| 258 | + } else { |
| 259 | + System.out.println("La dirección de correo electrónico no es válida."); |
| 260 | + } |
| 261 | + |
| 262 | + // Validacion del dni (número de 8 dígitos) |
| 263 | + DniValidator verificadorDni = new DniValidator(); |
| 264 | + //dni = 12345678; |
| 265 | + int digitosCuenta = 8; |
| 266 | + |
| 267 | + if (verificadorDni.validacionDni(dni, digitosCuenta)) { |
| 268 | + System.out.println("El DNI tiene la cantidad correcta de dígitos."); |
| 269 | + } else { |
| 270 | + System.out.println("El DNI no tiene la cantidad correcta de dígitos."); |
| 271 | + } |
| 272 | + |
| 273 | + // Validacion de la comision (número de 5 dígitos) |
| 274 | + ComisionValidator verificadorCom = new ComisionValidator(); |
| 275 | + //comision = 12345; |
| 276 | + int digitosCuentaC = 5; |
| 277 | + |
| 278 | + if (verificadorCom.validacionComision(comision, digitosCuentaC)) { |
| 279 | + System.out.println("La Comisión es correcta."); |
| 280 | + } else { |
| 281 | + System.out.println("La Comisión ingresada NO es correcta."); |
| 282 | + } |
| 283 | + |
| 284 | + } |
| 285 | + |
| 286 | + // nada aquí debajo |
| 287 | +} |
0 commit comments