Título: procedimiento para dar de baja un registro en Pascal Publicado por: manu3742 en 16 Abril 2011, 13:54 pm Hola de nuevo,
Estoy acabando el programa final de curso. Tengo por último que hacer un procedimiento para dar de baja y modificar un registro. Me dais pistas de como hacerlo? saludos Título: Re: procedimiento para dar de baja un registro en Pascal Publicado por: Khronos14 en 16 Abril 2011, 14:41 pm Siempre haces preguntas de este tipo:
http://foro.elhacker.net/programacion_general/como_cambiar_registro_pascal-t323895.0.html No especificas que método usar para almacenar los registros, ni pones nada de código. Aún encima ni agradeces que te contesten. Título: Re: procedimiento para dar de baja un registro en Pascal Publicado por: manu3742 en 16 Abril 2011, 15:10 pm Si que lo agradezco lo que pasa es que estoy haciendo un curso sobre Pascal desde el inicio puro y duro y no de Delhpi. siempre se me contesta con este último. Con lo que la ayuda es nula. de todas formas te pongo el código para que veas mejor pues tendrás muchos mas conocimientos que yo como hacerlo
Código PROGRAM Bibliotecas; (* Tamaño de cada registro que se pide *) CONST TAMMAXI = 40; TAMBIBLIOTECA = 5; TYPE (* registro anidado que define las características de cada libro *) Tprestado = record nom_apellidos : string [TAMMAXI]; email : string [TAMMAXI]; fecha : char; end; Tlibro = record datos : Tprestado; codigo : integer; titulo : string [TAMMAXI]; autor : string [TAMMAXI]; tema : string [TAMMAXI]; precio : integer; alta : boolean; prestado : boolean; end; (* -- TABLA SOBRE LA QUE VAMOS A TRABAJAR EN EL PROYECTO BIBLIOTECA --*) Tbiblioteca = array[1..TAMBIBLIOTECA] of Tlibro; Tfichero = file of Tlibro; (*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) (*!!!!!!!!!!!!!!!! FUNCIONES Y PROCEDIMIENTOS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) (*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) (* -- LEE DEL TECLADO TODA LA INFORMACIÓN DE UN LIBRO QUE SE LE PASA--*) PROCEDURE lee_libro( var libro: Tlibro); begin writeln; writeln('Codigo: '); readln(libro.codigo); writeln('Titulo: '); readln(libro.titulo); writeln('Autor: '); readln(libro.autor); writeln('Tema: '); readln(libro.tema); writeln('Precio: '); readln(libro.precio); writeln; end; (* PRESENTAR LISTADOS DE LA BIBLIOTECA *) PROCEDURE imprime_libro(libro: Tlibro); begin writeln('--------------------------------------'); writeln('LISTADO POR LIBRO'); writeln('--------------------------------------'); writeln('Codigo : ', libro.codigo); writeln('Titulo : ', libro.titulo); writeln('Autor : ' , libro.autor); writeln('Tema : ', libro.tema); writeln('Precio : ',libro.precio); writeln; writeln('--------------------------------------'); end; PROCEDURE hacer_prestamo(var prestado: Tprestado); begin writeln; writeln('------------------------------------'); writeln('INTRODUCIR DATOS PRESTAMO BIBLIOTECA'); writeln('------------------------------------'); writeln('Introducir Nombre y Apellidos: '); readln(prestado.nom_apellidos); writeln('Email: '); readln(prestado.email); writeln('Fecha del Prestamo: '); readln(prestado.fecha); writeln; end; PROCEDURE imprime_prestados(prestado:Tprestado; longitud: integer); var i: integer; begin for i:= 1 to longitud do; begin writeln('----------------------------------------'); writeln('-----LISTADO DE LIBROS PRESTADOS--------'); writeln('----------------------------------------'); hacer_prestamo(prestado); end; end; (* -- CON ESTE PROCEDIMIENTO PRETENDO BUSCAR Y MODIFICAR SU ESTADO DE ALTA, BAJA O MODIFICAR --*) PROCEDURE baja_modificacion( biblioteca: Tbiblioteca; longitud: integer; buscado: integer); var i : integer; encontrado: Boolean; begin encontrado:= false; for i:= 1 to longitud do begin if biblioteca.codigo = buscado then begin imprime_libro(biblioteca); encontrado:= true; end; end; begin if encontrado = false then begin lee_libro(biblioteca); end; end; end; (* -- PENDIENTE DE REALIZAR --*) (* PROCEDURE baja_libro( var libro: Tlibro; longintud: integer); begin end; *) (* -- PENDIENTE DE REALIZAR --*) (*procedure modificar_datos(var prestado: Tprestado; longitud:integer); begin end;*) (* lISTADOS DE TODOS LOS LIBROS *) PROCEDURE imprime_libros(biblioteca: Tbiblioteca; longitud: integer); var i: integer; begin for i:= 1 to longitud do begin writeln('--------------------------------------'); writeln('LISTADO DE TODOS LOS LIBROS BIBLIOTECA'); writeln('--------------------------------------'); imprime_libro(biblioteca); end; end; (* FUNCION QUE DEVUELVE EL VALOR TOTAL DE LA COLECCION DE LA BIBLIOTECA *) FUNCTION suma_coleccion(biblioteca: Tbiblioteca; longitud: integer): integer; var i: integer; suma: integer; begin suma:= 0; for i:= 1 to longitud do begin suma:= suma + biblioteca.precio; suma:=suma_coleccion; end; end; (* FUNCIÓN QUE DEVUELVE VALOR MÁXIMO DE LA COLECCION DE LA BIBLIOTECA *) FUNCTION Maximo(biblioteca: Tbiblioteca; longitud: integer): integer; var i: integer; max: integer; begin max:= 0; for i:= 1 to longitud do begin if max < biblioteca.precio then begin max:= biblioteca.precio; Maximo:= max; end; end; end; (* FUNCION QUE DEVUELVE VALOR MÍNIMO DE LA COLECCION DE LA BIBLIOTECA *) FUNCTION Minimo(biblioteca: Tbiblioteca; longitud: integer): real; var i: integer; min: integer; begin min:= 0; for i:= 1 to longitud do begin if min > biblioteca.precio then (*min:= biblioteca.precio;*) Minimo:= min; end; end; (* FUNCION QUE DEVUELVE EL VALOR MEDIO DE LA COLECCION DE LA BIBLIOTECA *) FUNCTION Media(biblioteca: Tbiblioteca; longitud: integer): real; var i: integer; suma_coleccion: integer; begin suma_coleccion:= 0; for i:= 1 to longitud do begin suma_coleccion:= suma_coleccion + biblioteca.precio; Media:= suma_coleccion/1.0+longitud; end; end; (*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) (*!!!!!!!!!!!!!!!! Funciones de ficheros !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) (*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) (*-- ALMACENA DATOS LEIDOS DE UN FICHERO --*) PROCEDURE graba_fichero(nombre: string; var biblioteca: Tbiblioteca; longitud: integer); Var i : integer; fichero : Tfichero; Begin assign(fichero, nombre); rewrite(fichero); for i:= 1 to longitud do write(fichero, biblioteca); close(fichero); End; (*-- LEE DATOS DEL FICHERO --*) PROCEDURE lee_fichero(nombre: string; var biblioteca: Tbiblioteca; longitud: integer); Var i : integer; fichero : Tfichero; Begin i := 0; assign(fichero, nombre); reset(fichero); while ( not(eof(fichero)) AND (i<TAMBIBLIOTECA) ) do begin i := i+1; read(fichero, biblioteca); end; close(fichero); End; (*-- FUNCIÓN QUE PRESENTA MENÚ Y DEVUELVE OPCIÓN ELEGIDA --*) FUNCTION Menu: INTEGER; VAR opc: integer; BEGIN repeat writeln('-----------------------------'); writeln('MENU DE GESTION DE BIBLIOTECA'); writeln('-----------------------------'); writeln; writeln('1. ALTA DE LIBRO'); writeln('2. BAJA DE LIBRO'); writeln('3. DATOS DE PRESTAMO'); writeln('4. MODIFICACION DE DATOS'); writeln('5. GUARDAR DATOS EN FICHEROS'); writeln('6. LECTURA DE DATOS DE FICHERO'); writeln('7. PRESENTACION DE LISTADO DE BIBLIOTECA'); writeln; writeln('8. SALIR'); writeln('OPCION: '); readln(opc); until ( (opc>=1) and (opc <=7) or (opc=8) ); Menu := opc; End; (*-- FUNCIÓN QUE PRESENTA UN SUBMENU DE LA OPCION 6 DEL MENÚ PRINCIPAL Y DEVUELVE LA OPCION ELEGIDA --*) FUNCTION submenu: INTEGER; VAR opc1: integer; BEGIN repeat writeln('------------------------------------------'); writeln('MENU PRESENTACION DE LISTADO DE BIBLIOTECA'); writeln('------------------------------------------'); writeln; writeln('9. LISTADO DE TODOS LOS LIBROS DE LA BIBLIOTECA'); writeln('10. LISTADO DE LIBROS PRESTADOS'); writeln('11. LISTADO DE PRECIOS MAXIMOS, MINIMOS, LA MEDIA Y EL VALOR TOTAL DE LA COLECCION'); writeln; writeln('12. VOLVER MENU PRINCIPAL'); writeln('OPCION: '); readln(opc1); until ( (opc1>=9) and (opc1<=12) ); submenu:= opc1; END; (*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) (*!!!!!!!!!!!!!!!! VARIABLES GLOBALES !!!!!!!!!!!!!!!!!!!!!!!!*) (*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) VAR libro : Tlibro; prestado : Tprestado;f biblioteca: Tbiblioteca; opc : integer; opc1 : integer; nombre : string; buscado : integer; (*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) (*!!!!!!!!!!!!!!!! PROGRAMA PRINCIPAL !!!!!!!!!!!!!!!!!!!!!!!!!!!*) (*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*) BEGIN repeat opc:= Menu; case opc of 1: lee_libro(libro); 2: begin writeln('Introducir codigo: '); readln(buscado); baja_modificacion(biblioteca, TAMBIBLIOTECA, buscado); end; 3: hacer_prestamo(prestado); 4: baja_modificacion(biblioteca, TAMBIBLIOTECA, buscado); 5: begin writeln('Introduzca el nombre del fichero de datos: '); readln(nombre); graba_fichero(nombre, biblioteca, TAMBIBLIOTECA); end; 6: begin writeln('Introduzca el nombre del fichero: '); readln(nombre); lee_fichero(nombre, biblioteca, TAMBIBLIOTECA); end; 7: begin opc1:=submenu; end; end; until(opc=8); repeat opc1:= Submenu; case opc1 of 9: imprime_libros(biblioteca, TAMBIBLIOTECA); 10: imprime_prestados(prestado, TAMBIBLIOTECA); 11: begin writeln('--------------------------------------------------------------'); writeln('LISTADO DE PRECIOS MAXIMOS, MINIMOS, LA MEDIA Y EL VALOR TOTAL'); writeln('--------------------------------------------------------------'); writeln('Valor máximo: '); maximo(biblioteca, TAMBIBLIOTECA); writeln('Valor mínimo: '); minimo(biblioteca, TAMBIBLIOTECA); writeln('Valor medio: '); media(biblioteca, TAMBIBLIOTECA); writeln('Valor total Biblioteca'); suma_coleccion(biblioteca, TAMBIBLIOTECA); end; 12: begin opc:= menu; end;(* ME DA ERROR *) end; until(opc1=12); END. Título: Re: procedimiento para dar de baja un registro en Pascal Publicado por: manu3742 en 20 Abril 2011, 13:06 pm lee y veras que doy las gracias por anticipado
|