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 ľ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.