Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Proceso Algoritmo158
- Definir lContinuar Como Logico
- Definir opc Como Entero
- Definir aID, aMarca Como Cadena
- Definir cArchivo, cRuta, cLinea Como Cadena
- Definir i, aMax Como Entero
- Definir lOp Como Logico
- //Archivo demo;
- Archivo nArchivo;
- //Ruta en donde se encuentra el archivo. Puede ser donde se ejecuta el programa
- cRuta = "C:\PruebasArchivos\"
- cArchivo = cRuta + "autos2.txt" //Nombre del archivo a usar.
- //Nota: ES IMPORTANTE QUE EL ARCHIVO ESTE CREADO ANTERIORMENTE, YA QUE ESTE PROGRAMA
- //NO CREA EL ARCHIVO DESDE EL INICIO, SINO QUE SUPONE QUE YA EXISTE. EN CASO CONTRARIO
- //MARCARA ERROR. NO IMPORTA QUE ESTE VACIO, PERO DEBE EXISTIR Y ESTAR EN LA CARPETA DONDE
- //ESTAMOS INDICANDO. EL ARCHIVO SE PUEDE CREAR CON EL BLOC DE NOTAS PORQUE ES TEXTO
- lContinuar = Verdadero
- aMAX = 10 //Cantidad Maxima de Registros. Ajustar.
- //En lugar de un modulo para abrir el archivo y cargar los datos, vamos a ponerlo
- //directamente en el programa principal
- //Esto lo hacemos con una matriz, tomando el valor de aMAX (no registros) y 6 columnas (campos)
- //Ajustar de ser necesario a las filas y columnas que deseamos.
- Dimension aRegistro[aMax,6]
- //Abrimos el archivo que hemos indicado en las constantes.
- //Consideraciones:
- //1. La carpeta debe existir en la computadora
- //2. El archivo debe existir en dicha carpeta. Este se puede crear con el bloc de notas. Aunque este vacio
- // De preferencia llenar con al menos 2 registro o filas
- //3. El final de cada linea debe ir con una coma,
- nArchivo = AbrirArchivo( cArchivo )
- i = 1
- Escribir "Leyendo del archivo...",i
- //Haremos un ciclo mientras no sea fin del archivo (no sabemos cantidad de registros)
- Repetir
- cLinea = LeerArchivo( nArchivo) //Se extrae toda la linea del registro
- //Ahora vamos a extraer los campos separados por comas
- nCampo = 1
- nLetra = 1
- nPos = 1
- cCampo = ""
- Para j = 1 hasta longitud(cLinea)
- cCampo = cCampo + subcadena( cLinea, nPos, nLetra )
- Si subcadena( cLinea, nPos, nLetra) = "," entonces
- cCampo = subcadena( cCampo, 1, longitud(cCampo)-1 )
- aRegistro[i,nCampo] = cCampo //subcadena( cLinea, j,1 )
- nCampo = nCampo + 1
- nPos = nLetra
- cCampo = ""
- //Sino
- // cCampo = cCampo + subcadena( cLinea, nPos, nLetra )
- FinSi
- nLetra = nLetra + 1
- nPos = nPos + 1
- FinPara
- //****************************************************
- //El siguiente es un bloque de verificacion para saber
- //si los datos del archivo se estan almacenando en la memoria
- //interna (arreglo).
- //
- //Escribir "Registro No. ", i
- //Escribir "ID: " + aRegistro[i,1]
- //Escribir "Marca: " + aRegistro[i,2]
- //Escribir "Linea: " + aRegistro[i,3]
- //Escribir "Color: " + aRegistro[i,4]
- //Escribir "Cantidad: " + aRegistro[i,5]
- //Escribir "Precio: " + aRegistro[i,6]
- //Escribir "======================="
- //
- //*****************************************************
- i = i + 1
- Hasta Que FinDeArchivo(nArchivo)
- lOp = CerrarArchivo( nArchivo )
- //Ahora todos los registros del archivo estan en memoria.
- //Comienza el ciclo principal del proggrama
- Repetir
- CargarMenu() //Carga las opciones del menu principal
- Leer opc
- Segun opc Hacer
- 1:
- IngresarInventario()
- //ActualizarArchivo()
- //Esperar Tecla
- 2:
- Escribir "========= VENDER VEHICULO ========="
- VenderVehiculo(aRegistro)
- ActualizarArchivo()
- Esperar Tecla
- 3:
- CambiarValorVehiculo(aRegistro) //Cambia el valor en memoria interna
- ActualizarArchivo() //Cambia el valor en memoria externa
- Esperar Tecla
- 4:
- MostrarInventario(aRegistro)
- Escribir "<<<<< Presiona una tecla para continuar >>>>>"
- Esperar Tecla
- 5:
- lContinuar = Falso
- De otro modo:
- Escribir "Por favor ingrese una opcion entre 1 y 5"
- Esperar Tecla
- FinSegun
- Hasta que lContinuar = Falso
- Escribir "Gracias por usar nuestro programa"
- FinProceso
- //Procedimiento para colocar un titulo en la parte superior dependiendo de cada opcion
- SubProceso CrearTitulo( vTitulo)
- Borrar Pantalla
- Escribir "========== " + vTitulo + " ============"
- Escribir " "
- FinSubProceso
- //Procedimiento para visualizar el menu principal
- SubProceso CargarMenu()
- CrearTitulo( "MENU PRINCIPAL")
- Escribir "1. Ingresar Producto "
- Escribir "2. Vender Producto"
- Escribir "3. Cambiar Valor Unitario"
- Escribir "4. Mostrar Inventario Actual"
- Escribir "5. Salir"
- Escribir ""
- Escribir sin saltar "Que opcion deseas realizar?: "
- FinSubProceso
- SubProceso IngresarInventario()
- Definir vID, vMarca, vLinea, vColor, vCantidad, vPrecio Como Cadena
- CrearTitulo( "INGRESAR INVENTARIO")
- Escribir "Este modulo es para registrar nuevos vehiculos"
- Escribir sin saltar "ID..........: "
- Leer vID
- Escribir sin saltar "Marca.......: "
- Leer vMarca
- Escribir sin saltar "Linea.......: "
- Leer vLinea
- Escribir sin saltar "Color.......: "
- Leer vColor
- Escribir sin saltar "Cantidad....: "
- Leer vCantidad
- Escribir sin saltar "Precio......: "
- Leer vPrecio
- Escribir "=================================="
- //Manda llamar al modulo de Grabar en el disco los datos
- cRuta = "C:\PruebasArchivos\"
- cArchivo = cRuta + "autos2.txt"
- nArchivo = AbrirArchivo( cArchivo )
- Escribir "Guardando datos en el archivo..."
- //Construir una sola linea con la separacion de comas para que se identifique.
- cRegistro = vID +"," + vMarca + "," + vLinea + "," + vColor + "," + vCantidad + "," + vPrecio + ","
- //Antes de grabar es necesario posicionarse al final del archivo porque si no grabara en la primera linea
- //y va a borrar los datos
- //Escribir "Vamos a evaluar si es fin del archivo"
- si FindeArchivo( nArchivo) Entonces
- //Escribir "Encontro que es final del archivo, se greaba"
- nRecord = EscribirArchivo( nArchivo, cRegistro)
- Sino
- //Escribir "No hay fin de archivo, hay que avanzar lineas hasta el final"
- repetir
- vLinea = LeerArchivo(nArchivo)
- //Escribir "linea: " + vLinea
- Hasta Que FinDeArchivo( nArchivo )
- //Escribir "Alcanzo el EOF"
- si FindeArchivo( nArchivo) entonces
- nRecord = EscribirArchivo( nArchivo, cRegistro)
- fin si
- FinSi
- //nRecord = EscribirArchivo( nArchivo, cRegistro) //Graba el registro completo
- vOp = CerrarArchivo( nArchivo )
- FinSubProceso
- SubProceso ActualizarArchivo()
- //Este modulo sirve para actualizar el archivo de datos externo
- //con los posibles valores que puedan haber cambiando en memoria interna
- //Puesto que no es posible trabajar de forma directa con el archivo externo buscando
- //el dato correspondiente, procederemos a BORRAR TODO EL ARCHIVO
- //y lo volvemos a GRABAR con los datos que tenemos en memoria
- //Es importante asegurarse de que esto es lo que deseamos.
- //Debe hacerlo de forma transparente al usuario y ejecutarlo sin preguntarle nada
- //Puesto que ya viste como se graban los datos en REBEL
- //puedes hacer este modulo para grabar TODA la matriz en el archivo
- //En teoria deberias borrar los datos del archivo anterior
- //y sustituirlos con los nuevos datos en memoria
- //¿Si puedes verdad?
- FinSubProceso
- Subproceso VenderVehiculo(aRegistro por referencia)
- //En este modulo vamos a VENDER un vehiculo, rebajando la CANTIDAD
- //del campo asociado. Pedimos el ID del vehiculo, muestra los datos para confirmar
- //e indicamos cuantos vehiculos se vendieron
- //Se descuenta la cantidad y se actualiza en memoria interna
- //Mas adelante se debera registrar esta operacion en el archivo exerno
- //Este modulo esta vacio a proposito para que lo elabores.
- //Practicamente es igual al modulo de CambiarPrecio del vehiculo solo que hay
- //que restar el valor deseado en el arreglo y columna correcta.
- //
- //¿Si puedes verdad?
- FinSubProceso
- Subproceso CambiarValorVehiculo(aRegistro por referencia )
- //En este modulo vamos a cambiar el valor del precio del vehiculo
- //Esto lo haremos identificando el auto por su ID, buscamos y
- //pedimos el nuevo precio. Todo queda registrado en memoria interna
- //mas adelante debemos GRABAR de forma permanente este cambio en el
- //archivo externo
- Definir posicion Como Entero
- Definir nPrecio Como Real
- Definir encontrado, bandera Como Logico
- posicion = 1
- encontrado = falso
- bandera = Falso
- CrearTitulo( "CAMBIAR VALOR VEHICULO")
- Escribir "¿Cual es el ID del vehiculo a cambiar el precio? "
- Leer cID
- //Procedemos a buscar el ID en el arreglo
- Repetir
- si longitud(aRegistro[posicion,1]) = 0 Entonces
- //Si encuentra una posicion vacia debemos terminar el ciclo tambien
- bandera = verdadero
- encontrado = Falso
- Escribir "No se ha encontrado ninguna coincidencia"
- FinSi
- si aRegistro[posicion,1] = cID entonces
- Escribir "Marca: ", aRegistro[posicion,2]
- Escribir "Linea: ", aRegistro[posicion,3]
- Escribir "Color: ", aRegistro[posicion,4]
- Escribir "Cantidad: ", aRegistro[posicion,5]
- Escribir "Precio: ", aRegistro[posicion,6]
- Escribir " "
- Escribir "¿Cual es el nuevo precio?"
- Leer nPrecio
- aRegistro[posicion,6] = ConvertirATexto(nPrecio) //Convertir a texto el numero
- Escribir "Precio actualizado!"
- bandera = verdadero
- encontrado = Verdadero
- Sino
- posicion = posicion + 1 //No lo encontro buscara en el siguiente
- FinSi
- Hasta Que bandera = verdadero
- FinSubProceso
- Subproceso MostrarInventario(aRegistro por referencia)
- //Listar los productos o articulos que estan en inventario
- //Los tomara de la memoria intera (arreglo) en lugar de tomarlo desde el archivo
- //de manera directa
- //Definimos unas variables locales que necesitaremos
- //la variable aRegistro debemos pasarla por referencia para que no pierda
- //los valores del programa principal
- Definir fila, cTam, cEspacios Como Entero
- Definir cMarca Como Cadena
- Definir bandera Como logico
- fila = 1
- bandera = falso
- cTam = 15
- //Poner el encabezado del reporte
- CrearTitulo( "MOSTRAR INVENTARIO")
- Escribir " "
- Escribir "ID Marca Linea Color Cantidad Precio "
- Escribir "================================================================="
- //Construir un ciclo que se repetira hasta que encuentre un valor vacio
- Repetir
- Si longitud(aRegistro[fila,1]) = 0 entonces
- //No tiene caracteres y debemos terminar
- bandera = verdadero
- FinSi
- cEspacios = cTam - longitud(aRegistro[fila,2]) //Calcular cuantos espacios faltan para el fijo de 15
- //Hacer un ciclo para agregar la cantidad de espacios al campo y quede alineado
- para i= 1 hasta cEspacios
- cMarca = cMarca + " "
- FinPara
- //Imprimir el registro en una sola linea
- Escribir sin saltar aRegistro[fila,1] + " "
- Escribir sin saltar aRegistro[fila,2] + cMarca
- Escribir sin saltar aRegistro[fila,3] + " "
- Escribir sin saltar aRegistro[fila,4] + " "
- Escribir sin saltar aRegistro[fila,5] + " "
- Escribir sin saltar aRegistro[fila,6] + " "
- fila = fila + 1
- Escribir "" //Hacer un salto de linea
- cMarca = "" //Borar los espacios que hemos puesto
- Hasta que bandera = verdadero
- FinSubProceso
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement