program baza; uses Crt; const nazwa='H:\pliki\baza1.dat'; max=100; type uczen=record imie:string[20]; nazwisko:string[30]; wiek:byte; sr_ocen:real; end; plik=file of uczen; tablica=array [1..max] of uczen; var p:plik; odp:char; n:byte; ucz:uczen; t:tablica; procedure do_tablicy(var t:tablica; var p:plik; var n:byte); var i:byte; begin i:=0; assign(p,nazwa); {$I-} reset(p); {$I+} if IOResult=0 then begin n:=filesize(p); for i:=1 to n do read(p,t[i]); end; close(p); end; procedure dopis (var p:plik); var a:integer; t:tablica; begin assign(p,nazwa); {$I-} reset(p); {$I+} if IOResult=0 then seek(p,filesize(p)) else rewrite(p); writeln('TWORZENIE NOWEGO WPISU'); write('Podaj imie: '); readln(ucz.imie); write('Podaj nazwisko: '); readln(ucz.nazwisko); write('Podaj wiek: '); readln(ucz.wiek); write('Podaj srednia ocen: '); readln(ucz.sr_ocen); write(p,ucz); close(p); do_tablicy(t,p,n); end; procedure do_pliku (var t:tablica; var p:plik; n:byte); var i:byte; begin assign(p,nazwa); rewrite(p); for i:=1 to n do write(p,t[i]); close(p); end; procedure wypis (var t:tablica; n:byte); var i:byte; begin do_tablicy(t,p,n); for i:=1 to n do begin writeln(t[i].imie:20,t[i].nazwisko:20,' wiek: ',t[i].wiek:2,' Srednia ocen: ',t[i].sr_ocen:2:2); writeln; end; readkey; end; function index (var t:tablica; n:byte):byte; var i:byte; nzw:string[20]; begin index:=0; write('Podaj nazwisko: '); readln(nzw); for i:=1 to n do if nzw=t[i].nazwisko then begin index:=i; break; end; end; procedure szuk (var t:tablica; n:byte); var k,i:byte; begin k:=index(t,n); if k<>0 then writeln(t[k].imie:20,t[k].nazwisko:20,t[k].wiek:5,' ',t[k].sr_ocen:2:2) else writeln('Nie ma osoby o podanym nazwisku'); readkey; end; procedure usun (var t:tablica; var p:plik; var n:byte); var i,j,k,w:byte; begin assign(p,nazwa); rewrite(p); k:=index(t,n); if k<>0 then begin for i:=1 to k-1 do write(p,t[i]); for j:=k+1 to n do write(p,t[j]); end else begin writeln('Nie istnieje taka osoba'); readkey; end; n:=filesize(p); close(p); do_tablicy(t,p,n); end; procedure menu; var odp:char; begin ClrScr; textcolor(green); writeln(' *===========================================*'); writeln('|| 1 - Dopisywanie osoby ||'); writeln('|| 2 - Wypisanie listy osob ||'); writeln('|| 3 - Wyszukiwarka ||'); writeln('|| 4 - Usun ||'); writeln('|| Esc - Wyjscie ||'); writeln(' *===========================================*'); textcolor(red); writeln; writeln('Czego pragniesz?'); textcolor(7); odp:=readkey; case odp of '1':dopis(p); '2':wypis(t,n); '3':szuk(t,n); '4':usun(t,p,n); #27:begin do_pliku(t,p,n); halt; end; end; end; begin do_tablicy(t,p,n); repeat menu; until false; end.