Advertisement
Re_21

archivodirecto

May 31st, 2023
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.29 KB | None | 0 0
  1. package com.mycompany.proyecto_final;
  2.  
  3. import java.io.IOException;
  4. import java.io.RandomAccessFile;
  5.  
  6. //manejo de archivos & metodos de parqueo
  7. public class ArchivoDirecto {
  8.  
  9. //instanciar o abrir el archivo
  10.     public void abrirArchivo() throws IOException {
  11.         RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
  12.     }
  13. //cerrar el archivo
  14.  
  15.     public void cerrarArchivo() throws IOException {
  16.         RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
  17.  
  18.         if (archivo != null) {
  19.             archivo.close();
  20.         }
  21.     }
  22. //escribe y rellena
  23. /*pasos
  24.     1. escribir la cadena ->
  25.     - ingresa los datos si no hay rellena
  26.     2. escribir el registro ->
  27.     - instancia la clase con el contenido, y la dimension
  28.     3. ingresar el registro -
  29.     -
  30.      */
  31.     //recibe una cadena y la longitud en bytes
  32.     public static void escribirCadena(String cadena, int longitud) throws IOException {
  33.         RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
  34.         //crea una instancia de stringbuffer llamada buffer
  35.         StringBuffer buffer;
  36.         //si la cadena no es vacia escriba la cadena
  37.         if (cadena != null) {
  38.             buffer = new StringBuffer(cadena);
  39.         } else {
  40.             //si no llenala con caracteres vacios
  41.             buffer = new StringBuffer(30);
  42.         }
  43.         //colocar el tamanio de la cadena
  44.         buffer.setLength(longitud);
  45.         //escribir la cadena em el archivo
  46.         archivo.writeChars(buffer.toString());
  47.     }
  48.  
  49.     //funcion que recibe parametro un objeto
  50.     public static void escribirRegistro(RegistroAsignacionParqueos parqueo) throws IOException {
  51.         //pedir un numeor que no se repita
  52.         escribirCadena(parqueo.getnParqueo(), 3);
  53.         escribirCadena(parqueo.getnPlaca(), 7);
  54.         escribirCadena(parqueo.getNitCliente(), 10);
  55.         escribirCadena(parqueo.getfRegistroParqueo(), 10);
  56.     }
  57.  
  58. //ingresar el regisitro
  59. //formato para escribir, si no se llena, llena con nullo -> \0
  60.     public static void ingresarRegistro(RegistroAsignacionParqueos parqueo) throws IOException {
  61.         RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
  62.         if (Integer.parseInt(parqueo.getnParqueo()) >= 1 && Integer.parseInt(parqueo.getnParqueo()) <= parqueo.getNUM_REGISTROS()) {
  63.             archivo.seek((Integer.parseInt(parqueo.getnParqueo()) - 1) * parqueo.getTAMANIO_REGISTRO());
  64.             escribirRegistro(parqueo);
  65.         } else {
  66.             System.out.println("El número de parqueo no es válido.");
  67.         }
  68.     }
  69.  
  70.     //leer el archivo, solo lee no muestra
  71.     public static String leerCadena(RandomAccessFile archivo, int longitud) throws IOException {
  72.         //crear un arreglo de caracteres con la longitud de la cadena para almacenar caracteres
  73.         char[] arreglo = new char[longitud];
  74.         //leer la cadena
  75.         for (int i = 0; i < longitud; i++) {
  76.             //cada caracter leido se guarda en la posicion del arreglo
  77.             arreglo[i] = archivo.readChar();
  78.         }
  79.         //retorna una instancia se string con el arreglo formado eliminando espacios vacios
  80.         return new String(arreglo).replace('\0', ' ').trim();
  81.     }
  82.  
  83. //modificaciones de Parqueo -> modificarRegistro
  84. //formato para mostrar
  85. //solo muestra
  86. //consultas de parquuueos
  87.     //consultar parqueos disponibles
  88.     public static void consultarParqueosDisponibles() throws IOException {
  89.         RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
  90.         for (int i = 1; i <= 155; i++) {
  91.             //establece la posicion | puntero de donde se desea leer
  92.             archivo.seek((i - 1) * 30);
  93.             String nParqueo = leerCadena(archivo, 3);
  94.             //si esta vacio
  95.             if (nParqueo.trim().isEmpty()) {
  96.                 System.out.println("Número de parqueo disponible: " + i);
  97.             }
  98.         }
  99.     }
  100. //consultar parqueos asignados
  101.  
  102.     public static void consultarParqueosAsignados() throws IOException {
  103.         RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
  104.         for (int i = 1; i <= 155; i++) {
  105.             archivo.seek((i - 1) * 30);
  106.             String nParqueo = leerCadena(archivo, 3);
  107.             //verifica si ya esta asignado o no esta vacio
  108.             if (!nParqueo.trim().isEmpty()) {
  109.                 System.out.println("----------------------");
  110.                 System.out.println("Número de parqueo: " + nParqueo);
  111.                 System.out.println("Número de placa: " + leerCadena(archivo, 7));
  112.                 System.out.println("NIT del cliente: " + leerCadena(archivo, 10));
  113.                 System.out.println("Fecha de registro: " + leerCadena(archivo, 10));
  114.                 System.out.println("----------------------");
  115.             }
  116.         }
  117.     }
  118.     //consultar parqueo especifico
  119.  
  120.     public static void consultarParqueoEspecifico(int numeroParqueo) throws IOException {
  121.         RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
  122.  
  123.         if (numeroParqueo >= 1 && numeroParqueo <= 155) {
  124.             archivo.seek((numeroParqueo - 1) * 30);
  125.             String nParqueo = leerCadena(archivo, 3);
  126.  
  127.             if (!nParqueo.trim().isEmpty()) {
  128.                 System.out.println("Número de parqueo: " + nParqueo);
  129.                 System.out.println("Número de placa: " + leerCadena(archivo, 7));
  130.                 System.out.println("NIT del cliente: " + leerCadena(archivo, 10));
  131.                 System.out.println("Fecha de registro: " + leerCadena(archivo, 10));
  132.             } else {
  133.                 System.out.println("El parqueo especificado está disponible.");
  134.             }
  135.         } else {
  136.             System.out.println("El número de parqueo especificado no es válido.");
  137.         }
  138.     }
  139.  
  140. //formato para modificar la cadena
  141.     public static void escribirCadenaModificada(RandomAccessFile archivo, String cadena, int longitud) throws IOException {
  142.         StringBuffer buffer;
  143.         if (cadena != null) {
  144.             buffer = new StringBuffer(cadena);
  145.         } else {
  146.             //rellena con caracteres vacios
  147.             buffer = new StringBuffer(longitud);
  148.         }
  149.         buffer.setLength(longitud);
  150.         archivo.writeChars(buffer.toString());
  151.     }
  152.  
  153. //modificar parqueo
  154.     public static void modificarParqueo(int numeroParqueo, String nuevaPlaca, String nuevoNIT, String nuevaFechaRegistro) throws IOException {
  155.         RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
  156.         //declaramos una posicion
  157.         int posicion = (numeroParqueo - 1) * 30;
  158.  
  159.         if (numeroParqueo >= 1 && numeroParqueo <= 155) {
  160.             archivo.seek(posicion);
  161.             escribirCadenaModificada(archivo, nuevaPlaca, 7);
  162.             escribirCadenaModificada(archivo, nuevoNIT, 10);
  163.             escribirCadenaModificada(archivo, nuevaFechaRegistro, 10);
  164.         } else {
  165.             throw new IllegalArgumentException("El número de parqueo especificado no es válido.");
  166.         }
  167.  
  168.         archivo.close();
  169.     }
  170. //usando numero del parqueo formato [999]
  171.     //sustituir datos existentes cono los nuevos estos son: cliente y vehiculo
  172.     //cuando el parqueo quede libre debera de ingresarse cadenas vacias para numero de placa, NIT y fecha de registro-> estado?
  173. }
  174.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement