Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program ReparaElectros;
- uses
- crt,dos;
- const
- Esc=#27;
- type
- ST30 = String[30];
- TRegRepUt=Record
- codigo:word;
- cant:word;
- end;
- TVecRep=array[1..10] of TRegRepUt;
- TRegPed=record
- NroPed:word;
- FechaP:longint;
- electro:ST30;
- end;
- TRegRepa=record
- NroPed:word;
- FechaR:longint;
- RepUt:TVecRep;
- end;
- TRegRepu=record
- Codigo:word;
- descrip:ST30;
- stock:word;
- end;
- TArchPed = file of TRegPed;
- TArchRepa = file of TRegRepa;
- TArchRepu = file of TRegRepu;
- var
- RegAux3,AuxPed, RegPed:TRegPed;
- RegRepa, RegAux2:TRegRepa;
- RegAux1, RegRepu:TRegRepu;
- ArchAux, ArchPed:TArchPed;
- ArchRepa:TArchRepa;
- ArchRepu:TArchRepu;
- start:char;
- dia,mes,anio,a,me,d,ds:word;
- fec:longint;
- electro:string[30];
- NroPed,numped:word;
- VecAux:TVecRep;
- i:byte;
- fin, Hay:boolean;
- function fech:longint; //{obtiene la fecha}
- begin;
- getdate(a,me,d,ds);
- fech:=(a*10000)+(me*100)+d
- end;
- Procedure descompone_fecha(f:longint; var dia:word; var mes:word; var anio:word);
- begin
- dia:=f mod 100;
- mes:=(f mod 10000)div 100;
- anio:= f div 10000;
- end;
- Procedure Mostrar_menu;
- begin
- writeln('Elije alguna opcion para continuar:');
- writeln('1-Agregar nuevo pedido de reparacion');
- writeln('2-Registrar reparacion');
- writeln('3-Ver faltante de repuestos');
- end;
- Procedure Leer_Esp(var Arch:TArchPed; var Reg:TregPed; var FIN:Boolean);
- begin
- if Eof(Arch) then
- begin
- FIN:=True;
- end
- else
- begin
- FIN:=False;
- Read(Arch,Reg);
- end
- end;
- procedure Abrir_Archivos(var ArchPed:TArchPed; var ArchRepu:TArchRepu;var ArchRepa:TarchRepa);
- begin
- clrscr;
- Assign(ArchPed, 'C:\TP1\Pedidos.dat');
- Reset(ArchPed);
- Assign(ArchRepu, 'C:\TP1\Repuestos.dat');
- Reset(ArchRepu);
- Assign(ArchRepa, 'C:\TP1\Reparados.dat');
- Reset(ArchRepa);
- end;
- Procedure Tomar_Pedido_Mostrar(var ArchPed:TArchPed; var RegPed:TRegPed; Fin:boolean);
- var
- NroPed:word;
- FechaP:longint;
- Electro:ST30;
- begin
- if eof(ArchPed) then
- begin
- fin:=True
- end
- else
- begin
- Fin:=false;
- read(ArchPed, RegPed);
- nroped:=Regped.nroped;
- fechap:=regped.fechap;
- electro:=regped.electro;
- end;
- if fin then
- begin
- Writeln('No hay electrodomestico para reparar')
- end
- else
- begin
- Descompone_Fecha(fechap,dia,mes,anio);
- textcolor(8);
- Writeln('El pedido a reparar es: ');
- writeln('');
- textcolor(10);
- Writeln('Numero de Pedido Fecha Electrodomestico');
- Writeln(' ',nroped,' ',dia,'/',mes,'/',anio,' ',electro);
- writeln('');
- end;
- end;
- Procedure Ingresar_Repuestos(Var VecAux:TVecRep;var i:byte;var Fin:boolean);
- var
- CodRep:Word;
- Cant:Word;
- begin
- if (not fin) then
- begin
- i:=0;
- textcolor(14); Writeln('Para dejar de ingresar repuestos ingrese Cantidad=0');
- repeat
- i:=i+1;
- textcolor(18);
- Writeln('Por favor ingrese codigo de Repuesto Solicitado');
- Readln(Codrep);
- Writeln('Por favor ingrese cantidad necesaria');
- Readln(Cant);
- VecAux[i].codigo:=CodRep;
- VecAux[i].Cant:=Cant
- until (Cant=0) or (i=10);
- end
- else
- begin
- end;
- end;
- Procedure Verificar_Stock_Actualizar(VecAux:TVecRep; RegAux1:TRegRepu; i:byte;var ArchRepu:TarchRepu; var Hay:boolean);
- Var
- j,k:word;
- Stock:word;
- p:word;
- Begin
- Hay:=True;
- For j:=1 to i do
- begin
- p:=VecAux[j].codigo;
- Seek(ArchRepu, p);
- Read(ArchRepu,RegRepu);
- if (RegRepu.stock>=VecAux[j].cant) then
- begin
- end
- else
- begin
- Hay:=False;
- end;
- end;
- If Hay then
- begin
- for k:=1 to i-1 do
- begin
- Seek(ArchRepu, VecAux[k].codigo);
- Read(ArchRepu,RegRepu);
- Stock:=RegRepu.Stock;
- Stock:=Stock - VecAux[k].cant;
- RegAux1.Stock:=Stock;
- RegAux1.codigo:=VecAux[k].Codigo;
- Seek(ArchRepu, Filepos(ArchRepu)-1);
- Write(ArchRepu,RegAux1);
- Writeln('Reparacion realizada');
- readln;
- end
- end
- else
- begin
- Writeln('No se puede realizar la reparacion');
- end;
- end;
- Procedure Registrar_Reparacion(VecAux:TvecRep;RegAux2:TRegRepa;i:byte;RegPed:TRegPed ;var ArchRepa:TArchRepa; Hay:boolean);
- Var
- NroPed:Word;
- Fecha:Longint;
- x:byte;
- begin
- if Hay then
- begin
- NroPed:=RegPed.NroPed;
- Fecha:=Fech;
- RegAux2.NroPed:=NroPed;
- RegAux2.FechaR:=Fecha;
- for x:=1 to i do
- begin
- RegAux2.RepUt[x].Codigo:=VecAux[x].Codigo;
- RegAux2.RepUt[x].Cant:=VecAux[x].Cant;
- end;
- Seek(ArchRepa, filesize(ArchRepa));
- Write(ArchRepa,RegAux2);
- end
- else
- begin
- end
- end;
- Procedure Borrar_Registro_Pedidos(var ArchPed:TArchPed; RegAux3:TRegPed; var ArchAux:TArchPed; Hay:boolean);
- begin
- if Hay then
- begin
- Assign(ArchAux,'C:\TP1\ArchAux.dat');
- Rewrite(ArchAux);
- Seek(ArchPed, 1);
- Leer_Esp(ArchPed, RegPed, Fin);
- Repeat
- If (NOT FIN) then
- begin
- RegAux3.NroPed:=RegPed.NroPed;
- RegAux3.FechaP:=RegPed.FechaP;
- RegAux3.Electro:=RegPed.Electro;
- Write(ArchAux, RegAux3);
- Leer_Esp(ArchPed, RegPed, Fin);
- end
- else
- begin
- end
- until (Fin);
- Close(ArchPed);
- Close(ArchAux);
- Erase(ArchPed);
- Assign(ArchAux,'C:\TP1\ArchAux.dat');
- Rename(ArchAux,'C:\TP1\Pedidos.dat');
- end
- else
- begin
- end;
- end;
- label menu;
- begin
- menu:
- clrscr;
- textcolor(white);
- Mostrar_Menu;
- repeat
- start:=readkey;
- case start of
- '1':
- begin
- clrscr;
- Assign(ArchPed,'C:\TP1\Pedidos.dat');
- Reset(ArchPed);
- writeln('Pedidos de reparaciones');
- write('Electrodomestico a reparar: ');
- readln(electro);
- fec:=fech;
- seek(ArchPed, filesize(ArchPed)-1);
- read(ArchPed,RegPed);
- NumPed:=RegPed.NroPed+1;
- AuxPed.NroPed:=NumPed;
- AuxPed.fechaP:=fec;
- AuxPed.electro:=electro;
- Write(ArchPed,AuxPed);
- seek(ArchPed, filesize(ArchPed)-1);
- read(ArchPed, RegPed);
- NumPed:=RegPed.NroPed;
- fec:=RegPed.fechaP;
- electro:=RegPed.electro;
- Writeln('El pedido agregado es: ');
- Writeln(NumPed,' ',fec,' ',electro);
- close(ArchPed);
- end;
- '2':
- begin
- writeln('Electrodomesticos reparados');
- Abrir_Archivos(ArchPed,ArchRepu,ArchRepa);
- Tomar_Pedido_Mostrar(ArchPed, RegPed,Fin);
- Ingresar_Repuestos(VecAux,i,Fin);
- Verificar_Stock_Actualizar(VecAux, RegAux1, i, ArchRepu, Hay);
- Registrar_Reparacion(VecAux,RegAux2,i,RegPed, ArchRepa,Hay);
- Borrar_Registro_Pedidos(ArchPed,RegAux3,ArchAux,Hay);
- end;
- '3':
- begin
- writeln('Stock de repuestos');
- //Pendiente 2da parte.
- end;
- else
- begin
- writeln('Esc para volver al menu');
- end;
- end;
- until (start=Esc);
- goto menu;
- end.
Add Comment
Please, Sign In to add comment