All pastes #534031 Raw Edit

projekt

public text v1 · immutable
·published 2007-06-03 17:19 UTC
rendered paste body
Program Projekt;

uses crt;

 {Program ten sˆuľy do dodawania nowych klient˘w, oraz poľyczek jakie oni
  zawierajĄ w danej firmie. W programie znajdujĄ si© teľ inne opcje takie
  jak:
       }

 type
   Dane_osobowe=Record                     {w tym rekordzie sĄ dane osoby}
                 Nazwisko  :String[30];
                 Imie      :String[20];
                 Pozyczka  :Integer;
                 Rata      :Integer;
                 Zaplacone :Integer;
   end;

 var
   Baza :array[0..250] of Dane_osobowe;     {tablica tych rekord˘w}
   menu :Integer;                           {to co zostaˆo wpisane w menu}
   O, L :Integer;                           {O - to bieľĄcy wpis, L - liczba wpis˘w}



 Procedure Wyswietl;

   begin
    if (L < 0) then
       Writeln('Przepraszamy, nie ma &#318;adnej osoby w bazie.')
    else
      begin
       Write('Nazwisko: ');
        Writeln(Baza[O].Nazwisko);
       Write('Imi©: ');
        Writeln(Baza[O].Imie);
       Write('Po&#318;yczka wynosi: ');
        Writeln(Baza[O].Pozyczka);
       Write('Sp&#136;acono: ');
        Writeln(Baza[O].Zaplacone);
       Write('rat o wysoko&#152;ci: ');
        Writeln(Baza[O].Pozyczka div Baza[O].Rata);
       Writeln('z&#136;');
       Write('Razem zosta&#136;o sp&#136;acone: ');
        Writeln(Baza[O].Rata*Baza[O].Zaplacone);
        Writeln('z&#136;');
       Write('Pozosta&#136;o do zap&#136;acenia: ');
        Write(Baza[O].Pozyczka - (Baza[O].Rata*Baza[O].Zaplacone));
        Write('z&#136;');
       Writeln
      end
   end;



 Procedure Nowy_Wpis;

  var
    pierwszy:Boolean; {by gdz u&#318;ytkownik pisze wi©ksz&#260; rate ni&#318; po&#318;czka to
                       mu wyskocz, &#318;e rata nie mo&#318;e b† wi©ksza ni&#318; pozczka}
    begin
     L:=L + 1;

     Write('Nazwisko: ');
      Readln(Baza[L].Nazwisko);
     Write('Imie: ');
      Readln(Baza[L].Imie);


     pierwszy:=True;

     Repeat
       if not pierwszy then
         Writeln('Rata nie powinna by† wi©ksza ni&#318; kredt!');

       Write('Po&#318;yczka: ');
        Readln(Baza[L].Pozyczka);
       Write('Rat: ');
        Readln(Baza[L].Rata);

       pierwszy:=False;
     Until Baza[L].Rata<=Baza[L].Pozyczka;

     Baza[L].Zaplacone:=0;
    end;



 Procedure Poprzedni;

   begin
    if (O > 0) then
      begin
       O:=O - 1;
      end
    else
      begin
       Writeln('Nie ma poprzedniego');
       Readln;
      end;
   end;



 Procedure Nastepny;

   begin
    if (O < L) then
      begin
       O:=O + 1;
      end
    else
      begin
       Writeln('Nie ma nast©pnego');
        Readln;
      end;
   end;



 Procedure Usun_Biezacy;

   var
     i :Integer;                   {zmienna steruj&#260;ca w p©tli FOR}

     begin
      L:=L - 1;

      for i:=O to L do
       Baza[i]:=Baza[i + 1]
     end;



 Procedure Splac_Rate;

   var
     Reszta :Integer;  {Jak zbiegnie jakie&#152; reszta z raty, to jest przdatna}

     begin
      Baza[O].Zaplacone:=Baza[O].Zaplacone + 1;
      if (Baza[O].Pozyczka<=(Baza[O].Zaplacone*Baza[O].rata)) then
        begin
         Usun_Biezacy;
         Reszta:=Baza[O].zaplacone*Baza[O].Rata-Baza[O].Pozyczka;
         Write('Wszstkie raty zosta&#136;y sp&#136;acone.');
          if not (Reszta=0) then
            begin
             Write('Z ostatniej raty zbieg&#136;o: ',Reszta,' z&#136;.');
            end;
         Writeln;
        end
      else
        Writeln('Rata zosta&#136;a sp&#136;acona.');
        Readln;
     end;



 Procedure Zapisz;

   var
     Plik    :Text;
     Sciezka :String;           {&#152;cie&#318;ka do pliku}
     i       :Integer;          {zmienna steruj&#260;ca}

     begin
      Write('—cie&#318;ka do pliku:  ');
       Readln(Sciezka);

      Assign(Plik, Sciezka);
      Rewrite(Plik);

      Writeln(Plik,L);

      for i:=0 to L do
       begin
        Writeln(Plik, Baza[i].Nazwisko);
        Writeln(Plik, Baza[i].Imie);
        Writeln(Plik, Baza[i].Pozyczka);
        Writeln(Plik, Baza[i].Rata);
        Writeln(Plik, Baza[i].Zaplacone)
       end;

      Close(Plik)
     end;



 Procedure Wczytaj;

   var
     Plik    :Text;
     Sciezka :String;
     i       :Integer;

     begin
      Write('Podaj &#152;cie&#318;k© wczytywanego pliku:  ');
       Readln(Sciezka);

      Assign(Plik, Sciezka);
      Reset(Plik);
       Readln(Plik, L);

      for i:=0 to L do
       begin
        Readln(Plik, Baza[i].Nazwisko);
        Readln(Plik, Baza[i].Imie);
        Readln(Plik, Baza[i].Pozyczka);
        Readln(Plik, Baza[i].Rata);
        Readln(Plik, Baza[i].Zaplacone)
       end
     end;

{*************************************************************************}

 BEGIN


  clrscr;

  L:=-1;
  O:=0;

  Repeat
    clrscr;

    if L>(-1) then
      Wyswietl
    else
      Writeln('Narazie nie ma &#318;adnych os&#728;b w bazie danych');

    Writeln;

    Writeln('1. Nowy wpis');
    Writeln('2. Poprzedni');
    Writeln('3. Nast©pny');
    Writeln('4. Usuä bie&#318;&#260;cy');
    Writeln('5. Sp&#136;a† rat©');
    Writeln('6. Zapisz do pliku');
    Writeln('7. Wczytaj z pliku');
    Writeln('8. Koniec');
     Readln(menu);

    clrscr;

    Case menu of
      1:Nowy_Wpis;
      2:Poprzedni;
      3:Nastepny;
      4:Usun_Biezacy;
      5:Splac_Rate;
      6:Zapisz;
      7:Wczytaj
    end;

  until menu=8;

 END.