Guest User

Untitled

a guest
Feb 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.77 KB | None | 0 0
  1. program ReparaElectros;
  2. uses
  3. crt,dos;
  4. const
  5. Esc=#27;
  6. type
  7. ST30 = String[30];
  8. TRegRepUt=Record
  9. codigo:word;
  10. cant:word;
  11. end;
  12. TVecRep=array[1..10] of TRegRepUt;
  13. TRegPed=record
  14. NroPed:word;
  15. FechaP:longint;
  16. electro:ST30;
  17. end;
  18. TRegRepa=record
  19. NroPed:word;
  20. FechaR:longint;
  21. RepUt:TVecRep;
  22. end;
  23. TRegRepu=record
  24. Codigo:word;
  25. descrip:ST30;
  26. stock:word;
  27. end;
  28. TArchPed = file of TRegPed;
  29. TArchRepa = file of TRegRepa;
  30. TArchRepu = file of TRegRepu;
  31. var
  32. RegAux3,AuxPed, RegPed:TRegPed;
  33. RegRepa, RegAux2:TRegRepa;
  34. RegAux1, RegRepu:TRegRepu;
  35. ArchAux, ArchPed:TArchPed;
  36. ArchRepa:TArchRepa;
  37. ArchRepu:TArchRepu;
  38. start:char;
  39. dia,mes,anio,a,me,d,ds:word;
  40. fec:longint;
  41. electro:string[30];
  42. NroPed,numped:word;
  43. VecAux:TVecRep;
  44. i:byte;
  45. fin, Hay:boolean;
  46.  
  47. function fech:longint; //{obtiene la fecha}
  48. begin;
  49. getdate(a,me,d,ds);
  50. fech:=(a*10000)+(me*100)+d
  51. end;
  52.  
  53. Procedure descompone_fecha(f:longint; var dia:word; var mes:word; var anio:word);
  54. begin
  55. dia:=f mod 100;
  56. mes:=(f mod 10000)div 100;
  57. anio:= f div 10000;
  58. end;
  59.  
  60. Procedure Mostrar_menu;
  61. begin
  62. writeln('Elije alguna opcion para continuar:');
  63. writeln('1-Agregar nuevo pedido de reparacion');
  64. writeln('2-Registrar reparacion');
  65. writeln('3-Ver faltante de repuestos');
  66. end;
  67.  
  68. Procedure Leer_Esp(var Arch:TArchPed; var Reg:TregPed; var FIN:Boolean);
  69. begin
  70. if Eof(Arch) then
  71. begin
  72. FIN:=True;
  73. end
  74. else
  75. begin
  76. FIN:=False;
  77. Read(Arch,Reg);
  78. end
  79. end;
  80.  
  81. procedure Abrir_Archivos(var ArchPed:TArchPed; var ArchRepu:TArchRepu;var ArchRepa:TarchRepa);
  82. begin
  83. clrscr;
  84. Assign(ArchPed, 'C:\TP1\Pedidos.dat');
  85. Reset(ArchPed);
  86. Assign(ArchRepu, 'C:\TP1\Repuestos.dat');
  87. Reset(ArchRepu);
  88. Assign(ArchRepa, 'C:\TP1\Reparados.dat');
  89. Reset(ArchRepa);
  90. end;
  91.  
  92. Procedure Tomar_Pedido_Mostrar(var ArchPed:TArchPed; var RegPed:TRegPed; Fin:boolean);
  93. var
  94.  
  95. NroPed:word;
  96. FechaP:longint;
  97. Electro:ST30;
  98. begin
  99. if eof(ArchPed) then
  100. begin
  101. fin:=True
  102. end
  103. else
  104. begin
  105. Fin:=false;
  106. read(ArchPed, RegPed);
  107. nroped:=Regped.nroped;
  108. fechap:=regped.fechap;
  109. electro:=regped.electro;
  110. end;
  111. if fin then
  112. begin
  113. Writeln('No hay electrodomestico para reparar')
  114. end
  115. else
  116. begin
  117. Descompone_Fecha(fechap,dia,mes,anio);
  118. textcolor(8);
  119. Writeln('El pedido a reparar es: ');
  120. writeln('');
  121. textcolor(10);
  122. Writeln('Numero de Pedido Fecha Electrodomestico');
  123. Writeln(' ',nroped,' ',dia,'/',mes,'/',anio,' ',electro);
  124. writeln('');
  125. end;
  126. end;
  127.  
  128. Procedure Ingresar_Repuestos(Var VecAux:TVecRep;var i:byte;var Fin:boolean);
  129. var
  130. CodRep:Word;
  131. Cant:Word;
  132. begin
  133. if (not fin) then
  134. begin
  135. i:=0;
  136. textcolor(14); Writeln('Para dejar de ingresar repuestos ingrese Cantidad=0');
  137. repeat
  138. i:=i+1;
  139. textcolor(18);
  140. Writeln('Por favor ingrese codigo de Repuesto Solicitado');
  141. Readln(Codrep);
  142. Writeln('Por favor ingrese cantidad necesaria');
  143. Readln(Cant);
  144. VecAux[i].codigo:=CodRep;
  145. VecAux[i].Cant:=Cant
  146. until (Cant=0) or (i=10);
  147. end
  148. else
  149. begin
  150. end;
  151. end;
  152.  
  153. Procedure Verificar_Stock_Actualizar(VecAux:TVecRep; RegAux1:TRegRepu; i:byte;var ArchRepu:TarchRepu; var Hay:boolean);
  154.  
  155. Var
  156. j,k:word;
  157. Stock:word;
  158. p:word;
  159. Begin
  160. Hay:=True;
  161. For j:=1 to i do
  162. begin
  163. p:=VecAux[j].codigo;
  164. Seek(ArchRepu, p);
  165. Read(ArchRepu,RegRepu);
  166. if (RegRepu.stock>=VecAux[j].cant) then
  167. begin
  168. end
  169. else
  170. begin
  171. Hay:=False;
  172. end;
  173. end;
  174. If Hay then
  175. begin
  176. for k:=1 to i-1 do
  177. begin
  178. Seek(ArchRepu, VecAux[k].codigo);
  179. Read(ArchRepu,RegRepu);
  180. Stock:=RegRepu.Stock;
  181. Stock:=Stock - VecAux[k].cant;
  182. RegAux1.Stock:=Stock;
  183. RegAux1.codigo:=VecAux[k].Codigo;
  184. Seek(ArchRepu, Filepos(ArchRepu)-1);
  185. Write(ArchRepu,RegAux1);
  186. Writeln('Reparacion realizada');
  187. readln;
  188. end
  189. end
  190. else
  191. begin
  192. Writeln('No se puede realizar la reparacion');
  193. end;
  194. end;
  195.  
  196. Procedure Registrar_Reparacion(VecAux:TvecRep;RegAux2:TRegRepa;i:byte;RegPed:TRegPed ;var ArchRepa:TArchRepa; Hay:boolean);
  197. Var
  198. NroPed:Word;
  199. Fecha:Longint;
  200. x:byte;
  201. begin
  202. if Hay then
  203. begin
  204. NroPed:=RegPed.NroPed;
  205. Fecha:=Fech;
  206. RegAux2.NroPed:=NroPed;
  207. RegAux2.FechaR:=Fecha;
  208. for x:=1 to i do
  209. begin
  210. RegAux2.RepUt[x].Codigo:=VecAux[x].Codigo;
  211. RegAux2.RepUt[x].Cant:=VecAux[x].Cant;
  212. end;
  213. Seek(ArchRepa, filesize(ArchRepa));
  214. Write(ArchRepa,RegAux2);
  215. end
  216. else
  217. begin
  218. end
  219. end;
  220.  
  221. Procedure Borrar_Registro_Pedidos(var ArchPed:TArchPed; RegAux3:TRegPed; var ArchAux:TArchPed; Hay:boolean);
  222.  
  223.  
  224. begin
  225. if Hay then
  226. begin
  227. Assign(ArchAux,'C:\TP1\ArchAux.dat');
  228. Rewrite(ArchAux);
  229. Seek(ArchPed, 1);
  230. Leer_Esp(ArchPed, RegPed, Fin);
  231. Repeat
  232. If (NOT FIN) then
  233. begin
  234. RegAux3.NroPed:=RegPed.NroPed;
  235. RegAux3.FechaP:=RegPed.FechaP;
  236. RegAux3.Electro:=RegPed.Electro;
  237. Write(ArchAux, RegAux3);
  238. Leer_Esp(ArchPed, RegPed, Fin);
  239. end
  240. else
  241. begin
  242. end
  243. until (Fin);
  244. Close(ArchPed);
  245. Close(ArchAux);
  246. Erase(ArchPed);
  247. Assign(ArchAux,'C:\TP1\ArchAux.dat');
  248. Rename(ArchAux,'C:\TP1\Pedidos.dat');
  249. end
  250. else
  251. begin
  252. end;
  253. end;
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260. label menu;
  261.  
  262. begin
  263. menu:
  264. clrscr;
  265. textcolor(white);
  266. Mostrar_Menu;
  267. repeat
  268. start:=readkey;
  269.  
  270. case start of
  271. '1':
  272. begin
  273. clrscr;
  274. Assign(ArchPed,'C:\TP1\Pedidos.dat');
  275. Reset(ArchPed);
  276. writeln('Pedidos de reparaciones');
  277. write('Electrodomestico a reparar: ');
  278. readln(electro);
  279. fec:=fech;
  280. seek(ArchPed, filesize(ArchPed)-1);
  281. read(ArchPed,RegPed);
  282. NumPed:=RegPed.NroPed+1;
  283. AuxPed.NroPed:=NumPed;
  284. AuxPed.fechaP:=fec;
  285. AuxPed.electro:=electro;
  286. Write(ArchPed,AuxPed);
  287. seek(ArchPed, filesize(ArchPed)-1);
  288. read(ArchPed, RegPed);
  289. NumPed:=RegPed.NroPed;
  290. fec:=RegPed.fechaP;
  291. electro:=RegPed.electro;
  292. Writeln('El pedido agregado es: ');
  293. Writeln(NumPed,' ',fec,' ',electro);
  294.  
  295. close(ArchPed);
  296.  
  297. end;
  298.  
  299.  
  300.  
  301.  
  302. '2':
  303. begin
  304. writeln('Electrodomesticos reparados');
  305. Abrir_Archivos(ArchPed,ArchRepu,ArchRepa);
  306. Tomar_Pedido_Mostrar(ArchPed, RegPed,Fin);
  307. Ingresar_Repuestos(VecAux,i,Fin);
  308. Verificar_Stock_Actualizar(VecAux, RegAux1, i, ArchRepu, Hay);
  309. Registrar_Reparacion(VecAux,RegAux2,i,RegPed, ArchRepa,Hay);
  310. Borrar_Registro_Pedidos(ArchPed,RegAux3,ArchAux,Hay);
  311. end;
  312. '3':
  313. begin
  314. writeln('Stock de repuestos');
  315. //Pendiente 2da parte.
  316. end;
  317. else
  318. begin
  319. writeln('Esc para volver al menu');
  320. end;
  321. end;
  322.  
  323. until (start=Esc);
  324. goto menu;
  325. end.
Add Comment
Please, Sign In to add comment