Public feed
#533272
program pozyczka;
uses crt;
type
TOsoba = record // rekord, w ktorym przechowywane sa dane osoby
imie: string; // tu jest jego imie
nazwisko: string; // tu nazwisko
pozyczka: integer; // tu pozyczka
rata: integer; // tu ile jedna rata
zaplacil: integer; // no a tu ile rat juz splacil
end;
var
Baza: array[0..250] of TOsoba; // tablica tych rekordow
menu: integer; // to co wpisal w menu
O, L: integer; // O - biezacy wpis, L - liczba wpisow
procedure Wyswietl;
begin
if (L < 0) then Writeln('Nie ma zadnego wpisu.')
else
begin
Write('Imie: '); Writeln(Baza[O].imie);
Write('Nazwisko: '); Writeln(Baza[O].nazwisko);
Write('Pozyczka: '); Writeln(Baza[O].pozyczka);
Write('Splacil '); Write(Baza[O].zaplacil);
Write(' rat o wysokosci '); Write(Baza[O].rata);
Writeln(' zl.');
Write('Razem zaplacil juz '); Write(Baza[O].rata * Baza[O].zaplacil); Writeln(' zl.');
Write('Pozostalo do zaplacenia: '); Write(Baza[O].pozyczka - Baza[O].rata * Baza[O].zaplacil); Write(' zl.');
Writeln;
end;
end;
procedure NowyWpis;
var
pierwszy: boolean; // czy pierwszy raz uzytkownik wpisuje ile ma rata i pozyczka bo moze wpisac wieksza rate niz pozyczke i wtedy mu pisze, ze rata nie moze byc wieksza niz pozyczka
begin
L := L + 1;
Write('Imie: '); Readln(Baza[L].imie);
Write('Nazwisko: '); Readln(Baza[L].nazwisko);
pierwszy := true;
Repeat
if not pierwszy then Writeln('Rata nie powinna byc wieksza niz kredyt. Wpisz jeszcze raz.');
Write('Pozyczka: '); Readln(Baza[L].pozyczka);
Write('Rata: '); Readln(Baza[L].rata);
pierwszy := false;
Until Baza[L].rata <= Baza[L].pozyczka;
Baza[L].zaplacil := 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 nastepnego :)');
Readln;
end;
end;
procedure UsunBiezacy;
var
i: integer; // zmienna steruajaca w petli for
begin
L := L - 1;
for i := O to L do
Baza[i] := Baza[i + 1];
end;
procedure SplacRate;
var
Reszta: integer; // jak zbiegnie jakas reszta z raty, to ta zmienna sie przydaje
begin
Baza[O].zaplacil := Baza[O].zaplacil + 1;
if (Baza[O].pozyczka <= Baza[O].zaplacil * Baza[O].rata) then
begin
UsunBiezacy;
Reszta := Baza[O].zaplacil * Baza[O].rata - Baza[O].pozyczka;
Write('Wszystkie raty zostaly splacone.');
if not (Reszta = 0) then
begin
Write(' Z ostatniej raty zbieglo ');
Write(Reszta);
Write(' zl.');
end;
Writeln;
end
else Writeln('Rata zostala splacona.');
Readln;
end;
procedure Zapisz;
var
Plik: text; // plik
Sciezka: string; // sciezka do pliku
i: integer; // zmienna steruajca
begin
Write('Sciezka do pliku: '); Readln(Sciezka);
Assign(Plik, Sciezka);
Rewrite(Plik);
Writeln(Plik, L);
for i := 0 to L do
begin
Writeln(Plik, Baza[i].imie);
Writeln(Plik, Baza[i].nazwisko);
Writeln(Plik, Baza[i].pozyczka);
Writeln(Plik, Baza[i].rata);
Writeln(Plik, Baza[i].zaplacil);
end;
Close(Plik);
end;
procedure Wczytaj;
var
Plik: text; // plik
Sciezka: string; // sciezka do pliku
i: integer; // zmienna steruajaca
begin
Write('Sciezka do pliku: '); Readln(Sciezka);
Assign(Plik, Sciezka);
Reset(Plik);
Readln(Plik, L);
for i := 0 to L do
begin
Readln(Plik, Baza[i].imie);
Readln(Plik, Baza[i].nazwisko);
Readln(Plik, Baza[i].pozyczka);
Readln(Plik, Baza[i].rata);
Readln(Plik, Baza[i].zaplacil);
end;
end;
begin
L := -1;
O := 0;
Repeat
ClrScr;
if L > -1 then
Wyswietl
else Writeln('Narazie nie ma zadnych wpisow.');
Writeln;
Writeln('1) Nowy wpis');
Writeln('2) Poprzedni');
Writeln('3) Nastepny');
Writeln('4) Usun biezacy');
Writeln('5) Splac rate');
Writeln('6) Zapisz do pliku');
Writeln('7) Wczytaj z pliku');
Writeln('8) Koniec');
Readln(menu);
ClrScr;
Case menu of
1: NowyWpis;
2: Poprzedni;
3: Nastepny;
4: UsunBiezacy;
5: SplacRate;
6: Zapisz;
7: Wczytaj;
end;
Until menu = 8;
end.