procedimiento para dar de baja un registro en Pascal

Iniciado por manu3742, 16 Abril 2011, 13:54 PM

0 Miembros y 1 Visitante están viendo este tema.

manu3742

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

Khronos14

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.

manu3742

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 (pascal) [Seleccionar]


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.

manu3742

lee y veras que doy las gracias por anticipado