Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mycompany.proyecto_final;
- import java.io.IOException;
- import java.io.RandomAccessFile;
- //manejo de archivos & metodos de parqueo
- public class ArchivoDirecto {
- //instanciar o abrir el archivo
- public void abrirArchivo() throws IOException {
- RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
- }
- //cerrar el archivo
- public void cerrarArchivo() throws IOException {
- RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
- if (archivo != null) {
- archivo.close();
- }
- }
- //escribe y rellena
- /*pasos
- 1. escribir la cadena ->
- - ingresa los datos si no hay rellena
- 2. escribir el registro ->
- - instancia la clase con el contenido, y la dimension
- 3. ingresar el registro -
- -
- */
- //recibe una cadena y la longitud en bytes
- public static void escribirCadena(String cadena, int longitud) throws IOException {
- RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
- //crea una instancia de stringbuffer llamada buffer
- StringBuffer buffer;
- //si la cadena no es vacia escriba la cadena
- if (cadena != null) {
- buffer = new StringBuffer(cadena);
- } else {
- //si no llenala con caracteres vacios
- buffer = new StringBuffer(30);
- }
- //colocar el tamanio de la cadena
- buffer.setLength(longitud);
- //escribir la cadena em el archivo
- archivo.writeChars(buffer.toString());
- }
- //funcion que recibe parametro un objeto
- public static void escribirRegistro(RegistroAsignacionParqueos parqueo) throws IOException {
- //pedir un numeor que no se repita
- escribirCadena(parqueo.getnParqueo(), 3);
- escribirCadena(parqueo.getnPlaca(), 7);
- escribirCadena(parqueo.getNitCliente(), 10);
- escribirCadena(parqueo.getfRegistroParqueo(), 10);
- }
- //ingresar el regisitro
- //formato para escribir, si no se llena, llena con nullo -> \0
- public static void ingresarRegistro(RegistroAsignacionParqueos parqueo) throws IOException {
- RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
- if (Integer.parseInt(parqueo.getnParqueo()) >= 1 && Integer.parseInt(parqueo.getnParqueo()) <= parqueo.getNUM_REGISTROS()) {
- archivo.seek((Integer.parseInt(parqueo.getnParqueo()) - 1) * parqueo.getTAMANIO_REGISTRO());
- escribirRegistro(parqueo);
- } else {
- System.out.println("El número de parqueo no es válido.");
- }
- }
- //leer el archivo, solo lee no muestra
- public static String leerCadena(RandomAccessFile archivo, int longitud) throws IOException {
- //crear un arreglo de caracteres con la longitud de la cadena para almacenar caracteres
- char[] arreglo = new char[longitud];
- //leer la cadena
- for (int i = 0; i < longitud; i++) {
- //cada caracter leido se guarda en la posicion del arreglo
- arreglo[i] = archivo.readChar();
- }
- //retorna una instancia se string con el arreglo formado eliminando espacios vacios
- return new String(arreglo).replace('\0', ' ').trim();
- }
- //modificaciones de Parqueo -> modificarRegistro
- //formato para mostrar
- //solo muestra
- //consultas de parquuueos
- //consultar parqueos disponibles
- public static void consultarParqueosDisponibles() throws IOException {
- RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
- for (int i = 1; i <= 155; i++) {
- //establece la posicion | puntero de donde se desea leer
- archivo.seek((i - 1) * 30);
- String nParqueo = leerCadena(archivo, 3);
- //si esta vacio
- if (nParqueo.trim().isEmpty()) {
- System.out.println("Número de parqueo disponible: " + i);
- }
- }
- }
- //consultar parqueos asignados
- public static void consultarParqueosAsignados() throws IOException {
- RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
- for (int i = 1; i <= 155; i++) {
- archivo.seek((i - 1) * 30);
- String nParqueo = leerCadena(archivo, 3);
- //verifica si ya esta asignado o no esta vacio
- if (!nParqueo.trim().isEmpty()) {
- System.out.println("----------------------");
- System.out.println("Número de parqueo: " + nParqueo);
- System.out.println("Número de placa: " + leerCadena(archivo, 7));
- System.out.println("NIT del cliente: " + leerCadena(archivo, 10));
- System.out.println("Fecha de registro: " + leerCadena(archivo, 10));
- System.out.println("----------------------");
- }
- }
- }
- //consultar parqueo especifico
- public static void consultarParqueoEspecifico(int numeroParqueo) throws IOException {
- RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
- if (numeroParqueo >= 1 && numeroParqueo <= 155) {
- archivo.seek((numeroParqueo - 1) * 30);
- String nParqueo = leerCadena(archivo, 3);
- if (!nParqueo.trim().isEmpty()) {
- System.out.println("Número de parqueo: " + nParqueo);
- System.out.println("Número de placa: " + leerCadena(archivo, 7));
- System.out.println("NIT del cliente: " + leerCadena(archivo, 10));
- System.out.println("Fecha de registro: " + leerCadena(archivo, 10));
- } else {
- System.out.println("El parqueo especificado está disponible.");
- }
- } else {
- System.out.println("El número de parqueo especificado no es válido.");
- }
- }
- //formato para modificar la cadena
- public static void escribirCadenaModificada(RandomAccessFile archivo, String cadena, int longitud) throws IOException {
- StringBuffer buffer;
- if (cadena != null) {
- buffer = new StringBuffer(cadena);
- } else {
- //rellena con caracteres vacios
- buffer = new StringBuffer(longitud);
- }
- buffer.setLength(longitud);
- archivo.writeChars(buffer.toString());
- }
- //modificar parqueo
- public static void modificarParqueo(int numeroParqueo, String nuevaPlaca, String nuevoNIT, String nuevaFechaRegistro) throws IOException {
- RandomAccessFile archivo = new RandomAccessFile("parqueos.txt", "rw");
- //declaramos una posicion
- int posicion = (numeroParqueo - 1) * 30;
- if (numeroParqueo >= 1 && numeroParqueo <= 155) {
- archivo.seek(posicion);
- escribirCadenaModificada(archivo, nuevaPlaca, 7);
- escribirCadenaModificada(archivo, nuevoNIT, 10);
- escribirCadenaModificada(archivo, nuevaFechaRegistro, 10);
- } else {
- throw new IllegalArgumentException("El número de parqueo especificado no es válido.");
- }
- archivo.close();
- }
- //usando numero del parqueo formato [999]
- //sustituir datos existentes cono los nuevos estos son: cliente y vehiculo
- //cuando el parqueo quede libre debera de ingresarse cadenas vacias para numero de placa, NIT y fecha de registro-> estado?
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement