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]; //Cadena de 30 caractéres
- TRegRepUt=Record //Registro Tipo Repuesto, con dos campos
- codigo:word;
- cant:word;
- end;
- TVecRep=array[1..10] of TRegRepUt; //Vector de 10 posiciones de Tipo Repuesto
- TRegPed=record //Registro Tipo Pedido, 3 campos.
- NroPed:word;
- FechaP:longint;
- electro:ST30;
- end;
- TRegRepa=record //Registro Tipo Reparados, 3 campos.
- 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;
- r, 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('');
- writeln(' 1 - Agregar nuevo pedido de reparacion');
- writeln(' 2 - Registrar reparacion');
- writeln(' 3 - Ver faltante de repuestos');
- writeln(' 4 - Salir');
- 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, 'e:\TP1\Pedidos.dat');
- Reset(ArchPed);
- Assign(ArchRepu, 'e:\TP1\Repuestos.dat');
- Reset(ArchRepu);
- Assign(ArchRepa, 'e:\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;
- read();
- end;
- if fin then
- begin
- Writeln('No hay electrodomestico para reparar')
- end
- else
- begin
- Descompone_Fecha(fechap,dia,mes,anio);
- textcolor(white);
- Writeln('El pedido a reparar es: ');
- textcolor(white);
- writeln('-----------------------------------------------------------------------');
- textcolor(white);
- Writeln('Nro de Pedido Fecha Electrodomestico');
- textcolor(6);
- Writeln(' ',nroped,' ',dia,'/',mes,'/',anio,' ',electro);
- textcolor(white);
- writeln('-----------------------------------------------------------------------');
- readln();
- 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(white); Writeln('--- Para dejar de ingresar repuestos ingrese Cantidad=0 ---');
- writeln('');
- writeln(' Como maximo puede ingresar 10 repuestos');
- repeat
- i:=i+1;
- writeln('');
- textcolor(white);
- Write('Por favor ingrese codigo de Repuesto Solicitado: ');
- Readln(Codrep);
- Writeln('');
- Write('Por favor ingrese cantidad necesaria: ');
- Readln(Cant);
- Writeln('');
- VecAux[i].codigo:=CodRep;
- VecAux[i].Cant:=Cant;
- clrscr;
- writeln('Usted lleva ingresados ',i,' repuestos');
- writeln('');
- 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);
- textcolor(6);
- end;
- Writeln('*** Reparacion realizada ***');
- read();
- textcolor(white);
- end
- else
- begin
- textcolor(6);
- Writeln('*** No se puede realizar la reparacion ***');
- textcolor(white);
- 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
- read();
- 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,'e:\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,'e:\TP1\ArchAux.dat');
- Rename(ArchAux,'e:\TP1\Pedidos.dat');
- read();
- end
- else
- begin
- end;
- read();
- Writeln('');
- Writeln('Presione Enter para volver al menu');
- readln();
- clrscr;
- end;
- Procedure Abrir_Archivo(var ArchPed:TArchPed);
- begin
- Assign(ArchPed, 'e:\TP1\Pedidos.dat');
- Reset(ArchPed);
- end;
- Procedure Agregar_Pedido(var ArchPed:TArchPed);
- var
- AuxPed:TRegPed;
- electro:ST30;
- NumPed:word;
- begin
- writeln('--- Pedidos de reparaciones ---');
- Writeln('');
- write('Electrodomestico a reparar: ');
- read(electro);
- writeln('');
- 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;
- descompone_fecha(fec,dia,mes,anio);
- Writeln('El pedido agregado es: ');
- textcolor(white);
- Writeln('---------------------------------------------------------------');
- Writeln('Nro de Pedido Fecha Electrodomestico');
- textcolor(6);
- Writeln(' ',NumPed,' ',dia,'/',mes,'/',anio,' ',electro);
- textcolor(white);
- Writeln('---------------------------------------------------------------');
- Writeln('');
- read();
- Writeln('Presione Enter para volver al menu');
- writeln('');
- readln();
- r:=readkey;
- clrscr;
- close(ArchPed);
- end;
- label menu;
- begin
- menu:
- clrscr;
- textcolor(white);
- Mostrar_Menu;
- repeat
- start:=readkey;
- case start of
- '1':
- begin
- clrscr;
- Abrir_Archivo(ArchPed);
- Agregar_Pedido(ArchPed);
- Mostrar_Menu;
- end;
- '2':
- begin
- writeln('--- Electrodomesticos a reparar ---');
- 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);
- Mostrar_Menu;
- end;
- '3':
- begin
- writeln('Stock de repuestos');
- //Pendiente 2da parte.
- end;
- else
- begin
- writeln('Esc para volver al menu');
- end;
- end;
- until (start='4');
- end.
Add Comment
Please, Sign In to add comment