%PDF- %PDF-
Direktori : /www/varak.net/www.varak.net/ |
Current File : //www/varak.net/www.varak.net/ws_main.pas |
unit ws_sql; interface type lpst = ^student; student = record jmeno : string[30]; prijmeni : string[30]; vek : byte; next : lpst; end; dstudent = record jmeno : string[30]; prijmeni : string[30]; vek : byte; end; function create(student : dstudent) : lpst; procedure insert(first : lpst; novy : dstudent); procedure delete(var first : lpst; deleted : lpst); function find(first : lpst; krit_t : byte; kriterium : string) : lpst; function find(first : lpst; krit_t : byte; kriterium : byte) : lpst; procedure print(first : lpst); procedure sort(var first : lpst; krit_t : byte); procedure save(first : lpst; fil : string); procedure load(var first : lpst; fil : string); implementation function create(student : dstudent) : lpst; var pom : lpst; begin new(pom); pom^.jmeno := student.jmeno; pom^.prijmeni := student.prijmeni; pom^.vek := student.vek; pom^.next := nil; create := pom; end; procedure insert(first : lpst; novy : dstudent); var pom : lpst; i : integer; begin pom := first; i := 0; while(pom^.next <> nil) do begin pom := pom^.next; inc(i); end; new(pom^.next); pom := pom^.next; pom^.jmeno := novy.jmeno; pom^.prijmeni := novy.prijmeni; pom^.vek := novy.vek; pom^.next := nil; end; procedure delete(var first : lpst; deleted : lpst); var pom : lpst; begin if(first = deleted) then begin first := first^.next; end else begin pom := first; while(pom^.next <> deleted) do begin if(pom^.next <> deleted) then begin pom := pom^.next; end; end; pom^.next := pom^.next^.next; dispose(deleted); end;{else} end; {fce} function find(first : lpst; krit_t : byte; kriterium : string) : lpst; var pom : lpst; begin pom := first; case krit_t of 1 : begin while((pom <> nil) and (pom^.jmeno <> kriterium)) do begin pom := pom^.next; end; find := pom; end; 2 : begin while((pom <> nil) and (pom^.prijmeni <> kriterium)) do begin pom := pom^.next; end; find := pom; end else begin find := nil; end; end; end; function find(first : lpst; krit_t : byte; kriterium : byte) : lpst; var pom : lpst; begin pom := first; case krit_t of 1 : begin while((pom <> nil) and (pom^.vek <> kriterium)) do begin pom := pom^.next; end; find := pom; end else begin find := nil; end; end; end; procedure print(first : lpst); var pom : lpst; begin pom := first; if(pom = nil) then begin writeln('V databazi neni zadny student'); end; while(pom <> nil) do begin writeln('Jmeno: ', pom^.jmeno); writeln('Prijmeni: ', pom^.prijmeni); writeln('Vek: ', pom^.vek); writeln(#10#13, '-------------------------------------------------------------------------------', #10#13); pom := pom^.next; end; end; procedure sort(var first : lpst; krit_t : byte); type dstudenta = array[0..1] of dstudent; var pomp : ^dstudenta; pom : lpst; pocet : integer; i : integer; j : integer; d : dstudent; begin pom := first; pocet := 1; while(pom^.next <> nil) do begin inc(pocet); end; getmem(pomp, pocet*sizeof(dstudent)); pom := first; i := 1; while(pom^.next <> nil) do begin pomp^[i].jmeno := pom^.jmeno; pomp^[i].prijmeni := pom^.prijmeni; pomp^[i].vek := pom^.vek; end; case krit_t of 1 : begin for i := 0 to pocet-1 do begin for j := 1 to pocet-i-1 do begin if(pomp^[j].jmeno < pomp^[j-1].jmeno) then begin d := pomp^[j]; pomp^[j] := pomp^[j-1]; pomp^[j-1] := d; end; end; end; end; 2 : begin for i := 0 to pocet-1 do begin for j := 1 to pocet-i-1 do begin if(pomp^[j].prijmeni < pomp^[j-1].prijmeni) then begin d := pomp^[j]; pomp^[j] := pomp^[j-1]; pomp^[j-1] := d; end; end; end; end; 3 : begin for i := 0 to pocet-1 do begin for j := 1 to pocet-i-1 do begin if(pomp^[j].vek < pomp^[j-1].vek) then begin d := pomp^[j]; pomp^[j] := pomp^[j-1]; pomp^[j-1] := d; end; end; end; end; end; first := create(pomp^[0]); for i := 1 to pocet-1 do begin insert(first, pomp^[i]); end; end; procedure save(first : lpst; fil : string); var f : file of dstudent; pom : lpst; d : dstudent; begin assign(f, fil); rewrite(f); pom := first; while(pom <> nil) do begin d.jmeno := pom^.jmeno; d.prijmeni := pom^.prijmeni; d.vek := pom^.vek; pom := pom^.next; write(f, d); end; close(f); end; // nutno vyresit aby first na konci ukazoval skutecne na prvni procedure load(var first : lpst; fil : string); var d : dstudent; f : file of dstudent; begin assign(f, fil); reset(f); read(f, d); first := create(d); while(not eof(f)) do begin read(f, d); insert(first, d); end; close(f); end; end.