Ayuda para realizar un programa en lenguaje Pascal
Necesito un programa que contenga un menÚ con altas, bajas, consulta, modificaciones y que cada una de esas funciones contenga nombre, direccion telefono codigo postal, poblacion etc. Que cuando yo elija cualquier opcion al final de cada una me pregunte si deceo hacer otra operacion segun sea el archivo que abri.
1 Respuesta
Respuesta de elrata
1
1
elrata, Soy tecnico programador/Analista de sistemas
Esta bastante completito y con posibilidad de ampliarlo facilmente. Yo solo puse un par de campos pero despues los podes agregar vos lo de Cod. Postal etc. Saludos Gabriel Uses Crt; Type Registro=Record Nom:String; Dir:String; Tel:String; Baja:Boolean; End; Archivo=File of Registro; Procedure Alta(Var Arch:Archivo); Var Reg:Registro; Begin Write('Ingrese Nombre :'); ReadLn(Reg.Nom); Write('Ingrese Direccion :'); ReadLn(Reg.dir); Write('Ingrese Telefono :'); ReadLn(Reg.tel); Reg.Baja:=False; Reset(Arch); If FileSize(Arch)<>0 Then Seek(Arch, FileSize(Arch)); Write(Arch, Reg); Close(Arch); WriteLn; WriteLn('***** Presione ENTER para continuar *****'); ReadKey; End; Procedure Baja(Var Arch:Archivo); Var Reg:Registro; Nom:String; Encontre:Boolean; Begin Write('Ingrese nombre a borrar :'); ReadLn(Nom); Reset(Arch); Encontre:=False; While Not Eof(Arch) And (Not Encontre) Do Begin Read(Arch, Reg); If (Reg.Nom = Nom) And (Not Reg.Baja) Then Encontre:=True; End; If Encontre then Begin Seek(Arch, FilePos(Arch)-1); Reg.Baja:=True; Write(Arch, Reg); End; Close(Arch); End; Procedure Modif(Var Arch:Archivo); Var Reg:Registro; Nom:String; Encontre:Boolean; Op:Char; Begin Write('Ingrese nombre a Modificar :'); ReadLn(Nom); Reset(Arch); Encontre:=False; While Not Eof(Arch) And (Not Encontre) Do Begin Read(Arch, Reg); If (Reg.Nom = Nom) And (Not Reg.Baja) Then Encontre:=True; End; If Encontre then Begin Seek(Arch, FilePos(Arch)-1); Repeat ClrScr; WriteLn('*** MODIFICACION ***'); writeLn; WriteLn('1-Nombre : ', Reg.Nom); WriteLn('2-Direccion : ', Reg.Dir); WriteLn('3-Telefono : ', Reg.Tel); WriteLn('4-Finalizar'); WriteLn('5-Cancelar'); Repeat Op:=ReadKey; Until (Op In ['1'..'5']); Case Op Of '1':Begin Write('Ingrese nuevo Nombre :'); ReadLn(Reg.Nom); End; '2':Begin Write('Ingrese nuevo Direccion :'); ReadLn(Reg.Dir); End; '3':Begin Write('Ingrese nuevo Telefono :'); ReadLn(Reg.Tel); End; End; Until (Op = '4') Or (Op = '5'); If Op='4' Then Write(Arch, Reg); End; Close(Arch); End; Procedure Listar(Var Arch:Archivo); Var Reg:Registro; Begin Reset(Arch); while Not Eof(Arch) Do Begin Read(Arch, Reg); If Reg.Baja = False Then WriteLn(Reg.Nom, Reg.Dir, Reg.Tel); End; Close(Arch); WriteLn; WriteLn('***** Presione ENTER para continuar *****'); ReadKey; End; Var Arch:Archivo; Opcion:Char; Begin Assign(Arch, 'Agenda.dat'); {$i-} Reset(Arch); {$I+} If IOResult <> 0 Then ReWrite(Arch); Close(Arch); Repeat ClrScr; WriteLn(' MENU'); WriteLn; WriteLn('1 - Alta'); WriteLn('2 - Baja'); WriteLn('3 - Modificar'); WriteLn('4 - Listar'); WriteLn('0 - Salir'); WriteLn; Repeat Opcion:=ReadKey; Until (Opcion >= '0') And (Opcion <= '4'); Case Opcion of '1': Alta(Arch); '2': Baja(Arch); '3': Modif(Arch); '4': Listar(Arch); End; Until Opcion = '0'; End.