Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.67 KB | None | 0 0
  1. Program Subor;
  2. uses crt;
  3. const NazovSuboru='data.dat';
  4.       max=10;
  5. type  PTovar=^TTovar;
  6.       TTovar = object
  7.                private
  8.                  id:integer;
  9.                  nazov:string[20];
  10.                  popis:string[30];
  11.                  vyrobca:string[10];
  12.                public
  13.                  constructor Init;
  14.                  destructor Done;
  15.                  procedure Info; virtual;
  16.                  function Typ:char; virtual;
  17.               end;
  18.       PPamat=^TPamat;
  19.       TPamat = object(TTovar)
  20.                private
  21.                   kapacita:real; { GB }
  22.                public
  23.                  constructor Init;
  24.                  destructor Done;
  25.                  procedure Info; virtual;
  26.                  function Typ:char; virtual;
  27.               end;
  28.       PHdd = ^THdd;        
  29.       THdd = object(TPamat)
  30.                private
  31.                  otacky:integer;
  32.                  pocetPlatni:byte;
  33.                public
  34.                  constructor Init;
  35.                  constructor InitNastav(_id:integer;_nazov,_popis,_vyrobca:string;_kapacita:real;_otacky:integer;_pocetPlatni:byte);
  36.                  constructor InitCopy(polozka:THdd);
  37.                  destructor Done;
  38.                  procedure Info; virtual;
  39.                  function Typ:char; virtual;
  40.              end;
  41.  
  42. constructor TTovar.Init;
  43. begin
  44.   id:=1;
  45.   nazov:='';
  46.   popis:='';
  47.   vyrobca:='';
  48. end;
  49.  
  50. destructor TTovar.Done;
  51. begin
  52. end;
  53.  
  54. constructor TPamat.Init;
  55. begin
  56.   inherited Init;
  57.   kapacita:=0;
  58. end;
  59.  
  60. destructor TPamat.Done;
  61. begin
  62. end;
  63.  
  64. constructor THdd.Init;
  65. begin
  66.   inherited Init;
  67.   otacky:=0;
  68.   pocetPlatni:=0;
  69. end;
  70.  
  71. constructor THdd.InitNastav(_id:integer;_nazov,_popis,_vyrobca:string;_kapacita:real;_otacky:integer;_pocetPlatni:byte);
  72. begin
  73.   self.Init;
  74.   self.id:=_id;
  75.   self.nazov:=_nazov;
  76.   self.popis:=_popis;
  77.   self.vyrobca:=_vyrobca;
  78.   self.kapacita:=_kapacita;
  79.   self.otacky:=_otacky;
  80.   self.pocetPlatni:=_pocetPlatni;
  81. end;
  82.  
  83. constructor THdd.InitCopy(polozka:THdd);
  84. begin
  85.   self.Init;
  86.   self.id:=polozka.id;
  87.   self.nazov:=polozka.nazov;
  88.   self.popis:=polozka.popis;
  89.   self.vyrobca:=polozka.vyrobca;
  90.   self.kapacita:=polozka.kapacita;
  91.   self.otacky:=polozka.otacky;
  92.   self.pocetPlatni:=polozka.pocetPlatni;
  93. end;
  94.  
  95. destructor THdd.Done;
  96. begin
  97. end;
  98.  
  99. procedure TTovar.Info;
  100. begin
  101.   writeln('Tovar id: ',self.id,', nazov: ',self.nazov);
  102. end;
  103.  
  104. procedure TPamat.Info;
  105. begin
  106.   writeln('Pamat id: ',self.id,', nazov: ',self.nazov);
  107. end;
  108.  
  109. procedure THdd.Info;
  110. begin
  111.   writeln('Hdd id: ',self.id,', nazov: ',self.nazov);
  112. end;
  113.  
  114. function TTovar.Typ:char;
  115. begin
  116.   Typ:='t';
  117. end;
  118.  
  119. function TPamat.Typ:char;
  120. begin
  121.   Typ:='p';
  122. end;
  123.  
  124. function THdd.Typ:char;
  125. begin
  126.   Typ:='h';
  127. end;
  128.  
  129. procedure Load(var polozky:array of PTovar);
  130. var i:byte;
  131.     f:file;
  132.     hh:THdd;
  133.     moznost:char;
  134.     h:PHdd;
  135. begin
  136.   for i:=0 to max do polozky[i]:=nil;
  137.   FileMode:=0;
  138.   assign(f,NazovSuboru);
  139.   {$i-}
  140.   reset(f,1);
  141.   {$i+}
  142.   if ioresult<>0 then rewrite(f,1);
  143.   i:=0;
  144.   writeln('Nacitavam data');
  145.   hh.Init;
  146.   while not eof(f) do begin
  147.     blockread(f,moznost,sizeof(moznost));
  148.     case moznost of
  149.       'h': begin
  150.             blockread(f,hh,SizeOf(hh));
  151.             New(h,InitCopy(hh));
  152.             polozky[i]:=h;
  153.             inc(i);
  154.           end;
  155. {      'k': begin
  156.             blockread(f,kk,SizeOf(kk));
  157.             New(k,InitCopy(kk));
  158.             polozky[i]:=k;
  159.             inc(i);
  160.           end;}
  161.     end;
  162.   end;
  163.   close(f);
  164. end;
  165.  
  166. procedure Add(var polozky:array of PTovar;moznost:char);
  167. var h:PHdd;
  168.     i,j:byte;
  169.     _id:integer;
  170.     _nazov,_popis,_vyrobca:string;
  171.     _kapacita:real;
  172.     _otacky:integer;
  173.     _pocetPlatni:byte;
  174. begin
  175.   for j:=0 to max do
  176.     if polozky[j]=nil then begin
  177.       i:=j;
  178.       break;
  179.     end;
  180.     case moznost of
  181.       'h':  begin
  182.             writeln('Zadaj Hdd: ');
  183.             write('id: ');
  184.             readln(_id);
  185.             write('nazov: ');
  186.             readln(_nazov);
  187.             write('popis: ');
  188.             readln(_popis);
  189.             write('vyrobca: ');
  190.             readln(_vyrobca);
  191.             write('kapacita: ');
  192.             readln(_kapacita);
  193.             write('otacky: ');
  194.             readln(_otacky);
  195.             write('pocet platni: ');
  196.             readln(_pocetPlatni);
  197.             New(h,InitNastav(_id,_nazov,_popis,_vyrobca,_kapacita,_otacky,_pocetPlatni));
  198.             polozky[i]:=h;
  199.             //Dispose(h,Done);
  200.           end;
  201. {      'k':  begin
  202.             writeln('Zadaj kruh: ');
  203.             write('x: ');
  204.             readln(x);
  205.             write('y: ');
  206.             readln(y);
  207.             write('r: ');
  208.             readln(r);
  209.             New(k,InitNastav(x,y,r));
  210.             polozky[i]:=k;
  211.           end;}
  212.     end;
  213. end;
  214.  
  215. procedure Save(var polozky:array of PTovar);
  216. var j:byte;
  217.     moznost:char;
  218.     f:file;
  219. begin
  220.   FileMode:=1;
  221.   assign(f,NazovSuboru);
  222.   rewrite(f,1);
  223.    for j:=0 to max do begin
  224.     if polozky[j]<>nil then begin
  225.       moznost:=polozky[j]^.Typ;
  226.       polozky[j]^.Info;
  227.       writeln('velkost moznosti: ',SizeOf(moznost));
  228.       writeln('velkost polozky: ',SizeOf(polozky[j]^));
  229.       blockwrite(f,moznost,SizeOf(moznost));
  230.       blockwrite(f,polozky[j]^,SizeOf(polozky[j]^));
  231.     end;
  232.   end;
  233.   close(f);
  234. end;
  235.  
  236. Procedure Remove(var polozky:array of PTovar);
  237. var i,j:byte;
  238. begin
  239.   write('Ktoru polozku chcete odstranit? ');
  240.   readln(i);
  241.   for j:=i-1 to max-2 do
  242.     polozky[j]:=polozky[j+1];
  243. end;
  244.  
  245. Procedure Edit(var polozky:array of PTovar);
  246. var i:byte;
  247.     h:PHdd;
  248.     moznost:char;
  249.     _id:integer;
  250.     _nazov,_popis,_vyrobca:string;
  251.     _kapacita:real;
  252.     _otacky:integer;
  253.     _pocetPlatni:byte;
  254. begin
  255.   write('Ktoru polozku chcete editovat? ');
  256.   readln(i);
  257.   i:=i-1;
  258.   moznost:=polozky[i]^.Typ;
  259.   case moznost of
  260.     'h':  begin
  261.             writeln('Zadaj HDD');
  262.             write('id: ');
  263.             readln(_id);
  264.             write('nazov: ');
  265.             readln(_nazov);
  266.             write('popis: ');
  267.             readln(_popis);
  268.             write('vyrobca: ');
  269.             readln(_vyrobca);
  270.             write('kapacita: ');
  271.             readln(_kapacita);
  272.             write('otacky: ');
  273.             readln(_otacky);
  274.             write('pocet platni: ');
  275.             readln(_pocetPlatni);
  276.             New(h,InitNastav(_id,_nazov,_popis,_vyrobca,_kapacita,_otacky,_pocetPlatni));
  277.             polozky[i]:=h;
  278.         end;
  279. {    'k':  begin
  280.           writeln('Zadaj kruh: ');
  281.           write('x: ');
  282.           readln(x);
  283.           write('y: ');
  284.           readln(y);
  285.           write('r: ');
  286.           readln(r);
  287.           New(k,InitNastav(x,y,r));
  288.           polozky[i]:=k;
  289.         end;}
  290.   end;
  291. end;
  292.  
  293. var polozky:array[0..max] of PTovar;
  294.     i,j:byte;
  295.     moznost:char;
  296. begin
  297. //okno(1,1,79,24,'f1','podpis',BLUE);
  298.  
  299.   for i:=0 to max do polozky[i]:=nil;
  300.   repeat
  301.     clrscr;
  302.     writeln('1 Nacitat data zo suboru');
  303.     writeln('2 Pridat novy HDD');
  304.    { writeln('3 Pridat novy kruh');}
  305.     writeln('4 Zobrazit data');
  306.     writeln('5 Uprava polozky');
  307.     writeln('6 Odstranenie polozky');
  308.     writeln('7 Ulozit zmeny do suboru');
  309.     writeln('ESC ukoncit');
  310.     moznost:=readkey;
  311.     writeln;
  312.     case moznost of
  313.       '1': Load(polozky);
  314.       '2': Add(polozky,'h');
  315.       {'3': Add(polozky,'k');}
  316.       '4': begin
  317.             for j:=0 to max do
  318.               if polozky[j]<>nil
  319.                 then polozky[j]^.Info;
  320.           end;
  321.       '5': Edit(polozky);
  322.       '6': Remove(polozky);
  323.       '7': Save(polozky);
  324.     end;
  325.     repeat until keypressed;
  326.   until moznost=#27;
  327.   for j:=0 to max do if polozky[j]<>nil then Dispose(polozky[j],Done);
  328. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement