All pastes #452694 Raw Edit

BD

public text v1 · immutable
·published 2007-04-22 13:29 UTC
rendered paste body
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.