rendered paste bodyProgram 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 ľadnej osoby w bazie.')
else
begin
Write('Nazwisko: ');
Writeln(Baza[O].Nazwisko);
Write('Imi©: ');
Writeln(Baza[O].Imie);
Write('Poľyczka wynosi: ');
Writeln(Baza[O].Pozyczka);
Write('Spˆacono: ');
Writeln(Baza[O].Zaplacone);
Write('rat o wysoko˜ci: ');
Writeln(Baza[O].Pozyczka div Baza[O].Rata);
Writeln('zˆ');
Write('Razem zostaˆo spˆacone: ');
Writeln(Baza[O].Rata*Baza[O].Zaplacone);
Writeln('zˆ');
Write('Pozostaˆo do zapˆacenia: ');
Write(Baza[O].Pozyczka - (Baza[O].Rata*Baza[O].Zaplacone));
Write('zˆ');
Writeln
end
end;
Procedure Nowy_Wpis;
var
pierwszy:Boolean; {by gdz uľytkownik pisze wi©kszĄ rate niľ poľczka to
mu wyskocz, ľe rata nie moľe b wi©ksza niľ 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ľ kredt!');
Write('Poľ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Ą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˜ 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ˆy spˆacone.');
if not (Reszta=0) then
begin
Write('Z ostatniej raty zbiegˆo: ',Reszta,' zˆ.');
end;
Writeln;
end
else
Writeln('Rata zostaˆa spˆacona.');
Readln;
end;
Procedure Zapisz;
var
Plik :Text;
Sciezka :String; {˜cieľka do pliku}
i :Integer; {zmienna sterujĄca}
begin
Write('cieľ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 ˜cieľ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 ľadnych os˘b w bazie danych');
Writeln;
Writeln('1. Nowy wpis');
Writeln('2. Poprzedni');
Writeln('3. Nast©pny');
Writeln('4. Usuä bieľĄcy');
Writeln('5. Spˆ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.